From c17371a29d7160d31899bfd2596eb27be5f06d0f Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Thu, 14 Aug 2025 18:20:25 -0600 Subject: [PATCH 001/241] Switch color library --- package-lock.json | 67 ++++++++++++++-- package.json | 1 + src/components/color/index.js | 142 +++++++++++++++++----------------- 3 files changed, 135 insertions(+), 75 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6e6ea7cf9a9..245089157ce 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,6 +19,7 @@ "@turf/centroid": "^7.1.0", "base64-arraybuffer": "^1.0.2", "canvas-fit": "^1.5.0", + "color": "^5.0.0", "color-alpha": "1.0.4", "color-normalize": "1.5.0", "color-parse": "2.0.0", @@ -2738,6 +2739,19 @@ "node": ">=0.8" } }, + "node_modules/color": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/color/-/color-5.0.0.tgz", + "integrity": "sha512-16BlyiuyLq3MLxpRWyOTiWsO3ii/eLQLJUQXBSNcxMBBSnyt1ee9YUdaozQp03ifwm5woztEZGDbk9RGVuCsdw==", + "license": "MIT", + "dependencies": { + "color-convert": "^3.0.1", + "color-string": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/color-alpha": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/color-alpha/-/color-alpha-1.0.4.tgz", @@ -2835,6 +2849,48 @@ "integrity": "sha512-nKqUYlo0vZATVOFHY810BSYjmCARrG7e5R3UE3CQlyjJTvv5kSSmPG1kzm/oDyyqjehM+lW1RnEt9It9GNa5JA==", "license": "MIT" }, + "node_modules/color-string": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-2.0.1.tgz", + "integrity": "sha512-5z9FbYTZPAo8iKsNEqRNv+OlpBbDcoE+SY9GjLfDUHEfcNNV7tS9eSAlFHEaub/r5tBL9LtskAeq1l9SaoZ5tQ==", + "license": "MIT", + "dependencies": { + "color-name": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/color-string/node_modules/color-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-2.0.0.tgz", + "integrity": "sha512-SbtvAMWvASO5TE2QP07jHBMXKafgdZz8Vrsrn96fiL+O92/FN/PLARzUW5sKt013fjAprK2d2iCn2hk2Xb5oow==", + "license": "MIT", + "engines": { + "node": ">=12.20" + } + }, + "node_modules/color/node_modules/color-convert": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-3.1.0.tgz", + "integrity": "sha512-TVoqAq8ZDIpK5lsQY874DDnu65CSsc9vzq0wLpNQ6UMBq81GSZocVazPiBbYGzngzBOIRahpkTzCLVe2at4MfA==", + "license": "MIT", + "dependencies": { + "color-name": "^2.0.0" + }, + "engines": { + "node": ">=14.6" + } + }, + "node_modules/color/node_modules/color-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-2.0.0.tgz", + "integrity": "sha512-SbtvAMWvASO5TE2QP07jHBMXKafgdZz8Vrsrn96fiL+O92/FN/PLARzUW5sKt013fjAprK2d2iCn2hk2Xb5oow==", + "license": "MIT", + "engines": { + "node": ">=12.20" + } + }, "node_modules/colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", @@ -3166,6 +3222,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "license": "ISC", "engines": { "node": ">=12" } @@ -10037,12 +10094,10 @@ } }, "node_modules/tinycolor2": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.2.tgz", - "integrity": "sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==", - "engines": { - "node": "*" - } + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", + "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==", + "license": "MIT" }, "node_modules/tinyqueue": { "version": "2.0.3", diff --git a/package.json b/package.json index afef26c7980..dffda8af19a 100644 --- a/package.json +++ b/package.json @@ -77,6 +77,7 @@ "@turf/centroid": "^7.1.0", "base64-arraybuffer": "^1.0.2", "canvas-fit": "^1.5.0", + "color": "^5.0.0", "color-alpha": "1.0.4", "color-normalize": "1.5.0", "color-parse": "2.0.0", diff --git a/src/components/color/index.js b/src/components/color/index.js index 50eccc4a73e..658e3ff4796 100644 --- a/src/components/color/index.js +++ b/src/components/color/index.js @@ -1,56 +1,48 @@ 'use strict'; -var tinycolor = require('tinycolor2'); -var isNumeric = require('fast-isnumeric'); -var isTypedArray = require('../../lib/array').isTypedArray; +const isNumeric = require('fast-isnumeric'); +const isTypedArray = require('../../lib/array').isTypedArray; +const color = require('color').default -var color = module.exports = {}; +const { background, defaultLine, defaults, lightLine } = require('./attributes'); -var colorAttrs = require('./attributes'); -color.defaults = colorAttrs.defaults; -var defaultLine = color.defaultLine = colorAttrs.defaultLine; -color.lightLine = colorAttrs.lightLine; -var background = color.background = colorAttrs.background; - -/* - * tinyRGB: turn a tinycolor into an rgb string, but - * unlike the built-in tinycolor.toRgbString this never includes alpha - */ -color.tinyRGB = function(tc) { - var c = tc.toRgb(); - return 'rgb(' + Math.round(c.r) + ', ' + - Math.round(c.g) + ', ' + Math.round(c.b) + ')'; -}; - -color.rgb = function(cstr) { return color.tinyRGB(tinycolor(cstr)); }; +const rgb = cstr => { + const { r, g, b } = color(cstr).rgb().object(); + return `rgb(${Math.round(r)}, ${Math.round(g)}, ${Math.round(b)})`; +} -color.opacity = function(cstr) { return cstr ? tinycolor(cstr).getAlpha() : 0; }; +const opacity = cstr => cstr ? color(cstr).alpha() : 0; -color.addOpacity = function(cstr, op) { - var c = tinycolor(cstr).toRgb(); - return 'rgba(' + Math.round(c.r) + ', ' + - Math.round(c.g) + ', ' + Math.round(c.b) + ', ' + op + ')'; +const addOpacity = (cstr, op) => { + const c = color(cstr).rgb().object(); + return `rgba(${Math.round(c.r)}, ${Math.round(c.g)}, ${Math.round(c.b)}, ${op})`; }; // combine two colors into one apparent color // if back has transparency or is missing, -// color.background is assumed behind it -color.combine = function(front, back) { - var fc = tinycolor(front).toRgb(); - if(fc.a === 1) return tinycolor(front).toRgbString(); - - var bc = tinycolor(back || background).toRgb(); - var bcflat = bc.a === 1 ? bc : { - r: 255 * (1 - bc.a) + bc.r * bc.a, - g: 255 * (1 - bc.a) + bc.g * bc.a, - b: 255 * (1 - bc.a) + bc.b * bc.a +// background is assumed behind it +const combine = (front, back = background) => { + const fc = color(front).rgb().object(); + fc.alpha ||= 1; + if(fc.alpha === 1) return color(front).rgb().string(); + + const bc = color(back).rgb().object; + bc.alpha ||= 1; + const bcflat = bc.alpha === 1 + ? bc + : { + r: 255 * (1 - bc.alpha) + bc.r * bc.alpha, + g: 255 * (1 - bc.alpha) + bc.g * bc.alpha, + b: 255 * (1 - bc.alpha) + bc.b * bc.alpha + }; + + const fcflat = { + r: bcflat.r * (1 - fc.alpha) + fc.r * fc.alpha, + g: bcflat.g * (1 - fc.alpha) + fc.g * fc.alpha, + b: bcflat.b * (1 - fc.alpha) + fc.b * fc.alpha }; - var fcflat = { - r: bcflat.r * (1 - fc.a) + fc.r * fc.a, - g: bcflat.g * (1 - fc.a) + fc.g * fc.a, - b: bcflat.b * (1 - fc.a) + fc.b * fc.a - }; - return tinycolor(fcflat).toRgbString(); + + return color(fcflat).string(); }; /* @@ -59,17 +51,17 @@ color.combine = function(front, back) { * Ignores alpha channel values. * The resulting color is computed as: factor * first + (1 - factor) * second. */ -color.interpolate = function(first, second, factor) { - var fc = tinycolor(first).toRgb(); - var sc = tinycolor(second).toRgb(); +const interpolate = (first, second, factor) => { + const fc = color(first).rgb().object(); + const sc = color(second).rgb().object(); - var ic = { + const ic = { r: factor * fc.r + (1 - factor) * sc.r, g: factor * fc.g + (1 - factor) * sc.g, b: factor * fc.b + (1 - factor) * sc.b, }; - return tinycolor(ic).toRgbString(); + return color(ic).rgb().string(); }; /* @@ -80,34 +72,27 @@ color.interpolate = function(first, second, factor) { * If lightAmount / darkAmount are used, we adjust by these percentages, * otherwise we go all the way to white or black. */ -color.contrast = function(cstr, lightAmount, darkAmount) { - var tc = tinycolor(cstr); +const contrast = (cstr, lightAmount, darkAmount) => { + let c = color(cstr) - if(tc.getAlpha() !== 1) tc = tinycolor(color.combine(cstr, background)); + if(c.alpha() !== 1) c = color(combine(cstr, background)); - var newColor = tc.isDark() ? - (lightAmount ? tc.lighten(lightAmount) : background) : - (darkAmount ? tc.darken(darkAmount) : defaultLine); + const newColor = color( + c.isDark() + ? (lightAmount ? c.lighten(lightAmount / 100) : background) + : (darkAmount ? c.darken(darkAmount / 100) : defaultLine) + ); - return newColor.toString(); + return newColor.rgb().string(); }; -color.stroke = function(s, c) { - var tc = tinycolor(c); - s.style({stroke: color.tinyRGB(tc), 'stroke-opacity': tc.getAlpha()}); -}; +const stroke = (s, cstr) => s.style({ stroke: rgb(cstr), 'stroke-opacity': opacity(cstr) }); -color.fill = function(s, c) { - var tc = tinycolor(c); - s.style({ - fill: color.tinyRGB(tc), - 'fill-opacity': tc.getAlpha() - }); -}; +const fill = (s, cstr) => s.style({ fill: rgb(cstr), 'fill-opacity': opacity(cstr) }); // search container for colors with the deprecated rgb(fractions) format // and convert them to rgb(0-255 values) -color.clean = function(container) { +const clean = container => { if(!container || typeof container !== 'object') return; var keys = Object.keys(container); @@ -134,13 +119,13 @@ color.clean = function(container) { var el0 = val[0]; if(!Array.isArray(el0) && el0 && typeof el0 === 'object') { - for(j = 0; j < val.length; j++) color.clean(val[j]); + for(j = 0; j < val.length; j++) clean(val[j]); } - } else if(val && typeof val === 'object' && !isTypedArray(val)) color.clean(val); + } else if(val && typeof val === 'object' && !isTypedArray(val)) clean(val); } }; -function cleanOne(val) { +const cleanOne = val => { if(isNumeric(val) || typeof val !== 'string') return val; var valTrim = val.trim(); @@ -181,3 +166,22 @@ function cleanOne(val) { if(rgba) return 'rgba(' + rgbStr + ', ' + parts[3] + ')'; return 'rgb(' + rgbStr + ')'; } + +const isDark = cstr => color(cstr).isDark() + +module.exports = { + addOpacity, + background, + clean, + combine, + contrast, + defaultLine, + defaults, + fill, + interpolate, + isDark, + lightLine, + opacity, + rgb, + stroke +} From d6d1e9e025aa8283c895ddb2ec810becbb7250b0 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Tue, 19 Aug 2025 16:12:11 -0600 Subject: [PATCH 002/241] Add utility functions --- src/components/color/index.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/components/color/index.js b/src/components/color/index.js index 658e3ff4796..dd340a7a275 100644 --- a/src/components/color/index.js +++ b/src/components/color/index.js @@ -167,19 +167,26 @@ const cleanOne = val => { return 'rgb(' + rgbStr + ')'; } -const isDark = cstr => color(cstr).isDark() +const equals = (cstr1, cstr2) => cstr1 && cstr2 && color(cstr1).rgb().string() === color(cstr2).rgb().string(); + +const isValid = cstr => { + try { return !!color(cstr); } + catch { return false; } +} module.exports = { addOpacity, background, clean, + color, combine, contrast, defaultLine, defaults, + equals, fill, interpolate, - isDark, + isValid, lightLine, opacity, rgb, From b15bdca973257f2216b89eadd2925b94e222b5c2 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Wed, 20 Aug 2025 18:12:22 -0600 Subject: [PATCH 003/241] Switch references to new color library --- src/components/color/attributes.js | 2 +- src/components/color/index.js | 24 ++++++++++++- src/components/colorbar/draw.js | 10 +++--- src/components/colorscale/helpers.js | 17 +++++---- src/components/colorscale/scales.js | 4 +-- src/components/drawing/index.js | 16 ++++----- src/components/fx/hover.js | 11 +++--- src/lib/coerce.js | 8 ++--- src/lib/gl_format_color.js | 6 ++-- src/plot_api/helpers.js | 6 ++-- src/plots/cartesian/dragbox.js | 7 ++-- src/plots/cartesian/line_grid_defaults.js | 6 ++-- src/plots/gl3d/layout/axis_defaults.js | 4 +-- src/plots/polar/polar.js | 3 +- src/plots/ternary/ternary.js | 3 +- src/traces/bar/helpers.js | 4 +-- src/traces/heatmap/plot.js | 9 +++-- src/traces/parcats/parcats.js | 10 +++--- src/traces/pie/calc.js | 16 ++++----- src/traces/sankey/defaults.js | 24 ++++++------- src/traces/sankey/plot.js | 18 +++++----- src/traces/sankey/render.js | 42 ++++++++--------------- 22 files changed, 116 insertions(+), 134 deletions(-) diff --git a/src/components/color/attributes.js b/src/components/color/attributes.js index 710cc5eb145..7823787f164 100644 --- a/src/components/color/attributes.js +++ b/src/components/color/attributes.js @@ -25,6 +25,6 @@ exports.borderLine = '#BEC8D9'; // with axis.color and Color.interp we aren't using lightLine // itself anymore, instead interpolating between axis.color -// and the background color using tinycolor.mix. lightFraction +// and the background color using Color.mix. lightFraction // gives back exactly lightLine if the other colors are defaults. exports.lightFraction = 100 * (0xe - 0x4) / (0xf - 0x4); diff --git a/src/components/color/index.js b/src/components/color/index.js index dd340a7a275..6e9048964de 100644 --- a/src/components/color/index.js +++ b/src/components/color/index.js @@ -170,10 +170,30 @@ const cleanOne = val => { const equals = (cstr1, cstr2) => cstr1 && cstr2 && color(cstr1).rgb().string() === color(cstr2).rgb().string(); const isValid = cstr => { - try { return !!color(cstr); } + try { return cstr && !!color(cstr); } catch { return false; } } +const mix = (cstr1, cstr2, weight) => color(cstr1).mix(color(cstr2), weight / 100).rgb().string(); + +const mostReadable = (baseColor, colorList = []) => { + let bestColor; + let bestContrast = -Infinity; + + for (const cstr of colorList) { + const contrast = color(baseColor).contrast(color(cstr)); + if (contrast > bestContrast) { + bestContrast = contrast; + bestColor = color(cstr).rgb().string(); + } + } + + // Fall back to black/white if provided colors don't have proper contrast level + return bestColor && color(baseColor).level(color(bestColor)) + ? bestColor + : mostReadable(baseColor, ["#000", "#fff"]); +}; + module.exports = { addOpacity, background, @@ -188,6 +208,8 @@ module.exports = { interpolate, isValid, lightLine, + mix, + mostReadable, opacity, rgb, stroke diff --git a/src/components/colorbar/draw.js b/src/components/colorbar/draw.js index 794ff699918..0c2401e1ede 100644 --- a/src/components/colorbar/draw.js +++ b/src/components/colorbar/draw.js @@ -1,7 +1,6 @@ 'use strict'; var d3 = require('@plotly/d3'); -var tinycolor = require('tinycolor2'); var Plots = require('../../plots/plots'); var Registry = require('../../registry'); @@ -548,10 +547,9 @@ function drawColorBar(g, opts, gd) { if(opts._fillgradient) { Drawing.gradient(fillEl, gd, opts._id, isVertical ? 'vertical' : 'horizontalreversed', opts._fillgradient, 'fill'); } else { - // tinycolor can't handle exponents and - // at this scale, removing it makes no difference. + // The color library can't handle exponents and at this scale, removing it makes no difference. var colorString = fillColormap(d).replace('e-', ''); - fillEl.attr('fill', tinycolor(colorString).toHexString()); + fillEl.attr('fill', Color.color(colorString).hex()); } }); @@ -716,8 +714,8 @@ function drawColorBar(g, opts, gd) { if(!isVertical && ( borderwidth || ( - tinycolor(bgcolor).getAlpha() && - !tinycolor.equals(fullLayout.paper_bgcolor, bgcolor) + Color.opacity(bgcolor) && + !Color.equals(fullLayout.paper_bgcolor, bgcolor) ) )) { // for horizontal colorbars when there is a border line or having different background color diff --git a/src/components/colorscale/helpers.js b/src/components/colorscale/helpers.js index bc476e0a9b5..275b134fc35 100644 --- a/src/components/colorscale/helpers.js +++ b/src/components/colorscale/helpers.js @@ -1,7 +1,6 @@ 'use strict'; var d3 = require('@plotly/d3'); -var tinycolor = require('tinycolor2'); var isNumeric = require('fast-isnumeric'); var Lib = require('../../lib'); @@ -167,8 +166,8 @@ function makeColorScaleFunc(specs, opts) { var _range = new Array(N); for(var i = 0; i < N; i++) { - var rgba = tinycolor(range[i]).toRgb(); - _range[i] = [rgba.r, rgba.g, rgba.b, rgba.a]; + const { r, g, b, alpha = 1 } = Color.color(range[i]).rgb().object(); + _range[i] = [r, g, b, alpha]; } var _sclFunc = d3.scale.linear() @@ -189,14 +188,14 @@ function makeColorScaleFunc(specs, opts) { } else if(returnArray) { sclFunc = function(v) { if(isNumeric(v)) return _sclFunc(v); - else if(tinycolor(v).isValid()) return v; - else return Color.defaultLine; + if(Color.isValid(v)) return v; + return Color.defaultLine; }; } else { sclFunc = function(v) { if(isNumeric(v)) return colorArray2rbga(_sclFunc(v)); - else if(tinycolor(v).isValid()) return v; - else return Color.defaultLine; + if(Color.isValid(v)) return v; + return Color.defaultLine; }; } @@ -216,10 +215,10 @@ function colorArray2rbga(colorArray) { r: colorArray[0], g: colorArray[1], b: colorArray[2], - a: colorArray[3] + alpha: colorArray[3] }; - return tinycolor(colorObj).toRgbString(); + return Color.color(colorObj).rgb().string(); } module.exports = { diff --git a/src/components/colorscale/scales.js b/src/components/colorscale/scales.js index 7230f458bc7..c2cef9f44ff 100644 --- a/src/components/colorscale/scales.js +++ b/src/components/colorscale/scales.js @@ -1,6 +1,6 @@ 'use strict'; -var tinycolor = require('tinycolor2'); +const Color = require('../color'); var scales = { Greys: [ @@ -170,7 +170,7 @@ function isValidScaleArray(scl) { for(var i = 0; i < scl.length; i++) { var si = scl[i]; - if(si.length !== 2 || +si[0] < highestVal || !tinycolor(si[1]).isValid()) { + if(si.length !== 2 || +si[0] < highestVal || !Color.isValid(si[1])) { return false; } diff --git a/src/components/drawing/index.js b/src/components/drawing/index.js index 3cb3b447eeb..73be5ab8f9b 100644 --- a/src/components/drawing/index.js +++ b/src/components/drawing/index.js @@ -4,7 +4,6 @@ var d3 = require('@plotly/d3'); var Lib = require('../../lib'); var numberFormat = Lib.numberFormat; var isNumeric = require('fast-isnumeric'); -var tinycolor = require('tinycolor2'); var Registry = require('../../registry'); var Color = require('../color'); @@ -491,11 +490,10 @@ function gradientWithBounds(sel, gd, gradientID, type, colorscale, prop, start, stops.enter().append('stop'); stops.each(function(d) { - var tc = tinycolor(d[1]); d3.select(this).attr({ offset: d[0] + '%', - 'stop-color': Color.tinyRGB(tc), - 'stop-opacity': tc.getAlpha() + 'stop-color': Color.rgb(d[1]), + 'stop-opacity': Color.opacity(d[1]) }); }); }); @@ -549,9 +547,8 @@ drawing.pattern = function(sel, calledBy, gd, patternID, shape, size, solidity, var patternTag; var patternAttrs = {}; - var fgC = tinycolor(fgcolor); - var fgRGB = Color.tinyRGB(fgC); - var fgAlpha = fgC.getAlpha(); + var fgRGB = Color.rgb(fgcolor); + var fgAlpha = Color.opacity(fgcolor); var opacity = fgopacity * fgAlpha; switch(shape) { @@ -704,9 +701,8 @@ drawing.pattern = function(sel, calledBy, gd, patternID, shape, size, solidity, }); if(bgcolor) { - var bgC = tinycolor(bgcolor); - var bgRGB = Color.tinyRGB(bgC); - var bgAlpha = bgC.getAlpha(); + var bgRGB = Color.rgb(bgcolor); + var bgAlpha = Color.opacity(bgcolor); var rects = el.selectAll('rect').data([0]); rects.exit().remove(); diff --git a/src/components/fx/hover.js b/src/components/fx/hover.js index 41ee1352f62..1393bbdb47f 100644 --- a/src/components/fx/hover.js +++ b/src/components/fx/hover.js @@ -2,7 +2,6 @@ var d3 = require('@plotly/d3'); var isNumeric = require('fast-isnumeric'); -var tinycolor = require('tinycolor2'); var Lib = require('../../lib'); var pushUnique = Lib.pushUnique; @@ -2128,8 +2127,9 @@ function createSpikelines(gd, closestPoints, opts) { hLinePointX = xa._offset + hLinePoint.x; hLinePointY = ya._offset + hLinePoint.y; } - var dfltHLineColor = tinycolor.readability(hLinePoint.color, contrastColor) < 1.5 ? - Color.contrast(contrastColor) : hLinePoint.color; + var dfltHLineColor = Color.color(hLinePoint.color).contrast(contrastColor) < 1.5 + ? Color.contrast(contrastColor) + : hLinePoint.color; var yMode = ya.spikemode; var yThickness = ya.spikethickness; var yColor = ya.spikecolor || dfltHLineColor; @@ -2207,8 +2207,9 @@ function createSpikelines(gd, closestPoints, opts) { vLinePointX = xa._offset + vLinePoint.x; vLinePointY = ya._offset + vLinePoint.y; } - var dfltVLineColor = tinycolor.readability(vLinePoint.color, contrastColor) < 1.5 ? - Color.contrast(contrastColor) : vLinePoint.color; + var dfltVLineColor = Color.color(vLinePoint.color).contrast(contrastColor) < 1.5 + ? Color.contrast(contrastColor) + : vLinePoint.color; var xMode = xa.spikemode; var xThickness = xa.spikethickness; var xColor = xa.spikecolor || dfltVLineColor; diff --git a/src/lib/coerce.js b/src/lib/coerce.js index 9fa59255bc1..85f31d3ad14 100644 --- a/src/lib/coerce.js +++ b/src/lib/coerce.js @@ -1,7 +1,6 @@ 'use strict'; var isNumeric = require('fast-isnumeric'); -var tinycolor = require('tinycolor2'); var extendFlat = require('./extend').extendFlat; @@ -169,7 +168,7 @@ exports.valObjectMeta = { coerceFunction: function(v, propOut, dflt) { if(isTypedArraySpec(v)) v = decodeTypedArraySpec(v); - if(tinycolor(v).isValid()) propOut.set(v); + if(Color.isValid(v)) propOut.set(v); else propOut.set(dflt); } }, @@ -181,11 +180,8 @@ exports.valObjectMeta = { requiredOpts: [], otherOpts: ['dflt'], coerceFunction: function(v, propOut, dflt) { - function isColor(color) { - return tinycolor(color).isValid(); - } if(!Array.isArray(v) || !v.length) propOut.set(dflt); - else if(v.every(isColor)) propOut.set(v); + else if(v.every(color => Color.isvalid(color))) propOut.set(v); else propOut.set(dflt); } }, diff --git a/src/lib/gl_format_color.js b/src/lib/gl_format_color.js index e42170c3d2d..1d23cceafe1 100644 --- a/src/lib/gl_format_color.js +++ b/src/lib/gl_format_color.js @@ -1,7 +1,6 @@ 'use strict'; var isNumeric = require('fast-isnumeric'); -var tinycolor = require('tinycolor2'); var rgba = require('color-normalize'); var Colorscale = require('../components/colorscale'); @@ -78,11 +77,10 @@ function parseColorScale(cont) { return colorscale.map(function(elem) { var index = elem[0]; - var color = tinycolor(elem[1]); - var rgb = color.toRgb(); + const { r, g, b, alpha = 1 } = Color.color(elem[1]).rgb().object(); return { index: index, - rgb: [rgb.r, rgb.g, rgb.b, rgb.a] + rgb: [r, g, b, alpha] }; }); } diff --git a/src/plot_api/helpers.js b/src/plot_api/helpers.js index d57be1bc622..c72539e884a 100644 --- a/src/plot_api/helpers.js +++ b/src/plot_api/helpers.js @@ -139,8 +139,7 @@ exports.cleanLayout = function(layout) { */ if(layout.dragmode === 'rotate') layout.dragmode = 'orbit'; - // sanitize rgb(fractions) and rgba(fractions) that old tinycolor - // supported, but new tinycolor does not because they're not valid css + // sanitize rgb(fractions) and rgba(fractions) because they're not valid css Color.clean(layout); // clean the layout container in layout.template @@ -277,8 +276,7 @@ exports.cleanData = function(data) { if(emptyContainer(trace, 'marker')) delete trace.marker; } - // sanitize rgb(fractions) and rgba(fractions) that old tinycolor - // supported, but new tinycolor does not because they're not valid css + // sanitize rgb(fractions) and rgba(fractions) because they're not valid css Color.clean(trace); // remove obsolete autobin(x|y) attributes, but only if true diff --git a/src/plots/cartesian/dragbox.js b/src/plots/cartesian/dragbox.js index f8fa211ad8f..7972b949021 100644 --- a/src/plots/cartesian/dragbox.js +++ b/src/plots/cartesian/dragbox.js @@ -3,7 +3,6 @@ var d3 = require('@plotly/d3'); var Lib = require('../../lib'); var numberFormat = Lib.numberFormat; -var tinycolor = require('tinycolor2'); var supportsPassive = require('has-passive-events'); var Registry = require('../../registry'); @@ -334,9 +333,9 @@ function makeDragBox(gd, plotinfo, x, y, w, h, ns, ew) { y0 = transformedCoords[1]; box = {l: x0, r: x0, w: 0, t: y0, b: y0, h: 0}; - lum = gd._hmpixcount ? - (gd._hmlumcount / gd._hmpixcount) : - tinycolor(gd._fullLayout.plot_bgcolor).getLuminance(); + lum = gd._hmpixcount + ? (gd._hmlumcount / gd._hmpixcount) + : Color.color(gd._fullLayout.plot_bgcolor).luminosity(); path0 = 'M0,0H' + pw + 'V' + ph + 'H0V0'; dimmed = false; zoomMode = 'xy'; diff --git a/src/plots/cartesian/line_grid_defaults.js b/src/plots/cartesian/line_grid_defaults.js index 8808c31f7dd..bc31edc9f74 100644 --- a/src/plots/cartesian/line_grid_defaults.js +++ b/src/plots/cartesian/line_grid_defaults.js @@ -1,6 +1,6 @@ 'use strict'; -var colorMix = require('tinycolor2').mix; +const Color = require('../../components/color'); var colorAttrs = require('../../components/color/attributes'); var Lib = require('../../lib'); @@ -32,7 +32,7 @@ module.exports = function handleLineGridDefaults(containerIn, containerOut, coer delete containerOut.linewidth; } - var gridColorDflt = colorMix(dfltColor, opts.bgColor, opts.blend || colorAttrs.lightFraction).toRgbString(); + var gridColorDflt = Color.mix(dfltColor, opts.bgColor, opts.blend || colorAttrs.lightFraction); var gridColor = coerce2('gridcolor', gridColorDflt); var gridWidth = coerce2('gridwidth'); var gridDash = coerce2('griddash'); @@ -49,7 +49,7 @@ module.exports = function handleLineGridDefaults(containerIn, containerOut, coer } if(opts.hasMinor) { - var minorGridColorDflt = colorMix(containerOut.gridcolor, opts.bgColor, 67).toRgbString(); + var minorGridColorDflt = Color.mix(containerOut.gridcolor, opts.bgColor, 67); var minorGridColor = coerce2('minor.gridcolor', minorGridColorDflt); var minorGridWidth = coerce2('minor.gridwidth', containerOut.gridwidth || 1); var minorGridDash = coerce2('minor.griddash', containerOut.griddash || 'solid'); diff --git a/src/plots/gl3d/layout/axis_defaults.js b/src/plots/gl3d/layout/axis_defaults.js index ae041637a70..2336dc3d8f2 100644 --- a/src/plots/gl3d/layout/axis_defaults.js +++ b/src/plots/gl3d/layout/axis_defaults.js @@ -1,6 +1,6 @@ 'use strict'; -var colorMix = require('tinycolor2').mix; +const Color = require('../../../components/color'); var Lib = require('../../../lib'); var Template = require('../../../plot_api/plot_template'); @@ -58,7 +58,7 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, options) { }, options.fullLayout); - coerce('gridcolor', colorMix(containerOut.color, options.bgColor, gridLightness).toRgbString()); + coerce('gridcolor', Color.mix(containerOut.color, options.bgColor, gridLightness)); coerce('title.text', axName[0]); // shouldn't this be on-par with 2D? containerOut.setScale = Lib.noop; diff --git a/src/plots/polar/polar.js b/src/plots/polar/polar.js index da7da52c1b6..146c3a40f63 100644 --- a/src/plots/polar/polar.js +++ b/src/plots/polar/polar.js @@ -1,7 +1,6 @@ 'use strict'; var d3 = require('@plotly/d3'); -var tinycolor = require('tinycolor2'); var Registry = require('../../registry'); var Lib = require('../../lib'); @@ -935,7 +934,7 @@ proto.updateHoverAndMainDrag = function(fullLayout) { dimmed = false; var polarLayoutNow = gd._fullLayout[_this.id]; - lum = tinycolor(polarLayoutNow.bgcolor).getLuminance(); + lum = Color.color(polarLayoutNow.bgcolor).luminosity(); zb = dragBox.makeZoombox(zoomlayer, lum, cx, cy, path0); zb.attr('fill-rule', 'evenodd'); diff --git a/src/plots/ternary/ternary.js b/src/plots/ternary/ternary.js index 06a457d6d3e..18ced390ce2 100644 --- a/src/plots/ternary/ternary.js +++ b/src/plots/ternary/ternary.js @@ -1,7 +1,6 @@ 'use strict'; var d3 = require('@plotly/d3'); -var tinycolor = require('tinycolor2'); var Registry = require('../../registry'); var Lib = require('../../lib'); @@ -593,7 +592,7 @@ proto.initInteractions = function() { }; mins = mins0; span0 = _this.aaxis.range[1] - mins0.a; - lum = tinycolor(_this.graphDiv._fullLayout[_this.id].bgcolor).getLuminance(); + lum = Color.color(_this.graphDiv._fullLayout[_this.id].bgcolor).luminosity(); path0 = 'M0,' + _this.h + 'L' + (_this.w / 2) + ', 0L' + _this.w + ',' + _this.h + 'Z'; dimmed = false; diff --git a/src/traces/bar/helpers.js b/src/traces/bar/helpers.js index d1f30a23246..87f0915ff52 100644 --- a/src/traces/bar/helpers.js +++ b/src/traces/bar/helpers.js @@ -1,7 +1,7 @@ 'use strict'; +const Color = require('../../components/color'); var isNumeric = require('fast-isnumeric'); -var tinycolor = require('tinycolor2'); var isArrayOrTypedArray = require('../../lib').isArrayOrTypedArray; exports.coerceString = function(attributeDefinition, value, defaultValue) { @@ -34,7 +34,7 @@ exports.coerceNumber = function(attributeDefinition, value, defaultValue) { }; exports.coerceColor = function(attributeDefinition, value, defaultValue) { - if(tinycolor(value).isValid()) return value; + if(Color.isValid(value)) return value; return (defaultValue !== undefined) ? defaultValue : diff --git a/src/traces/heatmap/plot.js b/src/traces/heatmap/plot.js index 2db0d0eb3b2..350df31c5a1 100644 --- a/src/traces/heatmap/plot.js +++ b/src/traces/heatmap/plot.js @@ -1,7 +1,6 @@ 'use strict'; var d3 = require('@plotly/d3'); -var tinycolor = require('tinycolor2'); var Registry = require('../../registry'); var Drawing = require('../../components/drawing'); @@ -344,10 +343,10 @@ module.exports = function(gd, plotinfo, cdheatmaps, heatmapLayer) { rcount = Math.round(rcount / pixcount); gcount = Math.round(gcount / pixcount); bcount = Math.round(bcount / pixcount); - var avgColor = tinycolor('rgb(' + rcount + ',' + gcount + ',' + bcount + ')'); - + const cstr = `rgb(${rcount}, ${gcount}, ${bcount})`; + gd._hmpixcount = (gd._hmpixcount||0) + pixcount; - gd._hmlumcount = (gd._hmlumcount||0) + pixcount * avgColor.getLuminance(); + gd._hmlumcount = (gd._hmlumcount||0) + pixcount * Color.color(cstr).luminosity(); var image3 = plotGroup.selectAll('image') .data(cd); @@ -536,7 +535,7 @@ module.exports = function(gd, plotinfo, cdheatmaps, heatmapLayer) { fontColor = Color.contrast( d.z === undefined ? gd._fullLayout.plot_bgcolor : 'rgba(' + - sclFunc(d.z).join() + + sclFunc(d.z).map(Math.round).join() + ')' ); } diff --git a/src/traces/parcats/parcats.js b/src/traces/parcats/parcats.js index 39f75d3b674..8ce8fa93905 100644 --- a/src/traces/parcats/parcats.js +++ b/src/traces/parcats/parcats.js @@ -3,11 +3,11 @@ var d3 = require('@plotly/d3'); var interpolateNumber = require('d3-interpolate').interpolateNumber; var Plotly = require('../../plot_api/plot_api'); +const Color = require('../../components/color'); var Fx = require('../../components/fx'); var Lib = require('../../lib'); var strTranslate = Lib.strTranslate; var Drawing = require('../../components/drawing'); -var tinycolor = require('tinycolor2'); var svgTextUtils = require('../../lib/svg_text_utils'); function performPlot(parcatsModels, graphDiv, layout, svg) { @@ -426,7 +426,7 @@ function mouseoverPath(d) { var hoverCenterX = d.parcatsViewModel.x + pathCenterX; var hoverCenterY = d.parcatsViewModel.y + pathCenterY; - var textColor = tinycolor.mostReadable(d.model.color, ['black', 'white']); + var textColor = Color.mostReadable(d.model.color); var count = d.model.count; var prob = count / d.parcatsViewModel.model.count; @@ -575,9 +575,7 @@ function stylePathsNoHover(pathSelection) { function stylePathsHover(pathSelection) { pathSelection .attr('fill-opacity', 0.8) - .attr('stroke', function(d) { - return tinycolor.mostReadable(d.model.color, ['black', 'white']); - }) + .attr('stroke', d => Color.mostReadable(d.model.color)) .attr('stroke-width', 0.3); } @@ -936,7 +934,7 @@ function createHoverLabelForColorHovermode(gd, rootBBox, bandElement) { var hovertext = hoverinfoParts.join('
'); // Compute text color - var textColor = tinycolor.mostReadable(bandViewModel.color, ['black', 'white']); + var textColor = Color.mostReadable(bandViewModel.color); return { trace: trace, diff --git a/src/traces/pie/calc.js b/src/traces/pie/calc.js index 1fe5541e7d5..914ab513677 100644 --- a/src/traces/pie/calc.js +++ b/src/traces/pie/calc.js @@ -1,7 +1,6 @@ 'use strict'; var isNumeric = require('fast-isnumeric'); -var tinycolor = require('tinycolor2'); var Color = require('../../components/color'); @@ -89,15 +88,12 @@ function calc(gd, trace) { function makePullColorFn(colorMap) { return function pullColor(color, id) { - if(!color) return false; + if(!color || !Color.isValid(color)) return false; - color = tinycolor(color); - if(!color.isValid()) return false; + const newColor = Color.addOpacity(color, color.getAlpha()); + if(!colorMap[id]) colorMap[id] = newColor; - color = Color.addOpacity(color, color.getAlpha()); - if(!colorMap[id]) colorMap[id] = color; - - return color; + return newColor; }; } @@ -154,11 +150,11 @@ function generateExtendedColors(colorList, extendedColorWays) { colors = colorList.slice(); for(i = 0; i < colorList.length; i++) { - colors.push(tinycolor(colorList[i]).lighten(20).toHexString()); + colors.push(Color.color(colorList[i]).lighten(0.2).hex()); } for(i = 0; i < colorList.length; i++) { - colors.push(tinycolor(colorList[i]).darken(20).toHexString()); + colors.push(Color.color(colorList[i]).darken(0.2).hex()); } extendedColorWays[colorString] = colors; } diff --git a/src/traces/sankey/defaults.js b/src/traces/sankey/defaults.js index d9ca15fea65..8a51fa30577 100644 --- a/src/traces/sankey/defaults.js +++ b/src/traces/sankey/defaults.js @@ -3,7 +3,6 @@ var Lib = require('../../lib'); var attributes = require('./attributes'); var Color = require('../../components/color'); -var tinycolor = require('tinycolor2'); var handleDomainDefaults = require('../../plots/domain').defaults; var handleHoverLabelDefaults = require('../../components/fx/hoverlabel_defaults'); var Template = require('../../plot_api/plot_template'); @@ -63,23 +62,20 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout handleHoverLabelDefaults(linkIn, linkOut, coerceLink, hoverlabelDefault); coerceLink('hovertemplate'); - var darkBG = tinycolor(layout.paper_bgcolor).getLuminance() < 0.333; + var darkBG = Color.color(layout.paper_bgcolor).luminosity() < 0.333; var defaultLinkColor = darkBG ? 'rgba(255, 255, 255, 0.6)' : 'rgba(0, 0, 0, 0.2)'; var linkColor = coerceLink('color', defaultLinkColor); function makeDefaultHoverColor(_linkColor) { - var tc = tinycolor(_linkColor); - if(!tc.isValid()) { - // hopefully the user-specified color is valid, but if not that can be caught elsewhere - return _linkColor; - } - var alpha = tc.getAlpha(); - if(alpha <= 0.8) { - tc.setAlpha(alpha + 0.2); - } else { - tc = darkBG ? tc.brighten() : tc.darken(); - } - return tc.toRgbString(); + // hopefully the user-specified color is valid, but if not that can be caught elsewhere + if(!Color.isValid(_linkColor)) return _linkColor; + + const c = Color.color(_linkColor); + const alpha = c.alpha(); + + return alpha <= 0.8 + ? c.alpha(alpha + 0.2).rgb().string() + : (darkBG ? c.lighten(0.1) : c.darken(0.1)).rgb().string() } coerceLink('hovercolor', Array.isArray(linkColor) ? diff --git a/src/traces/sankey/plot.js b/src/traces/sankey/plot.js index 2ac7ec7206e..8b179c767cb 100644 --- a/src/traces/sankey/plot.js +++ b/src/traces/sankey/plot.js @@ -64,11 +64,11 @@ function nodeNonHoveredStyle(sankeyNode, d, sankey) { function linkHoveredStyle(d, sankey, visitNodes, sankeyLink) { sankeyLink.style('fill', function(l) { if(!l.link.concentrationscale) { - return l.tinyColorHoverHue; + return l.hoverRgb; } }).style('fill-opacity', function(l) { if(!l.link.concentrationscale) { - return l.tinyColorHoverAlpha; + return l.hoverAlpha; } }); @@ -80,11 +80,11 @@ function linkHoveredStyle(d, sankey, visitNodes, sankeyLink) { .filter(function(l) {return l.link.label === label;}) .style('fill', function(l) { if(!l.link.concentrationscale) { - return l.tinyColorHoverHue; + return l.hoverRgb; } }).style('fill-opacity', function(l) { if(!l.link.concentrationscale) { - return l.tinyColorHoverAlpha; + return l.hoverAlpha; } }); } @@ -100,9 +100,9 @@ function linkHoveredStyle(d, sankey, visitNodes, sankeyLink) { function linkNonHoveredStyle(d, sankey, visitNodes, sankeyLink) { sankeyLink.style('fill', function(l) { - return l.tinyColorHue; + return l.rgb; }).style('fill-opacity', function(l) { - return l.tinyColorAlpha; + return l.alpha; }); sankeyLink.each(function(curLink) { @@ -111,8 +111,8 @@ function linkNonHoveredStyle(d, sankey, visitNodes, sankeyLink) { ownTrace(sankey, d) .selectAll('.' + cn.sankeyLink) .filter(function(l) {return l.link.label === label;}) - .style('fill', function(l) {return l.tinyColorHue;}) - .style('fill-opacity', function(l) {return l.tinyColorAlpha;}); + .style('fill', l => l.rgb) + .style('fill-opacity', l => l.alpha); } }); @@ -321,7 +321,7 @@ module.exports = function plot(gd, calcData) { incomingLabel + d.node.targetLinks.length, outgoingLabel + d.node.sourceLinks.length ].filter(renderableValuePresent).join('
'), - color: castHoverOption(obj, 'bgcolor') || d.tinyColorHue, + color: castHoverOption(obj, 'bgcolor') || d.rgb, borderColor: castHoverOption(obj, 'bordercolor'), fontFamily: castHoverOption(obj, 'font.family'), fontSize: castHoverOption(obj, 'font.size'), diff --git a/src/traces/sankey/render.js b/src/traces/sankey/render.js index a07d18a9c9e..74e17425729 100644 --- a/src/traces/sankey/render.js +++ b/src/traces/sankey/render.js @@ -7,7 +7,6 @@ var d3Sankey = require('@plotly/d3-sankey'); var d3SankeyCircular = require('@plotly/d3-sankey-circular'); var c = require('./constants'); -var tinycolor = require('tinycolor2'); var Color = require('../../components/color'); var Drawing = require('../../components/drawing'); var Lib = require('../../lib'); @@ -151,7 +150,7 @@ function sankeyModel(layout, d, traceIndex) { links: flowLinks }; if(link.concentrationscale) { - link.color = tinycolor(link.concentrationscale(link.flow.labelConcentration)); + link.color = link.concentrationscale(link.flow.labelConcentration); } } } @@ -298,8 +297,6 @@ function sankeyModel(layout, d, traceIndex) { } function linkModel(d, l, i) { - var tc = tinycolor(l.color); - var htc = tinycolor(l.hovercolor); var basicKey = l.source.label + '|' + l.target.label; var key = basicKey + '__' + i; @@ -313,10 +310,10 @@ function linkModel(d, l, i) { traceId: d.key, pointNumber: l.pointNumber, link: l, - tinyColorHue: Color.tinyRGB(tc), - tinyColorAlpha: tc.getAlpha(), - tinyColorHoverHue: Color.tinyRGB(htc), - tinyColorHoverAlpha: htc.getAlpha(), + rgb: Color.rgb(l.color), + alpha: Color.opacity(l.color), + hoverRgb: Color.rgb(l.hovercolor), + hoverAlpha: Color.opacity(l.hovercolor), linkPath: linkPath, linkLineColor: d.linkLineColor, linkLineWidth: d.linkLineWidth, @@ -535,7 +532,6 @@ function linkPath() { } function nodeModel(d, n) { - var tc = tinycolor(n.color); var zoneThicknessPad = c.nodePadAcross; var zoneLengthPad = d.nodePad / 2; n.dx = n.x1 - n.x0; @@ -577,9 +573,9 @@ function nodeModel(d, n) { sizeAcross: d.width, forceLayouts: d.forceLayouts, horizontal: d.horizontal, - darkBackground: tc.getBrightness() <= 128, - tinyColorHue: Color.tinyRGB(tc), - tinyColorAlpha: tc.getAlpha(), + darkBackground: Color.color(n.color).isDark(), + rgb: Color.rgb(n.color), + alpha: Color.opacity(n.color), valueFormat: d.valueFormat, valueSuffix: d.valueSuffix, sankey: d.sankey, @@ -937,18 +933,10 @@ module.exports = function(gd, svg, calcData, layout, callbacks) { .call(attachPointerEvents, sankey, callbacks.linkEvents); sankeyLink - .style('stroke', function(d) { - return salientEnough(d) ? Color.tinyRGB(tinycolor(d.linkLineColor)) : d.tinyColorHue; - }) - .style('stroke-opacity', function(d) { - return salientEnough(d) ? Color.opacity(d.linkLineColor) : d.tinyColorAlpha; - }) - .style('fill', function(d) { - return d.tinyColorHue; - }) - .style('fill-opacity', function(d) { - return d.tinyColorAlpha; - }) + .style('stroke', d => salientEnough(d) ? Color.rgb(d.linkLineColor) : d.rgb) + .style('stroke-opacity', d => salientEnough(d) ? Color.opacity(d.linkLineColor) : d.alpha) + .style('fill', d => d.rgb) + .style('fill-opacity', d => d.alpha) .style('stroke-width', function(d) { return salientEnough(d) ? d.linkLineWidth : 1; }) @@ -1022,10 +1010,10 @@ module.exports = function(gd, svg, calcData, layout, callbacks) { nodeRect .style('stroke-width', function(d) {return d.nodeLineWidth;}) - .style('stroke', function(d) {return Color.tinyRGB(tinycolor(d.nodeLineColor));}) + .style('stroke', function(d) {return Color.rgb(d.nodeLineColor);}) .style('stroke-opacity', function(d) {return Color.opacity(d.nodeLineColor);}) - .style('fill', function(d) {return d.tinyColorHue;}) - .style('fill-opacity', function(d) {return d.tinyColorAlpha;}); + .style('fill', d => d.rgb) + .style('fill-opacity', d => d.alpha); nodeRect.transition() .ease(c.ease).duration(c.duration) From a1e2dee63cfad21e13f9ee85c8acedd64c3426d9 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Thu, 21 Aug 2025 16:14:37 -0600 Subject: [PATCH 004/241] Fix bad method calls; fix NaN bugs --- src/components/color/index.js | 3 ++- src/components/fx/hover.js | 5 ++-- src/lib/gl_format_color.js | 1 + src/traces/heatmap/plot.js | 44 +++++++++++++++++++---------------- 4 files changed, 30 insertions(+), 23 deletions(-) diff --git a/src/components/color/index.js b/src/components/color/index.js index 6e9048964de..4af743babcc 100644 --- a/src/components/color/index.js +++ b/src/components/color/index.js @@ -26,7 +26,7 @@ const combine = (front, back = background) => { fc.alpha ||= 1; if(fc.alpha === 1) return color(front).rgb().string(); - const bc = color(back).rgb().object; + const bc = color(back).rgb().object(); bc.alpha ||= 1; const bcflat = bc.alpha === 1 ? bc @@ -77,6 +77,7 @@ const contrast = (cstr, lightAmount, darkAmount) => { if(c.alpha() !== 1) c = color(combine(cstr, background)); + // TODO: Should the API change such that lightAmount/darkAmount are passed in as decimal instead of percent number? const newColor = color( c.isDark() ? (lightAmount ? c.lighten(lightAmount / 100) : background) diff --git a/src/components/fx/hover.js b/src/components/fx/hover.js index 1393bbdb47f..e72c7a31d8c 100644 --- a/src/components/fx/hover.js +++ b/src/components/fx/hover.js @@ -2127,7 +2127,7 @@ function createSpikelines(gd, closestPoints, opts) { hLinePointX = xa._offset + hLinePoint.x; hLinePointY = ya._offset + hLinePoint.y; } - var dfltHLineColor = Color.color(hLinePoint.color).contrast(contrastColor) < 1.5 + var dfltHLineColor = Color.color(hLinePoint.color).contrast(Color.color(contrastColor)) < 1.5 ? Color.contrast(contrastColor) : hLinePoint.color; var yMode = ya.spikemode; @@ -2207,7 +2207,8 @@ function createSpikelines(gd, closestPoints, opts) { vLinePointX = xa._offset + vLinePoint.x; vLinePointY = ya._offset + vLinePoint.y; } - var dfltVLineColor = Color.color(vLinePoint.color).contrast(contrastColor) < 1.5 + + var dfltVLineColor = Color.color(vLinePoint.color).contrast(Color.color(contrastColor)) < 1.5 ? Color.contrast(contrastColor) : vLinePoint.color; var xMode = xa.spikemode; diff --git a/src/lib/gl_format_color.js b/src/lib/gl_format_color.js index 1d23cceafe1..ff4f8c38afc 100644 --- a/src/lib/gl_format_color.js +++ b/src/lib/gl_format_color.js @@ -4,6 +4,7 @@ var isNumeric = require('fast-isnumeric'); var rgba = require('color-normalize'); var Colorscale = require('../components/colorscale'); +var Color = require('../components/color'); var colorDflt = require('../components/color/attributes').defaultLine; var isArrayOrTypedArray = require('./array').isArrayOrTypedArray; diff --git a/src/traces/heatmap/plot.js b/src/traces/heatmap/plot.js index 350df31c5a1..e7a851da763 100644 --- a/src/traces/heatmap/plot.js +++ b/src/traces/heatmap/plot.js @@ -202,19 +202,19 @@ module.exports = function(gd, plotinfo, cdheatmaps, heatmapLayer) { var xb, xi, v, row, c; function setColor(v, pixsize) { - if(v !== undefined) { - var c = sclFunc(v); - c[0] = Math.round(c[0]); - c[1] = Math.round(c[1]); - c[2] = Math.round(c[2]); - - pixcount += pixsize; - rcount += c[0] * pixsize; - gcount += c[1] * pixsize; - bcount += c[2] * pixsize; - return c; - } - return [0, 0, 0, 0]; + if (v === undefined || pixsize === undefined) return [0, 0, 0, 0]; + + var c = sclFunc(v); + c[0] = Math.round(c[0]); + c[1] = Math.round(c[1]); + c[2] = Math.round(c[2]); + + pixcount += pixsize; + rcount += c[0] * pixsize; + gcount += c[1] * pixsize; + bcount += c[2] * pixsize; + + return c; } function interpColor(r0, r1, xinterp, yinterp) { @@ -340,13 +340,17 @@ module.exports = function(gd, plotinfo, cdheatmaps, heatmapLayer) { } } - rcount = Math.round(rcount / pixcount); - gcount = Math.round(gcount / pixcount); - bcount = Math.round(bcount / pixcount); - const cstr = `rgb(${rcount}, ${gcount}, ${bcount})`; - - gd._hmpixcount = (gd._hmpixcount||0) + pixcount; - gd._hmlumcount = (gd._hmlumcount||0) + pixcount * Color.color(cstr).luminosity(); + // Guard against dividing by zero and the resulting bad color string + if (pixcount) { + rcount = Math.round(rcount / pixcount); + gcount = Math.round(gcount / pixcount); + bcount = Math.round(bcount / pixcount); + + const cstr = `rgb(${rcount}, ${gcount}, ${bcount})`; + + gd._hmpixcount = (gd._hmpixcount || 0) + pixcount; + gd._hmlumcount = (gd._hmlumcount || 0) + pixcount * Color.color(cstr).luminosity(); + } var image3 = plotGroup.selectAll('image') .data(cd); From 4b97ca93f57fe0d43b39d1842932693e422e4346 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Thu, 21 Aug 2025 16:15:15 -0600 Subject: [PATCH 005/241] Update tests per library change --- test/jasmine/tests/axes_test.js | 17 +++++++---------- test/jasmine/tests/color_test.js | 10 +++++----- test/jasmine/tests/gl3dlayout_test.js | 5 ++--- test/jasmine/tests/hover_label_test.js | 4 ++-- 4 files changed, 16 insertions(+), 20 deletions(-) diff --git a/test/jasmine/tests/axes_test.js b/test/jasmine/tests/axes_test.js index 6314d97a1b0..2e46116330f 100644 --- a/test/jasmine/tests/axes_test.js +++ b/test/jasmine/tests/axes_test.js @@ -7,7 +7,6 @@ var Plots = require('../../../src/plots/plots'); var Lib = require('../../../src/lib'); var Loggers = require('../../../src/lib/loggers'); var Color = require('../../../src/components/color'); -var tinycolor = require('tinycolor2'); var handleTickValueDefaults = require('../../../src/plots/cartesian/tick_value_defaults'); var Cartesian = require('../../../src/plots/cartesian'); @@ -467,11 +466,11 @@ describe('Test axes', function() { yaxis: {} }; supplyLayoutDefaults(layoutIn, layoutOut, fullData); - var lightLine = tinycolor(Color.lightLine).toRgbString(); + var lightLine = Color.color(Color.lightLine).rgb().string(); expect(layoutOut.xaxis.gridwidth).toBe(1); - expect(tinycolor(layoutOut.xaxis.gridcolor).toRgbString()).toBe(lightLine); + expect(Color.color(layoutOut.xaxis.gridcolor).rgb().string()).toBe(lightLine); expect(layoutOut.yaxis.gridwidth).toBe(1); - expect(tinycolor(layoutOut.yaxis.gridcolor).toRgbString()).toBe(lightLine); + expect(Color.color(layoutOut.yaxis.gridcolor).rgb().string()).toBe(lightLine); }); it('should set gridcolor/gridwidth to undefined if showgrid is false', function() { @@ -566,11 +565,9 @@ describe('Test axes', function() { var frac = 100 * (0xe - 0x4) / (0xf - 0x4); supplyLayoutDefaults(layoutIn, layoutOut, fullData); - expect(layoutOut.xaxis.gridcolor) - .toEqual(tinycolor.mix('red', bgColor, frac).toRgbString()); + expect(layoutOut.xaxis.gridcolor).toEqual(Color.mix('red', bgColor, frac)); expect(layoutOut.yaxis.gridcolor).toEqual('blue'); - expect(layoutOut.yaxis2.gridcolor) - .toEqual(tinycolor.mix('#444', bgColor, frac).toRgbString()); + expect(layoutOut.yaxis2.gridcolor).toEqual(Color.mix('#444', bgColor, frac)); }); it('should default to a dark color for tickfont when plotting background is light', function() { @@ -583,7 +580,7 @@ describe('Test axes', function() { }; supplyLayoutDefaults(layoutIn, layoutOut, fullData); - expect(layoutOut.xaxis.tickfont.color).toEqual('#444'); + expect(layoutOut.xaxis.tickfont.color).toEqual('rgb(68, 68, 68)'); }); it('should default to a light color for tickfont when plotting background is dark', function() { @@ -596,7 +593,7 @@ describe('Test axes', function() { }; supplyLayoutDefaults(layoutIn, layoutOut, fullData); - expect(layoutOut.xaxis.tickfont.color).toEqual('#fff'); + expect(layoutOut.xaxis.tickfont.color).toEqual('rgb(255, 255, 255)'); }); it('should not coerce ticklabelposition on *multicategory* axes for now', function() { diff --git a/test/jasmine/tests/color_test.js b/test/jasmine/tests/color_test.js index 990092529b7..a3f617d737f 100644 --- a/test/jasmine/tests/color_test.js +++ b/test/jasmine/tests/color_test.js @@ -155,7 +155,7 @@ describe('Test color:', function() { } }; - Color.fill(mockElement, 'rgba(255,255,0,0.5'); + Color.fill(mockElement, 'rgba(255,255,0,0.5)'); }); }); @@ -168,7 +168,7 @@ describe('Test color:', function() { } }; - Color.stroke(mockElement, 'rgba(255,255,0,0.5'); + Color.stroke(mockElement, 'rgba(255,255,0,0.5)'); }); }); @@ -176,19 +176,19 @@ describe('Test color:', function() { it('should darken light colors', function() { var out = Color.contrast('#eee', 10, 20); - expect(out).toEqual('#bbbbbb'); + expect(out).toEqual('rgb(190, 190, 190)'); }); it('should darken light colors (2)', function() { var out = Color.contrast('#fdae61', 10, 20); - expect(out).toEqual('#f57a03'); + expect(out).toEqual('rgb(252, 139, 28)'); }); it('should lighten dark colors', function() { var out = Color.contrast('#2b83ba', 10, 20); - expect(out).toEqual('#449dd4'); + expect(out).toEqual('rgb(47, 144, 205)'); }); }); }); diff --git a/test/jasmine/tests/gl3dlayout_test.js b/test/jasmine/tests/gl3dlayout_test.js index ceb049d24f3..75d271f7b6c 100644 --- a/test/jasmine/tests/gl3dlayout_test.js +++ b/test/jasmine/tests/gl3dlayout_test.js @@ -1,7 +1,6 @@ var Plotly = require('../../../lib/index'); var Gl3d = require('../../../src/plots/gl3d'); -var tinycolor = require('tinycolor2'); var Color = require('../../../src/components/color'); var createGraphDiv = require('../assets/create_graph_div'); @@ -378,10 +377,10 @@ describe('Test Gl3d layout defaults', function() { supplyLayoutDefaults(layoutIn, layoutOut, fullData); expect(layoutOut.scene.xaxis.gridcolor) - .toEqual(tinycolor.mix('red', bgColor, frac).toRgbString()); + .toEqual(Color.mix('red', bgColor, frac)); expect(layoutOut.scene.yaxis.gridcolor).toEqual('blue'); expect(layoutOut.scene.zaxis.gridcolor) - .toEqual(tinycolor.mix('#444', bgColor, frac).toRgbString()); + .toEqual(Color.mix('#444', bgColor, frac)); }); it('should disable converting numeric strings using axis.autotypenumbers', function() { diff --git a/test/jasmine/tests/hover_label_test.js b/test/jasmine/tests/hover_label_test.js index ba3211c458a..7e716fc4f78 100644 --- a/test/jasmine/tests/hover_label_test.js +++ b/test/jasmine/tests/hover_label_test.js @@ -949,10 +949,10 @@ describe('hover info', function() { fontColor: 'rgb(255, 255, 255)' }, { bgcolor: 'rgb(0, 200, 0)', - bordercolor: 'rgb(255, 255, 255)', + bordercolor: 'rgb(68, 68, 68)', fontSize: 13, fontFamily: 'Arial', - fontColor: 'rgb(255, 255, 255)' + fontColor: 'rgb(68, 68, 68)' }, { bgcolor: 'rgb(255, 127, 14)', bordercolor: 'rgb(68, 68, 68)', From 17fe004f3cf3235fec9cc4909457859e841c4563 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Fri, 22 Aug 2025 09:53:43 -0600 Subject: [PATCH 006/241] Use correct method name --- src/lib/coerce.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/coerce.js b/src/lib/coerce.js index 85f31d3ad14..bad6067c23b 100644 --- a/src/lib/coerce.js +++ b/src/lib/coerce.js @@ -181,7 +181,7 @@ exports.valObjectMeta = { otherOpts: ['dflt'], coerceFunction: function(v, propOut, dflt) { if(!Array.isArray(v) || !v.length) propOut.set(dflt); - else if(v.every(color => Color.isvalid(color))) propOut.set(v); + else if(v.every(color => Color.isValid(color))) propOut.set(v); else propOut.set(dflt); } }, @@ -450,7 +450,7 @@ exports.coerce = function(containerIn, containerOut, attributes, attribute, dflt * Variation on coerce * * Uses coerce to get attribute value if user input is valid, - * returns attribute default if user input it not valid or + * returns attribute default if user input is not valid or * returns false if there is no user input. */ exports.coerce2 = function(containerIn, containerOut, attributes, attribute, dflt) { From e314022ece5031c62d6405b2d16c7c388655f4a5 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Fri, 22 Aug 2025 09:54:28 -0600 Subject: [PATCH 007/241] Use alternate coerce function to avoid gridcolor of `false` --- src/traces/carpet/axis_defaults.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/traces/carpet/axis_defaults.js b/src/traces/carpet/axis_defaults.js index 1b45c87f6e5..8147e87d31c 100644 --- a/src/traces/carpet/axis_defaults.js +++ b/src/traces/carpet/axis_defaults.js @@ -135,7 +135,7 @@ module.exports = function handleAxisDefaults(containerIn, containerOut, options) dataAttr: letter }); - var gridColor = coerce2('gridcolor', addOpacity(dfltColor, 0.3)); + var gridColor = coerce('gridcolor', addOpacity(dfltColor, 0.3)); var gridWidth = coerce2('gridwidth'); var gridDash = coerce2('griddash'); var showGrid = coerce('showgrid'); From 7552832487fdac283d0d422c4de551aa079ea587 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Tue, 26 Aug 2025 09:33:25 -0600 Subject: [PATCH 008/241] Update function call --- src/traces/pie/calc.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/traces/pie/calc.js b/src/traces/pie/calc.js index 914ab513677..2063b4ee273 100644 --- a/src/traces/pie/calc.js +++ b/src/traces/pie/calc.js @@ -90,7 +90,7 @@ function makePullColorFn(colorMap) { return function pullColor(color, id) { if(!color || !Color.isValid(color)) return false; - const newColor = Color.addOpacity(color, color.getAlpha()); + const newColor = Color.addOpacity(color, Color.opacity(color)); if(!colorMap[id]) colorMap[id] = newColor; return newColor; From 5d0322a2fa7d34bb2fea2ab4de040650d6bddb8f Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Tue, 26 Aug 2025 09:36:06 -0600 Subject: [PATCH 009/241] Update tests per library change --- test/jasmine/tests/annotations_test.js | 4 ++-- test/jasmine/tests/bar_test.js | 2 +- test/jasmine/tests/colorscale_test.js | 4 ++-- test/jasmine/tests/funnelarea_test.js | 4 ++-- test/jasmine/tests/pie_test.js | 4 ++-- test/jasmine/tests/range_selector_test.js | 6 +++--- test/jasmine/tests/waterfall_test.js | 17 +++++++---------- 7 files changed, 19 insertions(+), 22 deletions(-) diff --git a/test/jasmine/tests/annotations_test.js b/test/jasmine/tests/annotations_test.js index 7abda62e48a..d6435484b51 100644 --- a/test/jasmine/tests/annotations_test.js +++ b/test/jasmine/tests/annotations_test.js @@ -1440,11 +1440,11 @@ describe('annotation effects', function() { .then(function() { expect(gd._fullLayout.annotations[0].hoverlabel).toEqual({ bgcolor: '#444', - bordercolor: '#fff', + bordercolor: 'rgb(255, 255, 255)', font: { family: 'Arial, sans-serif', size: 13, - color: '#fff', + color: 'rgb(255, 255, 255)', weight: 'normal', style: 'normal', variant: 'normal', diff --git a/test/jasmine/tests/bar_test.js b/test/jasmine/tests/bar_test.js index 10e6413659b..14439486372 100644 --- a/test/jasmine/tests/bar_test.js +++ b/test/jasmine/tests/bar_test.js @@ -312,7 +312,7 @@ describe('Bar.supplyDefaults', function() { supplyDefaults(traceIn, traceOut, defaultColor, layout); expect(traceOut.marker.pattern.bgcolor).toBe('green'); - expect(traceOut.marker.pattern.fgcolor).toBe('#fff'); + expect(traceOut.marker.pattern.fgcolor).toBe('rgb(255, 255, 255)'); expect(traceOut.marker.pattern.fgopacity).toBe(0.5); }); diff --git a/test/jasmine/tests/colorscale_test.js b/test/jasmine/tests/colorscale_test.js index f8b0fe91348..0ce9fbb6ad0 100644 --- a/test/jasmine/tests/colorscale_test.js +++ b/test/jasmine/tests/colorscale_test.js @@ -1045,8 +1045,8 @@ describe('Test colorscale restyle calls:', function() { .then(function() { _assert(msg + ' back to original marker.symbol', exp); }); } - var rdbu = ['rgb(5, 10, 172)', 'rgb(53, 70, 208)', 'rgb(227, 153, 104)', - 'rgb(53, 70, 208)', 'rgb(53, 70, 208)', 'rgb(178, 10, 28)']; + var rdbu = ['rgb(5, 10, 172)', 'rgb(53, 71, 208)', 'rgb(227, 153, 104)', + 'rgb(53, 71, 208)', 'rgb(53, 71, 208)', 'rgb(178, 10, 28)']; var grns = ['rgb(0, 68, 27)', 'rgb(12, 119, 52)', 'rgb(174, 222, 167)', 'rgb(12, 119, 52)', 'rgb(12, 119, 52)', 'rgb(247, 252, 245)']; diff --git a/test/jasmine/tests/funnelarea_test.js b/test/jasmine/tests/funnelarea_test.js index 078a29f8f9b..f9c2b858a45 100644 --- a/test/jasmine/tests/funnelarea_test.js +++ b/test/jasmine/tests/funnelarea_test.js @@ -264,7 +264,7 @@ describe('Funnelarea traces', function() { it('can use a separate funnelarea colorway and disable extended colors', function(done) { Plotly.newPlot(gd, [{type: 'funnelarea', values: [7, 6, 5, 4, 3, 2, 1]}], {colorway: ['#777', '#F00']}) - .then(_checkSliceColors(['119,119,119', '255,0,0', '170,170,170', '255,102,102', '68,68,68', '153,0,0', '119,119,119'])) + .then(_checkSliceColors(['119,119,119', '255,0,0', '143,143,143', '255,51,51', '95,95,95', '204,0,0', '119,119,119'])) .then(function() { return Plotly.relayout(gd, {extendfunnelareacolors: false}); }) @@ -276,7 +276,7 @@ describe('Funnelarea traces', function() { .then(function() { return Plotly.relayout(gd, {extendfunnelareacolors: null}); }) - .then(_checkSliceColors(['255,255,0', '0,255,0', '0,0,255', '255,255,102', '102,255,102', '102,102,255', '153,153,0'])) + .then(_checkSliceColors(['255,255,0', '0,255,0', '0,0,255', '255,255,51', '51,255,51', '51,51,255', '204,204,0'])) .then(done, done.fail); }); diff --git a/test/jasmine/tests/pie_test.js b/test/jasmine/tests/pie_test.js index d1820868f82..962c0402b84 100644 --- a/test/jasmine/tests/pie_test.js +++ b/test/jasmine/tests/pie_test.js @@ -288,7 +288,7 @@ describe('Pie traces', function() { it('can use a separate pie colorway and disable extended colors', function(done) { Plotly.newPlot(gd, [{type: 'pie', values: [7, 6, 5, 4, 3, 2, 1]}], {colorway: ['#777', '#F00']}) - .then(_checkSliceColors(['119,119,119', '255,0,0', '170,170,170', '255,102,102', '68,68,68', '153,0,0', '119,119,119'])) + .then(_checkSliceColors(['119,119,119', '255,0,0', '143,143,143', '255,51,51', '95,95,95', '204,0,0', '119,119,119'])) .then(function() { return Plotly.relayout(gd, {extendpiecolors: false}); }) @@ -300,7 +300,7 @@ describe('Pie traces', function() { .then(function() { return Plotly.relayout(gd, {extendpiecolors: null}); }) - .then(_checkSliceColors(['255,255,0', '0,255,0', '0,0,255', '255,255,102', '102,255,102', '102,102,255', '153,153,0'])) + .then(_checkSliceColors(['255,255,0', '0,255,0', '0,0,255', '255,255,51', '51,255,51', '51,51,255', '204,204,0'])) .then(done, done.fail); }); diff --git a/test/jasmine/tests/range_selector_test.js b/test/jasmine/tests/range_selector_test.js index a827d7e43f8..45e9c576643 100644 --- a/test/jasmine/tests/range_selector_test.js +++ b/test/jasmine/tests/range_selector_test.js @@ -540,11 +540,11 @@ describe('range selector interactions:', function() { it('should be able to change its style on `relayout`', function(done) { var prefix = 'xaxis.rangeselector.'; - checkButtonColor('rgb(238, 238, 238)', 'rgb(212, 212, 212)'); + checkButtonColor('rgb(238, 238, 238)', 'rgb(214, 214, 214)'); Plotly.relayout(gd, prefix + 'bgcolor', 'red') .then(function() { - checkButtonColor('rgb(255, 0, 0)', 'rgb(255, 128, 128)'); + checkButtonColor('rgb(255, 0, 0)', 'rgb(255, 64, 64)'); return Plotly.relayout(gd, prefix + 'activecolor', 'blue'); }).then(function() { @@ -578,7 +578,7 @@ describe('range selector interactions:', function() { var pos = getRectCenter(button.node()); var fillColor = Color.rgb(gd._fullLayout.xaxis.rangeselector.bgcolor); - var activeColor = 'rgb(212, 212, 212)'; + var activeColor = 'rgb(214, 214, 214)'; expect(button.node().style.fill).toEqual(fillColor); diff --git a/test/jasmine/tests/waterfall_test.js b/test/jasmine/tests/waterfall_test.js index 7b5164a358e..54c0a05e458 100644 --- a/test/jasmine/tests/waterfall_test.js +++ b/test/jasmine/tests/waterfall_test.js @@ -11,8 +11,7 @@ var createGraphDiv = require('../assets/create_graph_div'); var destroyGraphDiv = require('../assets/destroy_graph_div'); var supplyAllDefaults = require('../assets/supply_defaults'); -var color = require('../../../src/components/color'); -var rgb = color.rgb; +var Color = require('../../../src/components/color'); var customAssertions = require('../assets/custom_assertions'); var assertHoverLabelContent = customAssertions.assertHoverLabelContent; @@ -259,7 +258,7 @@ describe('Waterfall.supplyDefaults', function() { y: [1, 2, 3], }; supplyDefaults(traceIn, traceOut, defaultColor, {}); - expect(traceOut.connector.line.color).toBe(color.defaultLine); + expect(traceOut.connector.line.color).toBe(Color.defaultLine); }); }); @@ -668,7 +667,7 @@ describe('A waterfall plot', function() { expect(textNode.style.fontSize).toBe(expectedFontProps.size[index] + 'px'); var actualColorRGB = textNode.style.fill; - var expectedColorRGB = rgb(expectedFontProps.color[index]); + var expectedColorRGB = Color.rgb(expectedFontProps.color[index]); expect(actualColorRGB).toBe(expectedColorRGB); } @@ -688,7 +687,7 @@ describe('A waterfall plot', function() { var expFontColor = expFontColors[i]; var isArray = Array.isArray(expFontColor); - expect(this.style.fill).toBe(isArray ? rgb(expFontColor[0]) : rgb(expFontColor), + expect(this.style.fill).toBe(Color.rgb(isArray ? expFontColor[0] : expFontColor), (label || '') + ', fill for element ' + i); expect(this.style.fillOpacity).toBe(isArray ? expFontColor[1] : '1', (label || '') + ', fillOpacity for element ' + i); @@ -1067,9 +1066,6 @@ describe('A waterfall plot', function() { font: {family: 'arial', color: 'blue', size: 13} }; - // Note: insidetextfont.color does NOT inherit from textfont.color - // since insidetextfont.color should be contrasting to bar's fill by default. - var contrastingLightColorVal = color.contrast('black'); var expected = { y: [10, 20, 30, 40], type: 'waterfall', @@ -1082,7 +1078,8 @@ describe('A waterfall plot', function() { }, insidetextfont: { family: ['"comic sans"', 'arial', 'arial'], - color: ['black', 'green', contrastingLightColorVal], + // NOTE: 'color' does NOT inherit from 'textfont.color' since 'color' should be contrasting to bar's fill by default. + color: ['black', 'green', Color.contrast('white')], size: [8, 12, 16] }, outsidetextfont: { @@ -1187,7 +1184,7 @@ describe('A waterfall plot', function() { text: ['A', 'B', 'C'], textposition: 'inside' }]) - .then(assertTextFontColors(['rgb(255, 255, 255)', 'rgb(255, 255, 255)', 'rgb(255, 255, 255)'])) + .then(assertTextFontColors(['rgb(68, 68, 68)', 'rgb(68, 68, 68)', 'rgb(68, 68, 68)'])) .then(function() { gd.data[0].insidetextfont = {color: 'red'}; return Plotly.react(gd, gd.data); From 5964bee7c145c245535031da052929c4b5d5f7b1 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Fri, 29 Aug 2025 15:30:03 -0600 Subject: [PATCH 010/241] Update attribute, description to remove hsv --- src/components/colorscale/attributes.js | 2 +- src/lib/coerce.js | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/components/colorscale/attributes.js b/src/components/colorscale/attributes.js index 6bfaac6be15..d680f638186 100644 --- a/src/components/colorscale/attributes.js +++ b/src/components/colorscale/attributes.js @@ -173,7 +173,7 @@ module.exports = function colorScaleAttrs(context, opts) { 'Sets the colorscale.' + effectDesc, 'The colorscale must be an array containing', 'arrays mapping a normalized value to an', - 'rgb, rgba, hex, hsl, hsv, or named color string.', + 'rgb, rgba, hex, hsl, or named color string.', 'At minimum, a mapping for the lowest (0) and highest (1)', 'values are required. For example,', '`[[0, \'rgb(0,0,255)\'], [1, \'rgb(255,0,0)\']]`.', diff --git a/src/lib/coerce.js b/src/lib/coerce.js index bad6067c23b..11212f7512b 100644 --- a/src/lib/coerce.js +++ b/src/lib/coerce.js @@ -156,11 +156,10 @@ exports.valObjectMeta = { description: [ 'A string describing color.', 'Supported formats:', - '- hex (e.g. \'#d3d3d3\')', - '- rgb (e.g. \'rgb(255, 0, 0)\')', - '- rgba (e.g. \'rgb(255, 0, 0, 0.5)\')', + "- hex (e.g. '#d3d3d3', '#d3d3d3aa)", + "- rgb (e.g. 'rgb(255, 0, 0)', 'rgb(255 0 0)')", + "- rgba (e.g. 'rgba(255, 0, 0, 0.5)', 'rgba(255 0 0 / 0.5)')", '- hsl (e.g. \'hsl(0, 100%, 50%)\')', - '- hsv (e.g. \'hsv(0, 100%, 100%)\')', '- named colors (full list: http://www.w3.org/TR/css3-color/#svg-color)' ].join(' '), requiredOpts: [], From d6853e42634dae014f40dd853e8596c3a9f7e239 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Fri, 29 Aug 2025 15:30:28 -0600 Subject: [PATCH 011/241] Convert hsv value to rgb in test mock --- test/image/mocks/gl2d_parcoords_style_labels.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/image/mocks/gl2d_parcoords_style_labels.json b/test/image/mocks/gl2d_parcoords_style_labels.json index 80a1785e9e7..629d3f36e30 100644 --- a/test/image/mocks/gl2d_parcoords_style_labels.json +++ b/test/image/mocks/gl2d_parcoords_style_labels.json @@ -8,7 +8,7 @@ "size": 16 }, "rangefont": { - "color": "hsv(191,191,63)", + "color": "rgb(0, 131, 161)", "family": "Times New Roman", "size": 8 }, From 93a836598dd136a535dd393ce3a13b4743910ba1 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Mon, 17 Nov 2025 09:48:19 -0700 Subject: [PATCH 012/241] Override color-string package dependency --- package-lock.json | 6 +++--- package.json | 3 +++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 75499c07319..c1d1b3ab359 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2849,9 +2849,9 @@ "license": "MIT" }, "node_modules/color-string": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-2.0.1.tgz", - "integrity": "sha512-5z9FbYTZPAo8iKsNEqRNv+OlpBbDcoE+SY9GjLfDUHEfcNNV7tS9eSAlFHEaub/r5tBL9LtskAeq1l9SaoZ5tQ==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-2.1.4.tgz", + "integrity": "sha512-Bb6Cq8oq0IjDOe8wJmi4JeNn763Xs9cfrBcaylK1tPypWzyoy2G3l90v9k64kjphl/ZJjPIShFztenRomi8WTg==", "license": "MIT", "dependencies": { "color-name": "^2.0.0" diff --git a/package.json b/package.json index 4bd3fc3be49..a382417330d 100644 --- a/package.json +++ b/package.json @@ -179,6 +179,9 @@ "virtual-webgl": "^1.0.6" }, "overrides": { + "color": { + "color-string": "^2.1.4" + }, "falafel": { "acorn": "^8.1.1" } From 5c2dbdaedbff8aa7faa7fb76a19f59563266a24a Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Mon, 17 Nov 2025 10:10:52 -0700 Subject: [PATCH 013/241] Remove tinycolor2 library --- package-lock.json | 7 ------- package.json | 1 - 2 files changed, 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0813eea2b3e..1aad487be30 100644 --- a/package-lock.json +++ b/package-lock.json @@ -55,7 +55,6 @@ "strongly-connected-components": "^1.0.1", "superscript-text": "^1.0.0", "svg-path-sdf": "^1.1.3", - "tinycolor2": "^1.4.2", "to-px": "1.0.1", "topojson-client": "^3.1.0", "webgl-context": "^2.2.0", @@ -10064,12 +10063,6 @@ "safe-buffer": "~5.2.0" } }, - "node_modules/tinycolor2": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", - "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==", - "license": "MIT" - }, "node_modules/tinyqueue": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-2.0.3.tgz", diff --git a/package.json b/package.json index 6554bdd8273..1a27876473f 100644 --- a/package.json +++ b/package.json @@ -113,7 +113,6 @@ "strongly-connected-components": "^1.0.1", "superscript-text": "^1.0.0", "svg-path-sdf": "^1.1.3", - "tinycolor2": "^1.4.2", "to-px": "1.0.1", "topojson-client": "^3.1.0", "webgl-context": "^2.2.0", From 2d5d3e07aca1beb0546420a11cc8401d50e82bec Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Mon, 17 Nov 2025 15:22:10 -0700 Subject: [PATCH 014/241] Linting/formatting --- src/components/color/index.js | 120 ++-- src/components/fx/hover.js | 14 +- src/traces/heatmap/plot.js | 10 +- test/jasmine/tests/validate_test.js | 850 ++++++++++++++++++---------- 4 files changed, 628 insertions(+), 366 deletions(-) diff --git a/src/components/color/index.js b/src/components/color/index.js index 4af743babcc..67c4d883819 100644 --- a/src/components/color/index.js +++ b/src/components/color/index.js @@ -2,16 +2,16 @@ const isNumeric = require('fast-isnumeric'); const isTypedArray = require('../../lib/array').isTypedArray; -const color = require('color').default +const color = require('color').default; const { background, defaultLine, defaults, lightLine } = require('./attributes'); -const rgb = cstr => { +const rgb = (cstr) => { const { r, g, b } = color(cstr).rgb().object(); return `rgb(${Math.round(r)}, ${Math.round(g)}, ${Math.round(b)})`; -} +}; -const opacity = cstr => cstr ? color(cstr).alpha() : 0; +const opacity = (cstr) => (cstr ? color(cstr).alpha() : 0); const addOpacity = (cstr, op) => { const c = color(cstr).rgb().object(); @@ -24,18 +24,19 @@ const addOpacity = (cstr, op) => { const combine = (front, back = background) => { const fc = color(front).rgb().object(); fc.alpha ||= 1; - if(fc.alpha === 1) return color(front).rgb().string(); + if (fc.alpha === 1) return color(front).rgb().string(); const bc = color(back).rgb().object(); bc.alpha ||= 1; - const bcflat = bc.alpha === 1 - ? bc - : { - r: 255 * (1 - bc.alpha) + bc.r * bc.alpha, - g: 255 * (1 - bc.alpha) + bc.g * bc.alpha, - b: 255 * (1 - bc.alpha) + bc.b * bc.alpha - }; - + const bcflat = + bc.alpha === 1 + ? bc + : { + r: 255 * (1 - bc.alpha) + bc.r * bc.alpha, + g: 255 * (1 - bc.alpha) + bc.g * bc.alpha, + b: 255 * (1 - bc.alpha) + bc.b * bc.alpha + }; + const fcflat = { r: bcflat.r * (1 - fc.alpha) + fc.r * fc.alpha, g: bcflat.g * (1 - fc.alpha) + fc.g * fc.alpha, @@ -58,7 +59,7 @@ const interpolate = (first, second, factor) => { const ic = { r: factor * fc.r + (1 - factor) * sc.r, g: factor * fc.g + (1 - factor) * sc.g, - b: factor * fc.b + (1 - factor) * sc.b, + b: factor * fc.b + (1 - factor) * sc.b }; return color(ic).rgb().string(); @@ -73,15 +74,19 @@ const interpolate = (first, second, factor) => { * otherwise we go all the way to white or black. */ const contrast = (cstr, lightAmount, darkAmount) => { - let c = color(cstr) + let c = color(cstr); - if(c.alpha() !== 1) c = color(combine(cstr, background)); + if (c.alpha() !== 1) c = color(combine(cstr, background)); // TODO: Should the API change such that lightAmount/darkAmount are passed in as decimal instead of percent number? const newColor = color( c.isDark() - ? (lightAmount ? c.lighten(lightAmount / 100) : background) - : (darkAmount ? c.darken(darkAmount / 100) : defaultLine) + ? lightAmount + ? c.lighten(lightAmount / 100) + : background + : darkAmount + ? c.darken(darkAmount / 100) + : defaultLine ); return newColor.rgb().string(); @@ -93,89 +98,94 @@ const fill = (s, cstr) => s.style({ fill: rgb(cstr), 'fill-opacity': opacity(cst // search container for colors with the deprecated rgb(fractions) format // and convert them to rgb(0-255 values) -const clean = container => { - if(!container || typeof container !== 'object') return; +const clean = (container) => { + if (!container || typeof container !== 'object') return; var keys = Object.keys(container); var i, j, key, val; - for(i = 0; i < keys.length; i++) { + for (i = 0; i < keys.length; i++) { key = keys[i]; val = container[key]; - if(key.substr(key.length - 5) === 'color') { + if (key.substr(key.length - 5) === 'color') { // only sanitize keys that end in "color" or "colorscale" - if(Array.isArray(val)) { - for(j = 0; j < val.length; j++) val[j] = cleanOne(val[j]); + if (Array.isArray(val)) { + for (j = 0; j < val.length; j++) val[j] = cleanOne(val[j]); } else container[key] = cleanOne(val); - } else if(key.substr(key.length - 10) === 'colorscale' && Array.isArray(val)) { + } else if (key.substr(key.length - 10) === 'colorscale' && Array.isArray(val)) { // colorscales have the format [[0, color1], [frac, color2], ... [1, colorN]] - for(j = 0; j < val.length; j++) { - if(Array.isArray(val[j])) val[j][1] = cleanOne(val[j][1]); + for (j = 0; j < val.length; j++) { + if (Array.isArray(val[j])) val[j][1] = cleanOne(val[j][1]); } - } else if(Array.isArray(val)) { + } else if (Array.isArray(val)) { // recurse into arrays of objects, and plain objects var el0 = val[0]; - if(!Array.isArray(el0) && el0 && typeof el0 === 'object') { - for(j = 0; j < val.length; j++) clean(val[j]); + if (!Array.isArray(el0) && el0 && typeof el0 === 'object') { + for (j = 0; j < val.length; j++) clean(val[j]); } - } else if(val && typeof val === 'object' && !isTypedArray(val)) clean(val); + } else if (val && typeof val === 'object' && !isTypedArray(val)) clean(val); } }; -const cleanOne = val => { - if(isNumeric(val) || typeof val !== 'string') return val; +const cleanOne = (val) => { + if (isNumeric(val) || typeof val !== 'string') return val; var valTrim = val.trim(); - if(valTrim.substr(0, 3) !== 'rgb') return val; + if (valTrim.substr(0, 3) !== 'rgb') return val; var match = valTrim.match(/^rgba?\s*\(([^()]*)\)$/); - if(!match) return val; + if (!match) return val; var parts = match[1].trim().split(/\s*[\s,]\s*/); var rgba = valTrim.charAt(3) === 'a' && parts.length === 4; - if(!rgba && parts.length !== 3) return val; + if (!rgba && parts.length !== 3) return val; - for(var i = 0; i < parts.length; i++) { - if(!parts[i].length) return val; + for (var i = 0; i < parts.length; i++) { + if (!parts[i].length) return val; parts[i] = Number(parts[i]); - if(!(parts[i] >= 0)) { + if (!(parts[i] >= 0)) { // all parts must be non-negative numbers return val; } - if(i === 3) { + if (i === 3) { // alpha>1 gets clipped to 1 - if(parts[i] > 1) parts[i] = 1; - } else if(parts[i] >= 1) { + if (parts[i] > 1) parts[i] = 1; + } else if (parts[i] >= 1) { // r, g, b must be < 1 (ie 1 itself is not allowed) return val; } } - var rgbStr = Math.round(parts[0] * 255) + ', ' + - Math.round(parts[1] * 255) + ', ' + - Math.round(parts[2] * 255); + var rgbStr = Math.round(parts[0] * 255) + ', ' + Math.round(parts[1] * 255) + ', ' + Math.round(parts[2] * 255); - if(rgba) return 'rgba(' + rgbStr + ', ' + parts[3] + ')'; + if (rgba) return 'rgba(' + rgbStr + ', ' + parts[3] + ')'; return 'rgb(' + rgbStr + ')'; -} +}; const equals = (cstr1, cstr2) => cstr1 && cstr2 && color(cstr1).rgb().string() === color(cstr2).rgb().string(); -const isValid = cstr => { - try { return cstr && !!color(cstr); } - catch { return false; } -} +const isValid = (cstr) => { + try { + return cstr && !!color(cstr); + } catch { + return false; + } +}; -const mix = (cstr1, cstr2, weight) => color(cstr1).mix(color(cstr2), weight / 100).rgb().string(); +const mix = (cstr1, cstr2, weight) => + color(cstr1) + .mix(color(cstr2), weight / 100) + .rgb() + .string(); const mostReadable = (baseColor, colorList = []) => { let bestColor; @@ -188,11 +198,11 @@ const mostReadable = (baseColor, colorList = []) => { bestColor = color(cstr).rgb().string(); } } - + // Fall back to black/white if provided colors don't have proper contrast level return bestColor && color(baseColor).level(color(bestColor)) ? bestColor - : mostReadable(baseColor, ["#000", "#fff"]); + : mostReadable(baseColor, ['#000', '#fff']); }; module.exports = { @@ -214,4 +224,4 @@ module.exports = { opacity, rgb, stroke -} +}; diff --git a/src/components/fx/hover.js b/src/components/fx/hover.js index 56ada091bed..ed488639082 100644 --- a/src/components/fx/hover.js +++ b/src/components/fx/hover.js @@ -2227,9 +2227,10 @@ function createSpikelines(gd, closestPoints, opts) { hLinePointX = xa._offset + hLinePoint.x; hLinePointY = ya._offset + hLinePoint.y; } - var dfltHLineColor = Color.color(hLinePoint.color).contrast(Color.color(contrastColor)) < 1.5 - ? Color.contrast(contrastColor) - : hLinePoint.color; + var dfltHLineColor = + Color.color(hLinePoint.color).contrast(Color.color(contrastColor)) < 1.5 + ? Color.contrast(contrastColor) + : hLinePoint.color; var yMode = ya.spikemode; var yThickness = ya.spikethickness; var yColor = ya.spikecolor || dfltHLineColor; @@ -2311,9 +2312,10 @@ function createSpikelines(gd, closestPoints, opts) { vLinePointY = ya._offset + vLinePoint.y; } - var dfltVLineColor = Color.color(vLinePoint.color).contrast(Color.color(contrastColor)) < 1.5 - ? Color.contrast(contrastColor) - : vLinePoint.color; + var dfltVLineColor = + Color.color(vLinePoint.color).contrast(Color.color(contrastColor)) < 1.5 + ? Color.contrast(contrastColor) + : vLinePoint.color; var xMode = xa.spikemode; var xThickness = xa.spikethickness; var xColor = xa.spikecolor || dfltVLineColor; diff --git a/src/traces/heatmap/plot.js b/src/traces/heatmap/plot.js index d9b5013cf88..48bd11d442e 100644 --- a/src/traces/heatmap/plot.js +++ b/src/traces/heatmap/plot.js @@ -202,7 +202,7 @@ module.exports = function (gd, plotinfo, cdheatmaps, heatmapLayer) { function setColor(v, pixsize) { if (v === undefined || pixsize === undefined) return [0, 0, 0, 0]; - + var c = sclFunc(v); c[0] = Math.round(c[0]); c[1] = Math.round(c[1]); @@ -349,7 +349,7 @@ module.exports = function (gd, plotinfo, cdheatmaps, heatmapLayer) { bcount = Math.round(bcount / pixcount); const cstr = `rgb(${rcount}, ${gcount}, ${bcount})`; - + gd._hmpixcount = (gd._hmpixcount || 0) + pixcount; gd._hmlumcount = (gd._hmlumcount || 0) + pixcount * Color.color(cstr).luminosity(); } @@ -542,7 +542,11 @@ module.exports = function (gd, plotinfo, cdheatmaps, heatmapLayer) { var fontColor = font.color; if (!fontColor || fontColor === 'auto') { - fontColor = Color.contrast(d.z === undefined ? gd._fullLayout.plot_bgcolor : `rgba(${sclFunc(d.z).map(Math.round).join()})`); + fontColor = Color.contrast( + d.z === undefined + ? gd._fullLayout.plot_bgcolor + : `rgba(${sclFunc(d.z).map(Math.round).join()})` + ); } thisLabel diff --git a/test/jasmine/tests/validate_test.js b/test/jasmine/tests/validate_test.js index 983d6288aaf..bf3ccd69cb6 100644 --- a/test/jasmine/tests/validate_test.js +++ b/test/jasmine/tests/validate_test.js @@ -1,8 +1,7 @@ var Plotly = require('../../../lib/index'); var Lib = require('../../../src/lib'); - -describe('Plotly.validate', function() { +describe('Plotly.validate', function () { function assertErrorContent(obj, code, cont, trace, path, astr, msg) { expect(obj.code).toEqual(code); expect(obj.container).toEqual(cont); @@ -12,20 +11,25 @@ describe('Plotly.validate', function() { expect(obj.msg).toEqual(msg); } - it('should return undefined when no errors are found', function() { - var out = Plotly.validate([{ - type: 'scatter', - x: [1, 2, 3] - }], { - title: { - text: 'my simple graph' + it('should return undefined when no errors are found', function () { + var out = Plotly.validate( + [ + { + type: 'scatter', + x: [1, 2, 3] + } + ], + { + title: { + text: 'my simple graph' + } } - }); + ); expect(out).toBeUndefined(); }); - it('should report when data is not an array', function() { + it('should report when data is not an array', function () { var out = Plotly.validate({ type: 'scatter', x: [1, 2, 3] @@ -33,181 +37,271 @@ describe('Plotly.validate', function() { expect(out.length).toEqual(1); assertErrorContent( - out[0], 'array', 'data', null, '', '', + out[0], + 'array', + 'data', + null, + '', + '', 'The data argument must be linked to an array container' ); }); - it('should report when a data trace is not an object', function() { - var out = Plotly.validate([{ - type: 'bar', - x: [1, 2, 3] - }, [1, 2, 3]]); + it('should report when a data trace is not an object', function () { + var out = Plotly.validate([ + { + type: 'bar', + x: [1, 2, 3] + }, + [1, 2, 3] + ]); expect(out.length).toEqual(1); assertErrorContent( - out[0], 'object', 'data', 1, '', '', + out[0], + 'object', + 'data', + 1, + '', + '', 'Trace 1 in the data argument must be linked to an object container' ); }); - it('should report when layout is not an object', function() { + it('should report when layout is not an object', function () { var out = Plotly.validate([], [1, 2, 3]); expect(out.length).toEqual(1); assertErrorContent( - out[0], 'object', 'layout', null, '', '', + out[0], + 'object', + 'layout', + null, + '', + '', 'The layout argument must be linked to an object container' ); }); - it('should report when trace is defaulted to not be visible', function() { - var out = Plotly.validate([{ - type: 'scattergeo' - // missing 'x' and 'y - }], {}); + it('should report when trace is defaulted to not be visible', function () { + var out = Plotly.validate( + [ + { + type: 'scattergeo' + // missing 'x' and 'y + } + ], + {} + ); expect(out.length).toEqual(1); - assertErrorContent( - out[0], 'invisible', 'data', 0, '', '', - 'Trace 0 got defaulted to be not visible' - ); + assertErrorContent(out[0], 'invisible', 'data', 0, '', '', 'Trace 0 got defaulted to be not visible'); }); - it('should report when trace contains keys not part of the schema', function() { - var out = Plotly.validate([{ - x: [1, 2, 3], - markerColor: 'blue' - }], {}); + it('should report when trace contains keys not part of the schema', function () { + var out = Plotly.validate( + [ + { + x: [1, 2, 3], + markerColor: 'blue' + } + ], + {} + ); expect(out.length).toEqual(1); assertErrorContent( - out[0], 'schema', 'data', 0, ['markerColor'], 'markerColor', + out[0], + 'schema', + 'data', + 0, + ['markerColor'], + 'markerColor', 'In data trace 0, key markerColor is not part of the schema' ); }); - it('should report when trace contains keys that are not coerced', function() { - var out = Plotly.validate([{ - x: [1, 2, 3], - mode: 'lines', - marker: { color: 'blue' } - }, { - x: [1, 2, 3], - mode: 'markers', - marker: { - color: 'blue', - cmin: 10 - } - }], {}); + it('should report when trace contains keys that are not coerced', function () { + var out = Plotly.validate( + [ + { + x: [1, 2, 3], + mode: 'lines', + marker: { color: 'blue' } + }, + { + x: [1, 2, 3], + mode: 'markers', + marker: { + color: 'blue', + cmin: 10 + } + } + ], + {} + ); expect(out.length).toEqual(2); assertErrorContent( - out[0], 'unused', 'data', 0, ['marker'], 'marker', + out[0], + 'unused', + 'data', + 0, + ['marker'], + 'marker', 'In data trace 0, container marker did not get coerced' ); assertErrorContent( - out[1], 'unused', 'data', 1, ['marker', 'cmin'], 'marker.cmin', + out[1], + 'unused', + 'data', + 1, + ['marker', 'cmin'], + 'marker.cmin', 'In data trace 1, key marker.cmin did not get coerced' ); }); - it('should report when trace contains keys set to invalid values', function() { - var out = Plotly.validate([{ - x: [1, 2, 3], - mode: 'lines', - line: { width: 'a big number' } - }, { - x: [1, 2, 3], - mode: 'markers', - marker: { color: 10 } - }], {}); + it('should report when trace contains keys set to invalid values', function () { + var out = Plotly.validate( + [ + { + x: [1, 2, 3], + mode: 'lines', + line: { width: 'a big number' } + }, + { + x: [1, 2, 3], + mode: 'markers', + marker: { color: 10 } + } + ], + {} + ); expect(out.length).toEqual(2); assertErrorContent( - out[0], 'value', 'data', 0, ['line', 'width'], 'line.width', + out[0], + 'value', + 'data', + 0, + ['line', 'width'], + 'line.width', 'In data trace 0, key line.width is set to an invalid value (a big number)' ); assertErrorContent( - out[1], 'value', 'data', 1, ['marker', 'color'], 'marker.color', + out[1], + 'value', + 'data', + 1, + ['marker', 'color'], + 'marker.color', 'In data trace 1, key marker.color is set to an invalid value (10)' ); }); - it('should work with info arrays', function() { - var out = Plotly.validate([{ - y: [1, 2, 2] - }], { - xaxis: { range: [0, 10] }, - yaxis: { range: 'not-gonna-work' }, - }); + it('should work with info arrays', function () { + var out = Plotly.validate( + [ + { + y: [1, 2, 2] + } + ], + { + xaxis: { range: [0, 10] }, + yaxis: { range: 'not-gonna-work' } + } + ); expect(out.length).toEqual(1); assertErrorContent( - out[0], 'value', 'layout', null, ['yaxis', 'range'], 'yaxis.range', + out[0], + 'value', + 'layout', + null, + ['yaxis', 'range'], + 'yaxis.range', 'In layout, key yaxis.range is set to an invalid value (not-gonna-work)' ); }); - it('should work with colorscale attributes', function() { - var out = Plotly.validate([{ - x: [1, 2, 3], - marker: { - color: [20, 10, 30], - colorscale: 'Reds' - } - }, { - x: [1, 2, 3], - marker: { - color: [20, 10, 30], - colorscale: 'not-gonna-work' - } - }, { - x: [1, 2, 3], - marker: { - color: [20, 10, 30], - colorscale: [[0, 'red'], [1, 'blue']] + it('should work with colorscale attributes', function () { + var out = Plotly.validate([ + { + x: [1, 2, 3], + marker: { + color: [20, 10, 30], + colorscale: 'Reds' + } + }, + { + x: [1, 2, 3], + marker: { + color: [20, 10, 30], + colorscale: 'not-gonna-work' + } + }, + { + x: [1, 2, 3], + marker: { + color: [20, 10, 30], + colorscale: [ + [0, 'red'], + [1, 'blue'] + ] + } } - }]); + ]); expect(out.length).toEqual(1); assertErrorContent( - out[0], 'value', 'data', 1, ['marker', 'colorscale'], 'marker.colorscale', + out[0], + 'value', + 'data', + 1, + ['marker', 'colorscale'], + 'marker.colorscale', 'In data trace 1, key marker.colorscale is set to an invalid value (not-gonna-work)' ); }); - it('should work with isLinkedToArray attributes', function() { - var out = Plotly.validate([ - {y: [1, 2]}, - {y: [1, 2], xaxis: 'x2'}, - {y: [1, 2], xaxis: 'x3'} - ], { - annotations: [{ - text: 'some text' - }, { - arrowSymbol: 'cat' - }, { - font: { color: 'wont-work' } - }], + it('should work with isLinkedToArray attributes', function () { + var out = Plotly.validate([{ y: [1, 2] }, { y: [1, 2], xaxis: 'x2' }, { y: [1, 2], xaxis: 'x3' }], { + annotations: [ + { + text: 'some text' + }, + { + arrowSymbol: 'cat' + }, + { + font: { color: 'wont-work' } + } + ], xaxis: { type: 'date', rangeselector: { - buttons: [{ - label: '1 month', - step: 'all', - count: 10 - }, 'wont-work', { - title: '1 month' - }] + buttons: [ + { + label: '1 month', + step: 'all', + count: 10 + }, + 'wont-work', + { + title: '1 month' + } + ] } }, xaxis2: { type: 'date', rangeselector: { - buttons: [{ - title: '1 month' - }] + buttons: [ + { + title: '1 month' + } + ] } }, xaxis3: { @@ -216,95 +310,150 @@ describe('Plotly.validate', function() { buttons: 'wont-work' } }, - shapes: [{ - opacity: 'none' - }], - updatemenus: [{ - buttons: [{ - method: 'restyle', - args: ['marker.color', 'red'] - }] - }, 'wont-work', { - buttons: [{ - method: 'restyle', - args: null - }, { - method: 'relayout', - args: ['marker.color', 'red'], - title: 'not-gonna-work' - }, 'wont-work'] - }] + shapes: [ + { + opacity: 'none' + } + ], + updatemenus: [ + { + buttons: [ + { + method: 'restyle', + args: ['marker.color', 'red'] + } + ] + }, + 'wont-work', + { + buttons: [ + { + method: 'restyle', + args: null + }, + { + method: 'relayout', + args: ['marker.color', 'red'], + title: 'not-gonna-work' + }, + 'wont-work' + ] + } + ] }); expect(out.length).toEqual(12); assertErrorContent( - out[0], 'schema', 'layout', null, - ['annotations', 1, 'arrowSymbol'], 'annotations[1].arrowSymbol', + out[0], + 'schema', + 'layout', + null, + ['annotations', 1, 'arrowSymbol'], + 'annotations[1].arrowSymbol', 'In layout, key annotations[1].arrowSymbol is not part of the schema' ); assertErrorContent( - out[1], 'value', 'layout', null, - ['annotations', 2, 'font', 'color'], 'annotations[2].font.color', + out[1], + 'value', + 'layout', + null, + ['annotations', 2, 'font', 'color'], + 'annotations[2].font.color', 'In layout, key annotations[2].font.color is set to an invalid value (wont-work)' ); assertErrorContent( - out[2], 'unused', 'layout', null, + out[2], + 'unused', + 'layout', + null, ['xaxis', 'rangeselector', 'buttons', 0, 'count'], 'xaxis.rangeselector.buttons[0].count', 'In layout, key xaxis.rangeselector.buttons[0].count did not get coerced' ); assertErrorContent( - out[3], 'schema', 'layout', null, + out[3], + 'schema', + 'layout', + null, ['xaxis', 'rangeselector', 'buttons', 2, 'title'], 'xaxis.rangeselector.buttons[2].title', 'In layout, key xaxis.rangeselector.buttons[2].title is not part of the schema' ); assertErrorContent( - out[4], 'object', 'layout', null, + out[4], + 'object', + 'layout', + null, ['xaxis', 'rangeselector', 'buttons', 1], 'xaxis.rangeselector.buttons[1]', 'In layout, key xaxis.rangeselector.buttons[1] must be linked to an object container' ); assertErrorContent( - out[5], 'schema', 'layout', null, + out[5], + 'schema', + 'layout', + null, ['xaxis2', 'rangeselector', 'buttons', 0, 'title'], 'xaxis2.rangeselector.buttons[0].title', 'In layout, key xaxis2.rangeselector.buttons[0].title is not part of the schema' ); assertErrorContent( - out[6], 'array', 'layout', null, + out[6], + 'array', + 'layout', + null, ['xaxis3', 'rangeselector', 'buttons'], 'xaxis3.rangeselector.buttons', 'In layout, key xaxis3.rangeselector.buttons must be linked to an array container' ); assertErrorContent( - out[7], 'value', 'layout', null, - ['shapes', 0, 'opacity'], 'shapes[0].opacity', + out[7], + 'value', + 'layout', + null, + ['shapes', 0, 'opacity'], + 'shapes[0].opacity', 'In layout, key shapes[0].opacity is set to an invalid value (none)' ); assertErrorContent( - out[8], 'invisible', 'layout', null, - ['updatemenus', 2, 'buttons', 0], 'updatemenus[2].buttons[0]', + out[8], + 'invisible', + 'layout', + null, + ['updatemenus', 2, 'buttons', 0], + 'updatemenus[2].buttons[0]', 'In layout, item updatemenus[2].buttons[0] got defaulted to be not visible' ); assertErrorContent( - out[9], 'schema', 'layout', null, - ['updatemenus', 2, 'buttons', 1, 'title'], 'updatemenus[2].buttons[1].title', + out[9], + 'schema', + 'layout', + null, + ['updatemenus', 2, 'buttons', 1, 'title'], + 'updatemenus[2].buttons[1].title', 'In layout, key updatemenus[2].buttons[1].title is not part of the schema' ); assertErrorContent( - out[10], 'object', 'layout', null, - ['updatemenus', 2, 'buttons', 2], 'updatemenus[2].buttons[2]', + out[10], + 'object', + 'layout', + null, + ['updatemenus', 2, 'buttons', 2], + 'updatemenus[2].buttons[2]', 'In layout, key updatemenus[2].buttons[2] must be linked to an object container' ); assertErrorContent( - out[11], 'object', 'layout', null, - ['updatemenus', 1], 'updatemenus[1]', + out[11], + 'object', + 'layout', + null, + ['updatemenus', 1], + 'updatemenus[1]', 'In layout, key updatemenus[1] must be linked to an object container' ); }); - it('should work with isSubplotObj attributes', function() { + it('should work with isSubplotObj attributes', function () { var out = Plotly.validate([], { xaxis2: { range: 30 @@ -318,32 +467,45 @@ describe('Plotly.validate', function() { expect(out.length).toEqual(4); assertErrorContent( - out[0], 'value', 'layout', null, - ['xaxis2', 'range'], 'xaxis2.range', + out[0], + 'value', + 'layout', + null, + ['xaxis2', 'range'], + 'xaxis2.range', 'In layout, key xaxis2.range is set to an invalid value (30)' ); assertErrorContent( - out[1], 'unused', 'layout', null, - ['scene10'], 'scene10', + out[1], + 'unused', + 'layout', + null, + ['scene10'], + 'scene10', 'In layout, container scene10 did not get coerced' ); assertErrorContent( - out[2], 'schema', 'layout', null, - ['geo0'], 'geo0', + out[2], + 'schema', + 'layout', + null, + ['geo0'], + 'geo0', 'In layout, key geo0 is not part of the schema' ); assertErrorContent( - out[3], 'object', 'layout', null, - ['yaxis5'], 'yaxis5', + out[3], + 'object', + 'layout', + null, + ['yaxis5'], + 'yaxis5', 'In layout, key yaxis5 must be linked to an object container' ); }); - it('should catch input errors for attribute with dynamic defaults', function() { - var out = Plotly.validate([ - {y: [1, 2]}, - {y: [1, 2], xaxis: 'x2', yaxis: 'y2'} - ], { + it('should catch input errors for attribute with dynamic defaults', function () { + var out = Plotly.validate([{ y: [1, 2] }, { y: [1, 2], xaxis: 'x2', yaxis: 'y2' }], { xaxis: { constrain: 'domain', constraintoward: 'bottom' @@ -362,98 +524,144 @@ describe('Plotly.validate', function() { expect(out.length).toBe(4); assertErrorContent( - out[0], 'dynamic', 'layout', null, - ['xaxis', 'constraintoward'], 'xaxis.constraintoward', - 'In layout, key xaxis.constraintoward (set to \'bottom\') got reset to \'center\' during defaults.' - ); - assertErrorContent( - out[1], 'dynamic', 'layout', null, - ['yaxis', 'constraintoward'], 'yaxis.constraintoward', - 'In layout, key yaxis.constraintoward (set to \'left\') got reset to \'middle\' during defaults.' - ); - assertErrorContent( - out[2], 'dynamic', 'layout', null, - ['xaxis2', 'anchor'], 'xaxis2.anchor', - 'In layout, key xaxis2.anchor (set to \'x3\') got reset to \'y\' during defaults.' - ); - assertErrorContent( - out[3], 'dynamic', 'layout', null, - ['yaxis2', 'overlaying'], 'yaxis2.overlaying', - 'In layout, key yaxis2.overlaying (set to \'x\') got reset to \'false\' during defaults.' + out[0], + 'dynamic', + 'layout', + null, + ['xaxis', 'constraintoward'], + 'xaxis.constraintoward', + "In layout, key xaxis.constraintoward (set to 'bottom') got reset to 'center' during defaults." + ); + assertErrorContent( + out[1], + 'dynamic', + 'layout', + null, + ['yaxis', 'constraintoward'], + 'yaxis.constraintoward', + "In layout, key yaxis.constraintoward (set to 'left') got reset to 'middle' during defaults." + ); + assertErrorContent( + out[2], + 'dynamic', + 'layout', + null, + ['xaxis2', 'anchor'], + 'xaxis2.anchor', + "In layout, key xaxis2.anchor (set to 'x3') got reset to 'y' during defaults." + ); + assertErrorContent( + out[3], + 'dynamic', + 'layout', + null, + ['yaxis2', 'overlaying'], + 'yaxis2.overlaying', + "In layout, key yaxis2.overlaying (set to 'x') got reset to 'false' during defaults." ); }); - it('catches bad axes in grid definitions', function() { - var out = Plotly.validate([ - {y: [1, 2]}, - {y: [1, 2], xaxis: 'x2', yaxis: 'y2'} - ], { - grid: {xaxes: ['x3', '', 'x2', 4], yaxes: ['y', 3, '', 'y4']}, + it('catches bad axes in grid definitions', function () { + var out = Plotly.validate([{ y: [1, 2] }, { y: [1, 2], xaxis: 'x2', yaxis: 'y2' }], { + grid: { xaxes: ['x3', '', 'x2', 4], yaxes: ['y', 3, '', 'y4'] }, // while we're at it check on another info_array - xaxis: {range: [5, 'lots']} + xaxis: { range: [5, 'lots'] } }); expect(out.length).toBe(5); assertErrorContent( - out[0], 'dynamic', 'layout', null, - ['grid', 'xaxes', 0], 'grid.xaxes[0]', - 'In layout, key grid.xaxes[0] (set to \'x3\') got reset to \'\' during defaults.' - ); - assertErrorContent( - out[1], 'value', 'layout', null, - ['grid', 'xaxes', 3], 'grid.xaxes[3]', + out[0], + 'dynamic', + 'layout', + null, + ['grid', 'xaxes', 0], + 'grid.xaxes[0]', + "In layout, key grid.xaxes[0] (set to 'x3') got reset to '' during defaults." + ); + assertErrorContent( + out[1], + 'value', + 'layout', + null, + ['grid', 'xaxes', 3], + 'grid.xaxes[3]', 'In layout, key grid.xaxes[3] is set to an invalid value (4)' ); assertErrorContent( - out[2], 'value', 'layout', null, - ['grid', 'yaxes', 1], 'grid.yaxes[1]', + out[2], + 'value', + 'layout', + null, + ['grid', 'yaxes', 1], + 'grid.yaxes[1]', 'In layout, key grid.yaxes[1] is set to an invalid value (3)' ); assertErrorContent( - out[3], 'dynamic', 'layout', null, - ['grid', 'yaxes', 3], 'grid.yaxes[3]', - 'In layout, key grid.yaxes[3] (set to \'y4\') got reset to \'\' during defaults.' + out[3], + 'dynamic', + 'layout', + null, + ['grid', 'yaxes', 3], + 'grid.yaxes[3]', + "In layout, key grid.yaxes[3] (set to 'y4') got reset to '' during defaults." ); assertErrorContent( - out[4], 'dynamic', 'layout', null, - ['xaxis', 'range', 1], 'xaxis.range[1]', - 'In layout, key xaxis.range[1] (set to \'lots\') got reset to \'50\' during defaults.' + out[4], + 'dynamic', + 'layout', + null, + ['xaxis', 'range', 1], + 'xaxis.range[1]', + "In layout, key xaxis.range[1] (set to 'lots') got reset to '50' during defaults." ); }); - it('catches bad subplots in grid definitions', function() { - var out = Plotly.validate([ - {y: [1, 2]}, - {y: [1, 2], xaxis: 'x2', yaxis: 'y2'}, - {y: [1, 2], xaxis: 'x2'} - ], { - grid: {subplots: [['xy', 'x2y3'], ['x2y', 'x2y2'], [5, '']]}, - }); + it('catches bad subplots in grid definitions', function () { + var out = Plotly.validate( + [{ y: [1, 2] }, { y: [1, 2], xaxis: 'x2', yaxis: 'y2' }, { y: [1, 2], xaxis: 'x2' }], + { + grid: { + subplots: [ + ['xy', 'x2y3'], + ['x2y', 'x2y2'], + [5, ''] + ] + } + } + ); expect(out.length).toBe(3); assertErrorContent( - out[0], 'dynamic', 'layout', null, - ['grid', 'subplots', 0, 1], 'grid.subplots[0][1]', - 'In layout, key grid.subplots[0][1] (set to \'x2y3\') got reset to \'\' during defaults.' - ); - assertErrorContent( - out[1], 'dynamic', 'layout', null, - ['grid', 'subplots', 1, 0], 'grid.subplots[1][0]', - 'In layout, key grid.subplots[1][0] (set to \'x2y\') got reset to \'\' during defaults.' - ); - assertErrorContent( - out[2], 'value', 'layout', null, - ['grid', 'subplots', 2, 0], 'grid.subplots[2][0]', + out[0], + 'dynamic', + 'layout', + null, + ['grid', 'subplots', 0, 1], + 'grid.subplots[0][1]', + "In layout, key grid.subplots[0][1] (set to 'x2y3') got reset to '' during defaults." + ); + assertErrorContent( + out[1], + 'dynamic', + 'layout', + null, + ['grid', 'subplots', 1, 0], + 'grid.subplots[1][0]', + "In layout, key grid.subplots[1][0] (set to 'x2y') got reset to '' during defaults." + ); + assertErrorContent( + out[2], + 'value', + 'layout', + null, + ['grid', 'subplots', 2, 0], + 'grid.subplots[2][0]', 'In layout, key grid.subplots[2][0] is set to an invalid value (5)' ); }); - it('should detect opposite axis range slider attributes', function() { - var out = Plotly.validate([ - {y: [1, 2]}, - {y: [1, 2], yaxis: 'y2'}, - {y: [1, 2], yaxis: 'y3'} - ], { + it('should detect opposite axis range slider attributes', function () { + var out = Plotly.validate([{ y: [1, 2] }, { y: [1, 2], yaxis: 'y2' }, { y: [1, 2], yaxis: 'y3' }], { xaxis: { rangeslider: { yaxis: { rangemode: 'auto' }, @@ -469,7 +677,7 @@ describe('Plotly.validate', function() { expect(out).toBeUndefined(); }); - it('should accept attributes that really end in a number', function() { + it('should accept attributes that really end in a number', function () { // and not try to strip that number off! // eg x0, x1 in shapes var shapeMock = require('../../image/mocks/shapes.json'); @@ -477,101 +685,139 @@ describe('Plotly.validate', function() { expect(out).toBeUndefined(); }); - it('should work with *trace* layout attributes', function() { - var out = Plotly.validate([{ - type: 'bar', - y: [1, 2, 1] - }, { - type: 'barpolar', - r: [1, 2, 3] - }, { - type: 'scatterpolar', - theta: [0, 90, 200], - subplot: 'polar2' - }], { - bargap: 0.3, - polar: {bargap: 0.2}, - polar2: {bargap: 0.05}, - polar3: {bargap: 0.4} - }); + it('should work with *trace* layout attributes', function () { + var out = Plotly.validate( + [ + { + type: 'bar', + y: [1, 2, 1] + }, + { + type: 'barpolar', + r: [1, 2, 3] + }, + { + type: 'scatterpolar', + theta: [0, 90, 200], + subplot: 'polar2' + } + ], + { + bargap: 0.3, + polar: { bargap: 0.2 }, + polar2: { bargap: 0.05 }, + polar3: { bargap: 0.4 } + } + ); expect(out.length).toBe(2); assertErrorContent( - out[0], 'unused', 'layout', null, ['polar2', 'bargap'], 'polar2.bargap', + out[0], + 'unused', + 'layout', + null, + ['polar2', 'bargap'], + 'polar2.bargap', 'In layout, key polar2.bargap did not get coerced' ); assertErrorContent( - out[1], 'unused', 'layout', null, ['polar3'], 'polar3', + out[1], + 'unused', + 'layout', + null, + ['polar3'], + 'polar3', 'In layout, container polar3 did not get coerced' ); }); - it('understands histogram bin and autobin attributes', function() { - var out = Plotly.validate([{ - type: 'histogram', - x: [1, 2, 3], - // allowed by Plotly.validate, even though we get rid of it - // in a real plot call - autobinx: true, - // valid attribute, but not coerced - autobiny: false - }]); + it('understands histogram bin and autobin attributes', function () { + var out = Plotly.validate([ + { + type: 'histogram', + x: [1, 2, 3], + // allowed by Plotly.validate, even though we get rid of it + // in a real plot call + autobinx: true, + // valid attribute, but not coerced + autobiny: false + } + ]); expect(out.length).toBe(1); assertErrorContent( - out[0], 'unused', 'data', 0, ['autobiny'], 'autobiny', + out[0], + 'unused', + 'data', + 0, + ['autobiny'], + 'autobiny', 'In data trace 0, key autobiny did not get coerced' ); - out = Plotly.validate([{ - type: 'histogram', - x: [1, 2, 3], - xbins: {start: 1, end: 4, size: 0.5} - }]); + out = Plotly.validate([ + { + type: 'histogram', + x: [1, 2, 3], + xbins: { start: 1, end: 4, size: 0.5 } + } + ]); expect(out).toBeUndefined(); - out = Plotly.validate([{ - type: 'histogram', - x: [1, 2, 3], - xbins: {start: 0.8, end: 4, size: 0.5} - }, { - type: 'histogram', - x: [1, 2, 3], - // start and end still get coerced, even though start will get modified - // during calc. size will not be coerced because trace 0 already has it. - xbins: {start: 2, end: 3, size: 1} - }]); + out = Plotly.validate([ + { + type: 'histogram', + x: [1, 2, 3], + xbins: { start: 0.8, end: 4, size: 0.5 } + }, + { + type: 'histogram', + x: [1, 2, 3], + // start and end still get coerced, even though start will get modified + // during calc. size will not be coerced because trace 0 already has it. + xbins: { start: 2, end: 3, size: 1 } + } + ]); expect(out.length).toBe(1); assertErrorContent( - out[0], 'unused', 'data', 1, ['xbins', 'size'], 'xbins.size', + out[0], + 'unused', + 'data', + 1, + ['xbins', 'size'], + 'xbins.size', 'In data trace 1, key xbins.size did not get coerced' ); }); - it('understands histogram2d(contour) bin and autobin attributes', function() { - var out = Plotly.validate([{ - type: 'histogram2d', - x: [1, 2, 3], - y: [1, 2, 3], - autobinx: true, - autobiny: false, - xbins: {start: 5, end: 10}, - ybins: {size: 2} - }, { - type: 'histogram2d', - x: [1, 2, 3], - y: [1, 2, 3], - xbins: {start: 0, end: 7, size: 1}, - ybins: {size: 3} - }, { - type: 'histogram2dcontour', - x: [1, 2, 3], - y: [1, 2, 3], - autobinx: false, - autobiny: false, - xbins: {start: 1, end: 5, size: 2}, - ybins: {size: 4} - }]); + it('understands histogram2d(contour) bin and autobin attributes', function () { + var out = Plotly.validate([ + { + type: 'histogram2d', + x: [1, 2, 3], + y: [1, 2, 3], + autobinx: true, + autobiny: false, + xbins: { start: 5, end: 10 }, + ybins: { size: 2 } + }, + { + type: 'histogram2d', + x: [1, 2, 3], + y: [1, 2, 3], + xbins: { start: 0, end: 7, size: 1 }, + ybins: { size: 3 } + }, + { + type: 'histogram2dcontour', + x: [1, 2, 3], + y: [1, 2, 3], + autobinx: false, + autobiny: false, + xbins: { start: 1, end: 5, size: 2 }, + ybins: { size: 4 } + } + ]); expect(out).toBeUndefined(); }); }); From 5e329a6eb5098750234f0476739efdeddaf02448 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Mon, 17 Nov 2025 15:22:18 -0700 Subject: [PATCH 015/241] Update test --- test/jasmine/tests/validate_test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/jasmine/tests/validate_test.js b/test/jasmine/tests/validate_test.js index bf3ccd69cb6..b8577e07efe 100644 --- a/test/jasmine/tests/validate_test.js +++ b/test/jasmine/tests/validate_test.js @@ -173,7 +173,7 @@ describe('Plotly.validate', function () { { x: [1, 2, 3], mode: 'markers', - marker: { color: 10 } + marker: { color: '10' } } ], {} From 8a3f5f485360c05e930b6eec45dd438ced8a4d2d Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Tue, 18 Nov 2025 15:48:03 -0700 Subject: [PATCH 016/241] Use minified plotly.js for making baselines --- test/image/make_baseline.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/image/make_baseline.py b/test/image/make_baseline.py index 6b29e47e09f..2b940b89f90 100644 --- a/test/image/make_baseline.py +++ b/test/image/make_baseline.py @@ -13,7 +13,7 @@ root = os.getcwd() virtual_webgl = os.path.join(root, 'node_modules', 'virtual-webgl', 'src', 'virtual-webgl.js') -plotlyjs = os.path.join(root, 'build', 'plotly.js') +plotlyjs = os.path.join(root, 'build', 'plotly.min.js') plotlyjs_with_virtual_webgl = os.path.join(root, 'build', 'plotly_with_virtual-webgl.js') dirIn = os.path.join(root, 'test', 'image', 'mocks') From b43ff758e7b6f463695bb0788244b1c6f91e8d36 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Tue, 18 Nov 2025 17:21:55 -0700 Subject: [PATCH 017/241] Add logging --- test/image/make_baseline.py | 1 + 1 file changed, 1 insertion(+) diff --git a/test/image/make_baseline.py b/test/image/make_baseline.py index 2b940b89f90..8cecff8e00c 100644 --- a/test/image/make_baseline.py +++ b/test/image/make_baseline.py @@ -110,6 +110,7 @@ if 'b64-json' in sys.argv and attempt == 0 : print(json.dumps(fig, indent = 2)) try : + print(f"plotly.js version: {pio.kaleido.scope.plotlyjs}") pio.write_image( fig=fig, file=os.path.join(dirOut, outName + '.png'), From 31a6235829d7f21dc4cdcfe0ffd99041cd3b143f Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Fri, 24 Apr 2026 15:54:33 -0600 Subject: [PATCH 018/241] Refactor to better match tinycolor2 --- src/components/color/index.js | 63 ++++++++++++++++++++------------ src/traces/sankey/defaults.js | 29 ++++++++------- test/jasmine/tests/color_test.js | 5 +-- 3 files changed, 57 insertions(+), 40 deletions(-) diff --git a/src/components/color/index.js b/src/components/color/index.js index 1825da0cc2c..7ef6b14b055 100644 --- a/src/components/color/index.js +++ b/src/components/color/index.js @@ -1,11 +1,18 @@ -'use strict'; - +const _color = require('color').default; const isNumeric = require('fast-isnumeric'); -const isTypedArray = require('../../lib/array').isTypedArray; -const color = require('color').default; - +const { isTypedArray } = require('../../lib/array'); const { background, defaultLine, defaults, lightLine } = require('./attributes'); +// Safe wrapper: falls back to black instead of throwing on invalid input. +// This matches the tinycolor2 behavior. +const color = (cstr) => { + try { + return _color(cstr); + } catch (e) { + return _color('#000'); + } +}; + const rgb = (cstr) => { const { r, g, b } = color(cstr).rgb().object(); return `rgb(${Math.round(r)}, ${Math.round(g)}, ${Math.round(b)})`; @@ -79,15 +86,12 @@ const contrast = (cstr, lightAmount, darkAmount) => { if (c.alpha() !== 1) c = color(combine(cstr, background)); // TODO: Should the API change such that lightAmount/darkAmount are passed in as decimal instead of percent number? - const newColor = color( - c.isDark() - ? lightAmount - ? c.lighten(lightAmount / 100) - : background - : darkAmount - ? c.darken(darkAmount / 100) - : defaultLine - ); + let newColor; + if (c.isDark()) { + newColor = color(lightAmount ? c.lighten(lightAmount / 100) : background); + } else { + newColor = color(darkAmount ? c.darken(darkAmount / 100) : defaultLine); + } return newColor.rgb().string(); }; @@ -175,39 +179,52 @@ const equals = (cstr1, cstr2) => cstr1 && cstr2 && color(cstr1).rgb().string() = const isValid = (cstr) => { try { - return cstr && !!color(cstr); + return cstr && !!_color(cstr); } catch { return false; } }; +// RGB-space brightening equivalent to tinycolor's brighten(). +// Adds a fixed amount to each RGB channel (unlike lighten which works in HSL space). +const brighten = (cstr, amount) => { + amount = amount === 0 ? 0 : amount || 10; + const c = color(cstr).rgb().object(); + const adj = Math.round(255 * (amount / 100)); + return color({ + r: Math.max(0, Math.min(255, c.r + adj)), + g: Math.max(0, Math.min(255, c.g + adj)), + b: Math.max(0, Math.min(255, c.b + adj)) + }) + .rgb() + .string(); +}; + const mix = (cstr1, cstr2, weight) => color(cstr1) .mix(color(cstr2), weight / 100) .rgb() .string(); -const mostReadable = (baseColor, colorList = []) => { +const mostReadable = (baseColor, colorList = ['#000', '#fff']) => { let bestColor; let bestContrast = -Infinity; for (const cstr of colorList) { - const contrast = color(baseColor).contrast(color(cstr)); - if (contrast > bestContrast) { - bestContrast = contrast; + const contrastRatio = color(baseColor).contrast(color(cstr)); + if (contrastRatio > bestContrast) { + bestContrast = contrastRatio; bestColor = color(cstr).rgb().string(); } } - // Fall back to black/white if provided colors don't have proper contrast level - return bestColor && color(baseColor).level(color(bestColor)) - ? bestColor - : mostReadable(baseColor, ['#000', '#fff']); + return bestColor; }; module.exports = { addOpacity, background, + brighten, clean, color, combine, diff --git a/src/traces/sankey/defaults.js b/src/traces/sankey/defaults.js index 8a51fa30577..0fd28af2c2d 100644 --- a/src/traces/sankey/defaults.js +++ b/src/traces/sankey/defaults.js @@ -37,11 +37,12 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout var colors = layout.colorway; - var defaultNodePalette = function(i) {return colors[i % colors.length];}; + const defaultNodePalette = (i) => colors[i % colors.length]; - coerceNode('color', nodeOut.label.map(function(d, i) { - return Color.addOpacity(defaultNodePalette(i), 0.8); - })); + coerceNode( + 'color', + nodeOut.label.map((d, i) => Color.addOpacity(defaultNodePalette(i), 0.8)) + ); coerceNode('customdata'); // link attributes @@ -68,19 +69,22 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout function makeDefaultHoverColor(_linkColor) { // hopefully the user-specified color is valid, but if not that can be caught elsewhere - if(!Color.isValid(_linkColor)) return _linkColor; + if (!Color.isValid(_linkColor)) return _linkColor; const c = Color.color(_linkColor); const alpha = c.alpha(); return alpha <= 0.8 - ? c.alpha(alpha + 0.2).rgb().string() - : (darkBG ? c.lighten(0.1) : c.darken(0.1)).rgb().string() + ? c + .alpha(alpha + 0.2) + .rgb() + .string() + : (darkBG ? c.lighten(0.1) : c.darken(0.1)).rgb().string(); } - coerceLink('hovercolor', Array.isArray(linkColor) ? - linkColor.map(makeDefaultHoverColor) : - makeDefaultHoverColor(linkColor) + coerceLink( + 'hovercolor', + Array.isArray(linkColor) ? linkColor.map(makeDefaultHoverColor) : makeDefaultHoverColor(linkColor) ); coerceLink('customdata'); @@ -96,10 +100,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout coerce('valueformat'); coerce('valuesuffix'); - var dfltArrangement; - if(nodeOut.x.length && nodeOut.y.length) { - dfltArrangement = 'freeform'; - } + const dfltArrangement = nodeOut.x.length && nodeOut.y.length ? 'freeform' : undefined; coerce('arrangement', dfltArrangement); Lib.coerceFont(coerce, 'textfont', layout.font, { autoShadowDflt: true }); diff --git a/test/jasmine/tests/color_test.js b/test/jasmine/tests/color_test.js index a3f617d737f..43911d10233 100644 --- a/test/jasmine/tests/color_test.js +++ b/test/jasmine/tests/color_test.js @@ -56,9 +56,8 @@ describe('Test color:', function() { }); it('should count 0 as a fraction but not 1, except in alpha', function() { - // this is weird... but old tinycolor actually breaks - // if you pass in a 1, while in some cases a 1 here - // could be ambiguous - so we treat it as a real 1. + // a value of 1 here could be ambiguous (fraction vs integer) + // so we treat it as a real 1. var container = { fractioncolor: 'rgb(0, 0.4, 0.8)', regularcolor: 'rgb(1, 0.5, 0.5)', From 59296af517ec2f8e93b649360956924621bd0911 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Fri, 24 Apr 2026 15:55:00 -0600 Subject: [PATCH 019/241] Update schema --- test/plot-schema.json | 110 +++++++++++++++++++++--------------------- 1 file changed, 55 insertions(+), 55 deletions(-) diff --git a/test/plot-schema.json b/test/plot-schema.json index 51624cf2322..13693da974e 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -459,7 +459,7 @@ "requiredOpts": [] }, "color": { - "description": "A string describing color. Supported formats: - hex (e.g. '#d3d3d3') - rgb (e.g. 'rgb(255, 0, 0)') - rgba (e.g. 'rgb(255, 0, 0, 0.5)') - hsl (e.g. 'hsl(0, 100%, 50%)') - hsv (e.g. 'hsv(0, 100%, 100%)') - named colors (full list: http://www.w3.org/TR/css3-color/#svg-color)", + "description": "A string describing color. Supported formats: - hex (e.g. '#d3d3d3', '#d3d3d3aa) - rgb (e.g. 'rgb(255, 0, 0)', 'rgb(255 0 0)') - rgba (e.g. 'rgba(255, 0, 0, 0.5)', 'rgba(255 0 0 / 0.5)') - hsl (e.g. 'hsl(0, 100%, 50%)') - named colors (full list: http://www.w3.org/TR/css3-color/#svg-color)", "otherOpts": [ "dflt", "arrayOk" @@ -1839,7 +1839,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -17854,7 +17854,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -17927,7 +17927,7 @@ "valType": "subplotid" }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -19917,7 +19917,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -19985,7 +19985,7 @@ "valType": "subplotid" }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -25037,7 +25037,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -26337,7 +26337,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -27627,7 +27627,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -28956,7 +28956,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -30314,7 +30314,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -32150,7 +32150,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -33377,7 +33377,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -34605,7 +34605,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -36507,7 +36507,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -36575,7 +36575,7 @@ "valType": "subplotid" }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -39156,7 +39156,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -41529,7 +41529,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -41602,7 +41602,7 @@ "valType": "subplotid" }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -42993,7 +42993,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -44510,7 +44510,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -46907,7 +46907,7 @@ "valType": "data_array" }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if colors is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if colors is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -50287,7 +50287,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -51820,7 +51820,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -54459,7 +54459,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `line.cmin` and `line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `line.cmin` and `line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -55749,7 +55749,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `line.cmin` and `line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `line.cmin` and `line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": [ [ 0, @@ -58068,7 +58068,7 @@ "valType": "number" }, "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": [ [ 0, @@ -60547,7 +60547,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -60649,7 +60649,7 @@ "valType": "subplotid" }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -63216,7 +63216,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `line.cmin` and `line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `line.cmin` and `line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -63926,7 +63926,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -63994,7 +63994,7 @@ "valType": "subplotid" }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -65772,7 +65772,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -65873,7 +65873,7 @@ "valType": "subplotid" }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -68098,7 +68098,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -68199,7 +68199,7 @@ "valType": "subplotid" }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -70539,7 +70539,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -70607,7 +70607,7 @@ "valType": "subplotid" }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -72880,7 +72880,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -74436,7 +74436,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -75975,7 +75975,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -76076,7 +76076,7 @@ "valType": "subplotid" }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -78274,7 +78274,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -78342,7 +78342,7 @@ "valType": "subplotid" }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -80497,7 +80497,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -80598,7 +80598,7 @@ "valType": "subplotid" }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -82835,7 +82835,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -82936,7 +82936,7 @@ "valType": "subplotid" }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -85104,7 +85104,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -85172,7 +85172,7 @@ "valType": "subplotid" }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -86626,7 +86626,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -88701,7 +88701,7 @@ "valType": "data_array" }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if colors is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if colors is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -89984,7 +89984,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -93346,7 +93346,7 @@ "valType": "data_array" }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if colors is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if colors is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -96399,7 +96399,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { From b1ebcf7ddaf3574ab552a22a91e9d5e0940abfa5 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Mon, 27 Apr 2026 14:49:26 -0600 Subject: [PATCH 020/241] Update test input values --- test/jasmine/tests/lib_test.js | 4 ++-- test/jasmine/tests/range_slider_test.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/test/jasmine/tests/lib_test.js b/test/jasmine/tests/lib_test.js index fe1f6b71f0c..72e93a54e6c 100644 --- a/test/jasmine/tests/lib_test.js +++ b/test/jasmine/tests/lib_test.js @@ -1149,7 +1149,7 @@ describe('Test lib.js:', function () { fontWithDefault: { family: '', size: 'a million', - color: 42, + color: 'invalid', weight: 'BIG', style: 'Nice', variant: false, @@ -1558,7 +1558,7 @@ describe('Test lib.js:', function () { it("should work for valType 'color' where", function () { var shouldPass = ['red', '#d3d3d3', 'rgba(0,255,255,0.1)']; - var shouldFail = [1, {}, [], 'rgq(233,122,332,1)', null, undefined]; + var shouldFail = ['invalid', {}, [], 'rgq(233,122,332,1)', null, undefined]; assert(shouldPass, shouldFail, { valType: 'color' diff --git a/test/jasmine/tests/range_slider_test.js b/test/jasmine/tests/range_slider_test.js index fed44189d9a..4407763831a 100644 --- a/test/jasmine/tests/range_slider_test.js +++ b/test/jasmine/tests/range_slider_test.js @@ -759,8 +759,8 @@ describe('Rangeslider handleDefaults function', function() { var layoutIn = { xaxis: { rangeslider: { visible: 'invalid', thickness: 'invalid', - bgcolor: 42, - bordercolor: 42, + bgcolor: 'invalid', + bordercolor: 'invalid', borderwidth: 'superfat' }}}; var layoutOut = { xaxis: {} }; From 86e48f80393a60599a04b1682dd8817d031cc6c2 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Mon, 27 Apr 2026 14:51:59 -0600 Subject: [PATCH 021/241] Add default value to setColor --- src/traces/heatmap/plot.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/traces/heatmap/plot.js b/src/traces/heatmap/plot.js index 48bd11d442e..901974044c2 100644 --- a/src/traces/heatmap/plot.js +++ b/src/traces/heatmap/plot.js @@ -200,8 +200,8 @@ module.exports = function (gd, plotinfo, cdheatmaps, heatmapLayer) { var xb, xi, v, row, c; - function setColor(v, pixsize) { - if (v === undefined || pixsize === undefined) return [0, 0, 0, 0]; + function setColor(v, pixsize = 0) { + if (v === undefined) return [0, 0, 0, 0]; var c = sclFunc(v); c[0] = Math.round(c[0]); From 0aaf967db0485ed1dd4f4ab37e2af42d97b96391 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Mon, 27 Apr 2026 17:07:00 -0600 Subject: [PATCH 022/241] Call alpha instead of opacity because colors default to black for invalid color strings --- src/components/color/index.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/components/color/index.js b/src/components/color/index.js index 7ef6b14b055..bd492054fd5 100644 --- a/src/components/color/index.js +++ b/src/components/color/index.js @@ -96,9 +96,15 @@ const contrast = (cstr, lightAmount, darkAmount) => { return newColor.rgb().string(); }; -const stroke = (s, cstr) => s.style({ stroke: rgb(cstr), 'stroke-opacity': opacity(cstr) }); +const stroke = (s, cstr) => { + const c = color(cstr); + s.style({ stroke: rgb(cstr), 'stroke-opacity': c.alpha() }); +}; -const fill = (s, cstr) => s.style({ fill: rgb(cstr), 'fill-opacity': opacity(cstr) }); +const fill = (s, cstr) => { + const c = color(cstr); + s.style({ fill: rgb(cstr), 'fill-opacity': c.alpha() }); +}; // search container for colors with the deprecated rgb(fractions) format // and convert them to rgb(0-255 values) From b3693b407c41c25addb636f15fecf687a445d8ce Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Tue, 28 Apr 2026 17:05:40 -0600 Subject: [PATCH 023/241] Use `alpha` in more places --- src/components/drawing/index.js | 9 ++++++--- src/traces/sankey/render.js | 6 +++--- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/components/drawing/index.js b/src/components/drawing/index.js index 472e52dcddc..a6e451e290c 100644 --- a/src/components/drawing/index.js +++ b/src/components/drawing/index.js @@ -514,10 +514,11 @@ function gradientWithBounds(sel, gd, gradientID, type, colorscale, prop, start, stops.enter().append('stop'); stops.each(function (d) { + var c = Color.color(d[1]); d3.select(this).attr({ offset: d[0] + '%', 'stop-color': Color.rgb(d[1]), - 'stop-opacity': Color.opacity(d[1]) + 'stop-opacity': c.alpha() }); }); }); @@ -583,8 +584,9 @@ drawing.pattern = function ( var patternTag; var patternAttrs = {}; + var fgC = Color.color(fgcolor); var fgRGB = Color.rgb(fgcolor); - var fgAlpha = Color.opacity(fgcolor); + var fgAlpha = fgC.alpha(); var opacity = fgopacity * fgAlpha; switch (shape) { @@ -817,8 +819,9 @@ drawing.pattern = function ( }); if (bgcolor) { + var bgC = Color.color(bgcolor); var bgRGB = Color.rgb(bgcolor); - var bgAlpha = Color.opacity(bgcolor); + var bgAlpha = bgC.alpha(); var rects = el.selectAll('rect').data([0]); rects.exit().remove(); diff --git a/src/traces/sankey/render.js b/src/traces/sankey/render.js index 74e17425729..f5de2e050a2 100644 --- a/src/traces/sankey/render.js +++ b/src/traces/sankey/render.js @@ -311,9 +311,9 @@ function linkModel(d, l, i) { pointNumber: l.pointNumber, link: l, rgb: Color.rgb(l.color), - alpha: Color.opacity(l.color), + alpha: Color.color(l.color).alpha(), hoverRgb: Color.rgb(l.hovercolor), - hoverAlpha: Color.opacity(l.hovercolor), + hoverAlpha: Color.color(l.hovercolor).alpha(), linkPath: linkPath, linkLineColor: d.linkLineColor, linkLineWidth: d.linkLineWidth, @@ -575,7 +575,7 @@ function nodeModel(d, n) { horizontal: d.horizontal, darkBackground: Color.color(n.color).isDark(), rgb: Color.rgb(n.color), - alpha: Color.opacity(n.color), + alpha: Color.color(n.color).alpha(), valueFormat: d.valueFormat, valueSuffix: d.valueSuffix, sankey: d.sankey, From e2633e834f1c0654f8848bc2bc7fd7e3eefe9adc Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Wed, 29 Apr 2026 09:02:16 -0600 Subject: [PATCH 024/241] Use correct operator for conditional --- src/components/color/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/color/index.js b/src/components/color/index.js index bd492054fd5..a9c6ea27508 100644 --- a/src/components/color/index.js +++ b/src/components/color/index.js @@ -30,11 +30,11 @@ const addOpacity = (cstr, op) => { // background is assumed behind it const combine = (front, back = background) => { const fc = color(front).rgb().object(); - fc.alpha ||= 1; + fc.alpha ??= 1; if (fc.alpha === 1) return color(front).rgb().string(); const bc = color(back).rgb().object(); - bc.alpha ||= 1; + bc.alpha ??= 1; const bcflat = bc.alpha === 1 ? bc From fbd5ec7470b7a93c8bb84e5fd0ea6e08b7231ac4 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Wed, 29 Apr 2026 11:09:26 -0600 Subject: [PATCH 025/241] Update baseline images --- test/image/baselines/4.png | Bin 40927 -> 40919 bytes test/image/baselines/bar-like_textangle45.png | Bin 45658 -> 45486 bytes test/image/baselines/bar-like_textangle60.png | Bin 45320 -> 45145 bytes .../baselines/bar-like_traces_no-tozero.png | Bin 18434 -> 18395 bytes .../bar-like_traces_no-tozero_negative.png | Bin 18582 -> 18531 bytes .../baselines/bar-like_traces_tozero.png | Bin 16548 -> 16536 bytes .../baselines/bar-marker-line-colorscales.png | Bin 35961 -> 35991 bytes test/image/baselines/bar_gantt-chart.png | Bin 69655 -> 69658 bytes .../baselines/display-text_zero-number.png | Bin 62395 -> 62281 bytes test/image/baselines/funnel_multicategory.png | Bin 113706 -> 113361 bytes .../image/baselines/heatmap_categoryorder.png | Bin 31756 -> 31799 bytes .../baselines/heatmap_xyz-gaps-on-sides.png | Bin 62335 -> 62156 bytes .../histogram2d_bingroup-coloraxis.png | Bin 60422 -> 60433 bytes test/image/baselines/histogram2d_legend.png | Bin 173243 -> 173209 bytes .../icicle_packages_colorscale_novalue.png | Bin 50879 -> 50642 bytes .../baselines/icicle_values_colorscale.png | Bin 44198 -> 44181 bytes test/image/baselines/pie_style.png | Bin 37278 -> 37274 bytes ...nburst_branchvalues-total-almost-equal.png | Bin 158914 -> 158389 bytes .../sunburst_packages_colorscale_novalue.png | Bin 192075 -> 191924 bytes .../baselines/sunburst_values_colorscale.png | Bin 70472 -> 70453 bytes test/image/baselines/test_mock.png | Bin 0 -> 10022 bytes test/image/baselines/texttemplate.png | Bin 114717 -> 114751 bytes .../treemap_packages_colorscale_novalue.png | Bin 244235 -> 244222 bytes .../treemap_sunburst_marker_colors.png | Bin 270753 -> 271034 bytes test/image/baselines/treemap_textfit.png | Bin 311150 -> 310797 bytes .../baselines/treemap_values_colorscale.png | Bin 44588 -> 44612 bytes .../uniformtext_bar-like_10_auto.png | Bin 42972 -> 42842 bytes .../uniformtext_bar-like_8_horizontal.png | Bin 41117 -> 41056 bytes .../uniformtext_bar-like_8_textangle.png | Bin 39898 -> 39817 bytes .../uniformtext_bar-like_8_textangle45.png | Bin 43352 -> 43225 bytes test/image/baselines/uniformtext_pie_pull.png | Bin 83065 -> 82953 bytes test/image/baselines/waterfall_axis.png | Bin 46132 -> 45686 bytes .../waterfall_funnel_texttemplate_date.png | Bin 34575 -> 34470 bytes test/image/baselines/zsmooth_methods.png | Bin 69978 -> 69938 bytes 34 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 test/image/baselines/test_mock.png diff --git a/test/image/baselines/4.png b/test/image/baselines/4.png index 95deeefdd0ba28189133fd22c1f3a121b895c117..2d1d1fd4a7931b16727d035681aab5011152be22 100644 GIT binary patch literal 40919 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ⅈ;6(TPF~?zizwhBb+51X&jarj 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

KStdMK4)>+7@R*OcpJ~`Gn+>`{Cfk!`ocNv~ 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 SI$*(H_)z9HX4NOXum2xt@8S)W{ zj%3C&?!{aBFN*b=%|fBY%=)jA(?mUbBQF+?8mvEUE|8#G-DiQIbYfr>Wj_dRCh%V) zYB1s<1@JE|7+>zcKi*aH1Bcz&I#(zD{nXz-Fvl?hnecev%m44^m~%jInEP;#5Btw^ z{d(aE{SqUtHv;$+{`*{ItoxUH^aUZ9Ruhzd+H7 z0Co{RgIk33e+zqj<2?j(b}`3>>VJRCqybo`(~ejp0#g0F760`=Q;LBRDCZFW8Mm6X z6<-DTMHwORQ~U~gEv)~VTns#mV-#+OZv=9xK+2{6kI^3YnuW{;Vkc(iZ2tduf@=h7 z_lCX3Zx6LB_}>=8v4Cx}rv%`A{b#1ubNFd$6y+sz;FY}L4$1#}cDQWGe!URPtSUdE ze|G-2Pz{<)O_0<5t-E}N2wAl7Ibpij@v9=;njtIVfsZP!=+Nmm|6REeJH!J@N#S!z zCGh@Fkdnw1JZsbGr{naP7$f#b6RCesjHhbVd33MVLD;w{)vTdB|PE@@z#%~M2(ue6od19vzfhw zK&d{&8ob8c>m%KwWZ|?xBDCt#>pqloT#Z=Zh!MbPaF})XtA8d63Arp|el?%(&1P8) zr}KGTmT~N@uS4|_%$_wTs*5G;byn8zEuMZ$cy<7{zrSyOw>z4B_;Xq=OvEP$cxZ`q zx`c*DGE2%}<6CV3ASlZr0*I6>EG#`eJz{U(eE&s<{1Tl^ASf&h$t;=mKb}6FBjz>k zK5Ij$D+NX&RLlG^@D5!pH7$+ZxE)?Ti34id9o1R+c8u-amNJ+9LgSAgwWO*Q)U5Te7e)zoaXWO zts2m|CU5!QmEUW%3?l4Q9CsKaxO2qJAWy^?a8{iD`kNmVMe^N2!}o%s1}_Ww&_z^D-^}HAct02|fsa z5)o}_R%%GLMxlZM3+i_utR;Z>#k1>f{QeZa=@h$NdFz~_ySN)+okw0>Jc5IW>=|BtE z)4vZej~eY8=i))ZIQJRO;Rv}bTbyo|$D?WckZZ}OsK1_Nqzh^04vcG1y1Q

a}--bI9x0 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 diff --git a/test/image/baselines/bar-like_textangle60.png b/test/image/baselines/bar-like_textangle60.png index 91eaa7e124857ab28c29996cca042af94a2a7ba9..f9da7ba848b7de9702eb9e0c111756d5c6d3a712 100644 GIT binary patch literal 45145 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

NLDV*pz@l(PIU|<8w;jT0_3ln-H`!T^k)+ooI4^ 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 literal 18434 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 HOoRU~ex;}d diff --git a/test/image/baselines/bar-like_traces_no-tozero_negative.png b/test/image/baselines/bar-like_traces_no-tozero_negative.png index 2a6980acd34e7efde049943268ee903fd53f379d..fe9c158e8ac32f4f7df6e1f01da83484dbff7d10 100644 GIT binary patch literal 18531 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

<&^8L+Qg!b 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 OK~h%GkS~`t^Z#E)b9BJ~ literal 16548 zcmaL91z40(*EY%w-9w|)(A`ML&>$g*N_R`cpi)vpDTuU$BA|e%fOJZCh$1MB(x6C} zG-p5ae&0FgJOBTm>%vQBp8f1td#|l>x;ApF>7zV)Bvx%GZmQQ+f^{ylaQaHu9ytaICx9gg`YJXCmWl>fbhw9p6 z)t?VjZ+v=}l}Ahdn4o~mNlPnFLbISxoW)W0axW;m#v&+Jp`>}}m;2dqz(4E1EV=(q zOZG0t9?jN_52W^oaVf*09|U1Is^kCp03*?2{$?75N3DuUOTu&#-&SVcRDP)sH8rMs zjWN~8*+{`5hMvfpDl^~8SxNoRr~h3$OeFEQhtxPQ5+XjaB+v|pxJwrUr&przkjvTH4ZqK8=Vp@9PNI#WrkD*NOOGv%tJrBC za?RnxDtH6UHK0jT@G8T6>Tz8ap%s~GVBq$2fwec`*2p%+PcK3Lqnl2vkXVp`V4D37 zpI>6PLSzH^UFTehd4lt~KBcYPuG4Yt$A>$ok5M6~hw(2Hue<_%EqGiWf3&G_OGE8{ zQ@aT9isIeg{Ve*q#H^~r*;dCCo+eGwnyc^;Wx0r_FMOusn5n!;NpB_*AP z^E5<$YwtFq7rKa#7ve-yW|MAOFiN>3J=~ZYoo&=tIybzPtGF?{`dFAK^Bx|4m(-7b zcbB=g@Jh#iYO{v>Z>!x#b@12Sg%{SAaxc%`6%-a0RdrKw-ssCw2:YkpKCke@c% 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%0D6iueGMdu?Qwnp;(dA2IX4Z4 zOP~d;`|_`#t+Z%ThO2!2LS9^eVX!O%WkALwAc%ah`gKKma4Zj)D0P*nNdMp8-cswz_-wZh_BY&s_i?__&+1)>m@&0>s7}19z8_^=-EO&-F$ z!alm%bJ`e<)a)N{q(sc^*tVp)j}|$F=6ehyfU~64h3W-wf^*|f9QB|q{`KnC9()%A;xTs|w?`}D99E4veZcS)1WK-3b6&5sV#EiFAgx+sv; z*7!0+HU_PCKGBy_*FwF&$1xEMnPjP{baAvO;r$Cm2k4WGnI6-iQV1X**QaWV=X8IA z`ly3dl;3)0!Mk^-{~G46!tcm;EV2u5+}p;^(RuZAhW?I$UI65c?yNNI1L;cPy4_kmO&*P{b2qgbt9+$xN0Sv>RHr_X*-H9H>CE+7-1rTc%<%U)X)FZC*nu^4 zzF&Wt?1wF!z6Q?o7}~iQtMUQhS#M(!3vgKFPch@uZ!rPqM7EdEypgxS=(6n^0*AXJ zo+A!xPs{E6zhre3Y6v(RPkEM=CM$j)o0{s8n?0xR$FJ4SYPgVW@c*?()%l*gOhY%( zSaI@?8bgy%C;i3vnDoVDiJR%^%G)r}w7X2&;Wq`RR_f7l?6gT-0r#gb94hUn!^`Ib zl6CC9bEHWMdX6SUMkMVYa)>=0JN%`_n>yFfWzz8X+g7F5R(gzG=axK2p{8K&`u@Rb zEwO6lbidyD3n$ViPDkg%3Y9f&cjS!ub}kMc#e+I?HrTonB!(_PZBp~f(qpT;32C%q z{?H~Rb)zf(n+u4tb>zlML;*-->-d!d#HEBsK@<-jr{K<2*kJ~qmU0xlBOizcl8y+F zPJMX=;y*IJ20-@a5NhukR9hX*s_>}q{hjWJlQnvP^)ccov3dG4H z9pk?*Xl2+a-!z%z**?|1#lm;_2kozXzt=o|X*7#9N&n>B!n)or$F9QnVWB3Zgaa{uJHvrcQQzPa$-}LgeY+?f+raQMmke< z-l70-+y`6*qt2A*UuUH=p37G|@n?Z69u$ilZ8uNu=}HCVNt^f|a(lezn{dFa~{d?U7Cs<#q`#J3h4-n@#S! zSkUqKwn_xPM%}IYo=Di7#cG+!Gp@%X)TtC|rg-tky(Z-R^S{4UQ9l($^{uZ=7nOPZ zYPF#Eux62FqnWu04qT)+DV+cpRH#ZTY;HJKVn(B;?OtWCmw(vFM%oeL{jq9{k)dYu z$09qG$hWS=r9TF{OCxnOcewwek-#WFy9LU9v!JN5$oS(`2km?QoDdGvL0$YZxs`Ka zz-pPq<1F#uS4=XqO_gyYFf)wXG199)OReNzpaLt+aUm49ohw6JzY}13v3KK2>k_#d z#m75Ec~T$mH&mBc>npNtv(68b1!+&Qo&zzNJ)LLtT>nyYq(; z+tD7nlL>4T;JzP0_*fZE3_O`O-z{S-Yw!yUwUbabX#iYqF;RWB6-mrZmd{>TUZN6s zg%rKa11#{r2|ie^nfm+2HA8_oCveUz&8k^g`wRp9YoqVhj6}b^Q*+l&t(~*66KkQ& zBL%qe+Di@>T;HiyoM~@cE))yBO6DKcFX(gPXXs0#6QQ^wB5J_x7+imLuXmi^L=Q3O zC6j&_+{zL+P<~(h;z%Zk6Lt3mDw+BPJzMz2xKZj0+^f;#X`wG!q=oOwRgGBxwa_m- zXc!oi{)LW~B#2C9`q#G^D9BZFpQ%!V?6+O8~x}j8(QR!|RD`Z12@v8OF+rCY! z+Hw+tY%ppf$f{D4VlVw*@bbU`ROh7izWy2OXg)*xwrT5^2pP;2 za1AF#sImlDQE+w0V;n3Nk*ZvE1?mOO1h#Y_{19ss(&{BoLo1|-FZ^gY_PgG$-o znv_{bgm)@a-SZKL0#LuwWvd72FuI1y>zs*NT4GgX8{lb zy4ZQL42s{#5Ek|5H;_?Zj!J?8D9^o4IlM>vzvutid3{{jNwSC#+M)*=$Cq<u^Nn_Ntk7>25=cP5W*rOGY2uSy8-pWQ(KP zMmq-3V%~GdN(i2y^Gzn-1%SahlH@@oEoAk{u(b8!1Y;>|UY!JJ0>Unz-gCSFRQ+u4 zx}66e9FMCuZ*wR<=-mCsdvtibTSHrvOmw|gA z0}hD_>71IAl}^ha>wW<$D}ythYLgqt4@wd)Z~_aE$aFJVIfA(SIyIUV?9E>AjW{e1 zM-TR<7L6MZ#ka6kDs&u1HW4L^J(N$tw#d$eL&-TPK>@JReSRKMv2?b2yg4uZ0 zBIIC`0jiN-7B*-)&_QdLfs)?mO2E^3-FGNT$l4 z|2$oYT5R78Gmu8DQ`=MHbFnj;5ko2(kO-h*kfOe2q8SZ1sPDiQp*BMO{*$`_kSjLV zYLGkZXr8d)Z)sxzNW4h|AEDceeH==;V)0u}H|5(uSMJaEC39+f44aMy(Ab)rzXY}a za<6d~K>d&zbbDxjebS)WPZk-8>z6KU!Smt62k3?cj{8PH2^o{L(A*JJvIO_2weL-M zrMqAocMrtRpJ1ZzfUi!4q6xRrB5vqLR_sSj?=|4hMp{CGt|1)mP`}Zlat}))OlB0f zkD?Vc7V0H!q8G8`19&`tLH6DtBNY3efm;B>@@}cj-wX9uL|c-ky&Cld4BsQKxsTDtNLpVj8FE z-W5)O>lwTt)X#ZoUoldsldG z^{<=3<~bP1Iwx@D3cuB-YTFZ{S~I$m1xKT>jR_I_F0L|K5lh+Lyg)!l6ciL>I;!m7 z+g%+J1z9P&iK%K=1K00`@g=4e9FJ7u?zi2tyyp7FL0RQht@nXH$Z0B=f&r;zAv6$d?)|0t-50R zlNG;9ol-YbOhxf*Tg|r)f#=wl#LiR8+RQ&QdVfga9~6n>*LD92-uvQ~6k|Q|l9~Lf z)a}{@k&l4KhH_QQPX$ZMdouCruFjikqi^;Ub;jb4DSI{T-1sy0G0S7N#fpIZs$&V7 z`oUzp0d=F>=OTWfU-%iPl&EdYV79zT&Z9Mc-_sAVUo<_7+{a6IM{bJtpB?Xw%6Q2o znD-Ts{a0MM0Vf=TFC;3~_D zYwqdLJjGDo~EaO`@`RY>!7-tFZt`(5|>QC``c5yNUK48cmbR4lc4F!|Nqkk_NMH{W01-r zj*U)+x>tr{xdSSD?8r&VTEK88nKHgGg_pzwFCGtkf!DskDYj~c2f&F;oELgn4{n5) zGAV-3_2Qu!Hg#Q}3Fh4W)oC0XH@yI_^%s2pl&z0ZfDi-(lj+H6pl2974hTWybz)f} zWOzAViV)In+UY;|=>KqgS~-Qd{1LSlMEF+{S7B@M(fq(?{SPeJL3Qtc$wz?|A`*a4 zWWLe^U?#XGym37WOq4w#?*+7aTNxnS#=xjU?2^<#tk1mg-gMB>8bT~$k)S2nfCoq) zfkYW}Z9w&1}G6mYzbN}U1b*p@_>l3nsgleF7peIY)B@|kjpn6 zA4WscD*w-uvD&X=SYm+z%%uU-n}_Yv33MqMlp6vj1{eszskfN=j`(#v=%i*sq@3b| zTI?0?Qb3aXL^Cyy6CY-R)AtCx_P?V)p;+QB&j#>Ae=h*L2M>UEA6)(dN|?cD*YKEmk)`ZI u3E0EXNqnXR+Fo8tkg}wLUkIR=aB-+M&9pYVW5dBWINBPw)Js)uBmOTuP;W2* diff --git a/test/image/baselines/bar-marker-line-colorscales.png b/test/image/baselines/bar-marker-line-colorscales.png index 940616d99a00261428271bf4df3ea0786e241d18..5bafbeb60d8e212a590e5e3467a37cf8383c6fe6 100644 GIT binary patch literal 35991 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

Ku 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 literal 35961 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 ZNIaDMQf^jF?%*9HDG7P;ya&2o{|_~`*Zu$i diff --git a/test/image/baselines/bar_gantt-chart.png b/test/image/baselines/bar_gantt-chart.png index a6e0c1f1af075b8cd5b50f3de2d3fe0a972180a8..2ad18149796b33632908d5fa91d8be3503ec8a61 100644 GIT binary patch literal 69658 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 vOsW1N8ua$rv+gl&tUGCLp?F4ddl+h%<+s_ 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 literal 69655 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 L&K&@jj(E5Hm&Oq%1of`oge7z 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 diff --git a/test/image/baselines/display-text_zero-number.png b/test/image/baselines/display-text_zero-number.png index 9c75f2ba312e9d410e715796cd8dc4f98d5216ea..ca9c74dd8a69366b25608260591644c263006810 100644 GIT binary patch literal 62281 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 Hm(%|P5&(*m diff --git a/test/image/baselines/funnel_multicategory.png b/test/image/baselines/funnel_multicategory.png index b4bc0ded96c8e29999ca5f614427943459e4005d..b3e34c11f2f998920ce140804ab2c95766968d14 100644 GIT binary patch literal 113361 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%0AuzxM-B3g}TD=u}eHxRLU(@NP+(;Ag%@l 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

#o!Evs$*laH^EX@BF(*G7HD|WI?k@W^ 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 UKmB?Kd_o{Et8%UIs&T;o0rtEX&;S4c diff --git a/test/image/baselines/heatmap_categoryorder.png b/test/image/baselines/heatmap_categoryorder.png index 486a02a08072ae3884f564906055bbb0ac0b1c4a..9a0bd204a4a3c40eb87ade8889d06d896cc8d36e 100644 GIT binary patch literal 31799 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 Pc_Jw)CsHA#@BhC5_#5xV literal 31756 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

SmYFQw=e~T> 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 diff --git a/test/image/baselines/icicle_packages_colorscale_novalue.png b/test/image/baselines/icicle_packages_colorscale_novalue.png index 84ed010573022980dab580add348ab4a65cb28c2..7d7567f5e7c3d10ec8d7eb291f7cce95fff03da6 100644 GIT binary patch literal 50642 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 literal 50879 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 literal 44198 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

nAS(Z|Dcc+ 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 diff --git a/test/image/baselines/pie_style.png b/test/image/baselines/pie_style.png index 4287391dfb6affe2abae174ca6b363807e6cdac7..94bc87ff108a89c9bea9b327abaf496c79bba959 100644 GIT binary patch literal 37274 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 BNG$*W literal 37278 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

)!HCQ=3u^M)D+}WT(ZXdZ0qZ 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 diff --git a/test/image/baselines/sunburst_branchvalues-total-almost-equal.png b/test/image/baselines/sunburst_branchvalues-total-almost-equal.png index 340322414d5a4e183a0a68b00f1708ac22f7b848..bcddd9f64fe51d404a8a94455fc17002dd136c63 100644 GIT binary patch literal 158389 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

9RtY#GTJqKP zvWJ8JYyAFgBK=_F59M*M*to}K@7$`agEkL=IFtNfRI}@jNc3_YrQ2X+%CcIsAFTdO zH}2N^map4cgu%*3c8SNv&*qfWG%0^e5n@R}im`fwy}q5Tf^K%dIlHG&?=T9#fTO=w ze|M)l4L8{yVB`+25&a%9ktFZy6x;=k2v0EzS11A!QlZ(D9k zk3WuhN%NXV)_gqa`` zw@oX=MEF-xFrl^({K%jNyrFFx@_7ES$(#qbjGg4UQL8!qdTgDQay1%d?YPxJNs31P zP*xLsayoY!5`5cr$L;Jmj!f84Uf}DRKPk#?-PP$_;3d*m-xa*q zKJndddOx1q^X_=MgI`JtnAdz$ zw^Q7xj+Pi#-|EWp&LH=m()*>9n$c0t+3RlDv-`^jsHdBk4hmPTh|O;?qu(0>dqw;r z^M&y9#;D+KoB(zHhL~w-B*8F9WUl*CrNEmg>?2mA{`ZSIT8@o=AKdPt)o1gBYI2?IEP|mVLCN*uYz>j1tJ4`?Muoz9Ginaj2B_N@So0)J{xaZ=>`DUdT zAr%E#jd{?GSLoG?@|eN0!p=o?0$_4_#o+ z_r2UdW2nMu8Q#vy&OoHAiU#FaIXuZi8M39grBf~e7e^-vk$m0y1;%FPx#$qaU%q`B zY^PS8BSM?WpAj3qh(^6b3n!>onjrza5G>dEj~#C3_^4*PM=R*-&9n+4TPik=S1w0- zFG$kubdBd2kz2=9cE&+MoV(AjnLd=T;Wl_TwZ4`X?Rj(Oq!i+lRet_Pm@m=X4!_PCDaoe`N1QJNN>m%}jSlx%}U-$lbSE-Tyg=wAM) zKzXm3u>?cnM^bWCZPlOiWzh&643$iE<}d3^=M2o68A~ZSdf{`wbw&$w=}MNYodt5( zvXJo_xA$P2Cp}gD z&kxk(&Fqkn*|t_trE3a<6CfI!?7hg-eW>RLsxM~8E;?q6u^Gik_wTecBCju{zuRAt zRSqn>XGsZ+P&(_M?H@WQIK)yc#?7=&sP|P4cYSx`wkY~2PDwN)Ve&<*A{;;$o(G#hYiiX2G1?Q_3z`R3nc%3lW^FFI;1o(eFp}3Xpgw>udF66vBiIhLSRU{p1 zE5H?FL(0E=jOMYE`6nUu(jttTsbb_FrHFH=gUA>g}>qdIIDpa z#fC_3EGKgL!Iu`NIHSTUgJIHkL%bWFyG!#@GeJ0tcJ3SjNIE28!lYV3thz40qAR4T z$OhmxQo2|p!TV8^zR^ossu9-&2=vCDtfc7diJw%IFC3knAp{9Gt6uF5l=?sOV|RF( zq9F7e>DO4u#1bl;HD9%c$*6XkQc~ye?or%J%EXh&S85nB{~HT)ch_rI^&u^>npV#z z0ML1&bQ+cxE9!3KwdCjmby+U_vx-Uln(sJsm6WN07IO)LR(H$8Dz`cJEJk1Tf?4p6 z4lsM`-ed$JZ>4Xx`vIunU30RUBh#U@ZhU9E-nqO{&mkk6z%E0JYZfj0&Cb}yYm(5K z9}k#d)Ij^+{}#**kXWvzE$6MjnRcmq)l{TLI z$@AeSORF)n>#aw&ol9UigWVGS#FyG|!>H-z=9?9Zye^ec06>~m zA*llrSuWb9^HaZin4c4r4HiHV7DA-)o~Nx>QYosT0)rXQ&Cp%`DGX#b3)H4U+Rsy27?pY<{&9pN^4)*IJl-)bT%`KM+QFHxx|5fB zwKal%-fq}f9E(WzhC~@^H2I|C#*JqD&m@{jb7!{>Wfr?him4M&-aY;hk71$So$H~< z`L^Ht_`+gRZnDJHeKXQ+ACwglic*7?Qx3t52}Gqn#2KP3@!1@p7Ra#-tW2GfRCW3rd_ zJI#0n4(-)UW4BA7CbyE9%;%?g)B;4gZQz~NChqqTmx zL;+qc`N4T2p##h3ytt8Li#uymvJ3WBnkb`g0<{L07W-Wqaf2jFsQbjxV^_I4Yl8JR zfnzsBNcooY8T>?kB5zeKMprK}ykn;EP6LwK?L4ip$x<&Mb}a0q77r%G=jT7<6tkye z0Gf^Vn0Q0sh%6@@)T0=IV$6|eQ=|<0wq&;hhEC^RJOoRg{nj@Yz9)nJ;R)W>;9AR` z-KD%|H@6uI`+T<6OiRr24SxiPD!u7iYkNhpvFX&&F6!5 zITqbNaq1Rk#l2mjq)AG5OK_YdH5f{ZGM`P8Zfq|wc|uu)($aq!+z|EvH~7By{PR|u zaP0<4fav8JgF-F~+;H79cT->TXJUrf1M$|2P@U zjRK-?F6k4Zp`8UqWeBbcu+vUf7(PdLy*;f_M$$pJc%PVZ^IensW$_SzmvINRu+pUM z%4Rr3qPL3MASA-zt*>M76qI0t>HN+vDDDn51t1WNU`g2`*OAp2Ct$pFcZ74X5tKT_ zFYTkysdQ3WuXC=yJ`VfN5JM>stdwKUB?}&1AZpQ9Z?qfMl>Sqv?m3jp;!KLL z&>|w@WoVC&=g{kSm@KMfHlZGm=<0gqQvxV)Wu$7_Q!enS&@h)xlA9icKAv(2YOo67~XIib^9f?f~Dn<`^q;l+3)Z-Ogp*O!Z?_pj4pJ!I)*wf@D=mnoGQm zLeBWQ?Psbl=DL`CzF8Zp&+ie0!zds=_HZCFaQ63QftYfAO;*w7erWzPx)RatW^T;X z^?WN+7)WTiyKg(VF)ZWf6|(yZTv!k}vm^0%N>3KgH9My*94_TV5F^kH8>BUr$I=wp z7?qxTepq!qUsV-PVg{r7$V+!{Frdqo9GF}I zL&PFxqn_{XE}p2LR8ylQF06?9n&X`iIBo7Eyt4}>i=mZ)2(Q6 zH^f3;y!K9p`gE2xcY3$`3X)#x9-CK7X|4+Q$Xj`V>L4YeBZ+yenl30W6uhJ*;oVGC zT&6%dQJ258ZBcwa36pxMOBfDEeTwYBWf1aoJ(~?0<8m&2`tV+Vc~E_bNl4H@A{t6h zBJ0laYOJmfgtjhyI-xopBuFqm<96I?@^<$j^85X-gz(6r2`hh9B12R4D1ag_EE-g$Nn&T zOFtSpul(_4Q$kfhwGjIS>{K)cOBE0izbCEo+B=^MN#f!VmxjEQnkkt+Z;_wg%EVXe zycqlpv5I-;a^USia&b(Kt)3nD+WYRWb0LPH7aJtXqn%Sbm8Da}nEO25p6?v;*mvIv z#2N^Z1=K5rFsI~b26r4t^{>17j@|t_*ZC|t8>`}1?Wr10QxT%GzR$kCBU|{syIRDA znt2PB7gY$qw6Kh5*JE^L0F<7qyEbe$X-vf%ep?b7usC ze7_9W(|2<3nA%dIo$rvU^zPo8|jGb3{Id`Gm^uo-HEqJEqDfYO|Ky7&)H=p>Y8o%*Ez=N^;4O~c2 zYi6=NSB%(Hp_cb}UnHq>#jaVk5Z*z^22h_fd9Lb8dD&k=!Hrx_R!8}`jk$>=$64VV~<=R7`RsjOgtM?<_)KPY^^8X|OrKBk?Ll5D{1yO^j%NTc3rdkw? zD@Y1xAvuEZD6?R*#D-f}95EKKu5`!TrJg(2c+&@RoN~p$nD!O!s}{va23Zp~W`IB7 zYZ&rd@nyChf~+hOxDU&0v?b?uH3_-FayCvVfYx}o(N4$3-Tg&2dYExx&qbAZ^n4R> z)h5$Bek{?;t$Iv^%rD`d4XY3Y+VLF>`~r_=H3zu=bFfIP9v=@~mlYH*?|O@9$4}xk zAuX4yeKSeu=SP(Wrwiq~>7NseED)^@WFOWL+?*>4M#6)Wm7_B?#s9FxVu1LFJPW#e zp44sBK-r_{GkbD8fcu8J;xa!8MM!rPBnfg7Oofjf7g+73hqO~v^WfCXPItQ`&Besl z)D;)a#`@wJM(!)lG^oiInI&I~2T3_No0oyzl+z>s3_oqaNUwOKMOp)ke${rTB)Zsy zjX@1yc#4SPC|l<)FURl)BP?E>nK>D3HC@T=UEyh}{{AIR;P)26AQ+Dq$<9mgY{-O5 zxbg%uZQ~o@>Uk!oc=$N#pr2SQdydhA%UB2x9jz*M{!)>aZpsv9wD^(x$kpL<%^X$nbOhy?BQUpl;M-7EMX-ABuNb+QUj~I#AE+fg zoPUZox@7NgiG-JX1y``&L{60B3?yZfHKjP+z+4-s?Wp;yLKID>tvry8Dr_!JVCePj z)=@>p0Bg%$SmQ4=&`!JL|yY3Ob`$_0+>Z|g4+f)TB_Iw$xuX_tZ<2_K!tMnhm# z;qF^?vl;+O8_k5vP_}HJe6~7K*L=Mv2}3;zEcZG8M>zx@6Urf98eo3JP~I>j&6a%< zzr^H7#Gx90sHlprhG`0b%*{G^vj+A3g+xd7yyD{a=fb>LjI5}PxW8xDZ@ySXC8lO* zi7BdKzH%HX{armjIwo7tNi+L-V&TL(+ig#d(-AqKyG|(>e>UIB0?5tp;M z($_A^<#9(K8|S`BW_PMmM319Nz$-DDLOwVMQIcekXW|*9-RtD5U(z}Vu$99)cfH5= zInzbzdZA1r4ZS@-E(yQm)2r(!+miK2=apB}kyS?h#rVD;PWYL{g@sk{)J=ti?oLZ7 zV!YBFIVTP(;kUf4qs-()oupLJ{nWM-v}WF6^5InKDk_6jmO*fH^Udmp!> zzMBR1b?l*xLB#y)AFEsc@PD6M#VUQTpVnfHKCDn=g*irylV|V@blcPEIhx7 ziZC4qMxF3n`V5A$_#|T{cUc#9_IMz}H_D|r9mtc$(&0K;c0JGiQ< zg265zB4j_Kl&DIm zaYtA*0@nVRaHGe%am!#b;UK!6HiujhUv%AswopQ4V}{B6kp~~QL?;tPdm0j8?f7DI z!qqzLvhsJOMAgrB0}JZWSaHFMwxZ{NtsuWjAi5sI1rK-|w{CFf+t+WtyB>@e(u8te zf%S^depE2JhbBP|k_`1|FlouOg^R0|O@B1%%Dv<4A#r27t;X;)1&)aI`P$O&cp+^; ze!m%}`Q@+vK|~_kkEYOz+fJL6*qpH^f?DDCLf?Iu575O1<3!{tx#qc5I-JoVs^o-$ zdV&^BllpT@8((n*s#qYJb#6edG37)VRK}7nGLDWT2Yu_%h>2lRPa7hQ&9<}9P}}?t z#B+U768pCJgwic7= zLaB>VZRw8)=2`VWok`}l)T)bTM9>W{4bK^Y)5U?ZBL{UK1FRz=Xqy=IiuQxeyf&%rWr zD*G8HaU!KT`aPQ(nCdC3YQ_1NhSk%G2!R|X0%2NQoIx-6ejcXi+G^N)EIy=sn_d|! z(u}sFAIiYaZ}2o5iNR5u2lC14@L3r!E<|{f$7ewFLrv+aNe<=b=iwg6KHq;|_9NlB z85t*ZJ7}NhQq}o6cUK}ToK~5k2IMxz7hKV_#7r8=?X%g2KgjYCFU4v zF4d#c`TKKndo|`SH9uO{m~dxg(s6Y{on!#eNqI>vF6MD1Ee@1tk<{=9c3c#+^viX= zP(D#OXug?_S;0FEhG=QiCzA7|Ir>%HdKA9CcXHh6+Qsx_y47=w@8y)s z)8Bm(Kr})6v;5~1Wk9G_ytmDjgm5gYZgTLuHlgkfn!B?_*_`}b@rAP2J?Mw ze+MpRkKHb~T73b51jawx;%6F=Gq9&iy4$tlWd(LS9!+*9-5rV*2dJi9*`eZF!VL4 z>87x|^eS3;IkV)PkWzNAcLVIhc?h6I2q=1#aIzn-k+A&Qu%#WKU;JKRVcj=Fq_05s zY~x&)FXhtk7ChDzuA+Uy;=d*+Q$V;Sr-j6sWD zSFBkM7)11xg!Vq(#cvN{N$Buv%GA*wHaj#Jehe`-owa%QL;5s7Iv3VdHgc){z~qbE zQS48);cBya$Xk^tQlmU)Se?w$1*xcjS1$_7$s)lsV^RBcd{lqXP3cU`jO6K{`NQJf zuv1%sq9Ix0KRW8)a$uRVnWE!x#``xwdmDM6pH&;l(F@OLDfLj@9Z>T%ExnN^xdP9h zu>$kOT4JKxThYHCw$?qHK(t@|vA-UOeiN@)>#*!n&{>Y)2|!9rVJNIG{E@UOvzu$E zlALVh!lbOPEv!?*@aOPow-#8dN!QxiPC|4BSU#nn99KMrx8F$V#n$bc8C8ylN@MXb zC0d`3B4@nsCq!MIO#PFDg%b7VSau>$LEqRPLs~RN%x9D{;`x@) zNgeYWM*g78A?BX_p>i5)U#A92lb@q08Z0W+KVZ)ro2)0Kr*o)M+*hV0_eGm8Cn#Ua zl?-R+&(F`p9!VP` z{H$DQfAKs@|JwxX(g$~xy`D$p!IrP2tt%WPL*zl?t2dL2ls75xdE6{EG%y;jutV6^ zl#J~F@z@17f9>1$iG49^OS*0aGCIaV(Ms6BOSrGS4LdY<-j_$N8brR~fgM*7*%a%K zOAXh*X^eIT!-rCV46V_ZH9ewtqS&+t@|bNQVSBh}U(?NW6!gJ(8u|NaN`kopy(d{2 zGr_Ob>EN65(UiEX)TXz5TA|yy2&=M=b*FuILipomo{{E-Q!!f+s_i@KK31WOP{z6$vp(okOH*>^^$#fGIySGf4!@cnkHx_ zN9ef8R96z;#=70nxsmdb;$ZS6zIJR*0);ns-2@$m+k(+NE!ftGN{lj{;VV5QQFH|R zvL2L|by^=6JU{dBU8%wEP%s#SK4D1MJ_X`_tC-(1&rNw`g0EiEkAprlYTmA-yEr|Y zY}kR=vq4Ebn7D1Vj7Fl5DrY^^!}A#$rUTb$UTL+*v_L4<7>%3M*Ru%jeD_dHsHPh# zSRCdosYm+Od8OV2Vyo)~|5m_1XSXwp90_@MF3g+dG+nOol2+o7NwjDekgWUc0G}l% ztz#6vi$|BNJ5WK~@Ks(weXbcB=0H76C9s8lJXiI|Ai?{M$621qc@sEP4?>>700#Z1 z%62L&MsIEo<3$!6OJW<|JYsvFYKv~4qt2wuc<6haM$tasHH_u>DbZGQ8d9KEW$+O0 z4Wqu@M76H7CdX`2$Y^`=)Li(0*Hd>SGgC$J#$@wu9yuN`bun*ko!9Ul3!w@Vj<0re<* zdFlaq)Fy_S)s3`KdFGhr48WCiK&FQXyPr5?9v+6wCoFcI z^960^+uJoVBKj%FP|)XWgu7N=63_RbDZHVaIFIt+Z&D|%bQDW zv)q`B0T7-|ublBD%sg`J+SoQKE2@aE#eOBvCTh1`y0VWi4sU3DGV1?v06uItTqCcn@iQ}GR+j2t~X9+6R{j*6|l zG@FVp!L>uVC4{lA;DK9Pe0I~mBLX9vQIB!MbsPs&L6Mm{?CfrIP7!shWev&9=6E3; zVJy5(oR2PTSsc(ky&GBfMuFZ4bvPL_?>^|o`gURsr=AkJP!BH+RUaI$b1DPK?=8lz z@}k@LqQAUjW3>sIBmXHvWxBGrQz03j2FW|!2hF!#4Rsvz_>n4JU&O6tPR5c~NBSx! z5jUhYo^47~H^4{O0Ois!QZw98IOOG<;rr6N&9OJaVpS$66ql@AM-Hang!?4$Suq6a z?yv5J?SIa6y9*3n4oIW`TRb6q{N9jQ^!!30wbfD9aEtlb!f)+Pgm!0s2xhwuV*(o( zqSngA>XH8_=&3}lZj2m$D_c<4jE{5Tn|dOLo)b$1?*`Nz&d$0I*7u{|(DTh|t*8+L zFc8ZriO4FUavDRq_;q{468dU+XSG`Ia(Oc6*>^)IQ`U<#Ah%_%Kz9hJ=)lF&(?y(u zWvJ)~oFEmmgY>q<2{+`^>c14&lnq4&Q8xoDX|-(zEKWCR>&sS+E1B#m=8WR}^s@XO zLi`sp{74$*L$a)r4FU*xc6kU9_BLxdlov8X%yIVQ18;-tRm>2^r zbN#$gF&mH-?_S)T2(_f|Cs?C92paFtMpmL~4%(^o48{oJerlDbXT2cyjSE~wUyVu1 z8s6r6O0YF|md592(%~aPkB(!LN!n=GScg=Ojh$Lst)w<4uZ>Bc^tU3nwYKGCy7zK0oT;KF=dJIPTEh6&nq0t%ty0o=bhg z?_DF`Dx4Q-0p5L)DUSfd{*-Vqw?gI%pK1A4IG6!jB)O>Ap_js;)F+|g5}noUkynpf zB|C2<6XkmS8+b(fQNH?0Ys45bgQqPLiIcOl1=l~leim(D6h;MR%7BMEBVOb93R;P? z$RW7Gs`XUC>Qpc_N?td0owD+idWS9hpoR5Ek;D!UFoaB7Ix*8Dx}$xh+MEjMzOc+_ zz}tKChU)D?-MBe%*jBfo`wUu}VgNFPU$pnDHScTGMZ7<bHyo&zdEe-;x4eji8PiE6tdRHTO#K&<>H~cS?bYSdlPY*@bnEslP`i4=?G0*C zq%(9;_k(`IA)8Y_-}GW%1as4=yO+|^tA&HM;TcJ2y9w;{HeHDL)A^05sGEnyJT1#A zpAVqB{Vrjb-gtwCUR*+TmO@7#?+r$ZE?}Z=`Ig=)AJJbz3+5|6m8NhxoBoZW{`_(E zgCpg)dG^rWl=cda-QFeJY8Afn1(&yK?s_p&7x3UHO2acQG6z&xKdg=rJb)ZBl3SSp#^bZ%@ zOT6u=e?Q0!v$-j9jPjH?)HpyDb>O5-H4QLd1}C#cwC(!_#m1+*Ux zp^P{U15vU%&^Lz2TYJFdC-E+LUBp+nef)QJg7+u-vxS~OLrx;Sq-~)&IaoI(R#%Lt ztyZyKKCB+BlFaME)Mth0Cni@fgoLwnbR*0Zj9pH`eQ>u zhZ=0CN17ELc&n(-+U|KA6%KAL9Yb}QLhrs;?bEcjiU3ab**YEVkBE#Z?hrU6LHJ)t;*sCkbzqp-fYDCxa@g4c3Y^0> zxZIW>AMcWo7__sV$2l^*)2i?rN(BSxi z?^daqXVX%pAvLx{Z!zG>$Vr=SCoH~ux-;6|CIIkV#EXIJom^=VFYQ$vgF{J#d4>8u z|MEA?fO?3u9IPQehO)iA_2Ru<4M`VXYRHQ4@G0lukF?_P%vvg7;5v@0{3U#hm4o5D z)ZpVZM|}c9Gb97&RcWcxa2mhwle2IHWz?tG1&aqO?RTmj(MU%WsTM0*SBUacgLgiQ zjPfwuFg?!zTCtbiTSHS{1f~o42o0PR7}3V-9d#ct7#gbk8_!`^ZuwLWvNhh2<0^u! zv{$!P&dp$&9)|g1-~uL52i)}QvZ8qYKAD+A;v67(h2s6dFwSqCipbHFw$w$BW2nJ| zpzwCXV@S>S5un{$Fl^XLgi@G@l2wgTze06ZGsm$pN2 zdV-rfD8P-+Yj5{Z&eD&e&9bbK7i!N0(yFpXb>uFPkss_%WgAQnQ9Old{(X7+1$OO2 z2n)0#nh`_>UdeLCz{=PHD`o(=CZb@}G1LDt;(qjCAXFStowAfGBlEbCyKlW8qrvm! z*004YD3OHJK8b@b$lJ-aPet$e5kKzHCp=2{C0-*v>~-vjX|f$Fl_IXU8U)oliA6E> z=36NpsA5Z`qtq`xiWnHoy{cXB zLvbf}>2yCNfe;~*z5cLP6~&;0cpRw`NyBNR4^vl1VyfYKF;*NDw81B;nQHl!L_^h-!%IaX0J*V9l!#t^Mc` zp~q%l+h+DH`V>tEo1}>eA^WZg(SwfSC8Bo-pY#^K*CfpTHR_tO$`pSOP&ZS4IU&?~ z3#b~8lD|aez4Xc7MfY14^ObGdovZb|cLD?Meh}lnR*zgq>mp5fjlBa*O6YfX@Mt|c zC`#jhF8uRP@Vp38Sj-(Ck0$dTJiqS^Nn+}B@4nj5H}{7^V7SAb*oLK4g(i4XCxmF& zlrb{cr2)i$w9iqwTkI?B2T`8dxDLx&S<@U_-W7T)xED8f1RlNe_oH_aqC&M0@zF+I z>%1$m^y z4Z)2{;-?s1te2@DZtwZz__ZFbsOi9Cl0Np~NsHqgK zvq<7N^Rs+R%Ks51`Y<-zGt>9#ONE&~)t{~5t2-W^ME}F8w@3O#)NGuuiKW?7O4Vyu z)@wBq^+2N|%d0|d1CHwOp3I{cxudepI7i9jUtX%IdrgSPyR5m?vq6sS83z8Mm% zu8H_HB?SnL`no&waV;Wo!vwzO5|4`!=qzlC{4I&?trN4mJc-na=ml0L%f305PCXccn8fM2vznLEzOAh(YiyU;OAo=zYqlQ%r=W)#DDifV~YR z_-2=jIB<+Y=pOY|_JJ~U7pnkN*erqlZBRqx5X!$?&9s2YqU>){=%zSz*)H}WA3K(C zZAU&_$ABkU93NBymgt`rk^$M(YzC`q=oC9_(HeW@C1|^AXuG}T04Dk~$gO7>GR7X< z6Xf#~Y==gvlK$SLak2iaDfn;W(H<2fdm}NI7Dq$0EM^^l?27dD)`ul3KN|h?q z6g~u%-2O{j34r9?y$Fq$;)6LG6YBA#Ti(HP0L5!rZLjNtK4iO{!S6@2|F@#Dl8VSg zE$FhMzzD)RFIAL9dpFivis2WYRHzuS{wCeY9|Iv(tnNG!(tUjI>#fBZX_tmx&Dbj# z`P|)A2|-2df(A_zIU6`Uc+{1S%+y1_YG5E+?%fW?7|a^AV$jy0aUA#*n-1vo7N7ex z$O2!$1YMl;N&xhSli+h2sDP*N-~YrBWnKB2*QG!;k;!!Yq8!!n`aibDUI&UoKoe&J z1UKQc^5Gws)s^Q8H}`r7d6$t@E{>%ebaK>zDAG<=m&b8S{o!1C)O|R~3w9Ie!D}MM zS`^9fEHmC2GsjIHaS^@Lrw*1E1q%mkw7ALudlV{ppt7bfAx;gcFery@^0(9ZA=vCm{>l|Nkf?j`8{bI2UrmbK1seq zU}wP-KynkRFQ|f~QvWgNtUaI=KYAvbzserfU+vsgRrH(hb^P$}gj)_l&R>1t`cnvQ z?i&aK9~X1u1QT2aiZCE(?NbTHhWRD=;p7N2H_Wx`pH7+5f#kzVrmid!*pO5^dhJ_n zVB2;lIWTXv9vqO}uono!vrdR^>X48sZ}V0obAN9}OzDbis7>;8aCj zQgc!+J>C*v9 zbEnpM5uyr#V#us@JZ;sIO|F|X#L~K!4*J^_E>=@Xv5bWc(iamxx-Q zy0Z59n;}enw`H4HUm@jpUrreFo*?y|;Wxr!#Q67j-7&Msdj}U0d$!|~_DdzfKfJ(K z23!K=e6jhOUZG!eB|rQ+(H=vPb7fydP}aLjY<_mk^;Vo&B_P|yTV0&{V(q6l7wks+ zbTy#H9D1Y%r$nm3e{(bV6JSBa7Y4|Zs*lqYjv=0aG>*nUOC)9~asuuyIpj+V6}H4O zkbKt(hNH9ne3%ik2;vd0*qM1|&V;-i<~mf(#P&tP_7AdsYGBpKpjvvrxTwJV$RW#R z_jrJ@nC=eO5)$3+3HaUBx&tB#?~0(!`^s?+5FHU7gK7y4IvA5eei#!&2&g{x(QyFb z1a@_zR%zC>a;!w2%|f^CZgR-{nYOu1l?&=1Zf?T6Wg7H~*p@9&2sCZu&LdTyk{(7m zFJ7_QK!DQQf(=rLIne6cG&cIPNN!R*)n8gT?u%oht(0c>0KF-9Np@D6o)&8vC%kTV z;Snux)gRsdW+itAo#Hw|y!`IEl7UI@S@|6^;FIDjp%?lkPq%RD8x6)ex25v%%Ubgf zI)0O#>TWxk6B{!-a0is27JV!w-EIZ&hLy!Wue}|XnRc|2j;e(R&c+3Xop?YqaGiBx zb!#MB2=C(SU5~S5ylG&_3y?;G(f#uym+iMXb+Ai7E9%UFQzj(QKc)vZL5m&*81UAr zwNty6L;_zD?Fq=g>bQO49hJPz#7WjYn^Up^g|*^u+Aps>B}=8GSD;_NC^|o5rzI~A zz=q%a$-p|>@7!VUU3Y)dk9qDrcT;a4%7L9#Mub%M?&D6~j}$fAZ?16Ht}0rke>24H zBk2l3wgn1qS@-PZmdWEe&$3oz5>Dt|g5jq9*+FDwdKm!sgt6N7+1K{mN9)VfqZx_Q zgJ2#(i>^>nBl>dTX4A;)eDHRbp`Y$|A7<-=9^{TGXNY(QXja(GL$WA#nmK6c|I(GK z?#j-AkZ*^`nNdfE4ZFy^C&gy|+oLV(!`qUnv>*R=Y%%ehom-8al7!)b*y4|q*Q?E2Lr z0cYvJXOEI(@uLzz@PnD41?Yt$rUc9MW_C@+Z$tIh%?=z~1)g@Ogk{yiad&$GsYCUD z8kF+|y83Vh@wNk}Mw=C;zz1_w(V1H9jsdf`)%?hPbw0yv^huz@*UJ;373X&tuYBx} zK#W(}v*4|Tho{Uf+&GAx*2Y_5|KLp8RS9ODyI#3Mr!$M%AO&~Zz<*Ni zu$s236OfZhr@_oc=;TZ0LIA5II13q?;m>-vNNuQxLtyosKj+oZ)CvGMLCR_IrhfrW zbmhlothEs_cn?~hGfVC*H=CyIHFULR);t*V<})z-4PGOa0xKX-Hhjq)Z3ixtSGm|q zVcztKb7y}!3@bO2Hw-pqBodJ>EHyHR)o+ol|Ei3Og|R14+|=49XF3r8l1Rv-=gSSk z#kxwi78bxe(bQUYZN#IG6-pMi5H=_TJhL!Xq4M?6pZ&AZKKVva6+~B_&NwNjp0R8X6jKVR3`c0i0j< zEsOs2Q%W5FhX$;`#7DxQb!r0%McT$<*vNHxVRZrOUa-U4<*CrqEhH4pWyELD##K)N zi{EnNu(=UFVNf4a3wGhk)_pXD8(h8hc!elK$Wm>~o%;bTmf3b`tpT=Gop_GI1gzg5 zp9W;jsUJHLDuG2?cB9MQ8KbSdIlzoRzG1sT>%X;)P(pvrQl&k1V98|>pV_XcOC1Cv zL~a2?dixI+hOA=2i1QU9=U92ki&-Cd<3)va{f_)FQ%^q~n)#Cw5RdG^sbF-JUTx-C z8f+k#sI7x0#OHck$QYF9{5@gGgE#NO3o}*_84%non%9J{Xu(pzV3d@{;T#q8$m{=mq4FUVG7TN!Y5oF_^vdj?ZuNvOupQN^+#CDbQKC{|oV zL_~344|&TA6e$N)RZMUb7Cx^>e3f=fy-@tF{^8V42F}*iH5JiqZy3?ldnJ)(qZRDg zgPozeCoLCY@C6o)kL~OlXA90+4iU)^G`9x5%n-m@oI;i= zmn2=wRZbsS{-!-?-eL~(bFYzmsyg1Piu6hy)uK{JQA%DZZoh=;W$luo5q9X5{{OT9 zWu3Faml5<)hKmIm2jKT(uAZ#%G(dAZSui^*s#e^<>b(_y5K%Ax17bR*e-Sm9c&U+Z z3W*gGH@@gi0FYE*F8bl}Hm2wW@V5ya-4D`4Eq&Vgl~LAwnoU)+lZCt!4RchLnut56 zD3hcgC0%9YqW=(k!$QFr%;O=RYrTKVAO;^O|%QBr#PShFoqqt1%L z`S4?`g~j}8v?S;1;}vwfA-~n25Wm~x&0bgKA)r}psxoXn8v{FZl!7!__%x~q#k-L8 zy94dIry8<535tdgH^RE)OJNO&hKGci4o7vef~Ru2z(=iocT1Zr+%c&^@*2;so;&0# zejs=_KXpqENAv%%g>e+WJ&LNJ0DG$VU%k*vNIUEM(0y$W&__u-T}MiiM4yifM@Rc3 zf}4R&E6{wjFc%q|RQ^@*TH{wor4pH9S_3BRXWq;;)W73`g@cXS@OET_MAC( z34ypp)O6p$_I}pus}jY|;@b}LBgk65N>X$?=YKxBWKQT>>L&}73-<;NO{c$lSbA`| zlCrX}pdh&N)bf12ElIUP{rc>!ZQ{v}GRNnE2GsRP$m0JL`#g?a?{)OO8S{dwUqQyy z8ZkW~;Awq9k7Te{{vNBa74O5{wfFNS_DRkz>Zq1_Jvh=D!4;au^%^*ys25RH3O48L z82*#0o8Q*95IzR7H-X>Ud~i>tMYliEAfC6O+O&Et*P?mTYO1E7vUi9v){2)39NaqO zP}YWP<9M=XQs9NWsc($f&%loKiad3rD=#lcQ`(GQPn@?u*T`*@@@HM}gGp^`+8va4 z8?~mY&<@*ix0A!t3l|&*wI=XO&+XXlfRANMchgX4en43$SUr=x| zlLx8W?!v_|-QN#cr50ra-X~1$=}%E!Q2|~r6&@Xp;0D^9Y`;JI+hV}4MDTHbJB?AK z@q#_AUH@AZ2t_jm94C>5FjYj#4Dz||ET-R)f21(+BKk^rQXOxkFBtjG5F^gd+F#}U z(+QTP>SUo%1GH87<2~82)D-*{A$*nXcI0f|`fWRsv@+ati(6%qQSK@Z?$swWJMISX| zZoC%G31CNeefyv@A=bsJDik!CXR`>t(K_H8U5%(gP!suEA`47AxLl}FjM;q>$Ki%eW^w$(1Ob$53sFN+NiS6Jhn zmw2JV#>OV17(C;sH1Ew1@%fxb_IVgQ>U{k0_PL*2ervZN1SBpeW;SGCm@^civg1Q` zUjJQ7-=^~7NZJ+m-gcMAezUs_-!i?p!X>zEsZ#VQ-c!6#fzm>$ZGWoQ%oth!%E-U2 z^^TYKu7|dUp{Mny&-{!DHF)l7Y+?X89M+j>q6)0xP8kS9cvqQ-35uaciJ#M|x!l<#$bde}QLvEEcRf zMn4me8I+SP&_&VPnEe>pD}X))vjDFD9gE9E&03!VXb>61orxn-MzpHxC-Y~AhsAfQ zXohY2dU~&(W1L3HVZ~)0_ z@=hg+l-ER<@n$yMn0mUksVtu4=7W6>$>yRlI?2XL^@3Sy&wBbYI`_-k)PO73zQ~Ptgt;_aJp%+yW zmwi)>!KW(~L({SsWKTj)z4cXM2RFb0{*62!?D~gRD9X!u@>wIL!~>d@Jn75r$ZP5$ zG8$lC6Pg^mbP>Vqdc&ds7K5}?0p*cQ*Gv|?T++ZDgM4Lv@L#JO$;3v2c+eulNNb!> zdg?h~zkuze5&j;7jkPB$Kjskp$%TgY!(vtBzqa7t4?4J&+-jHsSWsa9elAQsanUIJrzuCe#~!r6W#6XoXB^ey z)=w8$C#wr3YuP}UH-duHmQ#vV9#!4M0lf{z^okcTBDRF!Yq319F(>8Vuhw(cI9ptQ zM7`mUfn&(nK`DM!@6V3bNSX((Qd%~@JDfUcy8Z-ILH;ERKe%}pmAL89rLMCR>k`s9 zNSZJTuF{Q{D*K`j6cCG-w#2W&|2kMtpRw6UssfB z6B1!Xf~J8^Os9X zxlz&~Cl^e8Pl~j6b8B7~O-W9=*q^gVY?W@(e9$)=`;baxeEhVE58f=xX8oj%wt5zb z_$@qApm&(`+IJT6a<*r-KaLnyhS_ps96}4oaO5~Ct89quz&MalWfv^XK@6nRI+r_0 z@dpyiH(Fr02Yt!g6@&XqGcMion=r5t+z8%sbdoPF_m+5i_O|gH$yh}`rFzfKZvN+b zvY2kxjdBiJy`AUyTS4+AoGz)41@>-P<7bFM2?ducD!KOIdpk?qjaS7vWwjUqWy0l= zp%TW<$?YQ`(osv1ejFJ?QDJrD9?}ShM&)?&#B^dayJCNw+vHU;?Z5^F%6GBXCRBJN;99L>P$5rg>Q*2u2^FU$4`+m1}t5qW}+TD)ens`!n(1SoWyzvqz>V+ir zipBt#n$NjW;Ij=K8yg&eq@cOn>JdnEk?x}zZMs`bzLyRJj5eKTke@L(mQL2|;jrSy ztiK%)V;=PAL}&#>{?q^Us~tJBvQ@HVkmiqCTB@?5e7pkRfnO7GkDA~er7JuY5@3f=YvJMwn{R_3N}cil|;8Hrrb6Qma~;Q#(ajGVj|8aAcrToVGb*PU@g~SC~gU zUR9D8z5+MicMdiX;Oj||pqHjJ(E*sp5NcLmL-T7 zPEZAZ6SqMIC-TzqhwDQn$O4{iPkx>Bk>Dj4KF+)1NCb8;_GnSkkQCL1G7BCb^a|Gf zKdR0tFzz<$_HWxXjcr>K+i9GM%}LVOHm8lz*tTsajh)7}ZSzdObH0mnH8*oJ_&?9y zYwz`2Ou&v+A+2gcr6h&KqQVlG*Z*N>fS+d623@70v@zCI@LtDpr{9F3wJInEW9y|K z0Qg{cqG((^d8$_(kg`>rh#Ho9}ZJvxgH9rDPzeXO}rbxd&EoX<1VC~ zHbFmCL>%iB4Y?XW&a8!9*~CAzN8Z+^QEuxyMEV;h;tmK`WPzA%U3G8?)BAWvUHwe(;bfcYtzd30x9p>CvxK9 zwzbS^03)UR>nS>+qQyOq5Xyy;ftzhYZX%psMF0LScFs0L-)p=Zs8wxI@*De5LYc$- z7KW+K0DJPVtx4Awk(+LKi~Ku(`VILsahVeH*9_UEn{jEt!^L-{iXHvn?;;{Pwk>-S z!XlN}eVe?fm8ekLmX&Sqbd_zkbPIV`A&&p61?YKwT>v@pXy^-w2aGl!ACD&U-YHkM zUmH?_9Quug!>AmVOt2k}3b4cMKgCfisP>3s%Wd|+Q^P2;XNIB=!fvxCI_yZWxt^L! zMBw#9;@M-~8?!W~vzrw@e9j|pnMQ_Hgx}FVyJ!Nz6 zb{{TMjzX@dnu!cLuIxisL!IE;DajE{v$5oEObt-C(_aDVI52j;%n+cez2^%u|DP4R zu5qI%0oPdxG>sJ3Z85=;+$P(#RJ+b6XdnvZd98q!Vyv9j#%zg7%&y}7K|i*Byq2{4 zeu`PVntp6P~yB>_qUO;<}oFJ4L~h5Cgow2or^ zqU)nmxyac+<{s^XYr{K^$7w(0Voy~M{N~ax2}(>8@ZxmrN7TwfNYe8xk;U4Wl8G{; zbx1JT8zDSfY0^lXi95?IkDAu-`SbJBNZ_wNk=A{By>`tK6<_)5ZKLzm7XJ6gogw&g ztj`rVugGNGZY+oLZ*OUBY+0iH9Nz6zx>tYS6s;jg$=MR-5UlY@R5L|AfsBiWD_c|U zFa5@Y7~S<()t*vl{1^CA%!h9&ANsJRGQHrvIMqRiMws;Hu7Rcb{AI|JXE@5xi1x%t zf?JK{olm*W1Io#Q(7=G4LXF8N8wF+8pLv_AYM;TA)73l9Hn*<9bphh)k3ZD;`QF{# zvsFCtoT4=0LeU8vY3b?uL*p5e23sOwVM&VGjj>^2bE@h#*@dQTcXv89%dQ4Z7trIr z^~?UrvMJ5Ubq;P!eJgDQLLYd-+jy|BHRz~0lyoB`QWXH3WzU&TpKOwj911E4IJDI; zy^iJSE-D4 zgH(gla=lKVp?f$C7km#B@B`7%%b(%=28sf*E0`Iix+OCJ){Gky=DotzLF4ocIFsJF}G>^6&3=2UE z?hxq$3JQuKi4t}*5L>VKw}Kx1PFu2tv08zUL-Z2>N={?Yx}!|SYUbs)JRS2 zNft$^KHUV$n<8QQ^RLed_hh*Fz!uJ%`Y~xGuj3*CB%JQps+Tx0H_elCvEY^zdUo<% z{8*`*=RvN5`y+()$zi&F>9|_Us#=rI!kWG)r!(NWmF(E^rlexHppZB1xKx%7F!S}7 zfS89?7z}*8oGA6q(Ej(7k!+MkvK@!ylFRg}SBGhv-dsqGU@vgstowuFSTbCkVv)4S9cF(2d_gB_#XilW8X zTl!%jQ?<(p;B@gS=x}8vH|wI#>>@Zm@%%XpT#hIbp;v1hy4`3$&arUWi!4NABdtvB z6GF+OiY7(@s{!eD7Wv*8G|Hll@04@wM^>)b%qI9PNz@#8rY_8TVELwPzPGALnKT62 zOF#Gb<6PcSB;}&l

1GBqvC)fCZ)vdyK0g%3hW^tmHKj@kZo^h~FZ%!79+N z8vGh?nanN7!p~btNF6jNwtOM_IV#lE*t`a8Y|Y;l=xX>eCelQc^)V-zH~*p_{QYbY z_;1Y|XrP4taROsL`MMD7etgBjW8t{$z)QbqgDACa*PzOU{t@JuBL#WU7Jjv|bS$o% z$Sq|RjecjR8&R<^r;(tmD6-wGI*=mPIw~bugQM7bfz%dI!}?Ja?Tn0!gB(9N(_#Wn z7R8o?fUE_`<<8jd+o9Ca08^)B9a)_r-^pHRA+WGDT++GMv?y#Iu@q`v@h`L z;k#(}cixE((A#gArPXB-e7zK<@PI(WSrvk0zQ!blT?ZlJ2WW%KWJTz9YQf61iEquj zu`P+63IC)rJ&#Ax=BTGbPLWe$Z0~Wg=N39rk<+FC8X+!ik^HKmr0&16eN&s#&Gios zq`8#!yRa)Ed$`R8s=8J)#r-(Sr{Vd9M zNq@1*!q!`s56@iK$J9Ry6Y<+samEW|3IAzB?d=-}AAy`-_EI3Lxl*EHX_Xty-lA)L zJcX5s2`43!K*z7Owv%WRJUjvsn+mlN>75Kdt3Wi6jE&6=!^pK`TC80iPoSYD!|bLd z9pLPAL!T*r*E5HnYsirGwO}$|cIrt+?bX2Gsh-ax97I_nWq%k0?1s@_9vOe z2&yq*$hANx;B;oQ+doEO_~!OjEHTE4cJvvdCWTUDO@kjGHHaD`mNwNSP+yNnNxrm; z6+D$IULUR9QW`{2j`r=Sk(By35d1@{2;tiByL@w;;K=lXMkDnL>2PJAj3I~jqkaBM zkgA_aN+QWhGR^E>;?B%nO}|9rzo(zBvvryykMeCwl30zAiozi2?P)6nZzJ}jYmrU? z-YLv3w>NZV|Bpf4PW8x--uWMx-F_9Fs5-j6F(mi>HEIMpmUz{(^D~;d!3~W{u#LR% z_nu`ihB^x&b;9#T-8r+AGZozU;%^a#RyA7~Im3qE%DxntHvwPw({qVK7+k6449gOP zWNNCcrn7B6SE%?`0>g<=<16H&6$CsZko?ub?1xhvMTAQutlGiQ6~zkB5sM?)m>-g< zD`>E}0!yxOYSCKZ{!~*MOF~75c@rh#b{8Oxmp!EGEq=N0V1VRmq48hD#3o9MhSHj+rbb_P9A((9+hDBgGi!;VRVgHa?Y!kkgwkNtqGt2= z^Xq%)C38!#uYDh783~S%%4Jw1&G#Ctd5ivP(vsLYWYmIH-!8>H&mb(n&8J4JGa?oH zKC7ZYN-Z@~Z{&a4rP@F#SW7&(|F-sW?PgxLT&-O`a&Us-Mvp>VCQ&48#{7dBU!0i` zR$^D>lZynQb_WbE10JC{yPSEwoS|g2=;`(Y#Yt@l9}!j!lV1gD(KuNoenLgBWw(Jv zKCu1-yiX461(3|az7D?J@re4DGY6(CkI|X7YOj2jrp=INpWmX zHe5qd7@N-vb>uo9+G|h!Kw%qr4PEC|U}uSQeBl!ck(KJ~gPC z#4E;WN!Xb3Bm{?*$OCft8$yD{r16k73>Zp8eF(#Uwt_23vIR7tOCwdpH#MOkdwn9Z zNepF%3zeR=bqvytX=#y-HsgMpcnPnwv(U>;ZUu7qbtJ@cgQ$urT;|c(JUmzq=a$=- zTN3>PrdB;aCQ+~t{2&gwmhm~Y@Tw}J6l^p@3W`3GNJPJ} zy?bp987xW>tEP}7oy3kd4*QhY`d$xH!_mezJ@5H*zYle(KEFwG!D#6v#@M2~zrVvh zC0H;B$11mc_G=Ghnt_IQ(O5sXQ&Kh?Pc0}OVO1!dh1e<3Ts-K{wAF*7;cCid3P-P` zx0hnMJa5g#O%l)XAn&P-T^s=#)MnNGR)qjm%PDFc8@`t8OPlC00;z8(BOO^YKy6w? zqagtC07@Z^HQw$9~Wu+veq)N2fDAo%wCOap9*I_EJ zE@Y!z(S`#ND_tbVWnL#hWTm*c7AfZsZ(u83YtXv6Vo0@m5q8%%RCZ7H!~P`AZ}K&m zIl~s8gFm&nEFvrtN?hr%gl|;APf%fZ8z5?)@sj3RR>K#}GR|tJHUHNbo?5<5ZDMCB zVy_*5Qf576CHyMLAt8WQ!*p|sBwQ}O!EkpsyD&eks3NK>hsmL~CtX}hhmPG-psI?c zqNOFGW%6kc^T`k(%2<%V6R)MvZs`_EsJEZxt<>$6s1mT ziV64^LnvBe|Fc_C9-psh@JqMkN&I=-A1WIw50ofCqfc0wRCK7tpev)NhAmw?R~;&A zYm<*h7a{pyEda%wnpL;4&P;(#IN^mA2SNM#rhFEIfF3Zm>} ze3U&BZKRal*F6qG;iEf7o||h|#j$lM1oK4tu{A64NP!g~9gY2A&U`Ds)3nv3_o08? z_?WU(`)xwU(|%gQl}w=fc3QkZVuHM&ck zCbOGV@~pDuRU{+wQaw@etmiZ<<`&C2xchWriquv;YIFj_ELB=_9hL(=1Egvjh$0HG zY>YUTTOFM_3J$Hpm{qaE6$45d#R3d}HyC#1U>J$=NLVp2MncQV0|u!0BuH0M1C*`M z0_M$Gf3T)8x3>OZ#+`yQJahi3yDDH=ZkgZN{_D9G`gnw47KWp-a!g({Fz%VIxN3G< zv7)GQ`nyj9tV{=hGdvh4m|8x#iDbpsoc)ve9ck`4Gr~TztgS(^K##*6Lhl+M0oR5i z|Et&~a_=}34D!c!kk6Yvwhk9q2=wOdfP6VfPJ!}30=})J`icx83vw?&CJ|O&)CbGR zNKhv&5f1}C8#VCu!-|u~MM8)7(_Visn}eB~P0;IrpiGYcFor;GaY*0-qhSrZ63AK& z#ztG4oR$_*I;ebO>*uv2-?~W0+2T~f?X5&Alv72iTEcfO0H0hjv3Dszi zys&Ip>1o)gm_f_ zwwPG5*v6^#lCtQ*MCIXE;DJIXf&_AVyOI3^%u5_cx(5qTc~6W1SiIX9_+uCkBB9s5 zpDPHx&zh=k zpo$UU{Rk_)2M@bxq0u;ZfWX;*k)kga(ksDKM#Rg#FU-cof0DEON*+=6Yn@l=kam>P zBAN>R>nb#SZ7_K}EW6_1+B`7m{fqzl=KT1Ke~HMvjc(k-wfI}V_?uw&x!-Q<*0DiP zzxXY%Ow#$QWZoBRdry$q6z0|HU+dX* zpQpn2u7Sb~drhVL#nGuEzkma#r-T|H(@Md;)KDhB8tJN5nq&(fOYiA^m@sTGZPpa{ zQ(EH_@Oy*=qRmPx=^B13Bz)z?w4j`#IJWIEbS1>mF!grpY_c1ZRDQZ5jXMnv;Fj}> zhkz$b#Sj{5D@D9EB!%wt?2dwF2vM%S2M#sboIn=ezkKs#aj(WUt&^vj(evvIi_0vN zpPhY`m$FxZDCBmU$-t$g&bH|+4K!;?VKL7RT;wPi;YeO|RGxt5dF;uYUNz@4PrfxT z0qLrDrb)L+d<2|lB2h{2oTBq~awJQz3JM=hCk*ghs}g6+bE@N63VTdW#VIfF4L9Hd*D3z; z;S-1R6{I7tDT2i?JrwH&KaAB0NENIh1Tin5~7{mn*$U($)BGT z*|8uvl|4cXcV=&`5IkjM{JiI&YKBxf6b{NvBb`Y;>$8kgtm)|pG5KfUH{jE-aPKn>0UTotQhPQzX- z$7xqjd6oYb9w9LWcvtuhKZ=GY1G>MW)*p^Dia59o{6TBLfe-moq-&|%ajgnhd@OP8uP`er>ghEP|=lA87BQr zS<;M6+}B0#e>uW$Xf+aARaF!>4&*9|$<%gh#eX|AM9TH|;)cys>hl_yUasO``DFuh zAMt0V7rSCftYcoJrsMbTX9U;8Gee(sZ7kz4GuwNz{e31AgCkz71**E9ny9%T1Wr%P zID+Y+cXuvU&p;*SY>otfJ{6&QKDpi(ktlg{biVA1RmQpNCq^xav72y(C>z# z^?Xk;_pPpYXlQIqTaY{Y@6C!z3%J*{Qnxb(kXXJmfSJ}}b;g;wSR1U-NW8ft5S*Og znQXH3)tZ*xMBf9GhvQCFvz$9Ml|oFq7-JB+LVihu9P*4>L4g|7K{j9A6+_bsKe=_F zyXAy@VgS61arE`QG$@S8dO(=Y1Zl$80OK00ZqY0oPN_UeIZ=Vco z4Rvmxoyn)rA4q?)S+bjEbE?L~$y3hQks51m{p zWwE%PYTTk)*zj&d=%1P_z6HnGosP*{LCHvi9$DIcMXA7fm}u}uSuZnSEXaX6-5C~O z(Y#iUjbj?au^Z2K{MSmnnTAfb%lSF6FzSlx{d(sb;yE;{dDFobyS3gCYHFeHXd#wc zkjx1X)x`L&e^eRrC!+Ue%kC*nF{LR^x-ibI;?=MgQ|w=jsy!SY0r;h`TzoKYbLji$ zBKg4pA}R(%k)yHlQbS!|RD8JbMJ+vvR+3@0RtZ@m6g1;}mu9|<+>Rr>9hoXkAyn@p zl=FzLC~TyT6hCNzwy-mLA=O?5zOYAQ8|W-s#?4V1Oz*ahZscHHEltdRJhY{w^(cgo zUl?Bzv+1l+5M#d7h~Ew33ZUdZZy}fm_cHv4$m@KEi4%}(Jp_s}*x+|w>5`~>w?WVm z9I#o@aKA{A8|pUcGqoe<6iO)W`K+C=Fg>%?E!Bi0;pJu+tw2pB8DUUQGMbkg%+_*7 zAt4#nqqE^%6ZH(K2L~bbpwZ4-FrvoU#0L}9t>=suR|Qw|)*hkU4@EAryr8MVadGEU zcZRjrHQ^||DA?=gT#_m~R{O4I5Mg!i%KZUDeChr74Z&!+;bB8HAaosQHY3Xfs zpMvnSiW0A%D`kl`+Ji018ts>IIY4dJd5a3$zYzI67(JLSPI-r#XmRQJ(+6Am9Sj+1 zsXJ* z0w$gOVaGG1e%XC#dGUa|3*0Dr%o~VRLCJsQ#V`JRxkDn?ez4n zNOgl`R@c}Z{pNxhZ*lDKFgMM(oIy(X1t$ro=V^^Bc~-zr##4-$j5GwvK+nCcO?hWB zPI=$>Zp+j3q5^GK6V%T5cXNuzE2WdhKWQQHa*DC6x%%#hk{ZHEy};6*!0+Cz1C`Zt zxY8AUdC?+3jav(v*>(cE3l?_&lz+`*qr?TF-}(;{lfUwGDx3yOZSkun`ih;mHeq0o zFj4(g;C@n5UKQj2J4_*(F6b5VH0I6VI=CTIlVr1@qWW8`d2Yu5b($bQBMbyFFS#LH z#ig)}_XL|K0q%~5thU#zkOwq$KpP#pm-2hXEn^I(T0#g#=G&v9d+iO>;YG3c4hN~m zjQX{aWr?<%iE6;rF5ho6arf8z6aL;VBpDvKJmnJ%#ySqTB?)sFvmA<6bxxdBpA3YX zL(yC4*?4(>r|~uxR48UnL`C#1L18zA8nhKd%nr1tC@X}NCeyceuwNSx!7>7tlysjZ zQMr2weMHe4-!PMFt)bMsQ1TGTmdWD}vtfEf$zYMAFas9TmhsX^nzSe=DeJ5>N*Am0 z%g1!<(W0W;9{Rwwj61UOXEpeYZJuUy+VhZG2NsGeGf6A z7SM&q-MTPVO~yAOf5Roj>{~pvcQ81TsV+m6jEgu;rOUy=zTU|}SYNKmYH~e0NSkHH z+B0$bPSb?Q$SEQUlCnPQFP`WI%`t_&NH*=|IGnjlSy!E+k54{+*Z$UG#Cc3pSyxw) z9rKlT&by`J_k#Mt&Ec!F;7W4ut;frguL7pbjjVO?wTW8BXV{AW)dJLD=0wKFk?=)5 zPT((by~%?*xwd$Yg>xA_G7o91avhK{aQ>Bw5YGu@$KNZfh1c-ccmKT5%8o1&)-4GT zIhFFsQkJtE|B2=2WR2pzv@y%|wY1SX9hGLYGtNrA*31&WKkN05Y!Brt6LBIjJ}xVt z1lN)Vm_!V;V^qF7D$#x$DH|%QC>pWMJHqMGnA*kdSVQpSeR*Le<@}7C_p5uWTh^Aa zBHm`_YBSt2GU8Ser*os<`0>%3X=$#C|_VShoXP7v8k z8Fyb5A9Zfs`7$z3)R_NlXE|n)@z>#@da|6}tg04Id}{ymU7BW%A)-#>>CR@iG##Bc zOG+ym7H8zV12+1GE8N+#94Wu|f9JM2<^(RYiDzU?PJ*;vf(E?U)wt5 zr1z-+SNb!uROjP&q-sP?E;%I;}F?k7N~G)%=6ZCsShU$fGl)<^?G-pgw<4^}J;L2O{hf z`tm7neW>H4(IJVXF3M(ke01gE=4xH^H9fJv_SBmbJHEQAUAdUUWeBKq4U`6({q0@T z#mp^5O^C#zxUX%jk>Uzi@BZZ1mkRq}pBF*W>`FR!PRAfw+Cum>#RU$HaA!~0)`k!u zCgcy&t>(#ahZ6yW)|3e=B=iqdPQ$T6(Vn5B{nV=JB^#oz(nQ$tMC>2cmZ3nZIgMzrNEuY8N~`QThf^Nnex6+|HAk7d@b#f z)5gK=F1K}BL|U54YQc6pNq?Ui{I1Mty(nsGN*)mrex|40 zFaKwdTJNg2qC_@_#EK>O-nVC7Zbqx|6pORc=jZQ^3!~u|%#UYdG+jqrY~zCwb-~pY z%0%oJm;HkGwU#28&)6`It4kXypfO8YTXT|<=720Vq?`A3484uc;H1X$t)uak6ozS6 z^~4yvivBIb!5JNy6MHVtrYjTo;O~%KPL=`<3^xS3yk;%)hU>10tT(7xM~Kr&58`xM zuPhVLKz+P{;f9L2<;4B){%WS^7*A5$OD>8zdc}fz3y;WOI-!>^nX1U8v1=t`09%Jd zSeQftu?8x)KiU(CyCBB1v!iWoNko@v!M>YfJ6at_8}oo@+IjqLp+ngFPU?Ju<9RIu z!cNEs=DPplGvz7Kw4(rEuCatS1D7l|x^pvfP`g(ra}X8o3n)}CE}6bTdKu4h>AM1r=O$LaZJG^SOGPB+L)P&fuq67|$% zm0x0P&@Yh?3%m6cJV%Hc>2>-d&#Zt9YceU|uaS(Vpl9f97Mjls@}CYtx6unBCO)JI zLix&XDtOBrdyfY=Qq1C0T%F&Hf_@vnE?)h{6$pxi;I?=6=f ze*j#qJ%Ts@wkE^5R*Tj5zS9rwl0Fjz-p8>=)Sdh}1tH-OVs7vw#)SjNk(2O4o2-}_%qjx1at#?l1*=MsV9$O(6Kr~3e z9*?EV9s$D#?LC;^=MGj&b#GPLv=Oes z+n$@Yv+xOXw6huj<&2EDOiHP8c)8qf%EF1e?ml`k+9Qcc`2SMYBh&T zOE9Sch{|^rbxVD)YriO(YZbkO?I~OIC}D0gYvBZ!(n@8kV~joZwF(qN@Cs7UUO}>9 zhTd`_1PZsOV>(~Ft_nyR|K1;sRBzhX-|=#uV>f-*D0EtI<7+;7$!Kq84#Z8XTTE7x zaP@!$nKK#q zzvAX!l=mCJlauVA$5l9)`9m|bnawH)Oy(U+6rjo|5BSPlSvK}qijDe74Tk)D*VLAMfdWnoY0b za4Nppv|xs*d(m6_3S;k(&~T$KErO&$*w3zek&I{V**c#O#DlZvxId}{85;=y?^ba& zCgf@+RV-Zs!+*+Xt~fX|_s6d9*^A1*D(%c(p^-_94^be%cn&YO*!w+=-M4Fj zd|L|E>`eKNHy{CqI4Fq(VY`Q3s3J9A9Jl<{w@Wc_w1xu;WvP%!_ghrnU`UPgDc^rw z#QM^saEmP-95SZ9-P;#k#y9f?1g^%DlZCJ|LnPi+G9;J#6YdC+-?4YY@|sac6AdkW zWs45yY~tHn2~XPj+m$owU4th18Uf@lh&$WiRBSfO?1doCKwqC{R5T2cyk`Hn*w~)q zIsC_~K_2hxVeIyob1%aW?D?tiTsQ!K_xhP<)X5ffmv5q(#!vT?F|BiPmtXJO?OVysEfGiox5z-xmCC&+cI19CAF9 z1?hW!eWM0RX_n2;>Kt=d^MztMbshwB>6yMiWYv_E?$`1!Bb{vT*(%VSBIk%T3I zuqhj?U$(UVVna(H0vxh>bPQxg0N>P&v! zO^ZHRTER*AW~?L$wxjA7chXy1%m2 z3WAAsP0?6#)SrL<{;_%&dMi+c_{*Os{Sp-LV$0t6uSc}kUJAVS>J9M(1ErS-G6lXR3xQdj_Qy=R{raufTC;jn=049e zk1?*9XW6r`O!@cKyk1aq9={NXZ>|zH-men2@?JX;e)3nea3p99&zW6Pe(L>bTuLQ54=y?Rd;l!H?{oc!eA5Sz%J0$m%NMW;O6x8 z%j)HwIuV4;#%#! z`_T8+sE}?*BABoQrVa#kF}kvn{PgM>3mKTHZA<*n)M!QK%Yt3l7~qH!5be5QBqJdU z3!5fuv;%do+6nF691!odab=o~m+}zMZ^*f53Ov7ey6aB`O%8gYKZ_B+R-XN|O8P$e z-AI}T(`lN<$BJ6~FICLTkmtzyQlOIy?)nm*p$n;V#PRoyKE2;Kyy;gvgEJjgTtNr~ zVo8x1p)kmj)bCxGSXi-%i31R$mX!Ruu!RNXKbtlPf}pNM0ueTaeYavlHaV)~wo?#Z ztv`h7PC%bF4tcmDQ;F6IjZIJHY|tfW;Kct1D0TNb@ax zR?$muEi=V=nBNmY){qCuAh>E_$&-HE^$9Z1|2 zz{Nj7EZjqmJaw0H1a*7n-_V-+D(_3H>|5czUfP*;|2_ z_ZAjCUs+~96K($0Iht5+y@%^>Ik|-}Qo>i$&mygpE|(s%&F7qzS?_2Exr(b76M{EfNzCczaI6nzW3F=!Fn`Pf8uiP%d^Ar zRQNLQ$6Ly^tK38tRhm+wI>9ZqG=_1!Z(^{hq+s8`ch+urG+)X_4vn<)dP8Nu{&<5k z3nuYh?*y+LiJ{7oS-+HX^(%dY5}{6b@KK%=G|v`$J|!sj)KcrL zpR?FnBh-~@t0d^2h8XaYtf2k(2<=#xrpnZj>q$-a9i=b4N6OkCK$>xttw`sG_!#Bo}B$C7F%@K>Fil-@yW zffJ{QFG(r_FQ}HLYYNU2j1o^x`}6Ay*Aw|}IOsxQ&_#hQM=~Cc{Z6Y~7o_{~HY80E zMa4!4gqiN~>%{Gni;p$id`N+1>a`zx*o%&%<8Zi@8|?ukKA%E6ym6e=s4G1!nbGZz zq{}9RHSugtSK@mi7RAfA(X^-I;W_KnEOD($)UH2~6i5Vvi)D7|A(ti(VXgzRe^!K| zw^s=`8PfhD6L(H%RPpyyD+ms~UI-eTywB~XURU=YF(bqFJWMw}>S9H06kIhwAopWX zGA{eCRwvCG#RRykaW(*)ignW|asqRo|}_?f2(LppwozC5`?Q4do2 zSzzWwIz+1n2#TYWy>NVSKmbx*H&A|ivamu*V;f1>>&*Y`TzbF#d9|ex{JYuYBr;7Y zSgB}lA;W`xkzi~?_fM-RrF#obG=_67Ne?UW)pDX*x7+X%g~W46-b`1Ugoo2gw$yqi z≫0!w*Y*d>fgho!WOwb|KI&*YR+Bb6V8{(RKCexvWkR4vl~E`47~-S;-UQwEhX1 z0vB&(n{HIpKY_ixH|q>W&3ElYhqv0DYsnK4#8vyhaPhU0FXXkxJlr!L5Po5Ig)-Ko z%Pp-~fL_UXE`DRvT{eZmd26l2@C)q27Djoc_Ek?9tLSs@9=akS|j9|Rz=Pq^bP42fh(Fg&Uz3|_C}Hn z(c$P}86PUzj%Wc%zD|+}^F?pQ>!Wn6NWj8Jx-hVj$gb<&`B*4uO2uxswJ6hQ#3zd7 zz7#*yVgog;zvrC+AE?(A&k=5Vv&P3%d)j8FRd;HJgms=jR`l5nAW&)4dxb{?{G)bu zMSvG7!zYB$U74IKU?28@Isv_+|4K2t{r}4~RxsRYB#U#eMRZr3xDe_%C;?^AXpQe? z;HRE9X~>zAPb(WcH->ITBm=F9cP(#*m+xYK#>T~FfjF&qR{VHSJu6buypdA~QhMQC zZ`fL3i2%2PZWlLonszd-UTLprI=mxNTv0(#+jYsP8jKWQM66Tp(Phr0 zd6N1trzyS(2@aXp3iNv8r)tK!Hjhp@dF#JWU)6dnnIF;hP@{LSgtfpPjySm6Eo+-N z2%6IEzZe}hD^qShn&DV|da~R%J)-@MrLBGM?^tq zhHUhCnOUy*PnPUcKwI!Cuvmje=ce&ydElY>Y@yA=`)G!~d`;dVnB+5Kid2$W(acFk zQ)t(X>nb^Ui7aqyQc&F;3CqV(hc)MZ^$6c6T z@0TqGVWr_)I>tUc+3QRh(EDx{PyNF^#18>6Q}66>(u;z;syS0h12mou&t&juqJc_; z9lX@*KQhg#>}HE8_GqU5${TkV4&F+N+Ax?Y3^bn2SKQMHFU-RyfRa=2E=vFazwrrRGJf}WhOC@~KcIQ>{sRP_&HI$+#`iU4ld0~6nIU52z%ly^8 zg+Gz<1lRHcNc9+HkFf^ejq;w1rN0s39RB@p&DQ(gH`4Xq#TL z2mB-36k;#qfMUm)vJ@z;eEwD2^WvcDD~r5FWQ!$~)YSLTUX>OpfQ8SLGzb3~)J;^^ zY<@D88qA3Q=UY>xNvWbA;Do-t$(XCjyD?Em5HzAtg5>BIWJGj@vNf~6EpRH&&Py1f z1I|4@!H=e^wwOWi4C514*_MR;`UqTaKXfT{Zc}}|zoi#wPM1tnFk4P` z^f2TWPEw${3OqP`n$V$G_2PmAK&xbBNe*yr)SiS6N_86H0o_)Gx0u)*XxC)gIPsuE z+h~&n7Nca&PkM&{e6if@c-UOz!4FtU)@P1O`<%*~o; z^l5DkT2pR+AEAt)=jA?KZgcYUaR#wuYC#oz{Iu;}GY5BI#tLC3Q2KW$SzMIo)+ZF( zBANvzTY6)`X!f1G*4K+1pYUxRcu@-r&#<&OXE(YsV2Vd6fgZWH?&m<;O5-vHnfw$O zDqL49?^+-PL1ooZt3AZ{Z=P(n)sMRRY<>%s#KZkxR#ZT0gJn)lEN3?^pqqPd(^FfL zH8T=M(Q{0wM~$5I&WLrPpn+Kz)em(yfoO$)i4S}%4|4PA)^4ZYmKv?>5VY$(`t@#J{uT@7Ul zTidcjq0C zwN~=*`J4y+iz!#z0+wPrC3l4mz0%d%k=HtfZ~&9p&@SMR(-{NRW(NWUH2c+VSxR=f zA@Z;6tN42Z$y@;IJuG{@Ty}2?dh^smo*i59kok!EbY4^HgX?mVdMF6VEjLmrJHt%keI7X~l^agZe?hZ}WVlqHoI@4X#?~ z0Wo~P16bklvW+AQ2cYJ4V;o3O$Vu^GNJX^!zOQXgqw##7M4oZQq>-bZO=iyuRgcHO znHG`3=T>9Agx6>zlT+BrvA)iQPVmZ~Nn~VUEt}K+C=PdXF`)V&AS#QyN@%{Bz^vfl zU`DYMa&h4kIOk2x2(4=*(roC=)!A(ISwWvA0JdW}T35Rt|E9@d1^cAsc)Z2CrovCP zN)QKnRrpX&2+e)zrMZbXw1Pb@Rh&ujX|Ev+?zGl~sw3UrqlYGw@BzaP^oZAloG#I} z>6(vKbUpF>;9)J5oB|58uDR%hiZb9O?l>$$RUF?cyuG(QSZ*SJUXHbhe*Am37fMSbGYcC(bCQc^#M zMk(R$H2RZfy)`?5b?UT~6A5i3(LkLlRX5Uf&dJ^!R`s9(c+;a&D>HZ{ram<{? z8K2bMkC@zWq*kw4KwY6q=BB%tplFFX z?v8k4YE*)^fH>-G(C2pZYVxbt(d`w_2wye2@NaG*Twn2#o<%1(U_QYR2~f6q$t+KE zQ=nDeUC$vvr@ql0h8T7N?3~Ax_oldZ1pavb!Dei|JN0;dH#<+!=CRD8yY+#8&Z@!k zU?Kj3pmYjUh&%g!qOZf&<8nEIiy_I6x7ZYze?mH9(i5MLTyxw!Z5+rQ-2vDS zfq--o=DA>OWdxK%7{MS~80=GH173M!>bZ0L$tuZ_0w_+7%5TyQZ79g%J3`TDY zNEl(4H*;P8g@YFro(3e_e&|56gl!N$-9c8q)0E0n_gBmXA=>=J;`LBf zIyBlGdC!+^@)}v7*;i=5U%ep+a;yf2@{v@M8p28>} zPiNN67V8HW4tRY^J%r|G$1m_*U;%cdF7GLdoX3pmD!cdgl5f%5atJ9Dk$Y_p3m%{T zYHh-$y#wor0pzJYZhUr?fD9-M{_5CW_5^;@5@~GNfR3LG1}s~80Q5E{5&fO+)PMl{ z+sA@8eOT5IL@Lr&{aa8bQ!m*w3Ie4rAFAzWul2;1xy-`_VzP6Ql)Py!Gce5X}3ff8IV6;@p*yfP?Y;0$QTl&W6Gay6~f8P z7oNyg9qzpLsw$VS4ceDS;$k%jWgsLWHa0hQ=kxu!!ShiJWm!r2FsS03EHJ3cujV?c zHI)o??D-N-KDHs9sz5QziGG3mxp{P25|-{vL}d8ksip?>saYZs6w~qN%pX=A zPG^klU7OnPX0=f1^+@eH;p8sS0>v>u{u9T55!7=HDv{{VTZP>@ahC~Z5*DUBMH)Lk zLkAB*&C?90V11ivRY7)cMV_$Wn4B_52A@~C4!a?mJT+_o`=#+yM)d*>78oYtcJ#H+ z3$ZHd-xw#NR-M(sTOnkMhpCOgCDw$rf2&yM4e)_#~~&TLQ|^?!eCJp zyCxDz@&!(1$3)#l1>xXOPWF~3gZquXW{YigO$ zE30Uwbo%AreUFyVYwnbWiJw|k^a(bDW+%uO4w6#BvK?XgbWjI9O3Bx1&@C4{HA0pPwQKdE<{W+-CP6>@z z33T3%HD6=nOmrly-%JXiiw#O@z_CW=B%d$c7Szl>U%zqxz=Sw4TWwUF1EN5Q4nUJ6Jd1Y-j zUY_*Bx4OU$ViEat$km#v8m(zSV!MdE1<&=^@xMKv%PT7<3i%*~X?+7#G={hPL&jzS za_q^ou_-tA9jNRre1umM%4+oa^@kAQch`N&@4(V8Z4+Jp@JKS#I>*0rrQcC`utNr&k#Qc2Xo^gUof9@&td9rZNm$g9VeAIUdo@R6W;cPyu+ zA)hDqj16KBL`-a!&0Dq+Gpw*N;G@yb??~N;IXG?IaUA|Q7hL+KU6aLw1N)*N@ zjm;hhl{;JfeHYwM92K!7U~*oj+1S?Lb1!O=k0C{#&8I)J61@I+;KoJJgI`vpZK z2PTH$(KlKezbh`#Ef$HD;O;oc=x#5qxy5VSN=$Dljpwq-imBbYD0!g9jK-RJmDc>P zK9D{n-*bSrJSI9;!v4nzh~Gf=+t1``rkl*G-cEQyK|OUiiVAd??Y?3UIU$W|3P0H}hAxg87`;qkZgF#FWzlLr9ZUuJQbD=>*I4fm02@To69) zH@PKga~sv!dkg7Jh?NHLE_@*y6wGkH@rc&p4W00ya5v zB)PmL;x&l6q5_1u==2)E*Z8FP6Z||4*8>4N*sDwy@}w zu{tA%EE?wSFuFIf$Lom*GrOlI+d?`3t-YT^+wP?JwQNhD_Z8T$UR-Fsz~SU6lGAF};;9UmVzJQy|>^hrsG|Kqp7`M3A4_$`t4)lBTTHJ*I-qzU-85)O`lGQ7HT^Ev?#AOFx16F3- zU#W(|tzORTd>!6A3pH4i5Z?P?2v2dcO3E4|n}y2R=~ z7<1^p?7n9Dw9V~&g{aoxDPsI)R|^`GOOt!kMU^eqSWR3sN_bNdK&v7WH70Atzbtr8tCK_3f~*Rk=< z_7&2=Dn=t7mZ>~01Hgro0eIv_+}8-!s5>NUQxR^@K0{#V1g5I%^o=rn38rSKKR=gu-Jm%TOAa<`GfS6E+u`9x`1`ZQ^C6$A=m{+Z z$vtDt+jSgSb?7>O<&>(!K3|i+zR#>Z9K9#180%YKhP5RSKnkX!@S|uc;w^ilFWOKI zu3U+YygWtXu!cwDaqVATRyF3NqySq%Esb_(bSPlHUCSeJ@3#*qILOn@uc&S0%GIUi z>b&|xmvPvuA&p1IF6Z~wIkka|J>AWdYbhi(64R*QfG9Ro)x~>ji{CBBD)p)rB`U}2 zwmrE>Ik2E!--SNocV>RNwo+ZD1%5Ub5MDi;3CG7*hevH=m7@!>xD3cjHCE6(-x@rg z@#$EooUQ3^N!JP-_pX!N$8)%N0|TgSM!hU_SB@y2QK}ZgQ9wsF zFSrkG-5bpd0-VeBFVSAnngX3rC>kU*X1Ul+gwv_7=6g3x%Fv6^YUO5Mv@`@wF>>(R z(Na|}dr9tW-Wv1+uX||ej4+=*Ui0J4K+_4R*baz`sViuTpm z*P$8Nh_ze;XI#{vCd48M%`_cFyOa`*Kl|@W{kTSh zxn<-3$8I%4ul`10`NbhHP`#z>eM9%?p=BHhBM7})qE7M_I7Ew$QA8FKfB!~tw% z_B~w-M*bpf%aY9H=qH=c7b2Avh5rlQ=jfpWXySXp1Q8f8y@G+_bKR=cyw z>a4-w$jHIfRrM+w8d_{(qipQX(#3XGR8bvVH(v`X+5<~=HYx*FKRS2C5upmYo|4J~ zWs#^nvX$PDD1K8X*1sVVLEFeDXQIhmCF_<&tyhWI9SSK+kIK?uXC$?^XPc1(HTeB3 ztzmoJnr0CwPZ~PO>}ql$Zyrj@8WVsjXHKQuQP5h3MtT*|L>IG|;9sz5U!0XEBgSAC z@RFCFU1!7S3;!yPsCKZ4QgrZE!|eqQX7&TqJB7F0|JZO${{a$H_`O{&U_pf<^ORcI z$(k^_<)=A~Fd;Nr^)d!)R+ON&*uYf@Et{9Kop%vZXEfQMSCqMv4= z%B!Wr?{mnN?O44nKO$`$lA_A1@q)TGF4M|L_MaX2pLVrE7<4sypDwWcD2WvKs@--U zq1PmD;!db&gBYWZ7c0kg_@noI+0D9r#O1+0WD-3Wg*E|_h1#!K9R!y{ZS z?E&(JneV{*vtALQ71Eoznsx^`wEs!8*e13`J!hS6~IV1%aBA(wzV=rgQy7x#M5VUA+)9fqf0K}p(BY7 z27xVc1uO4v9ZxoVox8jVCV|6&2HWvYiLAaCPFW{2n=^~Kt!-1CK4MBhm&ap|XoQT_62mYKXG@kWKP z1dr}#gj~zs?7(6nZKVD1I<8C>!GYs&m%d{5o5k;pZm$>}IG@67*h&AF^aJnNca{WAvo5@e zJgGxtc3C+vM!z`N+sl;}0u&UK6KAfXY+w?e>(%DecoMFJ)Vj2Z3A}Fh3i8i8VqM)7 z*!WGcx`epQ7gd!fkfb0a1+_OEJjs8KcHGyZFZOD=++drsFXm0FG~=V?mB?ZdaBM#D?&`RdwYj{BVOC}8Hw*@Y6PhP^W>tb&fE>N%~S@EM~C#?n6 z{`gKeu9Jf(TE6C@--eg>#6-H^>YSSrbt;($8sO_+FWf@|u=dwx+`9+X282r+o77PF zsVByRh2Unq7ijLhv}VrqlXRa zL`Ze@WyvYcJ$*`A*(Msxj+Qn}^`RV+maWwTF7RPkLV@DooUEMAa2LV472+ipd~r0v z6e2!!KAUqEIM;~YDeiMU`{Fsd`=3a4N5@(EukXSk3PU*0SD)U&>G{O=IN&%oDv|J5 zev(#(O0UJJq1VcV`!o?NA50nXn0me1_J0Gr{RW?5`Uhr68%Ecark{#D&`h|)E;ti? z*tZ3pufI+L4Yia~XRg}#>%R)vN4I+*{0FZq0ffU6NR7q+cKn57&CdIzaGEiUs2%3H z>d{HWB6H1R@WG+j-*3l*%gf7G8_a45dvG;+_|op~6gD@Dk#XK&x3|^y_u~nt67?I7 z6jfePS%>7~Q`{*0qVBP-Rfh}usyn$_F)>AgktxoaQ&Q$rnvUQDT68zN%Bv z%8Iglop*`qUumOVm=AkGdEkK5C}p^Q8lPPjnm*MtTGgk2$@gRFEV?-@Q9~hTbrw-l z1plEIw8eo^DzMyWJy8MT|AsY4x5TppgM+}*EE#o*?!0%vF+YtesMlMMMV=+Y7b^Wy zPjJsxu~ITnsplvh*720#G^S$7ytT9oj&}e)k(H&cWORB6Pdn8qH_mTPtZ>JsFh#eF zwrMe1?t^In{1k6vc@P4IE?h4so~j@^p-#pfbz{(Nb^ol78_;vu_ZV~Iw4QlDo`V2S zAWl7eYXg8H4tnda}uhO9V>5B{13=B3KlRz*FEPaty>>=y39W6+;x!Jwi|Ry z$ba$FaeGwU*XnS_KC0;oH+?qU=ki=|u*c%dtCnh;&(wUXrZS#MC*Bn1o_#;lGUtC1 z;_(+w`pCo^Bb|By=Ul5Qr$bT#5NNNz=RdR4yfW1%vFUH<0ac>^6zzzK=(6Vu#21RB zF+V;(i^6`Mot>?=*zs4W*_ketKPD!=9Gr1!#O|!z-gaSNI#CQ&lW}>uV`nV$hzc(A z9$o+fK(5j@F%AYozyS8gqkYa+=n-x*G_@NR65OM2_0+l=&GGN9zjo7v*NiRjoG;L( z0x+Ks%J;HPNf-6_k(jj>U^!E@q(uHw;F~7g`3i4RT3V=Xl|yGP0KMO*a}@z;KO zNed6wTW>!+s<4l>1Vq-|PB6D3T&JVV*?XWkGx}6V2)Ygn8?N2hYZ*7jyA7c}3nCkl z78}S$#HxxU3)fyPj_pd7lUUOe2%J@o^M>n;h8F!W75a6fN1$6$cQZ=AYPG$3+I->ozeo~36hL=kvDO$ zSEL!kMrGb)k-d?A#?{w9BfmsHyC?YrSiJok6=6y9CGR66^2;?7<$sSfysUJt2iLIY zN}nz)wRA!x(RT{JmXHPEs60WW6KeUOf@BH0u?$he-engMEDm~^cCmfIyR}*EObd4# z6y3dp5E1Q&*9p57uKJYuNd z4-87Z%M%Xx)E5%&;5AH$^!IP~&s>vFR&SNs&E_u%+5&T~hNvoazYqcOSEegZ?_t*3 zL#&sd9$f%Xc~`rc+#6)jCL9?QMfJh0r2hFo|B8PZz75-K)>|^`B`O<)!x-G%(0RF^ zV_l`r;;JQ}RAKxi2AiFzFe@^%d~hSlU4Fh668Iqf(!o;&0B3eRLcK#-8vsC~X zCN*L2Q*2h3+|^-EL3PX`%|uDF6ldqW@;aCX4mDF{4roj%8_BEyhPo_TK^AUtCmP zu9P&4YjvNTUN)MI$#bh|IoUb}**}1qr|Zj!MJB<+!*{R_B0?*xmwpm!i7*wC`F z=@*Y(j&CP_6TzY^b@-!st-Po`_Bua);nmO(2e*+i*mgfUrc`#BI?9eXGB;+Xc4ze{ zh`)6MPHzX$L0%~x4WFwG3^EJU9ts`CzBQ+Dz2ix#&I?d{E{nAm)7>E6{Q2MjCws>}$B*|tx3 zqQavhGyO}on96IfXa~|%g#+E7z26^91inE;#KnzRzD%_=HOKpd;2>VN`X|%)?Ku|w zA|@#Ng>v$QN1%X-?4Z@Qx>)cy`id{sCi#} zJgrDz#KN}-uwoT+`c#u8KHvDNb~}Aq{y%&(lgZBJCv3|F|NGR0xj%J5{-g3LATy*A z<(Je0>Lubg>miA*Lnp~ul(o_YGR+HPE{`{GV<~LAUPP;=8~>2pHR7}?mv-TTGiGmY zi#jN^mRD$K@TVB*(RI(>i{X%W%U{MqY3!B$8@jByUraVrPiv4;G>BnMsfJcsm(5FZ zqnYaz8%q&cnK%h*8OuQY!W)E9h|mtp%dP%f=wDbc)D^WYb8gRkjo_W~l;#?q?VcX~ zygibf;k5Wq#;udC_3y0Pc0sH@hIeO5<>wK_Z)zC(FonT%aBT`!1=JZ0@WUFalI{LP zxor`5?7=J)3Z$Cqe;M$Y)?3vjR0hQ3732gdQP-%M?aAlD^hTNwzroW%lV~Nq2)G|u z?$g;Eh;MDmYfAowTvK^|d2G@kEqEwU+IWKRpP49+b6LlBcO_OuIF^+;7d_58JY;&J z8f3Loy)u=LP8%Q7@6=s=u8hg=gt7GpTCMzu+`9szae-I6coo8V9yM(~pH6pF>ns)| z5{^vHwl_2!T!G}rj|Wd)7Z(>GCj|(7@%i!~;{Rj`5iV=WkM?uEe&P`hk)t3oK-=5% zQ>T?Pup*%-iMzNM_%)r{=U4UI0C=tfXPq`OtW5y=WA}OuJc`tbT@(?|Rh97bOB7;Jgf(xAu4t-^j6&%!y3Py%8Cvkgwt&UCMaN|@D5ws;bw z#kY8$Y-VqOo<~%$DzEz263CMs^+y4*wN`x4l;Ni^_tNgBP_E|Yoi7t}j(m7{+VV)u z1o&+dbmfe#{(3xYe3k=CR4U@$mI)KuO7=(4tUeK8d)Gy~Lxcz?~@gwbx&BpIuPedb;q?qtp?VXKS0VoQi^*=c@k8 zEN?s9kAOkMxb*adWwPp9T2d)(GpW?=N+*+6y}xYXuXi%z^Yr!=^dvCbA51x!I}rMb zY81!UgUhZ818R*4-s-owSX8NV$MKrxHm80A(uGjAxl!<&0P$oTEJbJXn{6^zZ(GbF=H8Znx~KoC7z<9AED* zf$P|9(iietB44oArdMZ#i}KXA6K%A9tz~twnpoX@{`7(h7G;fcG+Yf=&z6zY#6WIIi2^d{%a9WC{|I)z9vgg0ZSSi`!b#X%mV^kXQb%MR_tQo16Y z^aXb2;+}V626l?`z<#B7uacswS`frg&xXY9*QD6_+F*u}@G0`53?cuP;zX6x{TLFy zkkSr!AB}b$g%#L875cfh_5O#K5>9?&A*c4x@6ea!Dh=V+jGDd8`t;T2D`y;>V7=B3 z%C(Q`-&Uk1MktQ5dQnvVbeJ+k4)f?QL(R5q$PPA=DDN0wlW#FQhc{PI$hm#8lq1FF zNR4z{2DcmB^kf-L{J)h{J#U)Z=Su+e)#;w-DLS6mrVSbzmx6N66O)t5%DV`-Yz%-W zo}eETWJLx|u0-Vj_#olk!zPMlikyy@0|Qe_D;j8`5+fq+z@S|1UuHuNe|5(AXNre8 z*$(DfOsho#|9t_`A64Og;eW$>8G)I=^2CL3VtK$o)r=%?H?8c}YbqH?5!^K$^OF2N z$r62%07IEbJF7qBMUUYO^ECa0m2!88*J0kP39EEp=>rY{uig513#u{)1H3u4HP$=V zu!AtHY@1!LgWJO`2nJUM7j$b;&MKjIkzAHF=-w`DoRU=X2BJ@}%ZJsR>Fng5@br(F z)1)ze96edGbHXtSEk3+=MMyAxR{h{S!H7e;%7IkmV&pVZHT6#Mqu14do1SN%r^|A) zDS2$=6gJePgjD>LMJpjv6d2EBua{&(6e~&&=N}~skI~G3kfu4oGv&CG&?N&m-0mFS zCHA#tVIgx4lWxp45fivP9Hr@f$)vh2L?8Q$agnKtT3X6Xw)?fdO#%UTDhXF=cyAedQDyB-RI?=bGpW{OlWfIdQ zfF+PkYcVk-f-wkG3Z~P1NujYzzdn6rZnqf4;I2h76fD<9kWcmcQHo?BGY)IL=X@SQ2c5qw3I z4zNz;h&Lz06z(SPxT9glnfpt;r5!@{fZzvZ+Q$8KmICSkqBvpotcLW$!@&$?@R%x#V?YTp^vn|m6~x8UmtJWwl@A*1$@uozg@pZ?RtyDgZqI~%(V}| zhRW(_)kdSm2L(m90h2V$@`H0Z z-)ra@Js-(zLAEZcA&lKI2~cA`mZB)BiU3$aYp^qd(N)Yk1zfVMN2UJ-=+{oF`d3v) z2LKK8w+$_vtq$01En=I1kXa9NH&5rwzO$_Jx$uZZ|9WC-YU;7|xZz@rim{zkx!MW> zur~z#{Z~|rmFg@ZPZAQ6pmr-D^;LIOtrkdz%X_On93eP{G3?Nb-Bfi4=m_`t*fCfx zHVw9%OYC%S=gXkxplt0i_g&q#Vt2@1D#mJ@61ez}{9ty}Z6Rn5z(Q~-`u)aI_m!{IU_``z?z%W3SA z$k@X%rSCJZwT6aNcjP7%qDaBQ9-Xp|v}L(W{uogcv%Rv)9aMhaa%<@u1 zY_kx4)$lj@L2s7xlG&Zu27`YTB-v-lzGL-jmf-htH4g_Nvb@s$spY?IP1|%efns@r zbV$A*-F4x-a=68Z^!BoE{$t(39)*tqgKa~s$6+rV`+zYKo|?39A|9DTmY&O^B4yuq z)*<@t(3*nOY7&xA*@uzCGsw;1d^S5WE=K9r3Gai>lYn(JEWuHc?1?7uVz}{(|uk}T+GMs(%-p_d1xM+ zoVm>W_#bfy9=NGFj5*}DEo^R=bM1zmhVG^JygV!C7X9%~Xy2REoG4ZK+I4fG8wGqR zI>GO|eL&s1V#!kY_6$-BpLZ;?zO&HYV>Sy6z=Jc1|5Ie(>9V!)T42_Re*c6sa*5xh z*2<+DsJIvLo6C;uZ2nEAv7zxg1f_0iC8sGTo7g(+}#5^F3wJ#%i5W^ zC}Fc9$Fefx=yUk<|EMScchK!N#!;uN3x1mnHU!*wl-v;~=yBZ5(F-9@XD$jy>WENX2g6 ziQHOxAsg{i{wLdlQy;HFBVB_H!^56IZ;0sTGO9sYEBPapg^|BW&<;jYfX<_Q7fZA&wBxDUv=22 zO891$H78#+dBuLwz zTtL&MvYpO2IulimnoT$kBk)H&fR z#O&_odjY(M@m@tnbrj^OCI?*(P@?|B{F4&y{Y@;iXw z{`w^&D~sS*)&Rt*=g*xCJzm^;Cw?ji0Har<|2}2@5Wp)8?_DF_MTPTBIgk!|?&tb| zxk&Mn_PqGfJ)u`2!}o4JLvcaBF*Byi6%`%*g%@{z(0p$*^49q{dI?;Nfww^_+Etht zKS=C%9zZid*_-qyUHsmfXzz6C$(Uv1@s4l$gV5vT6%R?~}OrGPSXVSOAM3uR{NX5W^%ahgd;?~^3>x(Sg9<_edwmKg8^N43!g!d(eSbwUb zNOhAHYtt@P!F7YGfR>K#-w1)(!5(AuXsA{q3-%H4dyp}EH0Xc}fASc||J3Ev?oAmY z+nk%pk>>KGvS3P2(H!{=Cndq?HpKa&2rUykHbn$LrK`}*H!}Gx-{=tuCq&LxLJ$^1 z);%muzVC9mgw;O~eaL2a#%5c%f5~23qamYAgV`P#N=SIt;v-1|CZ9 zBR+rBH!+m}EFspKJfP6E?kTmCf@21v$XzpUon55UW6b2E9(UW1t_aT!nMA?{;S-OIA1FnZh!hz@$?Ry6C6F_*~Mw6R;FfS z0b8sSv{{%}!qD5QVVXi!>W=t9M0kSI)MwbMAi3DRhjHhl)w5b+$y#l_XA$;LX)V1; zTyH%?bt76<0xzl4hM9#{vz9+{VmJjTr|G+lj-+>r1%HUDQCp%O_rcX!?eJMAQj8`h zgx@HWeP78QwVFo_-F56i46eJyQHaI^Na~RijTla6Pn)E^2t;+ngBL7n39QU~hW%V< zzDF}h1E(|Ho`n}_$BJ$hm>H`zy|4fpp9IM&2w!~QU%rdRH5P@QCe8ECkMb6ca8|P4 zKA%ZO*uOO!BjbOv|6K2ip4%l!C@ozb^y6iB=#EJWF#?^VEUWD(_S^VV&)_kTanNs$ zsm~P;W=FboGq^4_ZZuO+HiDr4#G76stK;u5)bP**xc3}c!Ny>CFwfqM8+^WPEJ@pG z3{yhc8SZ*7{kY*hGxZiX&rP^G$cM2a;hLZ4)QE$AZ!xPqEU7ZSs2ZZLrnwZ$3bAvh z312|WUpjT*`lbBO#K`$RSLF8jGaV@La(G#_;I5|833)W$%z`y#{=Zp3>>Qd(BJ#qn~$sAs@zvQ3vGuK4BP8mm9!cia?cT;_Zx%pD01OOz{&rnawr@ie$3nr zSqc)o$|x^0B)RO08>htO5NkSyzeVNv0OY3-s>hXl?Na?^3|M4|t6~6>1H+Lxoh;dq zzlaiU5OxVI^MQg+pJ z3;3G3rF%Gf>yVphsnmIVA-(7>Cu1yYc2L6gXfmS?=ZH^OZ8Tp32O()} zHrWF!W&+YooFUnR6|OLPZsA2CDd%$!NKVr3OuQ)*?Qix*NIeCoLoSH;nkqxjocODN zt?-7+mjVw*@t$`I7U>-QK%#8SbzX7yYg?vQa}KIo1a95iCX-`@$Jdg?o@ctRVQSB8 zOkrhl{v&@yRb@3jSrr=yR*7zi93(%#)I(T+yxts*7(X^7Kv!mUFuEyiYNg<%zoQEG!+pw;%z+(ySsLBDVr1 z9qw({5h53~gwNH0(vLH%UnVBvHZ0ZECjkKtm)m$%twCidEzCs`{zNQj5rl&(a2UJm z1yDFyh#jpao2_p2vZ^%0p%S1u>Cpz0LDrhFBg;i?`)n1$8i2<4RjeW(AXH1WqK{uF zQ+p^GRaYlCWX?vJ0oV5}*xM>OCl+uwV4!42)XVB$-sZoWy%|`K{oXg{9Inm!x)c7l zsV>eWr(0a|$w1Zn9p+1Equ}0Jm#%`S4a@8ggi^7LqV328qZI!lfp2C}D~E{a7Ii|R zf@Wu^PDl0exBzd9I3%S76LsxsD?MulXjW1TdEf$fe^T;F`J|_0o7T7J^!%!~!9~~`8A4#^PCKGGjwveQTX9ZnD(&lf8c3mD7MbAtBUN&VF zh3q81wF%s;7v2=SY5kE(I|+?0=n5-dUGILFYkc8vzE9|9B++&*G!-v)@E&boo)8v$m}^?y+~6~IRz6W;G@?^8axvak(zvyJwP>0|0E{Laut z(;=Kc4SNs8kF?Rpl>ac^Fn}1cuECuGxFf5lHcJxnFVc}d!B~wt4MTF0|A=y@lP14@ z+9>^UpVBOZBM{~JhL~z7#u=^GlYg4!Fcyw_l)r)9)0EQW#x+N>ZA<8<2k?9z*;kMYe10zDv}obGLh<^l6`JM9BSHen4k6 zfE4=V30+D7O zZqtkk>>Kaa=lfMu-iQ^@?#U&W2Wab_S61VJD)ojg*qV-aNUZrK%84351~k$XN^3bd zF1jbf?*+^`7gvn8eovN7AEbIqoLx8Wy}DE)6-pwNvfNqR-6jo>>gyr?FUW)e8{~fz z3av%3tTg9!^{!OQOVvWIQsn-7$ly3Im%t#DS2;04Y`=3+{jZ+>$4W^ZCeZIb6lA!e zRfZHNKoLkg_sQjfR(!@pS>^-|81%p>X>aXoQnSiHfbI#V3n(vhI&2i1mr`-X20xbE%^X_FXSi?atPN82M zj?jRo3qg)wKEGEAzw}5!D;Jy(k#t%e&0*6QnOL^mwf0B#KEBk5bS(dNj>pb&el3Q) zzG6rH`Y%9CGiOFK5xT z7nDn}N0yxJj%eYYJugr0lgXDMa|M^R+z?fEd+RGgWQO|)_f(my z8^OZ9)`IG(VdZ!o3e6T!gG`*{8(OW)^%V7NcKx!8ulGA&`V^_Cl(fnXs6JTFoxVSiGqvnyBHbPC` zU5&k;dkmJ6_lriVbFbsW%1}i`cbB;?_fFwuP90wI=EoT34g3}^0)Tl)Rqz?x+TpRj z;Pl_S8MSh<3@bhA$rtW;I4e7WYkDmt*7x5UzDMaYTw?rB1YEtJo3`xPK5rJ_0g)&N z<;IWn7$C0RkXyR$I(0KQ{o9P8g>C9}=TTwIYws`5$m3B$ZNwybPF*~a53v~Rmz`93 z4eGQn3pv?AnoVFq5Ck$O0Yu!v9em-M21q{YNg+IKqy`)O=e-^4P>OLhLzvCR#L~az zR;T6NZ}ZfuI8Z1Boi{N5et7(y$`YFqbU4f?O>f$5ILaB$T6431>_4;It?)kHARHSL zB;5@WpoPS>h{M1nGH&W^ddGHu?*9AX#hARM{&yIib##i>U$e|lhI(Yz9cj`PHTu$S z_y|lX6(^e5ZcVJx<2fW&^ACuU9wz8R*3E3QBTjO^xJOKpWinj+42ShI;P-6+1x$)-U+UGNTOdO?JH>pWoyR8}iFT zb`XBrqQYQiHd_?(#6kk9lnD+c=7ha{^f@kjD?R@j80^7R?$$L6eP69YX?Oe!e9uOb z3K9yVx}2!tDfP1b!qL-Gv0aIK#w7+y1<{s^`WepytUx%bwqk>tYUl@pFuy}5-gU!m zc56!6dycv!)X;ms`g`>rRJURSuUp8WNf^iRQ2_zRgctVu`+Fe< z?|aX+pLi-^VBL=9zd&+Otae_S1FvqbeGq9(bJyZiW>#>nLXo&vRK*0RFc+_1D+c%kCUm}{C^ud@a|+;B3HOBWO{&T^69cKfkR{WZ z?bQ)6Klr5WpdocunkbUKy-;pEe=&T2x#_bj1P_ZDeD=B3UD}|Bf!XjgN)~`KZQdk* zOPx%ksN??XhTpOgg~{^mMLbW~YIVS^YX`?a2$oK%-tF}>qNMTwr=rT(w{-6mKDmBD zULG&GeXO^}8q5#8%wGsVa*YwNLEGJ6H_anvUABni_IfP@+v!2`FZqWbh`S9Qdgy?v zC$*j(r2lPJC;KP7M%5RB2A-ysPdDh(pwsaVoyYk?NxxUk^F1oIS`$&I6j{n7w3T;} zGf7xe8Qj7ZQJcOeaP8U~iE2)xvaRYD`_+1=kf9A6lXR}CxxU*UaSg)Wpk!u_S4%iV z9uElJ9(;5yThS@mj$D>v!}0=%SG}E;JvL8>J<_{BIiulD|Naahabeex^Ge4OW*j+ zk#zc3q4=QRoo0y6p6OkS2sq;UeoPHVDb(oA*kn5$?{fO$Th23z2CC~!9yQlL1{B;2 zupD_m6WvSe3C;+hg?!CMtlbU~D(2*Y8##;ss!DYe5GD$7-{8^T=+kx`AQ?8r`0E=J z&REk{Kaw4_w_9*A^*pj!1bl43s8{A=91r%(GFly~$ID9lE(v_WuL2Hk9@UQhonK&R7Z`pQx;A|UK|-ODw)ZN})&ex>_J4)F7V_SqxzCgbxszbVCT11Jtz#(Sfw z891Of$A`<8H!JjAqb%p}CplT3*vHE}!584=W95ZQE(l*qf|Y*(Jo-J^y0?MzSn#*f;Yc!$f~Qyua_5 zsN4K#o#WXK8>9_UW*$u0rtm)6t1#_-+*l>kYeFP1OZ8HsYHI@^B8kg^8Rlgmk92FX z-KN)xv(3ltuf_sBt%x$14B!&vMpg_X6yUJHx306v@_5~mGf|XGzt6`_{?*Wa{753N zE+-C5B3RreJ8HN^O$dL!rmQxHN=5TN2T+1v+Ko`#fF~nD^!~5>*TVaxtcUo2sp!VCgSt|SuF~-AB&~D=?wYDZmHkrjHRy>#A(G>Om=Fyz_m|F|7JFpiV9zC38a=>?IC@51hY7RMk}p=W(H5+QWr!Np{(5pPO`}}?q1)Lh21_7lzVoWk`IP{V?uNZIlrH{*azIcHF5mmj@z)r z@mzaU=|-*|ZeImn1_eUxcBP}9S||*~oeq)h$^EW3TlHifsqXSaF*el?|C{p}sgQxD zHQ?A2eev+POPxbnnHxsbeDMv5Papa0(ux zyAVe8Fe&@hn=v{6nGTVOWsB*!<4SZ)Mp;)AK0JE%UIrCTvXX;fsCueyr*ELJx8R5` z+G!PeUGGAysD}gs2(>Y-RR4$4B^K@G2Yo#qovatQboh_V+|#J{jE_i3{`N?z$}A(u68@Q#RDeeZFbrUwW{p^rO5t)O+5 zDmX?Fts>>#%~gb@ZCu<$-h5*(?`j@<*{8n+KGbuGJnEpAyHE8tLpq${4BssT_-7P` z6qT(hm95M4vC;L0f8$ZIqy4gxgZM=**{_mCW8l0BxmIDS0n^;m0sk|~aPS$&>{YJV zM0NN?^JfQm{s;;NL0(K+&>NHLEy6SZwe4;0Cj#DyIPb^gTf2)<^Pe@tc!n;Aqmv8M z9lMOBo)7N3hrk$sgHwM+&!=9!wh}3N_7YY6*susS1o4S65@AT7C+cHH51R`jO8zrv zJcT=u>3b-w7{MXUGzvt1ENY48QaM%HDkh4fUcId^N;p@Ouh5 zch`SHE^C$z%Pf_PlcBMCl=z>f?GO<6^=Bmj^S=$0bhy#1cXq`tM8m-|P%{>&z-lKAtPDyHZeQXGeQ?0R-}*rOA`A zaKsD^hUP^lH(!zaX;6y3>xU?MaTYanL-i?xSwM3+xBeVe7!&jRq`E`$*zTWm)c5xw zBrc5Xbv%0|7HBp9PhZwyg-~t<{2Zmc9|JH(2aA`0`MLguz;cR(Hht6D7q|*T+8k=I z!D8HeLI(YgFhoGtT40x4hZ~JJHiG*vL_Ii8RvMGDYFs3kZ3i2Z9J|=>MPSECf#5qt zUR!_U&3Jp9;%Bl6ycmCcm9k7hCWdGPcgg~*#T{nE5-(!@y+PhpoD*M-syI_LlZVqf2-4lUA?2!OUTR>xpIk?E^*G!+PX3N z!CA-B*Tyh)L~``mSlhDhNg+KFh+OCNhTk&>+%&a6^Ky>-U{CX(8vio1$q5mdM8x}v zQ1pD5T<}4bLEBi*?B`%g@>uANy0ZBuE&edabsli?xa{twBW{&_v-PAFwtNqq5hul@ zx?_3YI!)%ZC9C72cJFp%Ae_11_2Aiz?Oa<6-*9Z%t*Y>pAlnQt>3;?3P1YG=Nxg}n z?F;p-(uiY)blMQwE9XyKW|;M-;Y53TCKVd{8nzR_&TiD1x99KRtDGcK)j$e08oAA1 z1Qm&AQ8z~|Di%3IR;R)VUh7v%qaLoKzs;|{KAC9S1Us!oK@!1Ujoq?sF|@r)(>6PX zD$`3j`xBydKo(sFauSA^9;1hUY5qKh^Y#>p=&YgT?&?M!YSPixX+d+W!>Ag3<6r02 zCTtvhX%?@_5HCrlN@Q4({iipV5`(Xr6u(S-UIHk!o>~$`Lz=;SvkMB%GUyRd76JjA z9orqWwj5?VyM^KRL4gsdNS|&|)$|#q)m_h)wM`F%ImUcg0?K2Dvj(=z*8E&%?k}(yy*}>xOIiKrAr2$SMXzomob5Jm@NS&X z@C2_ZgIjZ#)pzfEE27r(zOT2i%*nAmk00^;3CCoWnij6v8fadCMG<#1pLcdf8{K~O zn46R8sNUayPi=$1+Ux^~4p{%b;+cCVZ7+F9RjM(75{V)A%6097*q?)mtF|e;QRNs6 z?#1P$%i&ie?qUtqsL=zN;CTM>@=IvavP)bH>X}P$!*}wGSIQ^pDV}mkWwlD(Py2`Q{01_Ds?Q zk)T+_G6V)gt#B-YQ)OLsxKd`M?7@fe^qWCzWPwEUFaIJ#gani)-fyqJ=%%5`N{W)F zUbT6X{QSff)_Fz4O>8zk>wY!f>>^O9quFk$FV+V_oJC^M0UJq!sg;u06fX`eCxt(F zzsYC1dO7J47#SM;2a`UYMsT^S>o2tovhXRTtwYoT72$tX!F%U}$Ghu-^#?OW$rLN9 z7?&(be|TzFti^CGu4~ACI0`-{uoyQ~q@8*k?ZMQciEUO^~nWgslN03SJYJel+Bs@}S>WEeXN%B!kan2*iQ4Sbn-y7<*sEDjzNemA=gcfT1u4 zfT^mS>E=8r>>hUYNWI{Q6kc8D@rBKHgLX%zeP$=5Ngv)?u>>}}MARd{goiS3JRDq5=}R5)shp$5$MEiCKv?8ug&`%!x!YHEch!v1*rTCHwVtcZF)h$M67 z^0*OoRMG4UU4r|$;;Yr?>MpYza;|!jo_1_TNvXvOiP(y5maVkLu*@TH(pD;xaW6tk zl%sQ1a4qqp+#n;{-Nt_YfG>HEF;IN7l7|GEX%IkbwVSZztpQqon}hodDjzFK3O?=VDs>hj(HjSQqR_+221CH(3y z9?1X6&cQoJ|Jx3e(dmTh*|!_VyZgc@$0b2gOX-;uI9h3n*4sn@vb3?RSR5L*(ytrgY-M&iD2eytjf=ti4&8a39seSOUD zufeip;bdc)qdWq_miGtW zWZ?U0azb;dry@*zHvBYaquJMte+|mh1X@wuiIL~at2bp!PJC~VA=IEN)gT^T&_geh z*CrCMFL?Hj(_9Kj;xT;J@U}L4#yD72Wz2Jv74*OXwZaQpS06h)0Tqq@3GOf<-je<0 zJqWv+F;!gc9}w^S;*4n5$3uUUk|>T4$OvQmId=xVS=gl6ylT1{QR#HR1s|taLd&RF zn-r=-<(x=2#gJ{&`Gst`9fzDJsNC}fV+$H-vO&kWHy_!eWlEii3b)v+`7K|rI^t#; z54faA(a8557Q8(l8?U@;XZ%OBepFYB$;pA4?S5it88oWX$rsH!4WdX})&UJ%(9NU= zep57)=6#HEJ$&E!WP;dGMm?;sx-NjExxQ_7r2R%-!;)(yD{|vb1GP$=zZv5Ih;3f? zb{>0&Tko42;H4oYecpJabiXi@2~MjsU9Vk!q;OpR6j|49J0<>(lQFDu#OFqMh$0BP zn@dlYJpF0@yvlUd%^zvdaxSi^so7u1^>8i_zP-(QVjBc#6U?nbx3E0R#65k5AZBFU zDPWWkCvkc+Hpkz@&mI)WAh=E}ldfeZyAs$%CPPg$okZ)+R9beXR*&7`2_Vq9Cs4^L z79R;m@catsHimL|$H4Wu@S8OVgmIGV!YVX;_@bVn6&hewR;3E@140%NeL2U0SI`x= z@ZyEg5G@ZDvOCACGh%ajxUiNM`}Vn2C$Y};nZ17c*W+(0@0q-CZTg*&jGF&IcU@fX zTToKZw8(LKd~c8^)F63%?zABTfH5FsN@U#CErK3P+>*oos|eB;OUAlcpDi$PDBn6m zBXd^rd$q!llMSz}9TyIz9$u)+wNjnkZmIjK%JpOkQmyDJZ~^UZM_Sy-i5&^UGBhRK zNC`Bk_xM{V_)}Hq+gDpQ?`vA6k7J%YGlKnGQ$$@Zwss4K#okNLTawMjj!((cXX9+b zUE!K>`kzoUOG1J!irsC4NOu2Y0kv{JB+Zn#y4~(@u3-G5d&2qY5FgdIVrU9PS#jg5 z>pB=qrbWMefrp9e_A>C(&o;VY^KZ8zXJ*zti7{L?{j*~?VtLhQ$x&k%JJLgbW#A4v zxJ-r)*GE!6AQ+G+{r6A+y->&v{IPa2$`yS1Wd#@*?incHGFx(ynPOKs*oEb!a8!Wr zjs1?NV!h$5C4MOAjaq~j#Z||kaHPGv<>Wh8|IWRqzQ~@ES@l8O`SSE=;%^2$NC#hQ zrZIXFcJF1N-RO>GdwB3^;j8)g@87H6@^vMxM;Nm5t9|M*JGWnrD{lw1>52PV7+h1R z(f$e7qx;>E0yN$|F+opxOj?hQeabZ)pTM{RggD`yIO}zwBvJ(K{({|>&89T%n zV31sN;4tUss<)n|N*{Rr!!SV`VNQ04>$7V;tPE{#&Qk*IOUH%y*34Rc`b+mC#qO<< zs8i545#E0Pg)oZW2%M+@==v$|IZu1S7euPfOkI{R5CDBpj+tXdpng4%?$NxY7qwJ@ zV)6ex#dYi&TyRatw{K^w(hrgMGYSpQ;38-tMUO#kt&ALTl(4=i#!Xmt9RAHzH*gl} zzfSRPHOIX$&_abB>#Zvh!Ujv-5^+lDu78q?aJ85A)%AHsqiWEV#XvWL_$B1iEieMh zsBgFQU}Gn!?fA=n%f}bpJNdx z!{>1MZkyGphWv>OEtr(_cs!0k0~{Y&Dm%ERz;B#!n`#sy!FF#lPpUf9j$iaTrvT@dR}*F2F&1rdZ^Z*)Bu!Gq+OI~VD|bqaOmbrFnvvs-Smvf=k(NTd zZab)hQQZ;n^H9PnFQ^w&9RxXoNQHA^spMkcq%Hd|SQ)Jtd1nKR(XKSsei4y(B__eg z{L+=wp-%}GyBs=9{RXN(UNOC!r-G@$kC#|0d!C;T6r{4bHi;v(WE zqt!pWyYuU+5n_j>C67iH=hqNd)xP%m=`%NuX7&(2 zYPa+^usn}(B!}3%U>mSws89(`_mc{;KgEkHgY?e}bj#01T(}MbA-h3OB$C+mH9k#9 z#>en07Ffxn=GH>3IHg2CWv3W=wXFzP>?MHy>#366%=19iq8aJrKzrCpib@5B;hcV| z*2W9zJ%R=@hCkvBWRPDmaua&4QkCDD9aiHLr=vbTCb`Sj%jD* zS*`Cevap=5Cb~iQkD4DZTXvE;P#OqClE%4sO4-#CCKxLWS)zupdRrIbHquzcJdYT( zPq25YHH`YER(QnpN~M-DB9-aF1=Xf|P8(&cfOQ@u!VAx`q1P5w$cPqp&GsR|-4bu4 zX&V0$$=d>2bU@>$?c@LDm3jc{utrlLBt&VcF-nSY6+GfqL+czoXWj$Uc-Q$A^5dx-Qc{)muD4K>mBlJm#@oCz2 zJ8fWX=eITUa_pV}U?8}TyT79G0W~2Glpmw1dc4VenS7P$4(nY+a6J(l{QS z9mi;o^7Nu;zbFm%Hmq0R!jQxI132$69)YQ`Mn zdb2|I9fzyrAo3iJ$nNZOA7z{4rC2|IY*6yrki9R+9Nwu&CH>d0U*QE@fB*7d^&|Kx zYhR)Mo_8|+A!X6|S&gbwFpN@t1MDjT4QXY*)w&&EmL=|TL?vxG9R8ivrXA7Cjn8rq z_s)@sl~dS+En<|4%=FFozKp{-TB?imU$v^Y+-HwI5?D*Fh)C5o=~4|n04MOrDU3Mk zEnSY*_pkoQT?PgUVCuj}bD2uMq0!!8`j2I8z7xG-#Mj+SIT=T#G5*I{d!mD{f`Ce{ z>7b&t3raC^#T)en70j{-@Vuo2o^4N)NN7p0eKBys%Vdn+U*O?WuAf=NI~|tR!YHKC z$TK`c5J2$!raB>uxZ&256&EJgtmXC(C8jN1IqbRddBiaSp9RdBw-?rM$Mn{bQ&3`2 z5b>G?#%y|(I^o&_S7FG2d4F$&8|wUZW0WGIq411Xp@wRR!N2LtK-!guPFt;?B^b`g zDzMg>E@OX@%29Pyvm09#`0aJ{R27vmZF@+F#pRhrLQ*(oP zbp%Jw_39R333dR{dylphH9j9w5Gr~`2$}N}vHlKn8!U8=@^r!!7b$$3Pb4Cn#3+=L zloB;-`cEe(j}bZdok8c+k41Tr-r+NK^XhL3d;70UMBdJRd`=_PB!tA0)`u-SNHa;DrIS!n_nnYeXF$b8mo0&4(D92ZDKsbOwX7@o4gMX3tqr%8+kq3S% z(Vv=H&UzT()`=fza?h`>HN`PM83J6M5xj*MEYYB4_KmK>PLBZ&@VedPFIyn)r2ITB zw$_F>TD1_RB|qQ_o!#Rl7774oS*~dfa-f$}E6Z|)ak2P~0Qa7QeN?7xRMelu!h1bs z$wH{%MR6bbNG?DDO`i=QJ277F65|aZ`<1|FBJv=DO7cu?SfLZcqAna;CM91ysV1&b z6DrFbD#}=-LU9s|-0tH3LOW&(*t?M$$;12@phy;c@8O5I!+Ng{NK5<|LG`2%=r6!U z`@c}HaV+GV0tkoQ0SGk+IS^#3D`6DEcVN2H9nNRj;PnKP*xsVF=tZU$)cDPNeQc*v zCJyv_^labo=^|Gr|9NtJ`lZg!OzWF(7X2}~M(aPXKczn-8e>pJWp&?2 z-?QbyZ$1wP`62@iD5O{QFuIZSJWc6BoI&3bm3yT31{mVT%jX^vI4HHe>6Z#t3#D;P zRqsROFO;AF{oKIW+6cYeaj8+uz{n^Ga=kC7GSvR?Ja0!UH4}-L;qghg0BWm0Gx^(D z=L8>{2I#kQt%J1)#2&bO)o-$Xo`&I)%%5TU-N%KL_etX2Z|Kg~ff^%?8V!T}`UWeT z;*4uz$}pvdaivl*-q3;5XM;jGgJgVu(i8*G@Ak)I*TGg*JpecR`pN>TUl#opaoXET zxk!(-jIu|y@hi^0lb)l?D42EZ!-Az%}R&H&Q|F?9~IOJkm6n%@GFx&1z0>GO6lf zY?tkfv2|}!KO||95h(`^n&5Q`aTzDoMaGj8HTN_^%tPWhKWT|f@*;yQQvH^N_AMPBmW9Kr1&m&ms#+=Xzq>XvfTf zWB?(JrI+{@2H?RN%>NwzQ#ePN6slq>@fOx-sIL1BP!MqDm%LX+R)UNrAWsrvl)?~t zbK^7ou+>*u`7?lqgE+O9(-YI&En7px_FO!m8{6X8mip#Kq(X+Rx?1L!GexEj z)!9av{wn1Kvk{`UNZ^Uu=<`EMmVC)_;gb;Ofgz_u&L#?np)hBNF)5ba<`p(5S#3Vg z^WNSRCf^*;n~F%m3E8z85lO|$hv+%!Od@mW$;jXo_+3C_?rkQ;-{qpkNN!(;lVL*! z20=056!xWOJZ?E;tNOPBA%4f=L;1Fo%FRgDcR(_ZJmywRZ+B3ndC$mEY%~uBbCePz zu0p)|P2d`2tghN2?F9Ih&oLW?P6~8~cb-^i>sE#h5JYBbd%oZV+sJ@*t>-J}`6KH5 z>GS`3p?CGs|481#nn^@YDGld1-N^^%?ZcT0l185$|9Iagv*TFPzbFgtt@XTsY0e_o zv~yaEIlKG>!&Zb_4x@Of%QB0sJ{i~0Nv0n}op+{zY&Nt4vkgNu#HUuAnn#^C@32KO zepY<0)UWCzgJ|zUIGE6|{x!I>5gz(N4LH`)D_$_!`t5_s!z>}~f_J2BLQJG&e_8%0 z0yV~q{@lJTi(BVTG{iFf4woyZMfFBW&gQAC!^6X) zQa{vpcM}s45ou?MwE5ifL!erj0Q0s!>NN1wxckZIhSJoQ3f%njWnvqyCF7vQAZT3H z`}YZcd_(mTY*bFS?ugSgyHtpeNJ6#n{OymP|OQy_hp2mQF=$ATF7yi0~*kQpd=I~fP1oLTzoF0Ha!O^gzKmR1r9V;B7H z-e=BlUko#nc?aiy$a=XRZD*1(n7^Yhh7D>&dX|qf9L4A)Tnla3tmQzI0%LnE3l?!S z@`!&yE@D}?WO(A8SkUzkyxZISF4!@Zr_nq1+~ z&zRU(Mzs@UV-uUq!nMCp<3<>moJ4G?(`ke-9YZZIH`=?g(|`!UY#X!{`pt8%%e-v= zM-&%x>#6>*UARTvn#?T`A~DA9eApBU(CWo6PzPK<9ep4aNIb3!OsJ@M;vb9Z6{sEW z>$V&UVwa-Cl^i{f^zy}TJe*OJk&CV94#2M{xE!90CQ5_kR%5E{vVk`8X(HJs+T0Vq zmU{+`#r(E+vI!#3B%TJ2Ze`!ktacpzZC)2xiXRh;0)@a8YGX9I4y{-hF+c{LbsV+H z1+pHLnV`c7<(iq`U%cGtY*ymNlS38DtG)x4-!d45l@8pFX4&rU`Dc|sF}|g18e7kz zgsFs2BEm&Ry;*lX$=`Vepp#6_Zxh|8Coge|lBSD&pTF%i%vgP$->taXo;F$2t?paD z_st`?y*a*)jK0qIj4-B<=24{T1EI|8y=a)e^hdEdZ-K>cc*R<=eWGFs|KC5rZoXuMg9lr;? zm{eW{GUOyp?%c@_2x4vfu2$>jN2DMlsJi~aJ#FZORf_1k+beritO zNtUU?6)Q(?Y#7#)U5|}@;U$D3#y^QxxdjcvdDcE>G=?-b2TQwlgQlS$Ez7oK>Qcsg zH9M=+kzEcQ7dy+J##?qY=0EK2TvG_8Jz(DQ4c4%ajw9Z)t@?VMKm^s|cS0}=)B|f0 zZRu#+l86jeZ1~olfDNyIPNp+wXl>ye6prw{jr;r2h%*XeQ7bcrOMNB^QnBmtc=#lK zTEP3P}}C z5@uDM4~M2!aSH0ZrOZ^j{q#`=^F$Ge8hDS1L&HoYE0SFUy3tB<@nA+vdY{S3;78#H zkG{R*Y->t}Yg1%or9{@zxwxUCkWFu&)k-YaV2vC|^*Xj5u8%6wg`KYiUKwrj4bVX} z^JqHuMms=w7N*%f-sknE=IL%&rr%`vyC>WiH~mbH;e6AB2WrR5nL@t4z5>n1(A70G z`Yan={NRAr5fS`|$N_~Dj6A74wQBp=K@fg`BNXrVCE&1nA>(9!Tt0Fu#N8>08q<%> z#qUwZv58Yb4p!joL{LB6^O_0_ej#HxD)qo^G}TfXR>{5}$)ll{d}$)=is8z9^L9v=TGr?a`2InX=~Sxip95QEMG9fl6fn7$K#E3W)Yui1 z52MVz4^ULL#0Fn&p4g|-q{a7&&_bA&L1Yiz25+4VD4$wfwS~&E%({v?+k65dS1sZ4 z;CqP)=K?%Wan)gk|9uV_hcI)O`&bCSvEz>nZg}8ne)uKsgF^lJBBs$ZMdL-&# zEMuB8SMvdLYZH}6B;lIF0z(4-Mo!@bv*7k;t%PJ0<_y9m`>h;lYt!QwoV0~?S6|t3te$sKG(1ISvi7nUP~D+e1`Acc3>#ymGN=@&(E2! zs5L$mMPobcb&Qb8O+rzyIl_}e-uE3FG^{Cgp)U^xE?7pofj7A9l$z?bc_K=dtY2GQ zcB;TTFZ!a$P?-GV+*}vwjBIn@2WRL zf7l}he4y<)`Xh*Lex)?}kHCErf^UD`Vy6;3%_NB4Ok$v+0>A0`__47%_}qhAMV$yhbD zSeB^IYKq$$aSwH;&8)4XV~i(%iWdhP)VDhVQlA?{sC8iaasL3JDE6;M1%!UHg;d0Zay?%BwtX%)T~|h zL(6!}AYc`jAU4D`$js5$Ld|v&I?WWnsK7C%6=c;HX`&wizs9>HWG;KU1+hfV%pHDY!_arwPJ z@HyFjZI*^%RN#75;V0C5C@B1%JMgr4G5<8ja7d3!DgX0Pu%IM~ktUeBS@37>E>J-EQt$){G2c)Xw)F`IOidz* zoOu&oP+2HDw1>P7F-(|k$~2G1#9G*Z0=oSi{Or?$#?kM{q(4%wHckuYu_wGXW0$ov z@S}CNxwi;%k*2*qV1gUjJ*wF*`oxh=PaZ8GKjMj#Ozng!!~jHn$LY@2O*%s z?ijujLzgA(G8WX$Oj3{Er13IvJZq&J=cq3uKr}R3x*e;H1qb zt^a`oI0Sy1xRwiiiPA0~H{f)GYz%1H7l^)C2KdYinoZpuTn54N`SOfsGQ)I{#S-Kq z?GHb$qm*s*>SL6B?(pS#UwFy-=y8S1xrlG_tw))y9~uWW;3)2URQ{;^J{_G|tAk-_ zWkp7@m}zjx(s>0B{zv*-W&nOfgzK*spHUh>Ay23T>^UxhP{ISl<_D6@Qu70H{0A1^(>BJ6M%7_G^3z3=*DlZ`l9c< z4{ds~*XdB0-9I@iYMP$#*onYrlU^^p3Ja651LHJ1Qu_mf85;i{xpgpUVmdFb2()phMRleKitv6aBL>Sv>h_K@1Xwc?r^h<@VwJ zhp{x*LoTxZOgOw0o#0@np@TZ==*_Y}lq8PccR94}FJy1XujFC+6>&qnga+TElzUe$ zhvZUAw4VD=vV-psHqPSJnh?NPR_uvM28aD^hc>$V+-ScrCBnJg*P9^@LrMss*HcOu3cP6b&4O8Ar0Hdai{G}=p54Jr!ZAtP6&3B~ zowRIBilu93R?n-$Uis6JUk17sRfb>CVu+&CJIfJABWV6oAD^_-<`f9mzJw)~S_R>E zC7UHJ23lPv=X{&}j6xViE4#^E!Ch8VR4kj0j>C0;ghxPdd2#1pyR+ovenVu?qLMP^;EQ&5cTlFGw9gT9HV0@i7mUcXN1>@k zT(9T4Cf8z@di;gu4q^#l+PafbPG=ra+{c&wuIhR8e;s^KDaaHez52!RfJK`0_^J>U zJVqgWoJ)rli7#2BBubVMD%XfdvZg!}?CRcBxrYtG?vfF-j_?uA@LC7$gfzH!(%8`F zC`n+`5xUV>q1?s{!*3}Q)hBw@e}3V=8J4UVv&GL}pbXnDR{ssU+qN|*l2$#Nx^dO2)&KHc<4nfe*ceQ%jNS74%fqTu3E2k8 zz-6IyR`BMXJJ>KL+jN14$%LlRsT&2ZH_+~_m{4A4RYO>D2!e-n~yZhqa5a)?#I5JsvQS?NOt%w_X2`3-ru^jb{ zX+S8jv)V_%uOdGg4QEaua+l6 zvMRpTb(!ho>(%THEY8$gFCvM^D{K5?5H5LsK}?M4#{-XYGM@C806B3Sr?XcJ9?f+Z zmf!HPyFZpw!7dOsKk4_X)rx6LQ*g536;~Fr?zQL4@WWr9peVZn&)OYutPaYcc!`i< z4Q5R0F=6YLqG$@=C|un(;!64j>g}`fS9DYXQo;IUk_2o$7!)j}P5VNv0*cWnhZSO) zDv&O6_{$2&Xca^%NwD3`6Hmtx3{ToK0LQxdZAb>S-oWUUw7)m*s)R=#rV=6Wswt$N zYh(QXWkYH-nU=~8ltkc0(FA#eIoHGbR9au02fBu$ zrKzueKlUI`3?AiCHOo%1Ky}dlyzJL$ooocv@8WtFI(-m{lw zt8D?B(3XLI^*Fgh1(6(?I#D`}t>IWC-alTkt7;lB-B2nD_RC(6ZXGtQ>r)==+3_50 zVPRo{C>{$xH2f=OCb}mMQ9QHfwJC;)Bj0LO4*4#AddqJUKcT)5{)um{eh7yZu0&3ppWL3 zB*#Vco3O|L#QgL5Jna_-6Gg*BPm+jYd*I9+s4P27ZasK&E!&Dso!q;muyp9Lh&J*S zw&-AaKB3`ymQ(>_VmiG6^+-qwMI}24`iWZaLSJ`2pxtiS-&9Xi%9_ifrX6NWosLqKeb(oPD3r|0?N+26&Ma_KDG_kjmNn^Aa9V;6Z@%K`wW_ zT9`(FjP*Bo=H_xh|27y23E{o{FD^Ub7>o&4HHT@VaCyTlr|>G71rRzKM3Pmmi2Y?YStG{Lw88L%7YZmF zpIgm6q!pEwMYX$*HE1l94Q2xq2Hw`zX3X;gxMol>566um;rSqF*Wz*N>)lmh+?20m zKVgbw;x8DysEOj+-eug@amMU*ko?aNSx%GDaw_Z#X7bu}W*4F#ieCm1WZT%NQLDFz z0a*@*wp@7LR!gL#STC)Qdp*n#qb0CkdAn_A)1`~#Vo6Pk89G(z(xg(0-pj`2(u6P9 zg@)$zgf9dj1^!8jfC&*5-7$40j3ALjO%41IB0?0a`!>T+xgcN?GN>*3^SNbKF#6_K zLpXUTAOM?VR!f7*z44Gmv@Bh`Dvin=2L-vLr~zKQ9eHPbzOEC@rwL8`S#Y`Gy_g_= zCF!+(f1|6eq{tY75*-V}2alLP7&8UOE;{`%w(W!`3l4DJ(r^t;P@)1 zfL6!EX*>HMDBQkB;i72zJX$4_eA{(Nx#vCb*2Gf$T{b$DUP3=zo7l%RSX$h(sL};* ziS8Hw_q_v&+?>d;o@cf^SJ)e`MPrX`bXi(tIys^6yOktGrQrO>hQDQ_*Yj2KR@ z_YitwJ)ihY{%9uwB<3*M@IVh(pECEVGKyU9Pg7WDpY>N2$64o|h)LNHyNL4^t{%$%8!`}%cy zKU*+lFoLe@W)zo8kImz@ru^uSt=qb0;~*T&N&%qG9}8cx>(_P52G31s)U=C;5Qy-3 zInacx?CjsC!<%|}jSSgkY@{}MTO2Id-6;S$%xF5hpuSNcgbpF9VZ41M;*g=K?h)47({iwkifFLT5g?SlNE4fp;v zbg4h@=&mtMfo9LA|Fqi^*)h&DpBmbh*Sh>h#lw_e@`PE%S+@&8YFT9QB=@_kE^jceQ( z;0geMg5Y$_CLyoYO%M5bStB`7jN|fAX4N*+9}9G7%59lLx#8?og5`;L3;d8Ef{W+{ zW9@j3BslnyyYYx>K9A0u6hCES8mE&Pu^CT|ArJgf1gEBi;aK%|&`Et&yMg>bvWe0N z@;K66@O_ela%ck&56@WS#D0v^UXGqyrV50F$ypK-JnjZAhMxv6+a`ZhRgpTjkAb!1 z_U34YPh_rZcPI@gj7|pdFt?TQ+PQ^IeI5VSFs>`hV24`fhIr@6jJTZF80@V#EdGRD*r zO9T4SP^M`Fgce7q_{kL%#8N?+Xs;=5Lfv@gTr@2F+)mICF}_?9I;ZAUr}o7#L*WSA zSZFr>TGvR58`i0xh8rUL z{#MR*Oz9nLLc?cia&6Y;c+jm}LiTxY#N~eCtxQHmjHqUforuQ*efgdrLiyN&x5*FJ zMk-;nsxs2TH2!eU5;GliC)drk9@b$hD)}`7#@t#hrRq!A)M>cxk8oMq!7X_v<-|yr zLn5!66qK|vsE1yxX3)V&nB1Z5wnM{WhehLs@fivl8TkA}gI8j}5rt6T+St5bxlB;v zaY)@(F$Bd%vQ2P&nQrtDXGt<-kPJiU0Hn8;BYrqU;L{lWfBFp>w7RmlX;M9=NKKI( z4;D@i&K}zY^2`9Y6NZwjYrMBtjfN+Cn;0F$0x;f1;mL}6ZZuB+5tqJhLYe=u0Csr> zV|?Op{h!^`IX2Hyt?y<@y?(YZ8xKSFM=L1|*0~q^Jmq+px*y7L-0REV%`E3UDffK= z87IKkwnKE^D)sTzvvN)}pb5y_Xgwa(PI|xy5$}{&Fqyud(`d1@9DDN z53JKz*RBb!+-+Jh2paP2bgE&&1QZUJeeyGyzoX=$WW8l+R-+jGwI&d2$D|MuS3wbuHtLg{W5gpTnRzUm-o z$&$I$pWqc@fl>j=5_{>2m>|(+*y}J<6*~)+qhBq&8`j|o0+Qt`z-&N&7-4Gzf6RTI z$Gh`pV9tE_%5r?A1Z#gVinFZJPg~q7t|or7U@;FGCN?rC`FNUv+8SW5D<02F=G9ER zd_xGO=$pImcscp*@hdNO(Fea3IUZa%usmC_6$TA>vnQ-aNxIY~xp=R#mP%MGP# zBC#A_qBy)2r^gbbNrmSBFe|$S#S1+u6m>Qcr3~!@w%Tx6nqh+aE<;YZL;fF#(;KS) z1`2{+OKK9JzTB^yX@L^hQOd-BmDFFw$s`I0YMAv&PWcX|kWn#WLFzE|aG60$`vgB= zNIs16NYkyG7=xCLC!T>O-h?QHn_@FdPk{%1X!{?_ArAZ^S{C;A%?X{h(!bzk4+It& zHkWp_@rS?rnH;BNwM{ir^9tmS|(Wbr^024mJv|RF*f49SBs6B4A{wbB$ z?Cw4rtn>+su5mS5m(jajanQ;Ta`_^e+CKwqjZz-tkd1ZyP=ap?UuJXCumtV~4As<< z(tR9!eMw@6P_Wr7KU{Fg3_mR{r4`iveFwNx23?VaHrO(=)=hLlBk}wR+0@%STKo8G z5%2F~8|heon80krSYx{KQ!rG9Lb0x2EyVErf0Dor5gpzBHcN(rjTCd~ptGk7iVfrvf-v>Kx8ph*TNwKZ$3Ir`m zbcG(CfeyX}N|N8=be(vI4^*lI3(*Mr2-2jKvTCUKNAS(a$wkRbvr0eTnv_)<7JYbg zQ&8sVDnIB_irZAV#BwEgdwi|poQc#qVe`D+)Yf^L35FjWozk5&z$)Ioy8oRx{O<4V=wwbPkB!JDAkml+eK3#g>5WLQGACb|~MMGI4 z_Ur#j-(sOt1+f{%sDi$!9dahKSuwco&)^I;7|c7aME!{8(PJI+W7MjR(5UJCu=xP` zCWxwHqz@aXfqd6xs(!EAg<)`H7xpiW(`7+>d~$5sqz70P(slHBzQ8@715n}JHvtcD z4GkMo+1yk&T^N_6eIaJi<4IUc=-gY4VNroSLX|{*)puMMOSP>G2Hz zg~;`2!-odcqQ7nV4@;;XJgR|Gw>_Wk?s#_ZlQ%sssWtGVNDe76p5yV2cU)$lUOJtCt zdb-;48Q8)jS`m&`*VdMjpAw}{TA7uDTsfCx(SgjZjP=r6ECE(n!&1)RF?m`yTfQYT z4ATKbW)u`NMKjg?mdnXLTlgat2`lWiw-^$7x-k&;B~U&X1oCh&cb-t}3uTVIBP4hG zhNV&TJ)s;=f)$_rLqXM;ruc)kl@)mLv_F4k0QqkvaZ@zP1FLbj-lU~BclLEr8sHQx zlBfJSr>@^HJuTP)YypDv#VMQ-g8dQ@{uNXTYLTbg@g%G61#}g$s z3l(tmdF0LR`TLfQmd?eJ39jmV_8Hkq($*)wyR8wfj+f*qC@CQ*xL!VwsTkey?;S91 zxyq;**ADJkKo}Uz^bo;p#^S~!&-I!o{rC!;lxfS&rEnNhT=wA`;F=#Gzum`;rfxEYdG?MPAxOOw@0$fkwW`S@K2L;*^C;@;=tSP# zc}^WRfBP2r8p#>pX)U1N;5I_qF|+swb8#dTWH&yfQ6EFTRA$lm z-7LUOstS5F&{09Ah5rUtWLEiI0#tTchK{`mVtGmo-(CwWx+U3GtQ5(adCy6FUm;=o6Pt%Y9EJa5|DJKdFpLwqw}I4J#=Uq=6>bOOe~G%ZbRp#CuN|HASD za>23|98-+-)r}oP2p~$GClIl+WqXbK2;Va4i9-kCVaeWs`O*kk&_yzGw3LDzoaRo}AFT=yL0Jp*WhcRBOJ{r%Rhp1iTYz;;P^I~5S@`lDn z{zD}>IoK>~-fhV^-cD2eSE#6>M6Xy<;88gY`Vr`zw(X(J+DICUc6u}AuBZ8!G~Zyc zm)qE|r4~bKZMbYH(x90aEB7_+TtGKHzNjeq_^M_k0vPh4s~Z{zsqayBgJ2WLsz<9j zB}3V~Lb;X#WGbD95Kg?|srya@92T8J|L&xm{G{Pui4+I-oc#1aUt#oeY(A+eOD>jzl#`od)po!#)wb*9d^ysPX|rCGnhI=@}8BJbY}4iA$Oe7AZM zySB`z&SgJOugH{n9DKk!P#>X!!~AasZOP4qo*my-WzfS_YeQ0`D94w8*>l?|YbbLe zMxEg9)EhxcN|3U^+(hK}?B=7s(9Ac!rl1x7g_W2Hrz(?4sr}vQd&-96kU;l8Lg^u` zC&l(wP5=f;C!+~V^ym*cz&}C`GQbFMW(5rlB;5QR^xilA(!rrx9qvsfD--E|0c3{<>;oCb=2_-LCnr*Ka1-Vj#|h4lNp|c7}ZrA z2O}gzW^;JoG!FFw`erNh3EmJ+>uDNyAdql$bOf*SDPM!J?+VM_&Mq?OD!-#caC;=D zfQRda-~|?YDK7qr5(imDvsh9u6TXldwl2+xHC&oH7)nu`zt*z#;gwyQi%$sVK3^O2 zFvgMd_@45ZG9fJ~e5v?o`$p2mzkh%yD0^SeD})_-_(lrZ0G`bReG6{f1LEE_>St7W zWj$|_d(=d@MWspEsa^BN3l}}E_WSwqERKs}yy3?dd11f!?xDHZAR|o5-tgA)wnJtJ z8y%~szbl-%7p(#L(qL+1K3MJB7+^uTYbQw{xW=~$3^XSyE-#L8hl^Jwut^WdcRN1B zOy((K)i5pdLv%~QLo{o}C(@hF-3xTipORlPolByOuzvbAx*a}1s1g9{FU;d+L@dH`Y`M~A$N_sQciA?!T83$!OY~7+%T46M`>b> z;z(&0dDz{$GeGeS=VEr|?SZ00XQmTnWde!i5Z4k@i3&gT4 zDb1_@u$cZL0m>=)DRo=SKTBYGOdtz2c9@Xpy-?~#1FC#=JZF3M+xQ9Z305G^?(fN5 z_5R-QgL<;yR^P|?SFEsbgNb(L)-ESvg7K^p9y41f=Fs5B+GaCrGGJOT?sRwc-<@Y< zW-cZ-BVPn4fB{vyWCbI;u;vw`6Pvv2-w5Y8-}miD2WggA1Zp$kZEe94)4hEyt5Un9 zZLC)_xK$GRDH!lYZ z1D%O$A^hVV$6{&ls^W8XpurhrGr#Otvtldw=3 z$A2f+(B`)UW7Ky_F*Y|gD)3i?cNT3Rsl*$hi7AamB0mZ0r>Qp}Sxc%p*!x9c$M5mM zRQ8GsLc9lL4O{iC>YUC578R4fynQe3Tox$ZK@e%ocg^2fSrS_#^JId((W^aW+^6KB zE32u1Zxd9*KomrPPWA1HI_5@E<@}Y)iM1W`@z_@~lJ>oNN&fm;ynzP`nb0dkk>4>k zSaF(yPXt5GiA7St`ZHSU|Lp=u;X$w^qK_1*j?>}sP!@9bglGtcbiRVNSt|5mAC9wi zpE@^i)hdjKo0O~r-JxdV8{kUM7LI@S_P)>SBZ68JqK**Hu@27G;0!{$vT(Y4`j%Ha zIc|oOPLGqY-y6Ee`wkb-=F;Tv9-{*vsmB58c=OE=J$&t5KrKwDR zNib!}hI+i=4+3!iPQK^z_5o6_oB-MaIt|1-xKFqBXBLm`RtyFa z#v!`N^fT#(Va8vdvDaW(pR6J%u~`v;q(XGo^$-4^A&bpgbS#Xg5jsqG17`JsLB^!8 zp*cA@q0`NdC)>Zj22OhN1Ff5NvpT ziEKsQh(syJU@AfM7Y~nYePt%(xnxW^0^Mh1feZ|WXdH|3hRdy}_Y}W~ zjU#HiNHI&XYs^RTHd-;My2$3p10a=7V&T}sPbkDLn$)#B69lu&A?W| zcC)_m2<*k>C7WRuCRw2YXj88m4|{&wXD8}yV$L7DqSAG6zDnOT>wo8hze@0jJr{o` z0hJ@bAUS_bkl~px0~Y}$ zM~QfuhH0fLDtsU|wNtmq_>UCqcTZ1xq-rTBEEkHPd55=7FQgdI$YgTB{h6AoR5H-2(!nTY@FX#)&%+uIgG7g3 z>M^5!t1r>1358Nfa=CMxD|muxmlSL%zA3nNEsBckt*lwg+h4aZV})tZ1Zyw>+bqbC zc5*ktTKlKZ)cUzSGjT0ScXEgJ_FjTUN~HY3NtLri!QE_CbILeNJj3e`SMVNV8VZ~g zc?2#)2K#LsA>5Tq6LR$k3L(f5mh+FgWPm+cc>R68B(tPng{d;O{AUQRax%_%;F}U_RV+zk!-M z)(gYZQ9dcRm8E2;rK1CUUEp#JxF`!(riUon|LRd4($I&G>ppI~|AbMOb#UY$R#nGy zb&SKp36JS|4R7C*mbxVtK8CRW6v}L+Jw5HPsH%4!h?5ym|ICN!4}L z(1UmQ5A$-!`vxKFa#L66gcRnyT1SL%Ji@}(2$`A3c|Vq;5`C!h&CyG#WA&ZbAtAW5 zTH4``tG8w4njF{`4O|3sPJK&=)~zJJTPeT43#5661Z@4`Wg;NW>6FyNvHWWTYJ^i0 z4Rr4Cj524io!wf~ght`y$V+ak*|_q6>~wwC&4calVTLvyeN)#iVZ%5>sq`+S#a;Mr z>U39RsnWCLBDAIJ%!jV#i>B6q(Ek2eBq@RM z{c)ADp&5d`n49&e_$bDKKNwsG-^I6S^uXV2`D@^AuS6{BC757fpBxfYm|3g zuKWDXdKmT4+4$Q%E0$XdD^*?*cHa5=nDz;?`}YaG5~lewQGbmczi%JC!)_Nact*Bp zY{bOO;j?dNLgNLH)N>dP_kCX6w&aS0pZMXUR8uT004O+x1&@S$cIS7bixHw@FiN>Z zznfRF8zzu=-pu`Kb~XE1&t(^YQxFyA@KYEfhX)<@YPU2=@ z!#t?<#mT~U*2Sp^;ouL$#GeY%EM5n3Z(aVLC`UK9q;6K)^pcBZX|u1j@r0XwJtiqa zdw{UH0AQH41-JHo0~qED2yBoFSi%#7anWI`wDAwRvxJxvoL4uCgs%Z{rH^&Qj6G3* zJYc=x^d+>*K=C^;bzn3^DAs@t(;)lswUXPJzAvirEjy10PbsX9h^dhgnT}~&`@+Hk z0WmRLR=%l~RXC^aL|auAe4DpC+UJ+_s7{0SJt{<|XgyF%?EZS4Sj?!VZRI0ircCUX zJ10j**yeX7$gjs_iQ#PA^7&0Df`=ZtgebXYkW>?x#@aq`=W+a5UrUJfUG_B_rsa1o1$h}GY*M?9fA zKX!9wbKxBNOSd%AF~{8S*yVsP?_yKSDcY?hARoIT4a~GIm^w%S!&BFy(WoRx(Wtu1 ziaX(_Y-MwK!tIUIutq#f#qN zH|Js5Yt=VZDUFJvgmUf**S>By zn>@UqF<{bn{m+Ui0gj#liStPK&OUGrLLN|mxO_ZC^4<1#zfa!YN|XR_GN`vcU1WgX z|ALeTYm_w^4*aChT=3XaZ*PYVFaFw@EdUV+&>woh#EgjOr_-!Bq9 zrt@TjQKq~tj_=eU9nU1rjq_ps8niXB0(Hd#xWBWqL7Kc~o2Rhn<^m4=54pppj?MkN zySwcmOITPrWcG>ctz6;*Mq7Uor0dgd_zx9QsBLO6BlCk)h6XBxagh+4=<(mhP)7I| zR|BJOG<5^LXH=xfsvt+V2GtKgR#9PNwb?r-`hIyD4P1rO{Z##;`h6mb!-`lUboeqw zHv@RtE0T)DCWUhWIU>3z(lXs9tHi0@Z+!y7a0?AXt92p^Ar%#jLz1~#j^D4Wy!j*33<3#hRfceVmVC2Y zADnsK?NRdobsr!ls)SA!SE}Ys59e9pIQ1ZzH#4*vkx6I1kIQmyCv>Rj`T0{%mIli| z{(l1I1$6>^=ihtw_vh?{L6Y!;9E3OwK3=tBOGbboech}Prb16uf)SJVp5im`OB4&BC(+{OTnwPg^)tHM4x_?gr)dEm`sabv`j z54kiGjAeQD`yHSaaMApVH*x})|(2x4;tIVv#(OQ9Vqv>mS?n?Iqem*Gu;}{M< zTN#i&y+i*K`fmlcU#=a>=luV+Upnyc;;^yKWhP2SREgj_Ptu{3C>9pycg6}r*sx}irP>L-cEo2(;e>!SM?k5Z&fm0Hbc6H^}dMM)q@IZm%Y7(N^Y69!7Nt%*O$&ZP@<0=da6ic-u0BG@1Kvlr$qP!4% z<4(cHkHHhl^nD7@BK^KmU`HSsuuThRI4DFR0@*hph?!0(6LoaP_1HJ%AXS6XUxVM8 zqq%A~Ti2lThBN4kJE$wehhMy@!)4h$Jp+?2k7+tl!muQ~SqrsXZ0vSF8tb8^)3ZIK zwT|GlzH#lbLcTnWiUft~@YcXGDhjI@Mb#KBZ-lE}j{=t(CwAQgcaEtFA=2n=g!U-R zMesCNcQ`GHRJ#!_KK8h(SwAg97;*;piK5Wj|Lp=moLvbq7Bi#Vz%YpVB`x2$nFhG| zgsSs-fPhQ!_;JV=c`-|LAoVf`CHJLd-K#3Z)SjKab6_1CAL|uRq@mjwi6<@m5$aR6 zu=4NNdv6#xDjG$M>PC@2wVc}NkS-*`RYdeV>dWNAWvUw5RJ$o<-74T@=3(zrdi3$V z3KNn1=!@VM1>-G%SuraK&lJ+ihbcR;W^%ofP@*`Hm`FV{_HDGp?{7Lxb74MYtXkg& zexL2dk6mTr>eD_qclygEQvI!?CV2MNJjZ2#=PZ93NoZZnF=2ZY8?MZtBV>Bfgox0r zG?4yZ44erdI>>XfkojOT+-vohaYAK(B|DFne85(hnTjB6A*|TXNEkC;qOQ*Lefv*M z0uqPUJw|`?;AGEJWhiuCBV?fT_+l-bh$d5UMtx&1(gewRFTcmg$THfiP}Uaeu6+|>xq%Xe%BA=O(;{rY#ckK9${tG*+|BZwB!TUK6GuOwcxt2Gp*1_O!O?JORR?!&7t%m zA2Wt)8jj9oTyvw9STt+tb(`GZlwZb+lGfnh({qGCW zbr}(+l%~a*Q?|aJiwV_L$A%aox@+SRAGO1iY*6I1vxUtZOc!z}#WtE#meEfk!25rG zgFx}~FSxt);M#-%U6VmmMNR`OGf?)va)ei}JK`{vn`@^IClLyx+OAAE{!aNlk|b4Z zz#-i7pBkdpDu3C??0dc!h@9kTHJf+|&hA5QxXMf`#$!_)fvt0pL2)>xApSlMwV@B9 zLkYv_^Wz&6fOaVfpOkhmPep(%MyZ;2>Y+fP5xHBMWAM+>(<=%HNC8{jUpoF%w&n$Y zD5LYWAkfEyM_vuZB{{tG`gUdJ`}_-wOWI$(RMq7Cz~d5-(Bs}0coc#QoK1q>oOCVd zR=iRiO#!(F4|m3-)h?P#p#RNoPRpi0b$EDytO@_{EXV6*9l4_;8GVX48rlP3zeE_{ zpUhMMRFg+b zvf9`PjPAp|Dkm3@dI>5pi$xj1_sy`gkRN{wtnY{r0K9)qZ7SpDTa5!@h&<_{*Xv=XE-nQ0PAHaYS z;&?vXQF$gFg#(JVPrmz9trQw4>eA$+j5pI}jOrDpDrynTpN0^Vp#m?R;u}P_c$!@Y zb-PtWx4_CkR7us6uO4!4^u|IoWn3CH(d?Tu0a+L;NZ6JZy=i zVxzL~vqzES)a04l0)wK9!$S()n44IFjK*p`mwoUmgg;VJ7iCRs&?_D>^P`1Yp1(I%|Jx{N<&yYCc)oc zKY-rY1pe`hfjY24K|AmHlm=+HL(7o=>f;HoTdbhkbcdLJsF!?g4VJ;!`#H(&g;E+-rwf6 z{?SYQXf_jkj9ZB(_+{Svk?C93by?HHnPX00d!?0w3EA@v+qu>l` zM;j|o$v8X6)>defg+XiOEF*&7e|=?&C2xNNN+bYcA`P=@ zUYS{x-zWDiPrL7T51x;=0RRN&-c}<|(Scp>EXgwBR3{&bqcj3h^QNN75`4=fN)si* z!4FfMAKcTvMn0z}kj098gH%}Wa*R{K$(#SNNglvVf1Dpbi{|tkgOikj4{B8!N);OI z&vZS8;-WvPby~Fs5OAQZLdJ4!7&fzj6Eau7?7%U#QQyEIHU^&+s~22QS&3@bL}XNp z?+Nl=i({*{xLQkiEQVNC84hKbO!ETqMGTZ?+XB>b^o9agqaeyin zHxn3SG6&!E&EwMT*rXALm7~O_cbR;+7-QgBOXxu~50aaBux=eyBfJ^E1y8^~Oxlfs zXgw`X16xY*Dd@C~j6c^6M3srcEJWkFkjB-IP!Yv9D|bBd)M$UVEnAm^{_)}QuoIwK z`o3w|4T??)IJbh*u`+=WRcgNs5XU{`MQ`7Pou>l}A_J;mS$cya>;79SyURN=nRv?F z4Ez*M32PG@8=WHa{`tfK`s&hrKRPCQ?fBRNpZ%W*nL3S+y+)&BH;@Wi_8|kuPxa(s z2w^Ja2ZGWQgI1{QlRs6A`~fev2A3X1h$3C+IBtJ&qw!z_5u>ZmtfWH~_(&c>%c6ub z8+th{;PZPXUjAF`3TDBy3N^MwZ8DX@+mVQzb7}Y0Un>Wu`52j6bb)$^T%QprMISeH zN~R>#eW<0g3sn>r5>Sd;+a9cb`U{+k{${uE-ByJ%1qGPETt%bEHZ=4m@;SQRgpl`7 zUex|7SRxGEB$ZsbQnW}r`i^3-EC^fAg+K1p^#%GHCS0GDvakq^+EF_p(-^E|M>KWr zje^x)gTTRV{Pw>Kdr=wq(7z-Ri9*r;q{v7aC$Qa>3FPCX|W*UQ67^n=(a zvG^c)ko64Qx*BQlA}~9sarJ#<;1QHqHlrMNWT0Zf_jPoHUj)PB;#1;)sbwidaWKpl z1tynbw0($%?^KY2)+0;5j|R`Cqj=~c(xA|OR82%P4h4*41vou0uzxFW72~he(Hjp6 zu%aIFa5(NhCT5~K*lc<&7<5jUcsv8U)kdoV$pK0)VLUSlR4jqT!_4F0^xiU!T7Z$O zqpwGq5|hu)2>cIh0UqM?`QZw+OnzXvD3ht;>`6 z3_Z=vsFVo<^H4eC%g!K0zhF0Pq1xyNA6gtiBKW{G0sD%s++k8FUP}FxxaJie*-$LD z;iXgVYq(Dj^VW&4+0H>2VAH2=uc=%aE|PFNQqoWKk@ZOAgGv|G2w4?QMRWa2rtFMP ziXlMKcRbNHG(@_}|23=C@$gEjXm3w!xCZ?xkaz9bvt4;_?SHiQ+_%7^D@Q_(OzuC_ zZt7kg@qrpOBL8e8v02M<7i;O?$KA{5hCu04RaKP*s{e<~gk@;87Ahj&Pw-a8WIegh zL7ls;Fc%Rq9o^s2LCJj0JT=t5foK5Xqj7T)6f6&3G~O!k`9OLb$F$-_lXFyhNfym(||(s>SaelRo}sGd>blfQGBz?SJUkp zcl4G7n{9rf;hYH)YvvneZ2m`v=81xcgR z8ftI0&O|F|+TQ$-+Ws9eBe**}R)E8jd(2xnln-q^a*UKNOuwze(11Ui6GPJzS2_0= z73qF4hs@-Dw=d9xRykwasoR_0ul^2MB&XiBHx2@H$~D65B z0e{yISsdYCB@{)wme1d7<$^>cqMEVk_$E;tyygUL{$ffVab^-74pj(VgzGR$U8Veo z*A)qVdGtg1+sSYHAJ24v4m_BTa8qOGBdc*1Y}WAS0h!M(-ljvn)g!xNR#tRK_-Kc~ zL=#=g$#hd$MlYruk0vo7s#|uT=%f&XBqhbcX7$mI5!?@n@ohjAjorNi|1_vKSOv42 z=9nX4ntI2!tii&31TBd6MHl* z98A2aK7fG=m!`x;1%Wm9dYwmB_^w)*MR4{V)?{38^Ud5Sh0~vzk-U<4h%x2=E=fb+ zl603z7Rvi~Ndm1%6gW^n8O#y{&#!#mRQblsCfBDNb>jr|i&n8t>ESl`PZm~Ic_qzY zzgJ^p;7L}f3J=@V-tNmr5DKqGQ&y{;NO#9m;t;BC5H6}b)cbBOTsoYBfgY6QKk>nW zyeMTsrD_G7uhT#AAgPMs?=#iET2=8q!8|(fr=M zRy8Yc0i%9gS2bN7aT+{GKwODV+zp*&m6a3!kjOp3hK8+%qn~qc`@?SziMRsL9|iW_ zlar$`&k@g@*+3UCX3u9GW5Q57+OLfwij(nT#VXX|Xomh;$bCQPSK-mGQMc1GK;|Et z;Ac;<&0Q3gT!<@+21#U$sUz@jGP-!Sy8MYGX^uk-=q<9kOZeo>XGY77UaWX)qR_no zwvso}bOB#ex?arY$fwT(D!NTNa!E~1xM~?-J+oOkgPR<(=6s(OMjQ>mAJ&*1VoZp> zp1XD}1O(wI@@}C_WyvD%j6WkZcZH089}ABVFew}?`snF-bynYb_2CywUd{RX%!w2@ ztl;qIcfSLMnO7^i*geFF_4`QGQiOiYb>5fRUyNz_BgfE=q3BOq2fJ$t2w3$nRMEBT z_>#KeMC9x1F{ACD#c4E6^vltP7|ggV6kKho;M1S;j(w2tdHuj>H$D;tMZ7oxc&M$+yonES=!j{ZAoEE(>r)wo}WKsr7 zG#2e?JLeh)Tr`N%LzsJ#`*jZHl#bg~jQz!L9deAGP^$;LurU&)$Ne^vvxC_cU`Xl6 z)40_r>z!ah?Rp|hEOXkW<85)8S&!7A9~f7@SCfyeq~r>uXaj13Kd8qKZ7tb>bDk)A!xdI{PL@PcuN=Dwk{{o z3f52Gp#v6{6?Y4e z**EGSw$0&%6j_=bUNnJh}@8htUJ)^cgjC$G)$wvITp{ zgV1$pu;F%@zCycNBH#qq;sF10|7H~8&^YI!GpUkHuyw{Wuxd$}Dh%)42HUN!{?CR5 z6ybqBqobqG*frVM+6L)-4el?Xi@kyOux_501Nve z>R&hh-fd=?-#=DShWXfkynlpFitTBEy^HGex^)TZ=N%Ss%dn$d9-xONig1$vX)T03 z0c%(7mF&ZoTWSJ~{yla|?Jua=u{HJi!Zu3+`JYzxdw~g9f|#jRJ1GT0N*y~`T|NDE zaS7W>_xzuOpefY zzz~>i=Ba(Di^cVj$$Ckw3MVV2&xFkd%FW039}9jBElIiSs$;E${`2d6X25e~w$R7L zuy<+e5N!Klf)-+@nc)4isZX#{DVu}8o)0pVtWcF=K}>#PR0x##Uh$`IUFw1}B8zcM zvQ%S6vdm4Cpg%nj7+XVBZ}eYmMl}Mz3lG*LAzv6)M3__&f*;c(zjSG}`cj@ca^|Oo z$9>r0RYx9z5JtPq`zAk2*?!V(v4*`NpWrxTaENoVXu=TTDTcOY6wm6DzD3(S6W4fbEcze14<@o{Gl)Yiri|6P|?_+8jBLL@jdKkRR^|AVvadu=iajXJ-iS9CUI$)Cls-l#$-(lvTp<)RI>nXB- z)%xZu&AD^MPFp9nGVg4Pn^!Pp(WvEv__dT!T@whSoyQGbo@?*u2mkg~sf*==v;#B5 z$eTPm&OKXYB=`vomh825Qu+Gg%%uIxT=PKwX5|SI3(tN|A`{L5mohB>Qu6CQoqkr_ zZ?zgIKcBM6dz7qWUjQej97xK03@)c+q8 zctPKtk3=u5zX&y0z~e~)L%{B$zVp7o8+5`(5;-1=uW4yWK~R_s#bHO(%8v7Pbkgix zny53G;z%Z$%Ee>#p9`Qcy zF`YHym(+F9;f6FC)mUq`TH(h}4);1m!f0_pEbVL4HE7;_`5Ww_tG@4i-`W=TPy> zpVbDX%HtF&k~Yya5hGE*SLC>o=ljpy0{6d#6KX2+q*~1`FUzi`Qt|TQgJ5H{PFp!S ziw{rTucs;A%1Gx%AYnO`;!;AFkD!CQ;h}fj5-{UssvHB{L&q2f_?IY;aP(%6T^#jj zacyy<3%_>OWI53W4TgDXv>5aA5<&L*#56ZSHtH#528nRvMc78A1o|T$~q!r%r6B8?pa`FeXC~1ZrX{(zL-8%!e8(Uqc#gjBVA_B8uIVCk!JYOYn zlEAF7O;xP{Ze>Ny%zxgb$`PNaFsckiq(}!Gx~;U%t5~N1NBF%X zQ(s>V;RN5yvT9aTOEqAs4Vuo)B?^%;euGmr)IfsFp&?$To5SXae`ChUyQb^Q>8?il zbMg#=ECoRc{d(poYv23kX8>qA+K!&rA@H+6T=RMdWr92=MV&$=H8fjpWLI=JwMCaqeVHg=d2@8Zf)UzfAI1RiW{0TrRU4<=r>+MM%{1{XGK z#woIgN#2_p?VJdeN}15`lP>Fc2@5v5(+-ZCy0-pSzHNm=G&f9G)Ies!t(2HB!&eYWb;lARe0#_l?vl5cms^M7*MU88X>dXP%s zEyIZ|*au7XGd=_*-=GRT=U9wWl^{WZE6w2( txL}#Jgc*Letg1YMc69wb!$wRs&@c6Q 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 J!^V1RZtr>>z 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 bO)GS;66c?KoMs{lzydp?XQ*4OZ5#eS;=a-uvDA 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%0A0Z)rN_zUJbODem%r+h% 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

!b-T2;RZU63RgnPMqNllEEA(cMd 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

Zz{C1g&mw~A>L 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 E3;Micq5uE@ literal 192075 zcma&NbyQVb7dH%t101?bM7pIrghO{rNtb|hHypYpr4f)8X^@m|X^{qLNu@#Z-FV}< z_rC8p#`lL~$XR=@HRo^Unse?*Rb?3r)JLdraBvuMvXbg>a0nC+{~$=fFAI)HR&a3G zaB`Aj&pqMyvk^VWk1$RS z{8lFkTg3g}BJ>`j3VIhXlSM`M=aYZF_JSIU5-~lVWcH7Jw#nh6(tzj1?~(qo_3sz3 zW8r8i-sQ0#L=63L;Gf$_{{KJVN(S}^5&w?^U_bEU6+@C?vRmr$*#Dpi;4JqV%m6=e zYomyhLI<_@*IGGFE?ClLdyoT%0`!}Zp1){gfX@p+`0EdVmvKK3J|#{(I=noT#)VN9 z^6SSe`Oe^=r$08GqXN@W>v zN;u#j$^JvB2C)IcI8%c{04Y51_CEx2xq+AD@$xwTi6iU=MHQS#3#gSj8wLvXKLMry zHOs(ov6otk3aQ`y>m|5<3k7(Lit6t-87Hc)!nokjybX6bGP&LKg(+%K2nG z`vYPB6B&gl=nZ2LxPVi9O8K9^KTvNBs1Xi2EeX{FNdFSTf4CXQfs^`k*Z&tcup3Cc zDU~V-fB+M<)abW1K%@aiJ5^J7CI79f0HOb2hav!k5C1oK|2I3w)X=Ekl6nIu z$Nz(!0u?APDkFTtNFi0;zbSy;0emLh^AtdUxu;Zq(s{)IRG2`qUx6GHWyYd|J{LMEsH@Spvu4xbnYI|t5- z=5Jv}KrH~uN@K9={}N}s2)z1lefx(F{$n@TDJ1^gE-t`-b5DurKPdYxa2`4+ifrt} zM8_n!MDgFUW&&KBtVKvk_HW1N2P%mF(@tQv57wEfASM1kE7-xIka|EM6|kwVw9>c# zTls?{z$iL#;~z2S2L2mo7-ajwa!$9@HF5&e-){`W0ly!&yeuTp_?ObcAOjC>pr+|LO)~JtpKSag2dLYF8!#}P%K3Y* zaR6&TLNMD0hqj;~)AesYVVB@ndkMJl^SA{^|K;;}I&hArv=mt+^uHdegcX3`y+X{@ zA0maFqr`*$fGwT{STXn6k>&q~;CkqxPa>gq55(yOalieWxZjLo2QodF`%sCzN5Q}J z_CZ;{0&YdtEmAE2*!=;mKlprDsd;cXwrpf5^nYp^g$VrdZ>=hMAmNoleBWRC_Qx^s zBY5K^Sjn*M;lcvwKYYgnI;Ril+}cQ@D*V@W{*Buj9!1<=Fuej4{=c}53&S5n!LAPi z5_Dl?{7*!q@BKNzmp7F{5&IXP zxn7`+zy}C(xgG*!x`JHb|4;$mhp51wqACH#m=~G&?BB;g!9x#tHd&SAal`+^yFRcK zIR9XAAHmkb0JxIS6Yv1S!+#!ZKARGNdQ@K?^?z{(`z@RBc4|*V_Iu#4CN`PznN92QzJ~$mqR$4^yKMcDIk0Sav1ymFdfhUAc z{`?=vK*6s7R=1x5E3W60>c)RO3H{S20LBOS!(|@E^8YJyv3y94xKa~AlmG{wAoGO3 z6%zX)R*U1&`ux2Y^Z+Fu5#Yh~!Au2xtQr3kc~t#C8BfGeB8pIw{Qk?TJaCSBP>^!O z|7Ab_IY-q8Wd2*E|2gM08>*&;NNo*v1bo*s&)PtnE1#12nRx(^l_oNlk& z^qXB#EJw3Cf1P}H+MQzb^!8rcpR48f`0<$4uyvrp$IEMV_iLH&Jt?34%5=G2qsw

6@0 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

IZ|0$@*f4a%v6ch#*Kv3!_jN34g8P1x) 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%0DO9?PhKnd`&ydz{!6*Ob#5S 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

xP4hP^i7q~cN>GXIRJcmI@(P34sd|F?AQwGY_% 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 diff --git a/test/image/baselines/sunburst_values_colorscale.png b/test/image/baselines/sunburst_values_colorscale.png index 8cd4408a36cfbee86eec58e4ba397e75e637d400..9633aa73b35221b45f86742b31060ecdc267fe53 100644 GIT binary patch literal 70453 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 literal 70472 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 delta 63902 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 z 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 Dj+#ru diff --git a/test/image/baselines/treemap_packages_colorscale_novalue.png b/test/image/baselines/treemap_packages_colorscale_novalue.png index 5b1049417f1435dca7e116318ec55b36687d970b..dc5e341ea40012e68690988f16dcd2f68d0adc0b 100644 GIT binary patch literal 244222 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�k4 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 z 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

K;;xNQA%3_#^uJyJ=SS$E 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

+sRkmkdNR;Lx^a<%z$xvwn%03{KV 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%0Dt9MpmYvB$cV?`lgrP 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 literal 244235 zcmaHSb9kLw(|2s!w%MeyoyN9pHnwe>jnmk68Yhh!yKx%h+d0ocpYy!e_eZXMW#4<& z=r^<0J!>Xh{*yR73=Rws5D>higoq*#5Gc|69~1=On^k)Vb08ojAW0EHWq078I^g=s z;;64@3}-oUU{KZ2U~bLZ4b!u^v$Kl+TnxoR(TaKV*(oW2f2kCE*R#Ry1cbm)wsYEj z%^2Mr+O>E4!1k-AzWLalcV=g=drQH;F@r<_k@i3_{q`X*2}RZG3;0@I6w1Ew_s46# zP_-bAZ|hFB%>Sk_0X$JOnRXid*YE8kv4K?uS`dF{@CQ4AV&WbciDJR*ZW096-?+a& zydwmu^jq`2%hH6FB zzs0QdvnTxbLiEO9U*O+`%hc)(__wy~g#J%*z~v8jNm?WS)<_FX9k{%yIRxAY%#r|P zjpTPB)q%J8{&vp17g$U1ANncdzSDeY4gfd!O&vevvd>WVkyr0Z`G|1-+jLAI=pjI~ zMCcIotlwgRLjO?fHzoddlKeIDCI-u29$A0@xbMqkmA>G+h5xb}z~qKtSpLrdrza31 z|BwHo1cHg>Enp;q8~w2VHrijF@f#)Tfe9O3qrpf*X2Jqy_}w4^je>sv9?8w{mkb5*~%IW zMi79*zl=W;3ozCL^44!eX?!4SAOItjHNAt~#tt5K=wHrEBLE?noPd##gmU2e7qcEH zEO>w^qaesx4Z#3DGWg4ye;D=Oru>T)z(M|&kpM{+ZWn9ye^(s9ijJ979tB{Nq#&fy z|26XrK)C^P`F*p2|7P{>#^06ujn(_3|3kU|uzJTK`FqU%AIizUATwb@YXCE+YYhhc zjh#Qm1vrS7sKghs75o8t^EY$8hi9YcyT3iH)S3P;hYTWc%HMHF1r4y5lu+2*?@%p! zg{lpT`W-{RVHmImlQ)=U4v697U69t_f%9iH&a1yiOXLt zL;t~<2^&E7e`u!652jvF{|-D2pe5KyfVKLTVxi=^pTZ z$o`Di&93*TdfHcY61HLjS!4U1R^~mvW%gC;^8Qp{0pNl^11_)f9p|b8oczCADoS91 zvE!6^Y8LomT{7j z#t{PlD@!Gz0~8;Nz&bGdPYNyb08@Vt?sqsP0z^Sd>~x{y{9Wk6iUNo#uL=MWHLYP*E`Y-q0^pQCWqkjT!Fcz>t;axr15Cz*qXsr)iDC|MxZkVDO$QmESxEQ1-?B{v`~> zdpe=;JW;p*V=)>+;Oh9l)}~?v&?R9CGEDtuXMsV0Fiarq??|znsM-zr_wKep2t21G z@P)sGj`(+b{h5ul#qCfNT-q7Nn&4p6-qEaEFOh)Nic+T?F~2t>a}B#skpEAgK$|C87I zmWG83&>e}ePHg_t1kcs@E_jD88*|_$feEClTc+U_p62IChAISfApEG*THbZMt zwovcO69Vu5ootvuhThLjMxT+5d*3Y%puUXnH?b`>BiQw@ms;00BG_&V#+SD{w3ANx;A)USuC-HZ~D755vmWece|I<5S6Y6M<{ z=SE3G1GBZYwYS+L`rjFi1{D~mT~tg=)ik-d>ZEIQ7-q!VsiHOiPXzt-@t&SxB+%Cb z*W2BUc1Pk(s=YUR{5hQu<$EvT<3vLo9UbL0hHUu0@m5wf^jp<* zhTQ$|tSQ@N8T9nAAH`Ao8ye# z1FTa#pg77gSj;4H9>1~If4;voU#>R+upfVqQh`Z9KdnBfHI8@g(9K+Ye7ZT{T_)og z_YV)~Wi#KtA#}go;%;wmBVk~Ke7@cv<;muD8)`rAiWCfl*t*#2|C};E|3yW5-_71W z?(@;r<4KJ)-|iAJeB0=;fPo{2%?jD)85RZ@rH&YiPg&}l5(bYr$4*ncp|~8j66D7{ z{-A9?McbO1nutz@SM9p#=>^)Noc1T;ZMa>3rZIf+lU9YP$BV{cmnu=LVd_ z)Dep%pr@BM`<4Z)k(wk$E}>A+4}3gdPU@uiRHN68py&hBU(ZCK9G4Cqd6)H z&iQZ}813$~d1I_)u2gR4aHbH8#Td#Y^=3w#&>yWK5|hzzGJ~B6&sYcTxC(fPdtv&>qnfdR<=FZf9%p4qkt6Dm0+L9&T^X z*HdLM1#Ps2(L-MfAE}9kEH&77=E@XEKdRGD;9UM%(j#SMMaAcK1)IE0F!4+B4}?VA z9wzh!qlQls3$!+Vn}J3sf{U7D7x2F5g@mOdT3#*|Cj3DR3wK%2!KR)Jy_~A&`=X+0 zv9`W$0@s?&<&wbTB9$aVwRJU0nY$TE=o2RuDU?5bV7u@I-5CZP9sv+G-rgDC5;HPj z6y5n=?~PiuZDtBY^LovFG%UojAQ~HZqLUD|r2~~UkHs$8(i&@PdocC9{3R19Bx&V+ z=pwiC6Zewq6PJGcRSQtl1wJh%B0nFACuPY%!^SC6(o(Hd_iz5;Aw4u_veD&D6p5+f z*3sE{c~}^$=v+5np~e_zDE55#`g%D`=t%U*;87oiI(fj)_yv#vF84F-0?=Z8-(D~Q ze;j4e4VCA28@|I6>8!;Cx65X^1{a&X%9S!AE=aBq%#%|^0MK9M$Y(P!Fw{?4HsXl> z+IilCh4plI-#lAyH{a;uU1_wU^o1?jmFF+;`J^u2UA*V%%r8k@+O=FLjwqAP0yxE< z+;?3L;pTM-yr^LgGyHu7n1PBz5ja17xIQRk2|q4sqiypZ+MR+4W1gW4!t}=GrKX0a zRjW?Ijkk!)-bzg6p<8QoTxc{wmYKS*>Hl-yT|~n@e|Pk!~0m|ae3X_OMy^- zXn2n7@{p41-Ji@f@p_eZ;GtsFVCB2t1hsI;V?v&+O}rBK`LeOJl-iN7Sgk{QO+i61 z#>>!XwUlx>sACTC2FQafuo{_%>H_s)@?g~1MI(Sxn2X9spPqR;$_2R*4hK}AwxwJQlAsRxZVM_~>VXU~f%=R`nDcI#?(H~+*bk7%n zn!ONroI?h^u8wJPA;9i8RBO;r2CG>hYJg2O7)%H5yfPOAjS92dR96>29#A5e8v{sx zeh^CyGUc9kXW&d8?>?xHiS4UZjRb)G;{D9-u)n{*OE1t+Y6;jM z@}553%t|u~mX;~(e>Iy*=pTSe!vUdV1Q>1}3CwZP#~fFA*}$f1;b{!818)#!FG>Zv zWmB>BkdljFs#0CK>Da)~s}-1VvR%uJH;s%H$WlK`d6Me7Z-Gxwu)wET;CsJj6%9;t zdE!Jh*{*AznT+I?mNC)GS+2D(kIV{z_Q%B`X<$CQJU{QE;I8cC)5<+TMkuBo?lNQy zmh_TS+qbcBr9xD&O{-C%Db^`aq17`;m2#DQ%BC@)-VpI{5r%Wy276u$emu)r?o3KJR<5^$?Otys1e&L*)GY{68cWK6~2h7;_f zj91dev#YpK^eX6spFAHcO&b`a=cATC(rOn3ewqy6`RFO9imj7gzs8}1?fT~t=FAK% zYROgfL&ccu*9vy*Q1m#OE)_N=twzh_HS13WaU?=gAoMi_Og0UGya?{hdWx2sXXGlNdIgOUgpB_wR?hmaWY5wDbZP7Ct{$wvh&&~h`OSS=AxVe{O# zC8fJZ#p2QcdjZ%Ts@vuW=noWL$ML zVD|&3Mt7dFNGGHwa=yY^kYv~r_aRYKgrZcOppr=;cDz=yxXkM$oafWL73YySqAMp% zRfX72%{3SPNZsG&u4%|_Gz1q{@X5j0n|jibV{H8I_hCRFK0q#`<5yR@Vi)E-t78RH zUQ>~RG%yAx0ps+{_N1p!&g4KC3ZFb!bVI=RnY(6hJI+<>vJqMI{Yc`F-sH5#*tMF@&QMlAIzCeKWdjocEB}7AMz}1oa zv_M8Bit{5feQ^P~R)bs+#6pssc!OR@3Xk{Qx|<^?KfPdqAT#|@LDS5TaeehP3q4nM zgz3*~BMme}9efi9i#g94-A(~YuNgic*=<2jkuro8MxkGGIrv{HT70xMvBTti3Yr=$ z<{&uiet_9X&IIUVNfovM`bmNW@%9AU?JdauhzMd2tm-7H3!iJaZs^(h{G#I?xP^` zdJK6U_%s&_E`lP7X)zZrinLjCQ2s_8GwOU!{CFWjPyG=tkqG!~5Wx-J{AK%fUHBC` zSxV#h*+fF=Z6z$kh|50hxQG&M?V6*q{Bh4bY{5*H4;lynv4VNRNpR42m+|9np^BZi{-x|*-V<-GON z{IG9GYUy(3k^@{V)Sr4}j0GbAh+e56{j}i2k6FKzTVpiEq{4q*If3ASN%eWaoW}%A z+J~$J_v`^abF}~9LC-e#$rHyM8-?C`R1es@!ryeyVlmS!=(@1~zp9!v7{J*m1r@~w z{cRps?G4)5DMcsS77K7yrZdRd316fO7tk9FL--nGDn6R0H#1D8RqFyXQz-4LTtZFj zg095LNIOa(kLvBTIvwnaADL?)W!on4Xa5bV|5TdM1N}ZNm(ewssZL|XtB&n{ij9s= zCKN0&SrWN{2G)55ya2#*?S>+hRB9WQkfEfn=DFCp80V{Gv zwf1J+BeS)xuRT*&F%|IkHJBybs_cI%ExbOO&RuiZEhT^Y_U&7qaHM%RgNE#S zcnGJ%HJ+TtPb-uzHBlk-eP%XKN6)U6ER|BksY<)Nx+19|1Hf8Q0>sC)p11~J-_p@_x;<`UFb zohxxyGNumTjILuYL!?tFXL{KRy<7=`E;~P>mY;a)*13jAySw_D_S)U6z9JaS0opr& zrQFVUVX#U!fi(kNBkKuH>ghJN8ZH`Ux>3UW1ZCR60)39?Hk9ct%5Q3jSO3%_j%aM~ zxbwnfw_@yUx1@cO*74TKqs??sJk0d+FnlqC1>5ma{f4jvC%XSW(z1dXrH%AKH8NOLm>2?@!~sD_3{ z-m`PT7rt2u0)U!e#y%gWVE2q9ym&C^w8NlJmI^oC>mmLMPXc#^;>>recFYeOzL$sJ z>qcxoRB5eZ7DC?i(2n}*i#4yL2DMd%!W0y~ecG=^2R#(BGUd z5>M^i>>cFvymbU###~ckSvEtyR1NYPy{jysRB8GL@2NQfh6OHH!K`cA+ubap2@ z-<{rwnC3rIW_36{3Y#=)n;qpnN~VJPlS~7W z7fzyzDXb(wBAV4=u1J!VlRB>lNAIgBY}Q)CK^W_`7GyvzKukcuk1smKa5C#7D((mC zo&<8~U0r1F0%TsmJqNN3J}n0a$Ni7a3fTH_C}mENoS7LW%$FFN0`_aEViea5V;B}@ z5Q<)}$a;Czs$*mW&RWD1mS&s==@+7FLMrf(?07ZgCFx45v3@x-+#eHrdxa znWOT+V*mv&AeJ+dtXi{lAvSq@m0-jb*Uko1W8DJatvJ zWUzbex$x6sR`5^5T=+6?0=Tu1Uq_O!@HbJzG2A`VU65@c z*?YKBH0szQ42lgMpQZe(7O;vRD8#`<&Ej^1>MG{Gy=QdFY^`R;<5K&zXYUmkE|q}Z z=F_t8w}{v4*rOZ5s@sHEM#V$;u|#T+?2U)NIw&(@?OG*4BAxAHOEh99TvOZ@PxC zn~F6GDn+(z*Q-coFhd%v%mP(6%p%EKp{03$fybMi%NIaTM;ZIRk{SM?R=M23E=OZ1 zf!wS+)i(Si{WpE#sciRkeynzqP9*24*4=(}+1?h_pTMGOvReu{$~ves za&nI%fESfVLLZ`2hheiWlYQL7 z)L-YSdK-c_zdf6*^MmS&sOg$b;dTT&T$0O-tw|2>%cOyy)1JyNHaS9%ORn>|-_}Ky ziM5U_wROX=#l`#NI#_{xdhzo#CJlKR!a%5QhF$-&wRZ>F3<0X0TVFsseO$ik2-)`a zWT%)Su!lmCQtP1%YP}yqfsL0o`C@ORuo`p>q zv4t*h9GMi=-4}(kG_Mv=f*-5+FU@!TW$U~S42yN&x7p%+SVr;2};A1HI$V?w=Kv);`t6d)JN&Sd~3Igk1Qg{4NR zU(&sYYq+_7uHPZsshxBO%f;lLnERtVrOd}42$bion?7$!ifO-k@pQ*E z0^6@+U_D>>=LgD*vvzW)!v)xkk4||O3otnO%2coSpc#Xaja$L6`R*?+^sy=Q`S(}S z=C61B=7*e3nvH%MUyU=i`w{cgKfvSUgIN%GA#wU>4~<9G+M4TnA!ks?`gz{vA^Bj} zv`;%^#PTBy7D-N5>eWOSvleHv2PTzkaZo+p%nV&ODk9a&f0^kashe=gmU07G%2BcVYdFzF>05Icfe6ih=Tm9_B@C7v~mOp zX$T;)_&eidbny2U(DMO3O81Q?d=2(dgVM4Ld96y9WA_J`xJHhJk?JdFocoYq`8hg5 z<;O3lA%tz7B3tLW+%uEc2ssw+*nEqU337;2RNpgA@|xAi_-x$JB3HAJV8RFu=jh4K zrx-u^OdZj;WEmss4mLYGQF zU1=E@IrI&>a^#&s*l^~IBDaazF>k1d>fT_K)frp#MF?u&+2-~1TE2$z!LLPZ+J5z( zKgF6*8PwY3Lqxe_5nLN*puC)7a$xK%Y`DA9C-Qg{+iLcIVyb&k@p3N!FG#4mY2Neb z;7xJnjyZqC3n;9euk1d9g*6cLy|IX5u4)-VIm4=hMJC z(s}8jYjQ@w?(DoE`?fJdHr?#>{c9-@Kx zFh)16kXl7|o}awH%lU<+Xx_h%kQ@yj8!5GEk(o)!ya+`=y7Q`ZnTA!AVH3E0wI#tI zwumkn?kSDjsKuKq%uX$nTL?S6-y%Ore*2b;k>}hCnqc3;+z>lf98aj0UE%4HLhz3HMkg51^I3_ZG52KVS-{KdaVmO1aPQ8FY^lxrdh2aI!F zSUtifJi5jzGpMoon22iu$1i1(rNuHfs>*Ym*I2 zfnpU^m<_US+S)w}4)?&gU}>Nz1VcD*xm3O&<{dZ7l>7!0UdIW-y1;ekW(rnkbLryB z%moczP-T+C8$M!Ou>|>w4C`B=N=q<`TkKFP@g_2q#SD=**peHk}5)%^} z8FW}#{GJVxBNTyFi1-XZcCQ!=YSiL_2c@}N=6IgyBoySKz{TpkKI&Ul&QMFl8 zD|IAIPB!|qB@_>?;AAw}0K2(SeX!0`_v=z~IEY!4ThfMs2T%V(39=YL*Qw72HAeVt z)|~Kbdf$5bZg|ZZ`_SDT&bD@2A{Nn6WS=JSqok`maRevz9CEe^wGm#Bo<}`n%orSC z1CAJhkuK)q1}CDGk#YTqqa5u31*{=L;54zU#r{*(4oMd7oNoLfjeJWxqwt1M&P9|o za(2>q9K?(HGnl!bFZZArgH}QM`X;9tTYV(sG{ee>Y!Ns0@q#I4kWkgoJnHF1c`c`L zQthtT@bnaet{g-JTu!MH@*PqIbU`xO)g)?`MLOE!`Z0 zN6RCG*`I0q-x!igK;QplHAjoU`=TbNB|?R*+#S*tDC7?c<0sss(l4u18P#Q`n&hxTDpjl)bzXPtpB^a5jG zqC>F!ty~dGnd59$#i|dIY6m>^XV82MU)a)k1WyS4HraXrI*NX<1U zZMy5&#|OSfS8tXwK*nVh4@@mJVwmHg9aka_kP&+lqCA8<2f|%pihY%95;H8p&av}? zmV=HAcDf~+9io$_;=v&^-p!ashFhzgot_}Z(0Z~R7e-@D*z?U$DSaUXwG197*G4;{ zGyT59;^^ac7ql&WDPtm>7kQ@>hkle@_`g}J#NTWm3*BUtl13ss+wgae&J{&EVOFN}>IG!;MCI;-9W>e5D;!GDI4IWW- z(?tkz9k*3jPv&X)eUX1Q0ANRgSOj&~@=K z@;!AEUrcdJiZoKaYC~;Ua5fDpb2;u708 z#H1(BMJ?kSZ22%I(uF3VzhQ&;?4V)AJC^OvxBxOLWZ+d{gv58~h@xY;KANpvl$%0b z)mku^btV_JIj5{H!ZH{%Rwr?pgGO#~KKyF$c5@SsmcRYxsad+6Bd_WViF8wgkHD3Z z>MlRpk8CR+`O$TS=hOHX^X1J4EODs>si|f2Dm^hY#~Eru>2^X;YL3>g&bMuW-PH>z z3Prot-Nic8#H9BH;sWuf71kW>nu+!eatet^zxa?6Ze6BXXlW~iaHVla_E5@OIO7N# ztiMcWL5S$K08O$^30$tb$s3yrA)|ucoHJsNCRTsS4%i++rV6?${QTyPt+yshjD{^L z0)~c-EpNR>g-$W)G-VO#b%Sib2ZIKdrG=7Y8K8vgT9kCZm7tX2p26T@5Tj)y}yiv=71VJA3P=Om7lEC6GCRq0x(9GIPbxYFnkE#c_i5kAF0|tEn4}%reU+ z>3Do8-&`QDs#zRr58zl3+@tu=9Z>$XvMow{o+=nU(@z;u5LuL*dc31pNlNhCoN7(k znEGk40EDr*&5w2F+Z9^nUCe`#a-bI4WD+c}Xj6Cn`cF&QA%%>nB6fLs*>=~S9Nv%g zTAesJX3Uu>85yYJT?&N)neFUdT`PMEhW3b*lmhCa=1$EeN|a+NaUbkbDAkTozh(J{ zB;o0Zc=50yAhaRXy3n!#15ZPZ2ZhiP<@(Ufu_aOn&b6^0dJ<%Ou<_Gcfs82;M+6ia z(#3VV-Uu=b`is<9-5A*V+VU031*DtV7`x%11|=yXEI3EMN}`UUIzOgdjI(tq3V`u=lE3ALPRo-W98*)WR-1mzj%U# zQa@2kJDT`?XM>BocpP(1$S-A}^1P8YcDkX?(_no~dF`!y3tE zb;XSv;weZ0xka;hXI-^aV0@tIcD|$T$~aLD5rAS!^X?8!aM&bNzgKw%kE@ArQXalWFMOcOEa?SNtY?xex6jjDeZ* zC`0V%FQpn=FT-OpYvWC3bq0qF*7($C#d>LU!ec`n2xb=+Q%3g%OUMnb-IO~=^|dFG zU~LCf4V_-3mtvv%QVDELm+)R2cS!qKT-^dWCdZ^n8nv?%sS&O?_TqOUcx>CEGEpxq3jIEeU8E zCe*}>Xs-uR#N%2ZlO=|DYjH=0n&WHOork7I;ILIjh1P%*%cFxjB$zazR(kDlUQyM# zCgU{DT@&ptB#Xx8nN%E`%KDfF2BL=Yb7p{8x7wmq@H0(z7X=+K0|xmNSEdN4#t4k) zX4@hEq|Wy4m|-#&?_hCee}6_UAv#POH0x655zRO|d)a_oS%T>P@mQ3fm^#!ZgG>|d z2LXo%7BtFFK%RFXR*OmLn3(!tXKG*&t07yuB_GW#mXw;gcgiomd7DkgM&SU3$wh#*@imba&nfz2u-=$KNMK`g(p zy{k8-l798QoP~M)lxM#cdqi-QsT)MPO#%u%59f7{Ru?QXm;M) z&1T!DY4)YA$cT#ck4s=+ZJy$zCh~-?y#CSsuG{0f;_}19trTq0tNJ2fSG3^C=pPJG zX@b#diIPEB)&A_4w$CN)nFREx`#*vCk129F|4JjN1a$0g>lmf~cU!4cxWJy-95rO} zo~jS*xEi2%zSkcs{qL?`4=@_(qY=GWT_Ds8KvQHe2X%`is`bfAi+$pWqvrT&?{x-{I3mEY#IqHDqjCcqaiORFAPT9^2QX`-eTq%gf4Aq}c&2psc$$6JLI>o0U0rb{ozl z=>gJh_ITZB>T6+ipR`*hzD#algI|psl}ISK&u<-x{1^+_5$v)#LEAI&0E{V{BypLt zbzON936k-IIb->7D%{V(KdG}`qJ8Bq>{I>RV3{uul3#-m7&uYxu*_$sbmP)dEOhIF;x zrn)P)$Qs$Z)MR=J8ZaH2btui-nkrdfZcieY>%P{a7{S^MNe#}i@P0qnAl@0Ep%gto zK>lG3@@?@miq!%lX52>&{dO5P0v0)~Je-fq8y zY@a4A)vnucO*}F(uc(}dwj9^jh zK+AAD6n3V{$6r5}u?h*!!s6xNf^;&0)svYiVkdIVI^f=ZAR4`{o*N!s#0&kH-8csh zgxHC0{vmeIyL0Iad% zGUV=-ju(;L7fnz)XiuDei1VH-Nxgix1Jc6{(GEyUCKoFwyea-$SY50)))*2X!E)Iv zzk1GXY&aiIbf<%Lv0R_LT42OxT+HQ=Zv79fqa$E;p|tAtgNgXhoK8F2#CIK zRTx5(oxgqtWUUm+ZTQsIF>ANZF;^&+B7lH^ApKm?!3-v1R$5w+u(`as5o!OVgS30? zm*ZP|PSkMv9XzQdmTg+t-R<-Ts-W)6FT8+kuCWgat2glw9#BSoTqD#6x~a)3<|ULr zb&}2JC|WB;Y1!VU^Xs6x)Hvkud+ThmxaRrgv|V7}u;xLaU4J2G7iX7+PdEmrXXA1? zGd;h`KRv&^Y^hd!u+1ZO_7xn9Arf6*TvWwWF;&~(uX21e(?|z1V-pofge}|gZm$%T z$`x5#5pXNA*({H5W$o|jj zXz|g7(f&ZE4;M8qy;zlL;?&4cWlq4ojZP3h1qo!gHu{{;1^wc9M;J?ai-QDn>8XlS zup~4`?S+K6nyg#NUz|UBaiTyXh!F909i~o?Cc05s5s>huG7OHjBvPJBr7{Q#&Tx7^ zG87al0h&jscxfZ|7aJvkffu3bCoHt=JHXA63T4@!GvebF^6UjF7NH!iDR+#LVkA^E zdzY5fLZm%MCno02CQnNx6a@k*GZWPmKd&gJJqJnKr-bgxrV=p|m2!>R!6iKJI3~># zwJ#QIVDar_=~47?X&6ED@%d_6^a+jufi-;59Si+r`?e3A*GYgzvD6(*`MHAKVuB92 z!ZnE{N6fRq5})cNSZ8)_PEc80^R>m#PZcWQ)(xYkNmM2R#mC3z;cN0ox+gQ`Pj7Uz zfq86IAc~8Q?Bw0PJJOt}3s^V?&;=jBiyH+51b#j9#(NbLzhP{@E@&InNx7Wj*odQFxz5!LCRCL)@Tse0{O2Bd~zse-TT*7d-a1D>zlj}yQCYO4$ z71XaPsg{hwSec_qeP1p&R`B$MZD~=L@-;2NiI1n2kRI>*(YdAGev7kM)gBWTM)vbN za>(hbaGgOv{90Fb6tAakWQ+XIANU~~KJ8JPn^Go%AekKRP`Hj}p>b;);pJCUoxo zs8~7N+dfM3>x7xf$V8bB>*8^{!ew&UVc4wGCza0uW^Ll)9+Gw&jfN5Mc-)Zy!!U`C zc%1fr5z-{D@fs@{Ke%ZyTUIm#%9Y31XoNvIX?%A_kf}FrPglw9wjCaCES?_@a_fC8 z@5+@*i}*P?vDB)y<9Wh-l`~QZMdNa}M+oup>CdJRwA-8|ugD&jDm6&=DDlc-08=QG z9#Xu2)dHl_-yRMK<9q?rR791wYb}CwMU}R(WVR?B()Ep1e(trkO zq1NanvpZ)Op(3fL)p_xhS=8h`7{pjS(T`MA!fS)_(hJX zW!!gqIvwBMd=oNGY0^=!eRSykA$>C{jP9Ifhj1iuv6#S*uYqnjdf-DJdy= z)!e9aGY9CU4SXEU;q|-#j2Vn?EFUjanD7@kA8#bYx5(#)PuQdJU2>zQxwmjh@ay#T z^$oC^1pW*~`zEW^WIc*cw^_Q8kXd+`TR?~=K_@DroPo=u@L##}4`X{#mS7Q+07kdjtSTRLtBWBd9c zBVdA#lvJM$O!Zln(5{ovPs0vu`&slfa@KqTUcbT11XR1L06z#f&#?>x^m5q`N}~*UYw#R`G?i!L?o01Du@=Ck53r5nPMub5<2a!!I|=# zfJV7!06+>&##699I+Ag@{tWB#ei~yMY_?fd9h!sV-aA^X!u7cQ84j4h7EVoxk-McD8zJycDPPf4A}cCrA8(EV0kdP$pCw;I0VUXh z)O&e+zzkN(cX(_Tu-)^e8bT;qe*W%)@B863YBf3Xbo9n}@QQ#bF7ijk2E3vK$Ezhh zU;m^Ez=+zozlF7Rr83%7HaF!s*3)dBztj!)jNn)7^Y8Hyot{d_7%Abtuad}thsMO> zG%1X7C{h|YA8e!sm%n1SI8jPd^_O${@(IJ0C;2HV4;;l@3F#D%9Wg;XC~7o zUM%TRe{ZB!x%h-CrAyOfBR%-~Qhd@+wo)u@P!IzeV8#S4EnA^>j@mtUp?JVZXXNbM zArF)YD^0@^1M!H+|6F_Ty&B-7H7}RRW-4Ka~b0WXL zzu)wSBtVkVkC7?TPZaVx_=f)sz%~msRGsX)VI;)2TS`NwbuSvivR(bvmBWt?d+A{^R==y32<@v z$f#ioi2v6meCA(~O~Ly`4b-`qIjZLVUh%$XUjkG4Z9;1nITEPf2(Ef*a~u1&H!{a- z%XP)zT7#SSAq@5_4lagQxJp*w0(Wn(osa@gR)j3<(NZADv$E(EnyWjpls&_NLlTPs zh`6}li5}eCfawo;FxVaOI9wRVeR*2K07W2-!k!a=)3)lJn-haG=S9XkWPmszV9~of zYaGZM6oxCZ>Kz{blyW}Zi;BpnE=L95b-2=);;azCpV3(AZ=(mL?&7Y7%MVgtkhs`{bHvGm<|JAl@d(_)4~KWRRD#En2PZQFn1=s7h&2Z zX;9R$xVYFSg#kxNNty3FYxTXwhScOfmR~W52S&TAQpfh-tXfFGuT`F57VO)8!4y?o zd_M9bfAB~tNV24Kp!^4x;AA;^G-Gzn<`0m`h4)2d(P_Uz<@M_~4@%LbgzM#d&;y7b z!YE+LaRLy7r8jbhqP>}nB|LkzlyfS+Pw}54!6+iRp2A>6Xm^yI`_(dK5053c2Sp(Z z4S5Rn)&s`3o&%$CW1&RPVSFA;N_%(+x?kJ09@&>qED-QG86nPxFX!Y|gTYyF00>i| z@+}?Yg+fkgAHTobFiP+h6Z?kJr(K}@#cgLOdi!BUR*zES^y=+aqW9PBZOYiq-gxS- z&(TLmSnim>vghHR6(jwwt6iG+pJly`O{wkoLU_A$mZ91aJPhxM5raZj^`{IF|006yofa6ji?0sGvRZu4%_VF%b}4u~qk7ylbFX2t^_UJJ4 zOMFE744cR&;W185;}OH~a8pBj#e3L?T?@>P<}&iG$1db9tsh8gHOr$cZ??BXQJ-y! zeu-cJmvG3t+f+24RG+YfehB%R}pkQSJ&+(lIUWv>E1tQQl!0V;(EO) zeH#x+%jG$Z`fS(SH_p0ZwByT%X5uU*Gl9g~%i-|i(SemEB7JwY*Oyuf4$+oe@p_d~ zs`2FK2b44fBF`XbC9tK{Y&&XV)E=Z#K$20YSkC10>~8TuObZxT=_!omgUP@q{9v6X z&qN5e&R7o@PacBCP~U-+?CRP<=U5T6cREUGGgB7dN=C!2?}siCf4H_B5FkYTVb~9N z5sP<4jB3$T2)cIY>(mMi`HE)4AcW2T)ppXnu z;?iN`$#(r~Ya$z@gbSs63>7hMGKFw)9mNWnC`&mej-}|=92m1G1Awu~$cBdwZLl(~ z5?JIb4Y-E;JGNOf%JZe9rb3IKHZ_#Q9>|-s-5l6Pl8ca9?`ZN;BOYaCk|I3tF~eNea+D-Y3K@Cw6sc?&5z{=2GjRu zpxyX5PH`$K>%<5(~{2xSo$GPj$a@K+hKq z?o129S7)D=SkG<2=hW$^tYkMmrlrhKP}s)q78RC%v&;%Us7Ewj#P!{K-<0?7ISbSC$vBn( z7uu)Iy|7#)coj_iTb`TZw_aV!+M8(4y1(c4R&ZWKXt(A+lC@ge3ieuy8S?eNvCXk2 zxPPR|me3kFQU>Y?J?;%2F&JNaQ6k|`7+^u0$3f~d=s6C=2pc^)&novaM&?B-xVj$B zIU-{wGZ>g^8-Fv7=5AZ|Aih7*h2EnG&?=-%Vs>wc%2Xt6S3^mBffTE z{|t6i*6^^gNfcq8rD0NQ@^X`P91{nQQ}TGu!(VP%2(ys8j)_V2KA3n0Gy=?0wxC}U z<7|a0#QJS|ttbrWNSK(sN*|TFihWB)N*O<73xjTG(AFH~(_g}y+Vd2% zzvK$FLW}Q)S8R`uL)X@le@J?Fj``Yz9hHqq5-yDNC8YB{uDIYZm4v zyU+~cTI70cejV{0&mjG<$qr%yj`=R@2uciR;ZMtVCR10ticQt_0mlTR*|I|{j$+I# zofYif|!7-pqJY^yPjOU`0+abkn|^u zo}0xc>b_t7-BoaZ=~r0!IiNc!Q)S>;YC~X9n;J(@iK6*cGF#3HlT#fdB>&}uefss0pK($T??g08Jo=^Y$|8673J`%?+U zP4kP=sS*mzBA@yEQmgR?y2Y=Kn)o)FysbRM;%!`}F>dO*=>PS)oYO!`vFEmp}eNFjp8+S(f01AR70gARzn5FWJMa~^H@p8Osb zgd7R+9Y8bJHWHty<$|03mIe#xlZ?=Yp~d!kHyi-J6ycC>+asUeAk;Wz!^Rr06iGX8C z2ix0m)J?s$#KAXD8 zeyx@ioz;8*dVH6Emh*Bq7}Ge|g@IM^Q1C-)=) z(^c?o9f>irBXsfh@p!K+;;5T`%h+6sm>!oW^#W$TZK~SIX_`(sBiaq7kF;_Gwo!*T zLCWIOLO*dS*_-|)_x+K=@a_cLKP=kNKSWo@)u+H}GS=Rj}jMnokoMUji8GHMG zvw#*&9h}A5{9-Jm=kVmne5{cce~viZW{g9Pd88a~{08Ebq=AhV2T`rbzVe2!$@KK` z7g3Qq`;VUx85w9TZi=Ml$^I)Vbg4thG(tH+G|kqlB+1|2KVC0$<{PC->2swT6(|bx zM9+?Y(3@xn!y-usr(^JID3!B6y_}JCJZ6D*y)R)0Lh2gze33O$pQc8|&kR0a zpAQlrM25xS+I>E98iIN@`>`?u7cFQD>g(%7r+-TJ*7S6go#94yjm^|U<6HX!ouW`w zk}PFPks%6ZWHFX`E-a)pc5VTzs`O?H?Qo90{p_1ubqq>6mg_Rc$GwSJm#cgpvg@$K zi)`Cd3#EzsvJ%&tSx)&Ues1J|e?nH=SYkq#JQWccXKMOr**qx`ikE`daRmPiGn`Gj zS~ub+IYrt|e0AFH6E&t>>Lv!Op&hAN(K}9U?b_FY!=rERrH9G{->>fLB>FP49*bKn%Q-RVEW-|Haiz!$-4!y%pwtLJ?j}(ib>JZ( zAp!rhY!_h6qEYlS{^4k^G?J>b*1mIGBIMkl1DAE|Vknm@Bezz&$M$f}O9^3IEc{`! zuCTK|TJDG_Ngl3DUq&*h-dqr_5R{*vb7HYoR#RlNbq>!1e)b}-YrS?5g>H39`V>HF zVZv?m^5G`=TfJMyPg7cCV7Q#w*QcXKYeh6SXUA~|eZC`Ir4%XNgS(p@H@)LoUtj&| zUL87^L|FmFqC{!uFU)|aN9mux6+MNrsdc|M+vkJDXX=EyPBCIJzY1YaU6Q;q`gSm6 zWa=4v=nG`(Zt9!4U|#veFmlX-ICaAgu!=JF_j6YcP`tK~?`*(Jrd~dgYsR39Ksf4~ z`=W*#IeE&4N7lwsBXFF|E$ZXhup;3beh@N`eqMxsX~m073aVUFMszcFdYbb=*3VoV zZLA+3DC&0ob^AyoY{1-8gzUt=y_$Nf4e|ncn^m)HyG|2>`C6=qn%zVJ>>dG3iFLwDTW_S7T4UY@>e?|S| z^|&ce>QV?$XqJ_eLwlSS-6&scalbY$Y@S%Ag~qJn^5by*Zc4-K`sCu#rXDd=n`5T_ zxJ!qOVWfZJsBRW4E&Ze8*_-7X0PZ24G`JT;dC3Fu^6={LLT_jfeSqOv)(JYy31CRv}naD<3c zxl`Z!&Oi$A{GGnJKi)6NHU$TP4}J;1<{KoZ_A;~IgRvbW&l3 zsPo6^yqvZhNUWPviDbeG>SEKYjmw!l{V_HE0dzsuXQuP#OXi+?=jJhMj~y@BT_f|^3^2yc;;;xZAbD7>H` zE3kydH#V*l!bk#%3=chComZhDYf!P)tfirlp*WGBLyThgWXW7gWmR zuV3NWu3Rfxk|Sjb1L8%>QvyF}Aif^zeDUXX+ue68e|kcjfw=a(=i50s3G#ZB5r{4O zQjdeQv%e4aa-lF^B)_w_7kIrlEZfYIUZeqf#<4s^=({XF|I4AKelljU*_HrSaGUJz z7%3RbXttRN6WdH?vis+YW!`b|kGD6cx(zS^GZ{LKikXL5Ltpu!)q3z@JZHK4jn-?H z&k#b2KNHyWzj+#@N>ll`6$r{-r+BaDM0Wouy%3iK2ZPwGrR?3Ez=KhrInMWweXMXe&S?MmdHFV( zORk&Xwr|CMy<L8Mz-* z&^G#C?_^oY4D=U5XfMqXJ-38zG3O~yM&CEW8uQ2~BzlOzHWnOOP?P<_*L3ZH;rtVs z0kaeb!vGXk_?Jw%#avO78EH)q1%qA7J?hbi1ccsh@dH52MH5f^P=v|*%+63jYZ<4%Rn3Gdbi{PRRPybxdSeXQCA{DF;HB=h?ziC9*{pr<}_3P}7cAZdsruD7@XlNI1$J z5D95SZ;U57e_-72&U9I_Ep^r7(x9J=ao=RL><5HmSygy=HS1m6o!^N{Ati1xG{h=P2>RvN%flNOjCxfEDErm=)I=<({5PzkM%Gn1)6~Bv(;g zl&EB)l@09vR2ZDeMgNY?S=1A5ZJu~;u4#qxdycGtO==`f`&cH0|J0MBmv~(cjw&YM z2ZZ7g+LhrdGSThpupwLG_U?$`OXVYIjhPocb430?Um^XS$L`+b^(11{&G)04Sma}O zFVZT!&EWg9<#AG;@o@ouetgMjg2Cl%-++rW*qQ|kM6;4a?6CA5x3O^n#pjtBr55Uj zZt3U>uh2+Ee`du;;M0cG2jj>n(;`3HZFkX&3_UAS>WdE*_KD(?Vz-efPuTyG?yhAZ zMpnL>3TMIKJ?sa#1L{FNF~k}w^sPBzV89P1)iq2MmCetAJ3Izpp+%f(RD%0}m20zHEZ#&c0wk_-EL`H} z?vL-#tiAPb87ZP3$T^*OtmZ3$NpiDwm3CbY64eGn?aPXMMiJ8jPJKDT8VBf&b7N-- z0b`D|l|~X3QkG%{6J;n!IsCZJeG47ey-!99sUqudixZ0dy%SNQ~a zD9geZCEGIe9mm+skUfj|Lo~HE6Y{!QOUlW~`8U)_%rNI^GGs`OAHTokRrYi4U48H~ z4P{~AbU8ak91Di~V!g1Xsm=m$8_@lkq6+PPT?-lc0K5tsuT4mECT8lT$`{KE?7M7i(dr#q_w-vo=`lh&%@#}{ulERjVb31NHAf!1%3}c z7!ZcVDVY{OZ9uzTcU6Bj-I2~n&T;_jxVo9c&yPXe>goQjZl59AN1q8*`S=2-W1m~Z zw}*aBtqyyCC0EykFwW6hlUI(8$Eo$Fqh`V@sfB9$$uZ@m5k-dt2@fj9L~7XcjapDy zfj6O%C-%0G59l~}*k{u6TGu9vqW+Xmd@x~I?NJALGk8xf6P zv_%o{U4~PXIcvXnOCCVEWG|!auR_wEbq3hsP7L8@)x#BCo=y)Gd7?V3mnr0iy0&%_ z)Z0!Bm%tMCnV-vX+4;1~?bkX$7{D3^g(Yu?$m%G3&Zs|$aQd^Mqh51b^TmbQ7PedizrWRKC-k>Mg=2V>{7@JwXYJeY`%3)@ z6olz};t>a*bu&2ZR%SGS5gRQGo1L8%Ih;d2_azy8+(!=)?w17A2d`+Y|DunqcM*>qp z$9T%y!UN;OiQo*^-Nn2Z!lZiqila;%U; zOL0}`uI-dMBv5hkgsKD z*&U%pI2e0Rr_GboF54K*i5-Vg;5wSoP!qHJMPgG!I3Xh=zIbz8bw2JgTWMruT`!hn zJH~T+V~Rw?=!%{4h6OuR=(flq<$8=;4$BR_(@QK*_lWAry;y2|II}&e zM3ontzg;}wA#~w!?|vAfPp`~4q%$PnAl(-0am6I3nmj!Cqx1NsCafGlk7E+=!fD-bZo*`PaS)~`eBohYobY?aYOzV~K4CytGqCh#Y1A-Y zk2M&_-@N!b=y^KD@>V->-sy0A7rB0WcH-?vEYmu*>dfk2qM`J6s{QwZg}anfNoUq| zSV*(kF-O#TS}gig-=Vj3mD|jm7YtH$E2U|=0;yE)UM?t8Qwt_L13nz~F)uaOK#0Sa z%YYg4TWZz6e=e%THrvdfF1yt_p7Q7+5Ss>uqAXRAUSf7y9RBr}EI+&Tohz&8mKUzf zzzbk5wRGBGk`A@C1YU_WI%_cnY)5ZM{g8ZNv-ruoOKV+5IZk}IPQZ9L+G$n%q9DDQ zD`csPBDtdpKdp%NL`bZWfmZGFrIuwPd5%=6+kk{Zz^72i|3W{HDaWoQvN&3$lkFt$ zj?)q?+97(Q=Z}B0SqdY1piqst=+o&i}NksifPqy8P@3%>)@Z7hzM5 zBGS&3*1# zVJzot`zrRX)N%kEMPS!~UZOb-hm5S<;zEn+c2Ocsh?anTQ7>yojsJYcOrE0swY0BY zoKh$192X=}1{AlP?#==|_zamFBWfe>y|o=d!nK_|pTxLAd6*PB>L)6atLE$8=T7&p z6t0#(L^>FMU`f9jLv5(8_0LXW{KGiL8MfGeO=dJq!qs~GyBY|9M*S34a^Wj^-7XS7 z;wcq(0ca;ta@V7<^X>rj-|cQfwO@UJx~Rcs9fQ*b7bg4RlOb7H%7PgU7K5(GM3F!6 zH$HD3ut0=R4MD&sBiv1%F~$n*ZlXB9hpm>zVsa%h?|k6#d?eH=^87(#N6*53>#4Ac zQ2zIDr}1f3t0+Z<%azmf5F7*qh_>bM+bD z&lGONPwtLztVY?dTd4t$z1Ca4E8PYhTej6E%1dV}`&{6UFb9==!s#K`jjOm%^RJdi{5HF9-3HLL@kfNgX_InZ-9UTczJ3z&81z-X6{wrQ*w~n|p`ql7j94oTtq;iBgE9-ih+8Yd-~9dkj{$CTiUX_|KmjFh1b}i0*`d3kn8@DQL=a8;iD>&P7@eMv z>@O-`gGGp+9)x2|c(oDrMJBv=c25F}Rx+gr zFkLcZJPN9Tew*^VqFa&IPRyujr8ActQ zRE^i0*x(3l!6hYwL#I8m#zENM^2EVQ=rAdsirIuytqMjsNo{H*w77@vV5n!h7TZsa z-7zcg15rZUpa*?JI%}O>Smm(X(Z@e*{Ho|L|4g_@@@uPiXD==)&3 zz*-^JV=T?rhY-kcMln?24tO$ka_1=~;h4qK*Vz)^TZ5jfo}M58SZ`Dq{uZp5Ts$jh zw=+b~0B%}JULG8uQbx8#A(JOqKApqpU@Vc#?E(+r2O7c_e|-Z;vx#2xW z>{hDL0HY&loVz)J6hMBm7cKbF6NSq;@WlwUO0P8l=x9yO*BWy;=5N@4a5hFfp`Z`1 z_ltVLu^ZXnpQ^`9w7Xqmux7Rkr_7>o_xbHwKxZT-qN9apXqwq>scFLJfXKHbYQsJt zDA+qX(!^-2L9IceQL-d+jDObuG63?08R=>sIy%0B2q zT649ETDXjj+{h}gqTr|8XC3^=jj)%{O|!#h*V^$S4~zyz@HD|&L#qG_n{6()R74IA4o~lo+l9t8p7%dWse(d60J#JX zpmP*9H8l;ZkoG4T1f~^Mj(@fbq)}(GaOy(YtXGhzsi|{P?R8)z#t<8mpW^#eP@HIF zJM1>w$RUWEZcJIy7K^Zd?B=SJ0<>eBnBBdzGuXc91Xjq9jIWl`E(<|-XQ^FK*7Hqz z^28ITuPwxM^ZGYoOI+guQeW#BG6lSG{vmj^b3>(i$qG{vq*cHW@p-^hXsD;Ljr`Y| zY|=L<#SbzwGL)9bk#|yU(Zt|3?mLu62p5YZrp}iK4_rqB_Re-fOXxJQy%l$oLO7}K z3o6D3{=#aH9jBA7_L5}2bwo^zKubshqgDDWN$S2hGkrg|A7v2foW;ibQZ{QqbDhFW z3V_y=BBwIxVfHy~#qM{CMlcHh>$o%mDjhp?YQp+1=z)B1yKiF6Gazv>B(=7N_{SXC zN7FToE1;971HFU9`nEFN-pdexzDP?KqpD(`arz%Q5{UZ{5fRxZ%A&*IvHbh@@6`xt z^dI1RQd3*o8;VT&=lq;Lxhm#>gqm79xlw9)V*^jDwzf8>m+Cy4IM188Kr9yI9stmf z2opbBhNVx@$6309P*Y=IU=V=^Rj`oJQnS$OG<>m%yId$mmGU5kg`*~Iko*petW~~_ znL8MAozw_9{%Gr}1VCzEsN)KtW^$qSDF-7f#7zBP06=%)ob*Wn+cAv9rfiVNTmIFi znr!JxtYNN_U((vFV=04vo8QRvv?9%5f!I8Mp_lMuBk;V44%!U6eH^*55-GzYN5e{reMss;I{ftK^;0A?)&9KtS08m8j;T@Fo(pnw84Bu%M)_Md+W{3NK5+P>2wcCD0pEGlT&{ji${F9 z^KQuNXX+I!gdWo~5!><}16{UV-wQOb?M|8~=> zk>2MSOQn81)<#%;Ux!&`A-lK)u!#8vHWv8>KF4B4G*F~YEFo1G8z$z!A0m_ORu;4a zXbZ>Y*p5lDEmBo&2g$g(v0Y9VVwb>EYg1t1-{$A$1|qi6)vDMu;*D1hq)7&U(a{y4 z&1Ru&cE$3giuplw0e2jRz=t9f9H9VS!)GwsR~|I~H&gcfPJ)6K{^$L873m!3zTabL zlFo$3SKx$%*}HYv2@>xYy^w?nOY|y!(xb%WMa?xgv9e-IyfE>N(P--c8dK_7wk)Q? zzF>iihbMr}5@7x32wWZEP(ItVkMjRCY3QerZ~_63^N$Rl)1~;HP+=wpygOPN7L-0I!Had1>fmzSLOrIV$B&8oLe{8aKY=YIx*{^ElN}6s`)4s8# zkdlW(cofvkz%|vb35{1U=k%BuQ8yDO4DzR7y20d~f6Ti{L5kedtv zh@c(za<=$_&! z6oXaC6!Q%WhOKluvdU@7H z*9A0>^fW_^BnRDi+o@VqgsbLOHTtz2RSueU`m*bPX&64`FPz&yL3t>=fm+P{Z|(5a zme=J;MEC1Odk*TWMx_ookHI?-X0cF=J>UN?+`!Zz(l3l?=2!uVpyLHLtK)|KaPy;N z>^O{e``b+7;#F9;@|RY>5`C@)H_a?NNVE}CAu#+~Y?oJzQ?rePLhrgfdwM#V7ur)t z{j0~RIUP60WnsyKIU?(|21{T_kkk2<4fpL|mVp3V3NPd9e>}h?P+)J90m#m45Vf@s zasz5XLT3A|-=q0)xPJBPX*+1#vV<2*XZgnH&l-6Tt`hKcy#QKOkWSUQ{G3?}AiS6P0V2C{XMCEWkt^g9H2YOo~+TpHF~vmBb}DH#awL6ng)HcsM8B z)zKG)?d{xmEdv9CmkyX<5gL*PJ}p8^GDN@_4H?JH1Taj6>iST;HoSJ6wnw!9sGPuq zCtzz7e=oig%?#r@TtLu%8FoU*@HXZ!>CFrVG_uIHpG@Gy-5o|ug`eD*(FV^@tbG{$ z{Iop9C_7e|^_ai}KiO(de8%F_GK%-w2D5Y6f-e;r_^17gXUgePr#fu&4L8#EC9!=K z4|>DYI3K<4gYNkD$#39n01@%S{Cx(#3VoGR25_^8U~*`*{f_=E*xK9M+v4-yws9nE zgdYnMx7}xJV*|g2E4>|&XUBVT6IU)v+RZE-;?L~C!uYQsDuOD2Ixz9r43j$Ef+WqV z3W2UqH`?NLDT~bVsDy6&Z4)$Z1F?g-JscrcY4$?S7t?^7kIH$FKNs>^fcHytX;b73 zpkm=pR#y*)Uv>{kMhFf7?K0rL@Wqw`yir4QgAru^20pNrDWv~BeG*U$wQ!Px!=PB_ zG+C948Exx?f%)1Z>>`S^;R@I#)|$HQ4>E)i@B8tJOkNMxHeyw@^p!I5@{{PGF}uQ$ zxiRWwzJ*zlfqaj{-Lc4XU&0X@ zj@Kb!>2FkP(UZAmZ6SzbB%5qkyH_)#03hY@x&I*LQ(649oLPb|$N9(G-GW1r*nu@Q zOeczRa$x6xyGminEZM{IB=JAEX2%EGIbrGsx(JSnGgjPD;I@eMGv$c%qb5SKUWEJj z&{$Ma`&?>*az&URT_;a|c&Z!y`BURN#KrG7DB?~-&XfSJ&X8rR$w5N+Vj^{IHi#_k z+2a_DAcfLmI0_oWgvLU%H|ZH_JrA58--uXPP)bLo`|9%bRm{se;H^KrwI}BJ2<|4a zOxOju+3^`tfxqxQxuyE4eM(3Bs&r#6}$G1Rjj6XTVdF;X$QqX zRO5;v(+l*BO{6|iIS3#ayMIlcTS$6R-dE#aEYZBqR`|^XTJ09Ww(1-Q4G7F zicjJ^CL!MX{CsH3nn}|PObCuGfEGLlRDnuPW(X9K&+p%IfaDH73y6X7`yFJrP!hXQ zpny9^9ecxRIR|Enom;~!Z7F9CVAp{pJVubPnt;Yc5a911j!XI!=rlEmMF!UkytLVv zSeL(3{o=a;Gw^zchr?n*%9o7hNEwRsMyu|=rr_g29Ik7t&a3H`qjFFItdx!C!QFo$ zu;kRTo{+lV?w`yy`ZhzAW`1?QS(?FLZnc6|?na+Qq|(@VgRZEOfJ`QSw+Hf3H`&yroIyf#}BE9dJ1J82Z zdT$xKA~6lp0!*tvR!V#*6#3Qhi4KHFgNQV_s3zFWc@~v1(zqP*_>AJ{NP&7UNv}*C zcRp+w2n4&j?EV~^JS*^%%j8MSi&6jz6nqtPEg(=<-b`4iROydKKx3Dbjt<4gGbNbs zn}a%`ronWTesgS0i~&`8IwvYj)UtTlB8*tU>PZ0C4nNj8j|)1Cs=jwdE&&Uvs#EyNCuEz>iqqWhP#03lu55Jo}Pj`GgY7(Pi z6)eD>8@cq2F*617WR7QY0|lZUye9sisJ*MNRh}d;neq?H{vXJ{9Mo4?Synh~70lni zJ?KfslMM%ANn=;)4lv^4S!;aWU1E%Dy}hUaAtps%U)(_8UlIiT@PRUQP2l2PuC<(( zzpiN`*7ZG7fI+|u?Ey@-Tuu}?v>JLS_3yQLf9b`<$@hx08OAyWoD!)BanmWr54yo9 zb$YkA4JGCyDKixnhA(ZmtMF?G1%2??u(n&BC?77j8TYw^fI-`zjaDZ>pOzPye+7(= zgjhR)*MCCC@h;&EOz-dWQCiF5aU#|!Sq8Y++FXpAxZ^M=rj`qxll0Koz$lWmMQ53*4E@j)2NYbVC zKB>YOgDX+Q z5#?vc6DZzFGvq?Etn6L7_Q(6O`)$Jh814YpwSK{z#=H4us^jMj-BoxPm^e#v{hK3JPEN@{h-2f8zyVdNv8fDq$b$eV9tVl&gc%9VnCzydw1%w)3Z%#A^S+qs~SqP)R4-avNt z4TL%L79zQCP{QPV)R=Bfcl8HueeLXtE0LM-a6DRIw(o~FCf&k2a39*=9?H)=5(C-- zDoQ_RY-;%r_ZKq_(o1Dkt115Jchgw0)77Sl}? z9u`JTBTZPXOCtJ{zQRW6{utHCV=8rd*r=BjLcS^cp2tZ_8hF z+SW4r(-yk}5#VM38@ea}5q@pT7rl8AkzG*P6t+9-$1-*|d?ISrV52l72@05AS^6<5%<&ntXGP&68dmzUSf zufv80Ht#eYPAhVmqM|}j7|%S=6K$E9dd%JE-+&7Sf|?1f7>JR24bJKoE7*w1n{BXE zow-dpMI8(p+(Nd@V}Mz%&NjKusnJ;>pjLDt@?`xHM6`ceLeif{6aQL$j!r?z0X^|A z)agLDryn4VbS{5IrC<{-Rxkke(6p=YSW39jd~-@#@Or`@qw%^UPYC#YOvYmTM$8U9 zIl?Y8U7e7>5EiG*`9FWcrZ#Ib+O@Rn?$r+CnCuRilT?#JAXWwXy#HjjP9Z#9s7*E- z-Im=aHxp-J+!4`$H>pyb($}vTgKlbaeW3!v8H`qE5o|3Fqs&465d*$&AA`%Wo@j{& z|8Evx-{7BN{%$c1VY8GU<(VKM_ivr>&!U~o92{nCV{NZ^B4!|6DnncGgA2UcW2*OA z;BwEkn=`!dI99f1z>T8I<_5xcl{1mg(Xj6?&fY79opJ26+y?%&a&1R=*_rcn^L=qp zA*?vW^T&fn^g!N=-OghXtHbwWNV6(Z^CyuCYd%z2oQYwhOQYwOWcuUM@Ly&UD6Z#q zm`m)QoynCy#rJ&?ub8xuT$vYq{Lxz((A`#`1BW+LqV+1?Kq?&(`M~HXw19v>PAZS*336*&+ZdZCbNt-ypFdx8JcU>{8}`S? z#$={hyN}x2s{7i{q$Ye{ZTRl4NOR;929-a*f?f~l-p)Se4qt~Xn}lk#9%~O#pI?<9 zx!>WjBiK#(;=T{cws9GV7xLd6b9u<5ScMR48CJPX|k}m4lQ~hTsC+nndd7jWXsrs}%j0javqsAOt zaw)+x9E2og_qc;|nFtYA1~+hYtl1H~Fqa^245^L7M`g`d@a9Ba>vP5)=<3S~)2%7l zEQnT?gWBUb_PE#>7(h} z+bub8nFHXCezI8#hqYUyJDGBB(X=p9E7(eP3bQ=#*9VK07&;MpVM6D;c@e1-;9;*B ziVQ2L`0$8kCXvk0;Zsv4G}jc(o#OC1J@k0Z@d{*{A$?;4VOx6 zcIZ%P(hHI}$HapX4=Wq0JTMVafm!3s?XJh`c3-4s=YStwUtI}Z3V1tAG=})&H4Iju zow#$kpl{Xcf_+A$E4@y1(c}}?`Wja~tH8-`m!MaLmWR}AJn8C*NiWRp!jyQ6*Ytib zohGi?&Ue3je`Gd2wvPntZCW@?7ED_{NBYi$4`5vi9w@0eiCHe8Yl!KS1ihiPibf9` z9>zx{7 z-LJlRFdBN_t21$0n&6UVWixKwahouDtfyHzeycNY|={^&s($dPgq@vV<7|Xat zn3;h^Mt;%e2t62#sC9q49tw?C3<(Z~0mQ8tg1(5wijt}~-s1lZ2rw%OZ$Q4RV<7ot zM=VPoXfLqJ%jCfp0QFic1=VRpSg56~m%RZq^Ee#`@0CP=xaKvgN-hoLT1FR};j*xF(8ak1u8gJ3%C&ufLM;5XL7W?>yCj<-c8NN> z$4Fg}%&I~5s}pN?i8bgY4}5sXk!j(0reJfo!`_g^#sr}-1~()_Mg#UQSNwLOM~eLo zv$5S~Aa-+X{JLGiBOJf|h#Io2!J0xb;Oo~qG1tEv@RXI1xJqdeYM5Xag!tN;BV)jh zj4r!zQM?IdpGw^k(9X1Z%8;u8SZWw4_I6@A1X86`C@q~+bCFRgI8!srZ+3PFYeHK< zO`@Xe#1Wubq^GWpsm<8e-(M*1&mlTTA#F0|Bzchby+*Pa57--*3!yh4q$hDGfn-97 zE@9m)m#M=_Ys)Z4RK^^A8#F81zhRPL#aJv=g;YM&AwOyw1HJ#*88xUgUECE7*{8O~ z10bv1N$NIgNDE1q$Pmj|*3#Dy9DcNm6e=#Q7%LCqRWzi)sIN;~u>S?Pz$aI$P*zOX z5pzX*j1fmUOZ#xF0c@4`V~{pO{4S>nHF_7I_ry9Jq8Ej-$wKepFYxqHxu`)F^Ni3` z=qq;=fJ_9>1XgE?1XQAhDp7{bZVBuA9ImV_Cd+Almmz+Pi@Zd_p2#?HDc2}2o|%L} z5sVNK5L*k(NWtl&@=T_q@wknhVS^(gA{tU=1W@XT;tv`@(o_oRT)NlB9LpPOA=IW| zLciv0K8j=c;e-hF|N3n_^vMGdI%e~N>#=_F_HF2eB_vefEHB030Oy#WdtI@$%Ue4=O7qc?fwl+wq+GQl8sUlhj{ zI=8;yO3kWv0@a<_u64h_vcNMEfBnjB`WKkK|hh4 znf=TXz&=Uq0NvYGo6bM#iA@2rtt?{11CQcD6+S$Gu;uGR-P_o|v*?l&kf%mrQ#Ii5 zYgB!6b0`f6SxF%OCJ2-1oXIXRg@LCz?mTsANsK2iScy@iHATCjlXbzFjoi*j&}p$n z@lh~myg(p$yqSzs>E7~}oga#+?0oa^E~iV$0HD<$D9VxX4}~acm9-x631Q|hqjwSh z?YA>5vU>o?j_^AT8(V@_==XT;jtm>5!~>H4pUey(cV0j^Y4Fdi8K;n%VmoH+=A^Vq z`A5@o>*WNc!pCIl(eXMKkVrpd%v$g2M2*sw4qY{`r?*k~{uU1W5Df!6E&emU4Nl>{AMKWnaSa*!x_DS(%UXE!&5 z03_2>G*JI$KFuDdWu_;2&Js!9hXe--HL)ox?#4UufsMek1F>kr{mZ5&hj<8rkGh1Y zWYgfratLvb=J$#LRnJ*fc8r!(3*!CLoM_teV$~xCsJVT*RoQWsfEVyq8kJa+@m&-=JRRlb(+vGRvqG}+x~^MT%lUk} z->tW6`>^B=vH7MYpV&K*UHFN=m63xe1$meX|oKnhoyM5ko!-%ikO8H_)6o(t;73>9F;( ztj_?t7MPVEKUM$zG?cP2RnD#(tM|R-tdw|(T9Bj{Q8cuccFZ3zb4z4!`{k1{0VAPg zjG>rZ3Dej@e!-o_q@rNDlz)}jS`Ckis$^m;vyu#)zEV?F^*fLED=Mz`pM;A?^*<@$Bx3=I z3}tZy;(RijESqBhZcJlsBD|I#LbRrl7@+Op-0L!tD7t^XEJJ-i^q@XB!*G2?2j7j8 zdT|VAiMq^4`KS2uCNz(r?<4kF))D&7DR@ z5N>xr0cTXM0tL)PMN_QtORAUW8yta^>bONbdox17`F$7p82u}5J{|{yad=;XdqvAR|+du;hpD2QtVe2QZoVpmoNtBGvu+>{j7YTXXFV5pYy zg^*xqhJ1&ucXy|VKB&f#Ic24@!g1BP2GeUPpBj^gR zNBeFR@d~%7kvkqdXE^L(nR|`*=%5`LFW_4S|A0RAw!YE9+3CUNZTdGz&~{oy;h!1z zwxFu)|BGcf|An-xQiIcLJuyD-mStev(!b{UBE=hg3>jv5-tftGJtJ~&yyLwP_y$H& z%)V|gSAX2V`7(aE*@9kdK<}GnPzzgypnHNZs4sa5>TQHx*fX zHWEhxlI=tcgeT_&1m)<^I=OkNF6>6+nNa_z^>BW%z2q%iS$=4N;ifkJL{Nl70|p*f z;v>ra)t153M%8|##=RZ%t3SAwaEz{6i_y~vp2^J=3&ah8G!ayfbiZgWQ)IJLgmXEJ zL1}scQbIfcal(BnCS0R!48d0CET^@qpdjC8DE5RdZg*Q^T5$d2Ki!ZcaTkH~dRa!d z`~4|$+EP%6w!vw1RY#G!%91^d;AWzI0xpmM5{O zx6T(-)g@(XU7l)wqT&dd3IL7}YSchv7X#1*J1k9CUO(zgIznlxKAPiL4@(j{WN%r3 z?)T>VDz|m7&!suja%OjBdC)iG!>!6)9+w;ay&vy10>tW_?slx!i!iSHRDN|r98CsP zK^xGi$0;dq`4t;O0DXN`*5_R6B-Q{eZz!pASIY*>50B$Z724>ov33!$l8m~}uA{U> zwd@Z=M?TW6sOK-7Ik;dgrDK(qv_fU*fT`RJflgw$Iv@ptmwp21Bw~aMlB+(?c`(0Q z@ngh^lo?)E!CgP6ctNSOS!@Y=&fsXOo~iwCx6~-#9yfpFJZC~a^ULeI;zvU$ec)G+ ztTWB%FLXi+s}DKC;9sn$vA29E>o;NXD$`lIB?6_ER0 zFAiDEwS0)I{&=zcrmL}u6VP$@XDAqnA4VJ3+LBK-?y>!^!-k3H`^(Xd#6$=$uo(kh zDaIAo=$EWqD+$9ep46)e12gG>r`HAn4Dh!`w_b3kbTqi4s=f<%?4?MP9qYhboNJ#n zU6kJmWN@5Bacp_Z^kAP1ixX(D0Hd~U!^k|dh09eXiyuAoCO+V(^2EoBUy2%mVN}@n zEcFvc5lq~*V!Q_tGa(@%7)QoG`K}MAet_{4oZX(6m?Qt=VMQn;R4lj$p>R%h@Bv4> zTPKV~g?jP2MGj&UX|MyG*6aS7sF`u$F)!^f-SK|4At-YKMTEe?m0bY>|I8W&59zE^ zk(vd8O50?@lY3*XjZAVAvIhM3+2F`+v;8J+|C2K<8kP!Pp?^r938+_{0^g87**lYwAlEgAhNjm1AS$W^d>&DN0CuM@ z5Q5WrAIANBmFQ%)K!nq2_j4S90R0o+tYFlyyt3rHV;?9$hn{ufI7puLKbp}_A)>?yDz^Xt(O&wJTPs|-_1B}vEJG~&h!$IcA@dL1PPXfv+EQWS= zMElVqhK7FUYc7D`N~*9|m%18e)QkiFX$r~e6dFx4K*D3!~n!->7^ZKeb3Dj?g#Z`;gCgZ*7yUGFCQONzhp>IqKv z$0DzH?gad9(r<>K+wVqBfF;Xvsp}hk*P_fVHh86s!id_dPykgK$i zS;tc0oEdr$MglYV$QrQs@^?|j0=Ocy*$t~y}IyAJ!YQg6R4hM;)fMQ$AaTj^z@IGvwd*) zIf&fG={=JLij>=DXHmzN`lTvggWiQdRV4dj-^)S1+Qa*mh45dhs{`KyFO60!Xfu1o zsOvSFSB*dGfei5igcprPHvnkDONL9TK>(jN9Eca+d+@s3#`J)(n{NX?jy4eN4i4t$ zY%{Hxwd$YzXt_|x+n^q~M5@+Vd}ZK+_it%*baXQ1lM!9(At7t^I>WZN4Y}qT9Jcta zF!)>!;el;WFx#-z3%ZT|fnCU(l1Ir!22p`)b4yG<_z5=DUJ@~3-nkm)3|o$UT)3pm z)OsqRe0f55f*2!LZe<>Dop%X|*9Kr9lR!+I1C?#xGt8_^l)1VagP6%Oa-C~HM`&nn zNm&^Mz*{xTprrw@%g`tYQ)O=vU;>urT9~_rK0z>E>Q50C5#stD^?x z5EC;(g;O#Y!-**v7vI?3Xm?uSy0?nJNPTG3tdyz^)5LX*!!k*`eYlVA>>Jd^JO07| z=3ZuYURvfyG6(<2;_UD--edTj0!*hLkGMAf?rzfdxh=GUf(39tz^$k_kyMybGNl23 z%j$CxJawLGGYBDX>lsOng>!t|nwgZ1LNhS(9g)bef8?*mi1adS5N0l=+!{qYEn!4@ z#kBZ%X`TYrftrvXM0!Tf+@qODA9N^Pi+=L5rP3?@ru~X|68Zf1im2VSXtz4KB)Rm~ zSxmgs_;+9}C*B53PAUa#4G^ylVJcQSj{aKcmFBrT_hfU-~mw$*jC$c$K=o5A?0{%-7150f;uZ>uLO* z+Ak7$)h(W?4b@YiaEre&z^*n7Y~G+nc#Ln-3HN4dtM|}>_I(;8@%*?OXUj_a;Kil+ z!2U9gVfbSSiZgo{D+-?q*<>_M43PEyyJzt5@XUt5-bih{wqMlnbU362oB>G7|DzTDubcHuv+omMg zDKG;ktMHZwgCQgY^Bp>dJ+zz6RYPXsuiEHTyIeE+&o%Ef&$a#M;LN_49C(vwa>HM? zcE&;~CBOYpw0X&Q-PybB*QtRm?GRa$hQ5R)w?f2NtUSgN9k( zE;|379P$)N-X=yhR;>2N!CfUfu4_H)fM~b?<1cSMeaDv)@dcPAb6GdNuy^&h9m_OD zT2E8Ad_R|cZXTW@ttRu~Lk`l!+$un8&k5+zAYS!RZU`a6Ew}puGXM>k?=Sw_F_L`F ziM`WP>b)>Td}<6*I3ul6=cPpSmypW;MV>@RZIELop->8dYXyZytA(|z&wNlbk-IS} z%uwhaK#$+|%49r`qY5_#vYwSD4@^%ZG>gh$u@5~ca0YJY6N*GlFqg^a3JQXlPFD2P z7kw~z@Z>`jdPlF1Q#hDxa&Jy{(vSK(MnCEs-dQw{o?>dPPf7>B8Z6}n7s-+5uO)o( zG=2qvGxKuT@N@Iuv(j^X5b#$BAT>}^Xe}p1w@`~vhEa<|se9tU!C|PvzP5Y@md9s3yYvx*gTX2%KToAC84$z$*VR-_vLy^uh%aZ3a`PycrMkVyV>-C#($h zRmRu4JWEJ8asfLQp^UwJ03=y?cN zuz6kX6orC~CRj9^9RqpQsJXdun>X@F3;7r)dp;1gID)qcx(#M-gJdL%eb@(CX5^As zLQPvLU`o1Eb2Y(2UF}28iJ~*;5i@ z@utxLqE&T=p!+Pmo&WU$dVIC`zC{czRe4NmS1aEd@DsoqsD)HlWxl9=-RPBgMd;r6 z=>{hidE>~o06_H16$n9xYQZVU>*=mHx{ToS9;d?{IR}BgH55f>V@KD&eBc=O=cJyu z7V0d=BQ8l46#ARB?zUIor9kEW`UV1Czf9RjjnX4M4bSg9FQz@1d^heOPYG_1O{cye z`Q7_obJ@1!g(Ot3t2XPRe_^myLL8aF*}HkqNw;SGoA5~bKIM&#HLZ;qjdSsrkQfe9 zu03J6dKLUYviLx~c`CYkqPhC?pCfWxoiF;3z*NJv-Mdh+UG=4bk{4?fXy6OR3icV` z1Z{6GTCb($=c|4u&8cu+Gd3~VIXEC&!B2KpL;-h;d&b*y@QD{fX6BvTN`o)mu zulI^6+zN`hOi$Yx$CJ5>a9wY}2mjqViKa0Zs2*sCvcE28Fl{wSPB<(=pcFK^wMEb` zwM@28&An#eg4$mu67@?_jH;pnryU13eB_X$_%q@JX?q6Q-b5-5v+dZy>f9iVBGeJp zYvB?HXU7GHm-Ev1?+z*9q_aX_#O4m=K6YbQj*PBG@)*|+B{Ha*F>#H(2h2ZfyB*V~ zH!HRiN1E5Z-Csnr+8Bgbc%4*n8*_c$e1i|l%gf`Z?+t$>Qv6CcZ1uYXEAC4Nl`W;6 z64FrAeuE-gZ7k8=lBbchY;0+Go}Ad`ug6t~KhOqc{K2d(Vg<8YJUk}P*E`O=kaT?b zT+XHiFB5oDJ}1W^HFrldlUG5Dz$6b{L%(OKz}E>ADHgfD`6Tp!rnbw_PWeOY6H~?S z;Q?mw1CjiTi*8OAQmCU}Y6N7YbaJsI5=o9n-e0qZbEym2arx=qf{Cxy<4b2zqfYYq4H}^_bQ*Q~fc3*~-qIKmE!~yb@~8=>qwnPeVh~Y_E)z zK79&shjyJ*HiKQ%N!cCvDWK@6%&4@Dyhup)8q6Pj~+JT{% zr=8mIP9^0lLxCm4jUV}$r~GQld` zYH`)<+3a@U4=URH;xWbGcqS71!Iaz!UntPBOswver7E3vn;e6?o+n_Ky(NhS@CJ|< zHU%a$CwLUDi-*9}C>GF)?(7anGb7au1HY@lJ~X}+vgAv|ccWrOO5`kS`s77ejDbCs zl014-w!)vsu8gmer1+as!BVgGVEAiNUJ<*f$%z%SxA~4*Cr-mik~}vY{BM?M>i%y8 z{x9w>sdGt?c=fk$HP=617@#cQe=VR}n8E*X(T#}PiFSPHEzx}Y3r#lvNMInbUZ8NT zc#A6Acf>ej)*x6b03bkWXc_XO4( zGB|uTxu-a&kI2Z#TRfy@j;Kq92PAHUxD@c$+~8V;Ii{t_bOvZYo*;CX-Q+wV1tpvZ zw+51wv1oM==pcn1Z@~x=uvev(jU(W)O42hFqh(MQwY0GLZk(eeW|Ghhr>6zY z;?{syh3`gDKih0_;|Sd#ROKJORY{AvyNoZv2y_ex8QFU+MAlWH&=8iok80|R=l_5K zC^OrUcmmrw<-_G|-$}F~|EicR?jC!0;Wxk(iF^+a=C1fb$5OM4Wt+A0#67dKz`bx2 zxRPRg(iWz2q*cZNMB$eR%Qw}-OQgI!% zT^$`kpSE?}VI9UR$S2=orKv0Hil$*{x5*FveLdPsMzkn{-`v2YGjU}u z5&fs`A(caKa=5v6og%<$+_rIEyQHLlefK@bts)AqOx046gG5$cjs@O-LTBEg601ZR zA+LHDnykbw8`he2rXBp_K3YvYmc<^Ox;9o(yn34E@k};1ymSi%!r>JS8+fIJ8_`O3L(ck zA>C}1Wj-D`p}jl{@;5iSZbJs57so^}^r+`pSj}P3g13^6)x$IzK*DT2nkoEny*l!t zV!cQ^{FeR=raYER%fID@gBG>g3++`&9dJQUS6c+lR2j@lA2>|LpZ^(R0F(3B0W-Qp z8jP}h`Beh5kpHR0eGQCsk;6W69)Lta&9;_kL(9omJ_++(lINvT6f?LS(IQc~m#7?F zAV+Y$#dwL8D-KzwLL<}Bm^3YpbV`87ei4qUE28cn(?u{TJJU+Nz$Ld^N~H$Tsk_}S z9%lg&7m;Y`;MT5qRXTgWHmpDYHm#Yr$W4U|z1IJEs$ZlKA#r^o<6n}I?QkA$Z(SY}?CL(Wz$x{lVq-=i+1n?Q*W ztsxc@C^!x}NUJmQ--WMk@$L{^*Ra7nq?qZ~&aUucw^4z_Eg1Fx#({`Nt}s}&U{NH~ zmaEJ~2w6aRy4pdb@9PFd-pve0qcTdUq<8-btT{0!O=<31%KX=UX^QMbW0}U2h!pgk zE%Xh)xB2V$x0`>4{VENLbg6xHZo%4+< zG^19A?n?fF8>=mIrMEy3b-4uwxfX}o*K{8*)4s9vVCct!k_R#p7q%Zc!sr+ROT3tI z0Ed=Z?zFe@Ra)nc^e!$+*t!t15N-8bOUr}fSX<>e?`M7;{q{ZN=RCVgr0gsT&T=a7 zxc%l)ao)m8E>^yvMZGYnPml)^bt0GkG zB#cXj;hq^yppuqMFD5>{M7#)ob@7JBhmIZWyy}imFP)}J{O0$nHkHAL#E(xf!u?he zq3Cmp14Y9V#BP*4Umj0eGP<^gQ?uSIQSUV)EHg_4MV$(}7;j0XZiTTboSCU;I+=Eu z!L#xy8k1|cFVNN0bXKv!85c17RA{!(3Q=CDKOYg?@)T;+b@`PSlHF)rO3YTE5!%!< zopHM!BZG3BX&)bGMUXN4;hGhuG9G?#yTSfxt*BQj!A-X7@Jd7#mZhF7`6(NjQc7wo zm*93>dhzUaM)|c1Jz_{TJ8QPsdM%6w#jWA7Pmol_aka5+xF z14KTC8P}L80A|t$I~%knyw;VcooONUsO;uXx&X?nc5751aOg$NoHh-ob0=AZHuj5FZDz*~a^Y?6YM&B%KlL`7A!P9l`Puf0=z8 zkaRT3_z($n2VeMb)~^*H_)l2?&)qFrB3aBU(gOmusNa>Zx!)}&;VTS9j;{C{NBM_h zFKt2vlsG5X0et8&7*|0s#`;8!j!J{E7_+|T&NqGkmv6=LplnQQ zuGigeNy~oc6)G8liJonW74|_Zw9DaCKSM7FoI7M-_K23R?1Z$3EEq z>dU3g_4xd-W~*%`@8`i;@A9t~W^cREGdD9o1+L4NR=iFtPQj?~xrw!0{hg({$uuNJ zBq_d?igWdHt0ZrT9@x3RQj636jv7O-*ZlcP)%AB$Mpk@eJN%%i!9|4P8H5`cY4Dy~ zRyNCAUB<72@Kk49|8n;2+38)x)2HWO$ZA?Q8O z>2x%2X+if@IQs{!nO$$944 zRyAGO*?5-m;=qJr-x*iCN7Uwu$MqPD`%A>5Ehi_ZB8rsjZ7Q+OryGnrY*yrw&siOp zfTci{zZ^cb%+myoZu+Kmik1Dh@?B@r33T3i?e%p%gIngr*lIyAfj#*;v6=}{RcGP} z1QwRYevb!pL5R$yX`}mRiQlJ1#0&WQe@kFw3M}XSOaEoX9ryx6FYrwlZt*M-fRuAX zYdYf#{YtMYs?9;H+zdij9317cXw6C6;REtnXCFqRw53ac=DD@1OaAKrdI1Ia88QWx zSz=cY6UOK$^mVEocl%zcy`7TU5iWS6PgT{ z&8Mf7s?uQ5$X5$ZBxJe)mdW;Pfos9y`rgf`UA=LrA!Sq^PkLM?%flu|e|a}@O`$-4$@f3Qf7t%bPx1Bd_*E@>`aGk_JV(sG(59YvomLgKN3_}a1zdh1 z*jauQgIW=}9manFA7mC7u(^aYER!AkrwZ7=68q`suR&q+?y1+_eDc$`ba$TTkE&@6 zlk+kh!f*tJ4wJ*pQO4`b)4#Qr$iT6C!r(6v-d$#tR+7UtvFSz2%slJ$_J#Lpybk;B zq&MTW;@?txf4cGJeK@gh{*48XAvbeiFN*`Rjs81rfP;?7?Jmy_HI(VnjLmY<&UF#wMJGcQe<-_XiH1upM<8ra7U1q7DhWw1T<= zD9>`@XpGW^7cTgw*QIT5$({oB-lDk7xi_T-=XCN!bZFw(G1=NUYHr#}mWmIqUesjN z&O;a*no?=mMBB=S4R$k5vqALwHt89jU{lL01vPCVB9SjFEEhBUL_|299(gDX+!s?y zo}Tdk;@0#Bj`Dvy1Q5R?67* z^r^GmBrm?;lh(#)a2c1@bHEz@qtqM z9|I`te!&dbi-5lXqqhmdIP4ACG7pljMW@r9?j3ZeFuU`~HKMP><;d|Ji|M!nM>3UG@-NT=V#gg9Ez?0rvAHCC_t6CRBvGMqoFJOmxxuR^I_vrdwVqs)r< zt&31>qk#mb__$if1E$S>Q%qO4F=LbFmC1E-1CQpcH)`#&$+30M_1x~gtG{{pJ2&P^ zX7qH+2q6SlFf^6sBiZr>qz^CDp28NzP16$#)IuJ=f;9gS(lBT)e9Q6#gRV)rLUnkb zmb=3Jmd!OrAOw(Bn*hiV@VC2sm6#a0<`u)2+k=dc0iu|?r8UcnLK7m)v_O_MC&e6pYsa^=>4080ga z?T|n6>4qhYzlNd;E`I6R&k?U%6pTz|-efS7sq>!A4>!?aygePICeq@uSd185Zg3{1 zrDcnK`~DAHx}PlS3vvSYzON5SO$Gn^rW5s^8a5-KAZlrO0}G=i2jrZmP`D)W(rAz$ z>=>W~?$gqMa&9>P^zvYZ=L|J1A9|g$1<3#Gj)GKLsHb(q{8ijWO=w*z9!h6bR8MM8 z|E?s*R*smXYcSj!#gKGp>|mYuPtzo7Um{`w7&$0=hzEv#FP0y3^j5SCiS8rVD8muR z`C%#{t&H@IV=-PlOfQ9f^E~0*{dO~8p^`V0+UoCx99w=CN!DZ_y1EK>@2wu3{wD&{ zSt65^?^PVvTHr8*PXVDXo+UScTR|pp%fR<*cHTFHCnq{abA6LJ@jU7hraRpJm$|g( zw~9HTetxZ~UnNCC5De|@tAi^mfGWMcNTrOt-H}Lj3aT^! z9ZefAC$$7>df6h${$HBLn3xn{?FgJp(Q4L%73KP(pc&-aGs<~-k>`58s}+0r z!uKxuvnzDt2ot?@ysP@ES>U4nBks-UGk<-}j2SlfzS_S*B-~F1!Y?Pac)OUX`%<|Gu`2v^#a13QXnszk}#N z&wK2$8P^SpQ^KaVnJh$_KVA9K7`EsKU5O5Ov^6g!Pf8h6i980w1_=*BKnEpzqw&Gj zc>8JT=?xP)l+4$>`~lyGkT|=&aC&q=xPN?2a_3Ik7`8+PZVavsUssNE8rC&;@j_>? z3^@1B>T<;L9FrDXYalJ_BGX|2G(#$0a^q4~O16k?I6?@0Z0Y z53JVKlcg~0m7eed5rv)5bPvOtjL=Dhmyyx1ow?B>Kvc(Mxk#x7Pst{1-y)UN(gKCg zO}cwhR%E!e{!Qrb@8fK5w)`)=1WJv`&96DXkjnKq+D?*ad zVcuSodp9>u!()j#z!Bb7AF>M5mS(zAC}vmS$tu?AE_~zEItYQ(3~_LG?I^rbJ3ZTK zCnB3Miv;}RNjH9Pt*Czsqpv+MVZ$>sPT)iVRmg0E37XVUvs%^bt{6Zd=z{{x5i(uA zospoN`;!z30sI;k*c$E!WNEnoRpZ+-Jk-)6nQ#QWI7b2w&dipg0}9k*=)P|n(Nz0u-@iCdTD{5DGFQPq!>ovTi*nKMvsYkc`nY^|1X3A|>ju9#Z z!zN(&r>pOXkm+QvD%8`iZz8ADmAixJ>80wO#sxFV%Ft=YCty*G>zDI|vfx*WWvbMr zVC@gPbnVxwn4 zP1j!AV8XjV2*ULOo8~Xu#eAU{ta1%)Lc!uYy74*wY^BVym$w~(M$vQS$pdE~{(lPCs8-d;O_^TA{szvwwP8F6`ttbTgAK)UBT7 z0;8Yk82|^(pB~E6Evf`076+3x2&e|T3J;bhG2gq3ocrti8I0rJXmw9mG0H#`I61%E zenfF}nVYm+i4IXs)x`tl`STm$S!4lhvpyKwb+OHqqb3{JmI$EIb;+xEnk2Mx6@|Blf)rpSi&dv_AM3q*_`ebc4DxRJ2oHZC1D^9&TU9 zY-b)XxEP){-p@_Di_{^Ml&JkQkGMQ%p*S3}PJ+zbn;NGQENw_8OSE-JxJnH1nH!*V zg;{d)nHG%QR8GKBrJs(=K_jWEKq_w^9SOpFSGQgSXVG6AvT;S66KPB2 zoP_GSN<#SY@t9?I{k5U}=HZuN9GXDDg|q7-CgWH9QLMl+dN z=*{Cdn6dZCsVPzCG~qB*HFw4G=BGSjNuzumw%dhB1%bc!$spuiAQGZ@UStBkWV6c) z&D9u%iU!@|W>+ks)9cP$QTI|MCgOWg;w9cvPIeNyx~9^RS2OlI>mQ#FKX{*AFJAT+ zwW5VF3WEU~hc3w8f|(t>D=g<|#e?@5ejmgcejXS!^83)HCVYKAw-EhOmm~X~in7<> zSDu_(@fTdy^3X^$=EVR_E;2FaIJal;C&I4J1Vh@Ku! zw1p;%Z0%ZTJ{|9+0Hx>9KbM{K7b*%RB_$XHgw)aR3oHrbftJn@5%SI?8l%zVabOpU zELH7xWm7oC{~oTEKB40gI!&J+ZpM)z1lZ7F?VjKf*hYW4 zA!>H7E3v1b#{-%_V4|4PV-}6i?$C;c1i^E|$e8?YGTIykPK6JRsJS;wgs0nKOys4~ zan<93V&rnZ8Of5Fy?xw2zmBf5IxipJ!MdNfRcT2H5h|(_$sX620*=EgdEhWB{scu+@+5?SXohF zbZb9k@5HFQ-PTt&H@eQK*KUwOF_nd!$3|6gDB$LlFSR##@0tImZh zHy8@>1_ifFJ_79mObF8&1B2NizLS#^V_HYy7>0q+P)5BiTtM@cuoOtH?|!i!inseB zDVi+IY9%rw0Glj4S8pWZ*HOp|!1iRZWx+1E3Zx2wepQfsz}Z?81>j^SeVZs(DiZX$ zd40NKSZlUfLENYC0CY@1{9AQQT^!a$Ibyjj7WsV{E0LDXk8+!3&M2)-+8YrKBHAfg z5ONbTehn%_B>I}V$CE56nUwv_0Ud_>A7kxYE|l3>}o;yde(9s4iWgmM$^CLLA^~D zER1f}whe3xOd*r$SpMic)7hDxchjC-*8_Yvic_>{3R-9aFQnL8{yvCTJwCeIwe$_o zX>@Hv)w7$ZcNl4bQ@?vb&QuEX^Cd#UTJY0o9s*FuC883^%XM{nn3{>$ih6eI&4GD& z1jHmHLjGAO#h=i-ks~de$nDh2{^H-aST^?Y-VCAT*U2XzgjO@(E7wSJxpf6k;Y!-X z)9d2Yey>u8X+TVW0_Z4(lpUPGhi z`(4SPzVMZ@9*f?TkYAsK96iPR>v1s+cVJYx6dH@`iE*UM5i^rT9KbwhW?lq}7Zvyf z7j?E{xa|7yTo=|zVKh3^X-7xLzIvm}f&#vbgK?NdcL$pFsF-7-6!Kh*{rmh!RG5Xy}vmGvt zo}8uQw|YNGCw&70shDL?U_+tkbV`ZEj(LXKgo5vt3tqoJ)F2|2sa9^#OX;ufWo$g2?9!1isdUm8sCvGhN?g-nA^{5p zKMRFla(rB_iFWR>)nRhJ>TMfypHcB__X4=nqAq^_W%7OIdQ|o%Igmn)jF2>%n8P?+@KhoVNyTxtA}|z(ui$hfPinsz1xCfR_`cl_#_ms!t|mk#9iVjheLpD{> zUYu42212+!8|w>^ABzNqg$cK6QWzd^=^XD2yy?dAMH?rikK8t%>BJfKb< zrvCPVvn#TK7H{UopdeuqIOi} z8`XnSLKP)RAG7(PWMb<4R0-_{blBl|_x0kB^EDRtyi2GHnF2rBV%>jCJHV~J*R$B{ zaIim~%q!2o3`BhxtMfVtYmg>%iusoAFKL^$NYfBvRXv==o6HqGp zcfEkM?D71zAF$MS5PSfLPC=idF*gYyJknVqMrx(Fe17oz#~g7U=27ymANdySRD|#E zTIWxxgP8G2DEK+UlUt#1z-h26bXm5qEk>__F~{I7o_Mf2Jso>>RJ5fpHd`V6BZ7$ znkPmMy#J+QzOZaLSusGn*^9r)U?jo}M>^{MN`~RE^~;c<9ljKOzy6B^c$4hD;o;P0 z+tq}KPY{KI1mQ`Go4o=UlWAnqNhOHEK}pz1b&TdQIt6z4U+){NQyEy~@EX-DA*^z8 zc=C38KlE>#Dh<7gS!x(y94`^(JiE8R^DuIDniq;V7stgDr zo`Tdg0#0=WHeFCw7G4EZT~Jdqog%L?JJ~)ENgV-pAxA`DtIQ2U=4X{Hd^=u>#VbcX zW|2)E(ma<{&DZQ8mL!3RcFNJAq}X{1Ze@jY{_Wxu92^O|KGk`qYTlMbIMSA|t}e5% zh)Jc4MrDe^E8pzrd%!pU1Id|$bU4_b#K_1<7l#5eJq4Y+oQRV%V~e7B<`B>hO-bkX zlOK%x#;ZCzGmi@Sz$%YV{Zd&vOUld)4hW!q^u=QEbUV%;rhShD)b~5f@!1?KYdjLr z;fN(_b#WMjbbKsO0KnJTgKVXe-|rP&MMq6F<@4tb$W;8pq#De?dTqy-IOdbHs#r7% z_*FQS2p$jDRqA%~RtJtx2hg8YyU2>)Rb$7JD ziEkxNMSOE}lEHp~DJ#o*Gb1n~l$Nmd{d=E!=dC`wmKGNy^Smj;p{c0&A(hNvIL}^D zyfuc*^rC8X?1xS30QOJ~zPC5-)J9IEO4%R7T~QBmng+8HKOa17Tui!faziD{BNh1rDy)b%=LON^ z$GZFTHMB*2Exljm3ZX)0%k}`45q@!LNsvNAOmv84vYN`Lw8v<9d<4Y95!#}1FfQFU zH%=R%H;&vVG*DNrQonGLI_e@rg^h#JQy(E8_Jd#Ny?~Ox1lPRgc-dP9&DW zORqqrqDAkaalE&rRv8~HM5QH; zp&uN#*X=HsS5p{JgKpM8$CR8|Ka92nOQDYl?&P$#@nAKD&8MlI21@!rs@^fYuJ()i zZEV}N(Iky+8;z|7joH{X8mqC5#%^re*s*ig^S=d@zK=>s={i_AIOE4cs;yzs zOYK1}4=H#+GgRk!YyI>D`FDQ)*G3wg{K}GX6pA8`?<#?!qUM#f5<@cqpid-S;(sAZ zV9@k~YBr%`fO(LJiZ;X5Y55mSS6hD-2L|ENb{|Cla8c2Zop+~P`fu%uonEW=l?iN= zrL?~9l-fQ8Ty>CQvCfp;&K}6)pBQMZ>sI@1dUUHPi;;VL3E^e z$EzB8ftovH7YFIwHFzVuH~lC`JBKCfKcIEK{rc9>O7|TVUR3&$W9Zc6OoI!Ob*_Sk zD!ZGi0D-M4JKOH~Y~+!E*;Wh5wMj>f>&tmL&B&J-%Nh1hy%Si{F*MSs(a}idBa;HS z!oos|V@QIVgV^Zk2__Xg;UskoS2U^2!6(+ag>BI6_nYw|&Wo~Y;@98PS0THQE@sTW z+K!j&#`4WJ6SCIf23?sq*KQ&jKhCi8@T+7553GNBewkXI9#|vyTj%`KX z&cLEMCBDnhw!49-INeHCbvjkCU*FRS_G9#gg}?mA;S(;|LeZJ`kbp8geypisHi#Y@ z9SunE8^yj0WK2J`C6gmh4h*3xifK|K#k5FMKHFgCVv{!Qp##k?OUtQOZ>c*a&MpNaSCyt^|y$?okyVBYRw;fG%PuyNAw(-WDvuTQiJNJ3u6xP zzhz8gnu)|Hkh!FjOJGR#NiZw{6i)M0b&Qg~?$8&Xc|H>TfCAk(o9Tln<7j|_o(&0@ zAQY1)8B!P9jL_>H26Ny^)~4UQ3wd7SBcJAHvw33+dT#gcnRiV;;^u@6^egJG8)ArX zQf3W|2PXM>OWMeE{)u1(tBW`x9ZX@jngaoLQ;|}VnU8$Q7<`rHzJN<1i^4sR-<*Mt z0NE#Q+&e!8B$6Ogs~MNt5+N^OdJjo0w&I>9AL7oRkVrmIp)9s+6^TPDKfjy7Z=fz+ z^PU6wS4NJ%TQksTdO0mZ87}5n@aHu8mOGVt)%EU}Di{1L-7=eVVKxxe{uw)tW9ZXc zIgnMXaU9$MU=`{@9N2)4PgD0{e-r~)?<3z;RanoJ} z2n`tb20})Y)G*K`^0~Mz3R_uWXZI+oy9EL4A80V1Y0>Vd^Ma>g?kbr_Y{GQM%gZ&yK4?6BqY>o8KIWN|NK6$Jf zqal)!oa*qH?S0*0SSM?0?OE_bM~4Rsryx!gvy{AVEN#Uj`^p5h$@3^`dS;yJuA3+I zPygw~<0v&%@cQ;XgzsjxgCOO{xvUcC0^6@!&~XZF%l|acjwdVf8bIH+FkmP2UxCd9 zlgrBedzkhZxy+dD(UTqeE@1QYeA2g}`bIz%D=_cSpC*7oS1p|vf`-s#cU%$S-*c(E znOCPpiPR_Ys3onk zrU<8Pszs*edaid0a15?>A*bB70$&0$0_Z@6^E!q5)v-j%`U#!OrlSBm)nfTOBB070$hb4N!VRa^A zu0Un3)Nc9E-G#SZJ$0Xxvn96Wjw3GK(<3?y@utEL-_#xi7fAMEIfzEQx6PO+tDJhn z)d`tvL>;F99{&$QD|9j@S~5}1AOMw2wtH{NInqW^wZZu;#NX;o1dyfjFsh26uuvmn zV~0Sd!$y6Tv8jEqfVc4^%;{p+dU~vavmrd3MJ>I$V95^w>DUp zJ}h4qO;x~u38SeQ`3bk#nSo3|@Kswc?P@SFAt8j@ArWBN>MyUI?Vc{MPQz(iPC=8A zk|xjzoZ|8}A}eMqcc*AaL?eV+*v$$Y50YF9`C%z2r#6I61 zl5g*8`k>cBzkK_Hu1-2WW*JZcI-TcY)V&r;)>714#N1r+_5TRnN@W(kTVcYzwTMX; zl&AzS*HL&`rR=C8izX?D4b2S4o@>>%&M~PAxH^CfnL{DL;Zam^Y z744wpjk5?;5@e0g15Im{unj1dFN60N=IccdcL0ps&A22d*Z# z?i6()_?m9o)_nf75P>$0wHs!^KYuLrrrt|laS}f1!OWE|{e5r1JEr1=g{flA*qX=j z>Y*5P=Uc3P!SZgd-J17$AYg(xUun+l(zDndOJK4}xS?79+G%#|Q`rR94(4wP#qQbV4i-u)gBSINq3cae4{-jsGiiPyLpOv(;<8lWU z&r#Z_oHj)fB??WLi=#_561aR^ss5NYeUNocMf@XQIfH>aB&0pp)F_yq#Fv)`*MW4l zA9ls8VRYZx^LR5d#*AftW&1DcsNlXhWB5gA2fnm$6;Af|lp|(tzG5^4`bqR~e+moH z+*c9vn1vcWjcaHVj(T);WrNzPC#EMIzLj(ugcIj`=O=W?@Cb>tBuhQ*4x&%M>4k>6 zYb67s|FE-dKT9eLHvZta>%&qpr-CgC6QQHhjxBcOtlhki$>Ma9X51i%#a@1fQ00*? zIvUV*^`7}r+fKID5l@kY8tOV2HRkC=ov`m)cIKuj!=y@=#lTpQcX(^JM&m2g-VNC>G@5lRsG8zQaEu9GSlo6GdjUw1(U3()IA|n ziUNrJ>{`ZTg*rmDW&Ah5;1c;m?mpp?FsyMJ|J>daRx1^!S)|f_*6B$Uq%lx|&p7WKdSv&@h}% z4UyHmnXK84t#_vIaH5{{m4bx@=BrJa=^QnNn;M=-j%k2g0SzjwkxhAwMuktE_v6n- zJL}ObLVjF8bnUWVYH+b~OIW3=1M)F%hfONnH!1yb$k1vAt&YcI0X;rQqv8Aykr5}? zZ6zVNM0{GDx=>9}x4J;sijAKN-4x3X&yXrcM1N*2NqMnx`g67Nhs@KM>SZ!r2fQII zXnmq@NY)_3Dk_oGscl?ZDa4B`Y2iEj>|ad*bY}c>_wN!$jPl7hs^5c8NBc_~BuRr4 zSLB>vb##zorqN$7i^x8g7Z!}Bg5l!}yCfm^n)m&YO0?Upx&=}xlM?kHGBccJZ8EIk zP{*7|cx|BiCBkNW!g_UR;#mr0Le%7oEWYjUj2&Aca76azXqi>@UamQhtZNIfq3EEo zF^TYsldGT=W2G^*`7$stmeVv?Oq$$Q6>2wFAU#}eL;fnz_r@z)C%L`spihZPyF&Ctmn3%dhgBXb# zElX;>8n1$q5djQHa7c(u#dJ4oVs1*xE{?7Se7O2VdAKaNgiPMcL0IQ?SZ=D^z3KNs zkT+96DSqroEE1S~D~-td{e75H`>DHpy|TzC`t`Vrgy=Pf^rNP2{Vv(Q6{2lV;mD(iP=$3|e7KIb6taxG1c4El=*X5uKZFtr`DHJadI8*t0-#~Gu_$m%=zfKjC?KrVP6)s1=GgXT z2I|C)_33jE4EZ!#D*+d->Cr#+YMD9e3$ZX&Hji49M;}xHEKFvw%+{*SpWthIHpa~> zl$BU6{p?k}^va{cCw>qWAtXj6Cn(E_GnfR58-oy^N9;nUF??}GYro|yBk_X``-S@I zVITN317wlgdIGlk+l{@}Iqgtf1|2@X3wwC9PFz{u=X%%PSCgf7ejrvDJoMEIKfJ00 ztUH&*-n`H`@^eAD4GQ5H>@BygvG;_HDPm>=zI9&z&%>$QDeSb+%%3T%cBO@aL zsi|LLV{JO4VhExhC6&oJIT4VNMN5KVjZMgfMMaTc14{GdaO|yY0FrG2IaP|GtxhupHyjL@MpNd*%G@k30M9i_hQveFtZ?c2mBUuW|2w>eq_n z#tTC|bykze**&NCi?>DW99Ba~{jjPd;F#F-_1RYHG|F_ORI#b$q9Sm|r|=onRWZ5# zio!;Du(wAvfK>L*2P{K3{Pu5kX*c|H0qcIqNB~Q0z=~eY(I9 zk5UE?uI>!0%!~&K4PAc}vK-P-)DbASUiN~-u=J#H?=gKEC(Bn;$%auf?MNkRs<%PLLHfJGQn8mIcb0polf${3m4x81)U*0}f!8>X`JF3&sj>*X8W-i{A z`+*}8_hBsx7%d@X(8RFa(_dz*U6s;h5{BPbA0laoxL?m9e7;7;G{Gn9B8x%0gqk8{ znG7e7{mHT6Px*Z0ceYZxJ716XZ>(w+u|L(p>4$M0(lV?S{F5iT&uT{6(PD$`?|{WE zdBBuJ3z0&UnsznzqefMjUT^p6OILET-9&oAFP#R&>&GqX<5>xWEq@Y}vC>P09J^ma zAFLu3nwfwC9iqA#zf4Vv=;7hi(Mjbf5@A6ND2+w~QomX6U+dDRr_g`43l5<$b*U>W zn6nnHG5GKeKmgu;k#Wf;b3Y!@d{o1@)2KgNet~elE^HkgBz{)?L%LA1Okob~)J9{+ z)#-u6xzo?)6?=i1W+ zFQnuNXTEU2boHSK;Qhc-4=3zC>A$S1S?;>uTYJ>}VEYr@Dh`)0U4Gmctmq1>0Wa-} zOGULeGfabVe`f2btc8=OL_(CF4vR)OAy4w`0i=pxBH|VFGf^hmbLZF7EayLI419saZ&ZO?f>)m&UA2P!2A zrpI^4ZSWv_2h;!WW4oyAx>o2S!qt7`@5WnDI#dxpi95^LJ5X2pnltw4U2XmZ-DUgT z=yAuZ(S2NWN-?I`w7j}H_Cf!}MC8#NcjoEKsZQ6gD5$d}czSWPF>l)3Sc+a_z0*S&SmdknqXB_Rwnw$ zHj@?YB&95OW(wsS9crNT^uCIVho>aP$1?)iYg%!q<-#CztEF|UDyDbLIPH)+S*kqh zkX-+<-Z|ybvMFj zI#{TpTdXg^mGu0};H<~%D7COO8zJ#m>%HZKt~Sf9yq-ZxiNb{nWCu9^_l4&MUibz3 zf#hF?C@4tN260M)5xuQWb=qCLcs~zug{5e&j_#HW{{Y)v(2$FO02#l)*Jo-M=U#Fs z$?6|v^eHmnW-m)$Sxqq(Xv}SDY>L*=txR^qR-0^`sbgYd@=FttVY*mzH1*3%Au}_* z`&ZhSEjIzfrNU&V=XcjXIp}47NWk@x5?q9&nM(1k>?(9o%Ohv(Y|`8vG_c?Ml4IT) z8QS@Un9O63CUH|TWn?|{Nc?q-1d3FlRkk_+J6 zNKmIsz%C<)Py6zj9v?~;46bXa!sCV2N1ysD)(iR$iHQfNQHxY6-aQv252deeMXvS60=r38GU&W)t5+&Ip2RU< zcT>*LEij8{nX`teE0ywxAN}}VYG+TH5L-*~01NJu?;nKE2uneB}fVbyltl3bhM zl~Mvt8=8iCDBQLhEOzl-si}}OP1YGe9og+ZU8QJMd~?%{iV!{1fArZnWRQ!WGHWh4 z)NwP^$|#O8%UQecI zCKzjYoxWIV4+!#dDX<8c_QEs^Zr$fkI}fz>jF23#-7EDc*j=ldWWAg^g_@Wb^oNF^e}TVSS{+M6xb&}& z`sY{9g+akf!Tgdk)66dmhJ(`El6l`W4V^-=G!A0El9@HIJp{fq7>}~Vq%V9D7)|JHGR(w)5y#m-p_UV_h}{!@v!v(07DD6h zu@vYY4%fU{6|-W=&vt3_^C>jrn!UXxLv0&-ijQ)F;~NZTMpi9Yqw_)&!VWX(QN$Lw=TdZEp(Y;o z-fbPIza=6Fwf~}qVAr8e(D3MCGXJ6}J%zb@iXr!d3inkC!H!2wi#N6Oa?NOLD~8S4 z*Vg5=n8EL<0?w*Zd0?wTTHx(U$X))m6z%ZJUCOFbyF@EjdpnD1@>@Bs}V!+v*=1pu4JD2^&=*b(wX0e+*z~B- z%Ls78*9;^zL^}#11bxe6vKtw#%q^T%p(A8Gu1RBtQ$V|CSzAhEW}w}kurW}TDd zbRxkf<$fMKf8@>xsEtlz%k)5<-^3%e@#!V8`rWbG^BV*eubaIsRd2>6T6d!?6!=}i zSrYu+b}xZDcOsAN`8<#OQ*oc`2(~U&g}eruk|V|P%N$VRh7~SRFnsCt%KgDH_o!Tp zB>Su&N#9+PU>J6qL_yTgBx%)Q^~v-;%>5coO?`x1*!&8jRhQ})Ho5HD5>w0B zFSF*y+i_TP&1u7_rT*+oKOgym#3rZX00AkTR8Y_TDtO(WOzq`0m@~ol7~>f5Z_MrM zKIXAXS)KcPLWNNzhrb`b(0x-+CGoR_ht`?mLh6plZGYXJMPNWq;5&1*Vot!R@VJ1q5 z`PS}?uZ3IgIo@+!Q9 zC`N|fB#9IBN{7RUPe0TUKSKtIWHVqo^b1D&;Y5GFS$<$pO7nPuHkb|xE`9Ne%SgM9xXXDd@AED69RT!#f6rmhb2!gGuLG8(~b%{g_D9 ziUU(BW0sKJhFCJYR}Qc<<=>VVpT2Y%I@bcVM6(L%8-x30r-9#vd5 zOL{)~DU=ZMWKv_;@MKW+r^I~vmdIa6`=tGxssy>7mDZXuY%r(7;qE@eTfS8lf5mS& zLV5Qapf}$f-Y2pcc8gM(VNy6$A&AHx7-bKR=xUx)RGJ^UJj95V^=~2I z$`*sNB!ypyHd0G5TtBqY3ku&5JLMw@>+o@|`YAu{N#LDw02YaGH?Q>f;8~+<%r=m8 zFyO$RS1+pGAOz?RCZQ|Ymzkm^Yr1G^uUJg8`7DFOVek9O)hqb@{q4^;Y(vA>POMyp zh%Vj1?bb9R1>!Lvd)o1n%qv!<)dFAo%@QXWr^ajk_L z_6&=W&@aKg7VjSa*P(da(S{Mm@xk>h3m-STEGui3qL<9{<+-~wYM#}~8^&dAI;EeY z#7CUk8dUx;;q~*SqG9>l8~o}*W z*Oza#T#ADu$Sge5;=a;nTI;hQl_>7?rr{)q9}dIRr|88JAQ@P{TuW;} z6%)OjF1L$0D;Pf*c4q2)B_+Q@``vR^ed={mnZO)Ogqh<1Rinv*{lV^6znA9~^o~)| zya=|^BXwis7?>jcv%g;%9G@+33uX|CNUvmV11m~av;NIAQE(VLodx;F*!N#;u)c4R$CKbOb)}ho8_tM z7qdI}$Dqks?PFM4D48A$F>|ZHh-3&z&6}&^U4myQ8sf{wHn$!okLn1l=mJCj6CW81_){6jiY?ok4z$zl(M z6$b_?u?Yn8LnWMHhJ{I#{pznNbRt_W{*k(xGPC5Xm7m)&b<2JI&Na_^wH40q2+k{i z&RNs!n&5!JdJ|rGx#c`PFaE}-V2F&|lJRN%7MuHXxeZ({(?+aH&wEJ8QCFU#(iC_> zahPQPnLC@wq-OMstH9ab7=6f0&yT;Qw#~hJq3&RcSh?$dHP~wS6Pu#vL^hFbv1m_q z?-Y!uJ3*P$qYexC4qp6mT-(o$r`ERV@G5R6#B5cBlwG84;p%{Wy9E`nWnzpDF zxz}9+(Zv0%v32}Vl>?mojtAinX$9e(epU)%|6G~3(eOM_KfyKpwbjl?Bq$9N5heGt=qxQzMS(5Z%Q%Qb8*pCs{Rzhe=mm$%? z3Y}Yxap%?uTm=4w6&Pbi9|^JDZ7xagXdxR}_|qXpE1xb3k{CYH_K4RZcjN4>FT5Ad z>i^A{#O7*AG4WbMmbny>y8BkULh$C=hK)^9K6QIj8nu_A_0L_$X&njf55Bg43G-1d z*K{tZDKx~GH?$dkVCt1$+dqq(SB5||;6_KpidbahPi4H71~=`-d0zXy;-Eu_jBt<+ z(!2z@x|FhM=QsmyQ+9UC3$57&L&KKnP*CSvYRjfR*E3@H0t4nGv5=G>_#(_2?=434 zh(fuMgsPDr&myKFi48JS6Jui~nntZ`owaKdA!lQ3NPq=3e03uBnzDwr4cxk~DSRd> z_M&4P3c(qYKB$+PYjKz#2x-OAtm*VLZ1RaDgk^oIc~~d1`Uj^}-Iyq0`qquj@9^f& zbWOVsEBCs&w|~sdUUTGI*|s~T)Vu25Lk$$-+xo|6^qjJwtQy85hW^3PzFATtj&^=X zU)$p0p?|owO%z)El=iZGAJ*iqjQmHjS14SATCch$;g+O#&L~286v=Ty&4cOwdM0QU z9Hm(-@O-$&cH@?B$%Q1iu?{GlVg$p|E@c>G#wWi~vKAu`Q{iQ#CK1^kt;Qs}LAr@j z#42PXqXhWY-jx~o_Z1iFKE~Hb-}n=* z*t^%%Dv3`*JcF+GhP&hPYM9)-ZO-r`+JfF{eFpU9Pj17n=F&$P8G4W(4_#qed_vGJ z44mbExPi1eCkW$EGf2^RuLIH6*x8a8t+}qG+Hn7c(VUM#1F=_2bCL(6y&?P@d(&p za>@VJwc!1UOB5)i^R&giwXKsx4KAjue*5=~ z=XOx%oWKq4M=EIf;%wxM>Et9vvYBmq4%67LSlC`} z?h%=OxZhc30%l5}a6ClHy%;@mhlAsgy10e+w3f(KRt*zZ zK2*}4K47gaewfLSxWye3Gsb5P4!a5@J^rcr2PD=b9Pi-w>8~|ob9{sV+K7MHaN3Jk z%$i8oeX04}(=6^jf1)psJOz9~!^7Nl5nyc&DuTTrpB|c3CfZLS@;P8;q@)JUU9&V&_ci< zta~=@D_g9upt6N}qKiwd-=RD|$ya!$q1eIn=UdQiAe4D1iS`x#j=&ti_=XZU6_&{t1rs^>ElEJq34`gg$WZd0qSB$;7q~523$){W{d) zl@YKC2ygQJKR=G2XQX)UpO4rJoojVCe7McwdEGA&)zs$L=Tx+`j_jKn8>c%xe@5eR zBg0i!!vZ?5Py-2?(@d(o5Qv7r$gKWNV7Z%kV$lkGPF0(<1)7 z6FcG1Ih*Rf4%++qTy)Hd9b86`rge?M{~Xn*5dPndUV45(BDtM8JDam2*v~q`i*qr^ z@aS;X0_FVtKP0FE1N-bRI*5JPcm=sZL{Jj1t8y5fFyJpJy{jb;dGqG9f!tcG!U~i# zpqy{o$pK5>7)9xM>!J49p#CFb96BgE7Fp*5Utbbk(`h%7FnV zmx;#Tt0di~>2l8i;>ev{Wm^^ve+0mD3qT;gdZg2NI zZ@w244wm{13=MT_bm{kpdJJHq(8C&Gr&23qsU`#RyvOV9UI=0qk2b)&+FOY}my?qd z{uML#L(Rlo1L}Vx*#9$&Epq{y{=hM0hOWW`(lS-yF*1HAZVg=*ywz1{mCg=-s0XcI zj`k3-LQ)DyXn#B>^t81B!;;-7@Yh>sI(&V1qE=0*oQ)Y81cR~*+8b{Dd4#N`3FM<7 zv#_w_bbH;?OFIGT@tvoW#Pr0#iSOBFOk-nX1$M|>TwJ6$^s@Zk4~Q)eTSL#cM^1n= zaV&8NV0Oldg&`YXZFcc^-O)ss^RHX!RgoO;mUxi>n~YwdN^81aP(r}E;;C^-=+<;n+IdB zzw@w(a{{p#E=?CJ*8uAYbp!E;pSo<0Vl0WjPL2(HjT#U_8E>)!gbA#cf&k87fkGA+ zkX(Sn&(GhAE=*>xc?CFEx1<%}VHd1t3ZQDl0FRJ;L?_w@;Ns{X8;fMX4lXqxPd#3& zA^@Xcw}PzlYHo}&YL-R z*KqUl7L(j{mRA}mCcw}Q=?y9?;d#s6$bH0faQ?f4(+{F;2LRJ{<#5bh&tJTAqx-PG zIbM3*QT^-2|8;G)l0<~ycB2!`u;-foohRZl|A=CnXeQKuuauNohWDEo47V8X-ru>Y zgCXy`LDWt~$K*Wac4feYX&%zHU#{@q(qmGY4yCZ9MEB{m!V3^DAExun5Un*oGobvW zawK=^CAXDwbYv|kC@|BVuQ4>F)?a{AmBpOwuWLoAdpmH4Z8`^wGnkw%$<6A^cgm#> zZ@G%T@7*#&$x^pG7!kDbQOhzNdbhq_d?9r0Ks3F3)x_sKeue{=4>j#g8f}eVzG4F9 z$lwM_DESXC%)vQceG3EKizQ6gZ*i8j`333MsntGAau%6KY`juRi*eZO9u0Fil6j+7 z>dDiiD`oka;5YG2{w2D1VC#3sCoXPE&ZASK9mC$ujVD`vvf)g;Ajp$(5NkXsR4LwG z9VA3);x#H+Qum3y8lspjK*PUhuU0j{qGF(M_a>CVjW#6q8K&NE zXZK~cCy$`B?BRccmfCIa8({*oZ}+C7;yk~>-5EO6J`utXqu}dVn9PC`U>)|RCq9!8 zw$*ZryEo?d6nFgJETHGp`Ir9qXlwE_gx^g@Y+hqK``zq{KpSX5{TwkXFnbkax^v3q zp@W{Ui@NKGbjA&Qu_rTdBi|5*?@y|6QTRa6@nX7@4R5C!O@ZQBhSgjWh#F@8$2SP~ z#BOu@(jArP^M=5!SEcSD$=p$CuB>0w8f$ zD{mZ*8yu|k-^D7WTDJ=bL|n(nu#knqPKWNcz<~k8NOlGZ{1W-LfJRO<&FaoL693L# z%pC98n+|shHrG?6oF2b-F*BT&qA|8e7IYk-!Z6_y5d6fUagrJQZmk5@3n+AjHPa&V z$%PhSMlWGCe)cQ8T19w%X2k*8xO~Om zywNOaH`e(Aw4lis^lZ@6^Kk#F}e7}3P9UjcS=l*MEwRz%qPC9E_UK(U*u zGwNk|dbO6qR9}ZJ?Q~?SM&hheVDpuPZMYuH*Q|1p6sj8ANm44P^#Ivs!`p=MSo}`7 z8|ItA0P#Mg3((-czYfzQ^)NFZBoaHW7p!%-J4~drA=so|I8k(4 z`Z*UzT3Y-uUFv!`_cQ#P6G9=3?dAC*=W3RNWpJ+3i%m#5Py^-vMWG?~d^30O^4;Lv zpqxr8SBA?hg+^!L$21a+VO(coU09h|p6Lqvu=P7;WFW-9*9;x6lr&PH}AJd6#$@K%a z0J@k)bysuB_>`2G`!kXqz!5pRf24H2_K41;r&|{$4$)|391%-oe~U9d;Qiq8ccr11 z|LS^2_+i`SS93FO*810h+2X2YvH34c)gfeGHG=g!a`u)C^+0dDuF;PB;XYe*$J6-` z{-|>hbuvlRjxH{MaYb_^ge(8-?5ux%J^P9U4h5wKmG_4HUd}$SWRk(XxXcs5mkZ3A z)O;pQM+o0*@t3mpecYs^f^9ELp#rgkHPK9wj+}M7kvJtfh*4$)qb*IdO1GDr@hZ4} z8(e{<;AFcG{}uha{BE%ixk!RO%>{a|+E$tqT5`p%|T5cLcH3 zCb>kW-x4_zK?x~kFC-oL1-om^Y6zuvUqf#ads9uhqyoWfAIqqQ>?TVU0zUzFN(mMo z8A3}$2$2C5uk_4Ih+c!c^2}pnqX{1Qq+VmNVW%aYZe-SzL`y(em}T3;GsrT8&s$Uc zNPyvu9KYVX$H$l2-MEJv+eC8ZUZWC1e$u{}Mz+3^{hixx9?`E(zsUX_cS|A4^H7!n z8^an%^At5{N=Q^`_O8I4H)l@l+@NP*u z`tCvxgF*Ajc|0s20D65r+Whq6;}zoVtpVrXZv=qE_3(cj${h7h_cpkzEiHp*OA!Fl z1SN}GsJBq6PFeuq`nV!IN{!t3DW7uj6285Pw6!f1HD_N%zEYps>L7=!7)|Na_l#1X%)BHJ}Gz{@(h9m)yYQw~*^8X7%^BzS}Y~rtE}s1Mw)( z(=eC#T*>60aERZCGBkWQ;+G*gF>N#C5cscJbtZ$MJxS;;D}19tOL1{=mRBDYfTi~4 zdZ+(QhLV!<+U4Udl__&q#AD@>DYg#77U>zn_a0LK^ZZ5H6{%8vei=V~$QYbJk zr)D(f(d)&O%<72~Pfv(<$Hr4kq=3iPsA98T=-b%q^HIt1>|l<Z%NZRsN_7a}YY(ZY(DtmWpEbtl$Ap8c_KC+5&&;PpLqbB5=F0c>@~RJWSNma5 zP5%J&k*K)^y+gt`JeB;4vl8HxQ3LSO+KI#scGl7nTkQvN_G|y@(h8pR7-j?4rG^w7FZaXY;o*BtuC8CN>2;%q8-7B1^lQi4J<+&B)*B@(Ol)ir zxzGak>8j`bKR~+qdU2#EzFzDvW^h-^h=HVpba^%DSf3K|%r5}ouy*UwkKgkqSm*Vh zv&12gS^Yhu&Fum|m$ay~RL#{*=$MpWB6nEMTL$ffT&+lR)gndLP>P127i4n4k^#y} z%z4ZzQZ}B{{V+T2GE3Bo3b0I!KqU+%0c%D35ZX3A7KuN0M}M>i`#|nbWs}hOmN&UZ195FXxhjkd4YY> zD^Dqycx8QE!UFi;xrUfY{LxGvDVMbJU*1B+~o4J5)?217Z1bvnxuAA}sj9TW|^h z-|;Lk4SI?r5jq^6Rr_Qy=o}e-0c58hw}(jn7K!A85%p1-q0GB;H-2)A6|$dHJ?&%2 z6^(PiDJ8yF&DJ$7^zZc7co40Q zqv58<_dHec=*Tz!xR<)x{OYN5u^Rfc7dN~Pj*go?aBKBBT5Ih3^bzNJMqEE?M*nh$ zwseH0o@PT8fX(!MIjR<#okK#kyT9KwL)AG|r^}!rZAqVN$mv|dg@AxN$4pj=RWYY? zShH6ZAa%v6m0s3u?NV9m$vSNMWYU%7cb*?k(zN;u{nFWq1pwA-vtCpZR`nvXA|@s# zG8zZ;rEp&qI-!vXN0P0zEI?;t`eGxl6+qzH8zbS%Z%{#;#lr77ZbN@HYo&9~d;7_HvTlmzp|vIdOEz#7)C2as=D=1RL~wg`~zL zh8X;w^jqTbmuxSGGZk7jt*+_R$u4ozl*xV5)5`I)d4Sxnww6`;#_9@-$XGE+XRL74 zQA7}4E-NDgWV&qa6h3BMuaxAIIWH+L?uhVZCV!NpO=q^?ze&I{#}Qsw8jIo0C<{@N z;sq8QCmac@(U+FwIgY+0Cfylu7&_?vJ~@~~Wxw0QNs&^n*`H#>FGXdjJuY{h{Pzcc z#NY|(uXHZ$lo%+;&qm4Qgt;2ic*VPe2H0lSZuRIca;7md3U-R0fU0H;7ehl_9HTx>i~ zt7WZ`Kud6Yv^98hP*rOpVe4{c5obPrd3$qzwsu>)J-D)hI~;p&!oaz^kZs(5x?7r? z>5MQ^sT0HIXvDNxWUoii{RtpJ&l=cU=yev3qC3OV0Op5@9ve;W{i$oGx@ttEtPysV zHV?0^%vwe!J}HIRKnfxO0fx3Ne#2-OwjPoE9sm~pXE1LvF5%+?FZf&p(b<`^GlA#O z%>D%V?HhmqK}W|>TL~tEr>6Eo3`5h>COslia0cR(`e_)Qx#*hls|;r8seONzEJtD~ zTRGJH!v;fSHTuP+Hc@Xz+v&&DSJOjna(Ar#y`8eTTbds5`y0ujFVkdbgMsn7Bw5dYaL;ps^YcX~9o7Xmo zpk=b|Jy&i=i zx+?tf;M_h>j@>N@L$NtYv9YnFR1vXppV$2;&oj3GP7R=nK^xlTPrgd*B<*KqW;!pi zsfq)hNW(I+;^@k0vpTXzUT5yYEvT4pbS8<-W7zQUtm-o-;QQqgsz9F>Wn7*kpNN3f zCYdm}|2IIG-v>7e0F>|{6?;9LZtT9SH1Np(_QLRe%`w85je>EQoE(>X@h)rMQUvDw(R z-PpEmvq@t+jcwaWlk6moZ5xfzxUu!E_k8F4+JE<0W331Cp7WX^bW)PT`wti8*6Sc9 zH5dFs|93p=`4TQ4ueE_u>2!Lg#pU^V*s?NH4{%$pHJ0x?!XLq9*e(_eX|sI({JCQ? zVo3+2wD2L&CoG4C*<0$$qbJ9(v-SDN$;GJ4%c8yynM`U=L!8!1-9bSKu?AFX zhVvOo#qr359A3L^KWvPDzz&XBu~V{S1Hi^I`QvLgFD6@C<7jMqm(FRNdLyg88D_OS z%S(;iNqI17R_ir}(^`M4D9Gb&KG~(+1zI^~^Pp6tMg=1EgJ5BrH8_q> zPJ(I(#iR8TF=CD8o<{Fu^%oR#cvQ~e;yL`E4OF7{Lu!;rNlEP+M$r%EOKY&=_FfWt zthXh$dhp>doS6E0EbI>YykEnE~Z{|;@?#lRq2%lgEd3Lp1}P1e}&!J%}nl zF;Pc;7`!au_!k_*>ZM_?2uVVxBhW1GdiDMYU7;bDTbl-7S-CM=m5K#wh9W4Bj^6AJ9@p`XK^-Vh$E0mZb5+^J-DYt^xj`8I8P8q{^a0RGP9zFJ3Iia^lx5vuaQNaZ6 z2p?@-$l-{-L&F?1eys6%o&=3eL%WqfT5yD3XxCfetllwug^eH$3>rAk&sab7MM!-) zeEo!A`!f<}=BlM&74w_=wmWipbnWP!w-=Xw{Jyyv2&MjBmksN{$Vya2f$^8+4TBzc zG%SKD2XvF0k^<=xLf59Tv_w*kpyN;#2XR;+U#EE>D5Z(tNHjD!_$w^@$%Wm@-hT4m zt$NF7N#Em4qFdF5bTy7hU%8<~dG+s(QZgfDtWw*Ws+y$0M!8-lGH|f#>xxmB%+HDR z@35G9$Ti>)*F_1jQBg@>pa0;MmWlG0(g-aR2@ohZm4N{(8ha*wFt8sO9x7Bs6`>O6 z!@VdX=qMiJGtSLbN@!>t(g#5@87W$679o0iS?ny=BECHu(KXRUQpcLxu&|)A&`V$y z6%BfEaoOSs8RqN6gvx(Y*#GLS3Vq`dmXgTlVU3;#CniSP^w0VR?ybRWPsSD?1Ign` zA24Z;jhTj#1o(LEv5QjsMDvS(>nl0s$noy1{orKi*s&8@FGsm1vw&eRs2k?b?ll0NV7}WV>4( zWLpZC1Xe%E)aqmfi19_w<{B6eO5>v9C0tBKt)^J82n2jKBb${JkdVOymW0l|cWtq= zrD8ZSi0r={tQf^5ZRDz?2L?tiu6G*Xv}C;>VTWfB1b*W$FC2v*Z&708BO@g&mrDQ9 zM9bhUXKgvJm^vsAg1+BlvGNxq_+|p5bp(mUyR&2`P^HU|;DebvD_;Fs5=t|FU%}FU zuq96a=o-8L1W4E3cQmv)H4Ndsii(o5%YgoW8}erbCS3qPdQlGMQ%Nd_byMc%4L4^i-c_Wg=fA5q7M4rvSH zqk%g51X7nDPpoggzMh?AOu&F9Vx(9KGYAi4b#$`8dF7p3LEDgZJzTwrL-@n5DsdKXv|bk)Z&Rr4383$M(s72#RZl zX!W!;9&n};;CjZE{e!+W-&>_2GdW%~qA5;Uf6=OU#@aHPBu0saC0ZsOiJ1q4OMbW6 zD0AtyOsXLUhe({aX7@7)$xO~ChLuowUxetaa45Id{TAe`GBV;)h?=_Wp?3a8NqzMF zOn$T7R$gQrQYZFjOPc0kr{)L?!q5h;KhC!|sP&d8@yoovjohdws@di7;XpyBUoO`M zi*>0#Nr}7q)APG_ye@R5jQh1d)MLdyw?v+Hvqx}vX;53ZDxdtG2@O};6v3Ix5tb@- z$TN!y9(tyGBA6vR0}D;4c-f(>K5|}Z8yY0M$IdrX}EIZ5pZLv%+#gbWq-sWK1*6S1*2${4GN=&RJuti_EW z2t{EtrY4`1Mv`1Iq03}L-KRw;DwAIgQNNTYVK5&qv)jzS6DQmlN zcV)8iEr7_JO_M@~SL0xEuGrf7x(K7zUlyJqlk;G-Pz;_`Mha=c!=MgW~ZPsQ_Jf8#r#2U1&H0h0HSql`htWKbG>5U-9SX<)x-1w7Unv; z*db&tuT2QoiFmzlRD0bQY(2x)aJ!`bS!BFIuUyyA9l^Cd$xH%pPNMj43 z{RGQG@Hz$GCn6x3ckBKOx6nC*HViv^r|8}26HV7-HrsU(rcsPAB6p^;DgFhsJMU?5 zsrXKxZMI{^{Rh|F>e_P$6$yIOVO!r!(yPyvY8sR9I<5xZBL1Dq3Nt%fFgo~G2sU4`vWWToFmyEG= zzGoPsZ}55Gw@UuN;UfK!d?Kd;M^3&LnU3ZDkxLdO7rlM`Wo?7L* zLHkt~8+PFV=&p!bOX^=shd73H?KFzu=<=H#c4qyMe(pl}y+fr>k=-Q<7NH!4J#O^L zI*P8P2T93I&yjlbG3aCmvXa^7m3VFWD$-XkZdlvtNqKol#Kg}SM;#vQbH56qrPtd0 z_(EpCTd%7_#1lpSj@CO{rlh~@RH4+r(c_^D%Gsbek7*)BRo_U7?y??PtKj zJ(lqzmqW;{5+`*qCg!k4ZQ8++otQvx;IQaXN^Q}?n(M-Lpy;^^E-bl)x}`jsPm?>< zD*sRI+_T1IMfmCL0uBx_MVDxMA|oM=Lqbmlv#g>L#x*@YKCC3P*|*x@sNL1h7>-;! zaF#28KS{+(boCeyvGmQ8<;(la5+tF;D82gbP$q4FSsL?53MTzdZwd-GS0*$4qG1y> zK&lyTmG86mKU>!8nm2|Q&4++tF`FZEHNGF0m71T9yzWYv!yCq+S$Mi}x}zUuiCxHK z7tsb)Kyh&1YK9;zPvpnNE6wDaFXth)R8>$WQ#*<3@j1;?0Wg{#EG$WT)yJ&e#gMKp z+&n>~H0<0eLsIktrymEO$gqSmuRWiXy(`=h9F^slAq4yx{V81xIp2~sVZ+C##;2!E zdPc;{7A?)@OFU<(ZVCC4(6G{`7&&iT*ezq2JespOXpv{~qYKKYKK%Tyg1CG%hnk?0 zDR5V6_O9G7s>T=z)yjv-IXPk4+fDUD7y3ky%mwBa)VfrolSxx?Z3i2DUeP4zA$@&2 zcMG0F_uaV=d#5_$y@1W(PU7EDeUWiJv7zo=)yw5C$U!COf<`gGQoXd$m;_^gl^@Yy zB4+jW?m_=>(<VD8jUun26^8oyTBQFkZw0T)@+Era6 zorHEY_C5x|9rF<*q;m@I&*@bjpHh6a-Y^QYFy9so9+64YFwDdf8QrD@$ zlp7KIr1HJoW^7UPg170(?}*esnN|N`8#qo(Ml$Le4*Iq~2q+yHh0PM%u>6n^Ah-hr%4n($y74 z%S(BmCRV=b?cb3Nw}@~xDXHArGD|XA+OHAFP^P_KsL$8$V}>Av$KjSLWu;e^!?n_x zc;42mRt3CWGk1Fu$(@@$oCdS8dUW_!$Kb4>QJDT)-KYhhA(gT?t5N4JHlAa2u=mzN zPdVD%_{L4vLD@OWn;nU;u+lr%!RbK|xx&Pm1l<4F6m#MGV{l{PHEA_;UEY`oljVfB zzu3(6htW#BJY5ZF+NZ8Jt3RoyBBTc%@R7K?p8_Y0E7^lGSAba7Aq53YF`~!xU|emn znAHtrQ@-ffF&T^tceppg`$i&7==2qfFdU18cD2LouOUFVp5P2~mt<#`-oBNXyCLFZ z1QwtY&Z2cb`pN@T%KWgVoEpqOopm2(u;@glmpz|5KoQf>a%yXWAd$4s0axuOQm(CF zP!@|)&_DY(=4qnsks7UZ)QPR0n>~g)A_rq3zZZ^w+q{un(67yU?2 zfwu8CG!w9;su?LA=rOx>T4>lgy6GDqV!wVGmjumiggX9(v1r#;6M_w4@E5z;S6BsE zqWK%~7VF<}eR4tYaWjYM?m#29J|kJKo32fuYEW+Zz`BC_S;{=R&klxBvECs?>NMf8TZj)*Rk#V$ zhomSaWM*mvB{2})6LQ(aJ1xO~W(yI6PG+a3kdW}X7}#gi4PNg~LNevYeqAiWjr2T; zh6mM>OB!EQs64sviE|a&8Cde76K!s8vPSK`dTsINI4(fXrKP^IN@Y%0q67I|4wbUl z1rXZna&1iO3o20_6t8HD3OUmGTJks+vO1HK6I^8iqKlbc*E$XW*u_@WHBak@mqbM9 z4Q=??z>H2X>@OFXF02DW3i25 z?9{}f6oQ?d5M*Z+GLbHZMv#N3r1V35Dc@*+*m{WSAEpSvz;3x}`jt?GY%(5%EVokk z-f}3cTN(4;B+Qe`4!Q?eQGSXno%^MJQAoKBfC)XA1yxc}Y)}7cR255STCY$M%hlm> z^OAO}La#Ga7~$R?G(BI{t})Ezo-0nSE>nyhn9dzjeQ?~A9ckSj-o5NmEAeWwqGpj} zV7!%X+NvCFi(Y;c3q0fID;Cphn0J28qRe8Qh$tzRQd})onla{CrQBcC(c`d3C8t%* zQchREL*htQAwq>eB(@^2EpeG+TONPiOx60C#_P0mcBW^@QE(}ybJh)n3t|SY?kp(O z_`iC#^QYUj67??KKuM{HeZpCX2q~rPi@sXMfCe?m1psGJc_|qQNdW=Qkiz9gclf$x z{a~bNJ*JU#6a?5i9c_xRL^*x8Ra7Z(g2teqL2uZ+SjONMya){!Tl~+l@y0?gYGXVd zjLLxzy+OEzr3Kx>+`x_lrnnw zv{_jdYUPSy%F8P&5y`oPhO2*myu}L$%w^ERrHlf{3ZVKh;WOts0)<$0POp13?3pS# zzac#x``AoJDUW~m0*})+G@Xl!zplN4;)+Qw5V3J09p7w|*R0b&7fPr{-cci0NC-|* zaSsYb=2IzOaRiVYcE^(C-FprKYxraF?XJjwP`Yh3Cp`H2vhG2pz0Ke=xeX;xEjo8CrH{^jOdO&YCY_RHp!liZ*7 zKM^5RFY_^M;sDYH(#i*IR99kZvzC}W2ZctL>8k4z3FTH#m4Ij&B@^A@yTJIzboHn8?~bF|MGZCtnmEHQ@5(1%b&ToX zT+DU4&9rhH9FR@Ua?gNT)c;@cjEzhv)k_kO!o%0EUnym5GJ4`Tk|j7eI1`P{2Tg@R zk#Ki+cb++udufwoMSTp|DI(cel<=dm_}t&Gc0@Khy^?hznf3wxxaZpwD_|#$1E{OF z3F}GdKW+|WY^VErd%yI-vxNLGuZorhmt_djtOaFQXnb*V1Jl=EOw7ufaYu1dDrw6$tN*=kkXS#2=$ zyp^=aO~htq^quQCogDj|U2-f3WeR`sRo+Ii3oz=#c+-=XlS@t;`$`)2H$V3esk~ok zJC*-Dl>);w*}AUuKeSLy}fRARkuP^Ncse9_-uwSvQLi!1?iW8uGnWZI4 z;5^(QfIMR)`NQ}!)-aV03)}df`ujV3=84MSzH1@##a|R!Lk#ItEDgoyB;JOG8==LD z+%ik#9NV(K?Xk$DON@-{>=3H!B*k0-AFK|K%fB*-(xJJ09*vlbh>mR}OB3`L7p!gD1#q(AB+Qr_9=`;30qI665QN(dOkJ3Z0D7(x1TS&0l7R)i5<|ETPK00(+$;n|pKFB=1ZEu)P&wAe1i!PmJTNRFB zO_ui zWQ94vC&rXRpFY_;T{}^L)s30o&J>ZWQh~UIj65>8X(Zv!SVUwugQm>+KEc*1DC zE2Z0xFsZH&1{d60@OsV`Rh6+5)RznDOd40@=fw%L`~2 zDNwwZ+kg0y%j*r~%;?W55$CUtRiG8~u~xdilOk!=l?+VKI~ASH@jyA{*nQvHDxFBB z*LtG+N(;5ftcrNLTsxulV>;*C048MCmB+<;Dlr-^Hg-fx3PxQDY?vt30*PU|q4{Dr zPXUroiFN{+%lnI)VQNZr93fxuL!9fs4P1pRj$P(mpbe@RsL(ndGAv?ZVk)S=o1a(% z4pD$nJ-oVlwKkSqTW{`Z>t;PnK5GR*q3cH=C9^kv>-gq#1_0>UXhpZ=@`hEb%heF zXC|I@j@2?&ov=9G`-N}WejWBuUAOiFvE~-0+m1@8zW9{cg1;ub{16Eip)K~rhmp}? z+BoKjuI#BMq56}e9QVRs!l~ThI}0*x%1YH_ifdEjK-KvV8yjFaH7{F3aL-;Cx5(i} z8*aD4wrX3gy#{>!LAAAbO>wZo*K+Cep8S0H1!~R;3Sp?QkQ-AwOY~?nKKFFd0W1vk za)A{U44TNxSoXn;(6%1`^zrl@uzz(DKnvIEo>u6n#b#PGtqt5_D9~P5EH?~k|X^MJs5s;?n zv<*`0MB&8CGH;W?BB5N|DCs$d5JXk7n{JPe;^o%4ZRRn+PKfxQd0Mb^Io(14&!ZCk zi|C98zMNWUX$C!HvvLN6LNj7p;OV%Wx}JamQ;zN=9x1cp!+Ht=^}UoBqn;s%gs38x zpM-l}wody$zl9;CN7LN_JO~v_x;iP9CaBxbZM8)G&6JZBt$)ifHq)JR?X(q34|CzSD6*A@IF3q(!V`Yom0$Kr~X4%w&fKSxK z2`GEHwt22Dm#ezCZ*mr|^CA$eoqwyL7;C+CMY1n8H70`#+xO)oJ;I_ti?y`@<8mAsrq@CIjnDK#LOG z9h(rmT`mo6G%|1BvAruQecDHG?3w0n-3sCGN-Wv#bS~d&lN}!b!;J*>4jenQ$VEky znGr1Sj*k&)-%ar6d~>Uj=I3_&X`|oa0!N?D*k4y$&D!_uBznEoUn+NUPBb-`Zge`% z7$O!i|HS<*CN^yHC3^_lS~@5ZKd8zyOm0V^CQF^PAdCPwV<{#x%up-l7^itMccaAV zYuYFgTm&VbPZW2#s6PWt`N^t)@;{3`k>2GlVlAzmh^B7%ExPT6$d+~b(y`tJVxZnf)$HXE0|eE)^- z=l5Ek$=a>TraEijo>Gs!4-wmD1Mep;yZUZEc>5-7juOb?S<+3)ox3tzJcJzZ_>p7J^X@(FPx1ugmj&JJGkcFF$@x><*x%+lteqz*7JLw=mfy zuWy-X<2p(jwcr%OBl7cdY179Z9xKN1qkm8uUhX;R0&iZURU2UjCnpin(9mcmnpx{@ z|4$2$ZS9;V_xRFSaD05s0#z@dMuR{02Q+^=cVgabhy8I?=G0ZAdpLrzwV%PV3!jY` z{-ax79+WY}h_p7z|9Gy$uV=A5l*XuZ)d#}~%*efVdxO3h*8h&~a>Vhk=^_x5UnbqO zBP6SHsOI?D@rLhh?Ko(kZUppTK|SAbT=gr}Mb9aiL7CS3&OBx5ap-47wX@2xwr;5+ zHmpN)io_xELd0UoyXr??KTH(v8zJV|?Xk^uRpMB-gD2ZD2GzE#rpiI@`Xm82m%bv2 zNT3yExJ2gqX*YuBd^J(u{_-THhSzPeu$taHnguY;7@}D|aP&sHW(WO6yNp@y%WUE;bhJmaYDjuDCItF}Lfp4QG3>1{iZKZ*;@Qj}> zVv!Zw5&|M3WZPC!qx0D^qvezz*g8XPX(?3q?_X9Zt;VwBqp6yE!*UmxVAMuPBYo*+ zChB%P;W1gUYd=1yu@P~!o3HE=ywu6Ecj^ZtA=(e|tIk#;&PZrJe? zj*UlRP1L?q2-5>ya-epI##d0W`{V1@2XR2O_`8Yr4=XZ5>b9{RjquPXY$SEfpSBOw zHI{GPYUfGWfrX^M>D65t->AmNv4S0C;ayN%s_f@2illt3Yv$1r9O%8gw6(Q+=jYK& z1xQPjOD?VdrqB}EqpuS1dAOTsa>A79Z&-ZoSAWn`7RwjpWOYBc(AGI2At%R&hQ{M@ zKj-{!o?y7sP;l8dN{)q}EA86Y9`@mGMTgX`y&ahBuN-;4G#?OBx4aU4SlzlQ!NKJR zi&R*l?K_+mX>I4+s;y5Ef}GZB!N4{|<`;nwCJLsQ$1#${Ijr5LiUtPzhTFe%^$_e+QSfuAS}z={Svkf(*lkDn-GB;5l` z)ZBXrN@l592?n*q!z;%SN^*Jd1O2=yQF9`U^e(xMKj%OELCZE0l5V2H{qM|;e3R!{ z!Cd$M8H*pI!#CJ~TELy2_&Kv-v(No_9zlyX^|X1Fgt*2#BO*a{_@Df$RRz4>-rzWR zRSlSYV5X+#T8i{P%`<1010E1p9LrNH9W*%FJ(w{$^I))Kvxsg$U^zsipw|r@1l@k=M)dgn42v zxmW3^grc$^}g#oi647p4c?7wcnYf5DQ1mWvhn(i77$hJ{&IMHJc_0E z@*S!Si0oQ#b$&a37fyc76YvQ>o#PWzm6SzQ=;m`j*G6^AocC9m+L`+$lezxa>0s^` z+FQ|$;^z%Qf(ZsLDhr#sE3PDJPm2inOKB)_Kv=_M*x8$Hb*K(oZ(f?~ z?!to4voq4~7-w1lu7GN?hIAnf1`!# zHX~+Iig(_~TY$WCa}7F037Odj9x6^UUcci7+rCBp#1k4rO5_X}rk!)04B&;4G8Lju zViPWT9Elm~q;7JS;gNIfl(^n8dt$c~$_Wx+{hF9rODYzPj-4bpT$C=ft30kgxTK@b zEuqN&7&%W(v^y$EqswPJ%zb(cH!ge%U_JP@VTvY;C_7b&IIIp_DPot1m6i4F4*^Ii!jrm{)5WUT*H(@?VyG<23#cXw6*kD$ z`(07PKierG#~?nE zP5{2jnvjDii+Sw9?YP0?XpqI_fTyaaMyt2`pEk!dPll#>77V8MF_d?axY{iMy|q>O zGX{f{pI^;}goXwp0%gRkPpR+NcOUvrO|`1IGd0MIn7E-i#Pj+lDzGPjACH@>yadDj zpKmxCd5)K^oZQdJNqa!yfs~Sh$kST1n3|}ctr%c=Yy3{?{dfYSYm$QfUoVOCe$Q^* zmyiY?3)}@le2jIOE>Rk(MVz9Hq2HH9d&2;B4+5@2x=eO>?Fg>h% zCQ_Z>_iqi=rB*6wYHGe||KP0%;VNDb|1JOXz+ODr#L3BN7V_-v`PNsI*=hm45(}+< zK&gP@05lU;!wBGz3(QtK+|HnR{d41NsV9Kou7fb?lFd>TW<}1r3<;Ttud%dy95k8P z?N-2nV@-WMbLBAi)8(I56xVqoT3B`AG#VEL^3u@28(8$O$*V=tI8MGnDn zl&p4o-^0V85Q!6HQzSP^_|6LwxD=90M9!D|RFUR^V`FPfNFo*V4V(w6%KwKje$GzV zA}l)$go#D8um@biOk>yQh{8B2A+Sv@t@tE3V5et~=;7@=J^-s*9q;$ef% zt?h5mS`rb{IdG=qL*H6NUBEj$dU`=Nd9(B5d^Edn&&Fj5+P$mVZ^3wi8<_$Jj{8g1 z;v9CCDijkRHnApW%J_FhjEzYIPSoXyJYa}{OK z$aq3)AMmbL$|YY; zq%+^D{l*AOz5-0cqFIY-H0Y5)@D4G_&)uENB8WldE|!j0WHO5ulfMa`$yNG`fYsQ& zLvJA1Tbrybk^qWKBq>x4kPFmrAeD%@sSZ?Vla~E2n19PI<>NIfpg@9p<)_wcxAONj z$2v!*kbDA$_S5xp?rGtq;6KT26aP+ut({pajsTALOYnox;YjVz-$0j7D8@E9!F`_4 zNJ7u!Ubb7n&g;@yDs;HxW-M2_V=v3MX8}B!FXU}H634{jasa`g zw;V-_Xvub%%lC)1sjiwM{yT%=MpC95zL;3?ajN~cxKj9p*m@m58X&jhZH4<6lU1nX&NMF@*H;9=HuDV+<@jpm}Lv*rrYJQRgHwG| zWLNcr(EpKR=jibtEvbk|)@thtdH84Z2dYcfZ_>JiHB=Qu)usW(jZ*_x#pYUQ{$xqkMwg>Qc29WthO%|6RoE)nU(qRUo$EKKxv%o~_z&y_IjaPTmJUdy z>`;#%YKcODg9#A?F<2(GN5O|hiI()=`pb|^ZV>FsLOR<+)&4?bF;2_wzroB*AJa^U z+1vjn+f+jFF(;B&5r`nbbMB&5OZUaEv>--tN#Y|tCq5qKQ7jF$JU!n0MyZ;E@^Hnq zCS(?)VTh7p6Q0vH$}g>wu=eBm^);lMQkXg~5n;GgE?t;;W~JUJglK#uo)~7S*w?!- zNs0YhoLSUGisaLxUqZONF0@=v4TDr3tn$QoVjt6)6j!1QPaV>>bkL?2KdhVT)%nwu zw@j%%Xut>b%OTmMIf4?Q_PcR9lWo~cLGl`9X^Ni(+o5q1rQ2a8Y`d#yYJ)qSR4wgf zV32>FsGYq%qV8Jh7>~lZ&B8Z@Zm&Z&!^v2;0;W+qv$H5C$r*v0%km=}fo*Hdje&t; z<$h3l$!suqCWVv>TrtusxQNWcHh65bOp-Q#>$mdC7mULffu@jW7}C@iT}*xak3$U(}C_m z2`|!MJ6;u!hsOtTdFB~eOXy#ad~@fL$2*AQn9XyVfg6*R|Bf&*klRU_p5|wDC zM}VRSr9T?bruqH;Lr}b3I<{U^c2F!CjMpQ7{_cvr74}B0G&VLx>aP*_c=^XdnZ|f} zAdOroL6GNU(~nTLWPD!JWTGmdI0BLu1=KJ7*V5Z-*|@q8#2rFKk<070$3$``N||q| zq@)CL+{}74U7#xr#cE^tiG$><`%_*ejc2?Ltej))zk%g4(1Dl1s9sDj2-1u0zN_f3{-bpAte06!tX zeKB}T2B_x6>V3OE*{rUwM`?`0*l^8DN&=^wFfu}O23j&;X}e)~-gLS9OPOJM9e#cN z`)L~DWVyN@q2n$KQCzkxe93%)`mKcXJbLQMYyswJP7zqMYZi}e1xAU?w zJVb80=-&V@K1D}pP!W~W`^{qUQU{She8-FE|7iiOL$>=z3DysSUJFLL2w> zyWKOJH$}7{0l(t?pIV9<4K92yf}9l#N3%Xgv_F_maWq=rAw^)NC4Mm<$hG zB;g}P;VKd^>A)gYmDfy6CTD#j7>vwyiXQ1`NjUOJhD25KA7B&DF#RARwwjWBy0=# zKiq)b%GE;7w}J&B>-$VY0t=}13JH36gn(zLLTsjjl{7|GT@2i2KfVvZmT0G058d{b zk{VY+IQOT;0srq*ZZuI1v8DVNDeonC!p!w(BDu&olmJPk(m|6v_4irxyc*Q!eUM2r z5Z-??vryN9S`r2a7|c2)vDwaq&Ls9YEnP1~swPgy<-ai&AXuLTPc?B~m6A_)t$D7w zvHlohqKuFWN-EpN_Rn^vdm*ngtB9S!X@0h#1EnJ1Iy7TR`a~q3u8lNIdhIwN`WBCC zcN|+$$s@?dz`5G<>59~PUV}(?F|Q^SSj;0n-zTiAd-N(t61$H?W)yUB3a#jMJX5oF zJp#XtAyzgH1Q(HGTRJvdA^5qj_EWm|%!#H00thu15irc)Cgm2mK_~SPUk?#q_Q>*3 zCe=AK(AWQM5jr0Q2|RLXo9^P@WRsH#wWY{*cCof|Vkk-mPn>o%hpGMte%ucIlNJ-o zKL((mmY}Wi*usya+0XhOmh%~*2}EMn zGs!y5h=G{TQY_g}WUuE2T z@e=vEooJngrMyjjoL_}(o*%j%nPd~Gf7TxuV*levUN?r_zm{s1fcKly``$LtX2H9E za17#TAA0TL|697^({i8Wu1JC!*!?MTxe2tX|L`!DDFntBWq`l!<^OlC zP@Bt)W8lJLM#_J4uKZ0`581fLnUIrWV91fWoQE74rMW_zVi?uJ^>(^E$OVBO(CnXGAG%}(8Bl2}ih z8M2+)UHL-V1L>QbRp=#m_*~m+uY=&PqBxKIM7NX%DB16&faU(ev|Lep=;}?t1U%38-L3EqH4i(cTxX%o1bhG6@F?ukX+5On z*t$se*0DL(jY=8PG2LS+dguc(mX&!WDVGM!{plKw!X*R4orz;v?2b9YbaFrvUlxbW zIMCn~3}4Z|;dhy*Mco?tg-zRo3q7VA&04*A`rd4Mgo!#; zHGL=LZMY%`3B+s6mf~iW=nLA-y1$*l>BWdCx>EjFX|goIP*Y6;{FG9-B-`6zL;|R6 zrjX&Rf>iAKVpNI@Da8E?N7+s+`PT;VbDNXL(Tj^WCRJN1fV1kqQ;gk8Tt42?Z)dYv zS?BwIsZp=&`FZcM1DU(^ zV%C0Ory}@gbfY?6boV#MH1OcB8I}F1Pd;y8b|Jgl=}i{HM=ML1Df#o~r!zQjNmp z;2l~~fiaokj9|ASC~RyD-r{gO5{`t@;QQ=1I8ttQZR!+9&cg$Dwjy+J-OptB{!-|b z&IFi};y@WxsPp2E;z?4ZOAg}<7#=W)ql{2_ZEby_yViiRdaTW7Bf^Tt`|y2sw($4v z4vE^Czq`9*<}R@J$-aAnMf=xA%{x++AmVyKdsD-Td#)36^V#J!Z)K@ogBxl zCRM4EXlGTWqH<~>BlLTsQc=1mrJBGsU_>UZ!SA)M;iy*z2#Gdn`{xTF^qnm1Sp}5< zeVkgr+#~`5#__5q;Im7YjL1+0Fka9Mjt~bR^6sT5+7?@Z6FRI#=m?XR_(?e3<1U8P^h+8wH~JmNzz6B? z_A{VjC7P$xmmG1$IuBqG@8}kt3l_SNYI6FgQ+yF|boyU-Ctz7|2$y}v*=)O|_36Xv znkjU%vjc)c^m>#S&VR>j+5Fn6p^;sK3k#`cz5Fo|j=P-U|+23lRvk z==GBAgjZmx0AX%!eoY>j&mS2Q6hvi5Ei5ZbHJyhfdAZe?2EWDfxK~~b!5fv3bl313 z=m87TWUwin2MBM#ILth12J=5S#L^1Ni$Fyx2@n zru)OmINXkmrl#oM;@)5DZ#w}#!8M0Lf4?ajI{H)%Mtq+#aP3D(nZlBY3rr!%Q#PQ} z0PmJz+yxZlLJpa}ax+H+`jW=}f1Ij|w<||87uwu;sfnd==_DRdAUu4;yu*_oj82yNzAh5Qx5tb5&ZRMU*P#qNz+dnkU8*;W~ zF`SCUG@C1z0E4K-h||Jl3I>-~cW?jVRVrVFfm%v{b!Zh;ga7h^cf2@OCvACuHwZ88 z?v7kvTu2%k9{yxPjsc&LMb|%(4rh<9LX3o;)ewRIl;7;ORbqtRlC1NaTs1hki}_O=E0s4$axy8&wYEs&8FkF(Ax{i$YYAT4(ajuE#4m zs6-rX60|oSS$XjHZjPH!giP9tzRmr_cJ>k8v{+O{jahtsc9WL~n9%$O6}kredma~d z7NRz#__4=03ZY>(DV2T}!1!Y3%LA`hBSXyJMDo_T3YFT{s5~K*AuXeOa|DDq7Ea9V z*Snlbods}%4z83+Cp)`v?|XvTdLy|On zEkRYvbU~1baQGnnl0< z!V^@5kcDkdJ(@s>EnXxxeGTGj7ct?)zxQ9hoU+7#KP;m4lAT8n@@m*E##aP^gB~5=2-c?>592U0GaxjuhGi@HCRW>OwjX}K+U}>y-*{6%A6>dv|hXGe`_Mn=BhhNrpUrcjlfd)4Q$6kZyZ)w(2JeZHIkX) zW%4^FZ?GO+t^o3g4R7;tIk@BBJDH4t=T(#dwd!0^*o2DV7Wv|2X*rA? z0DxgK_EuAMMqq+BR;`(FL>ODF#iAuZEQ^(D)F7vAqJwqGkziy39#p`%WwLy^#WoT> z-^4{KmOV>OuZMIUDZ{Ubt?GHKCjiP2w$ZI1Dc}L4Wxo^Qio%952L><^Qq)Z}T{hav z;{hH`c2`~bRt@wPKWy$_5hGv*D95gTd5`{k=Swor6!m8I`sm~SQe-8&x%ep-TnKFBmwJk zN5EmBmNM31U#abDp0x4muXg!F>sX)%ln0>n?W7xJP2BnSheES(E$?|XS#th0iN?}= z+J!-hA-V|P4saU5jI@~0Eer^t4j;i($kzRpo`}Tj4m!Lan>y{d-0;e&A(l%6iMKi; zKLOw+dvN-X6I+|g!XH+8hUM*s$CR?$=oN?`_@}SJ?Efe=nNWt>eni?IvVJWrjEeXP zizuj2O%U5i*J-CZSw8G z$w;5c^E<#TPfjyM8#pN;@94KINDQWJ4v@fZwt($wh97aCq{n8g7rWg-Z9``_NGpu| zptQ*!N4K$aK`Q*H)PC)tY{I}JArp;_ZI(nO`MV`52p%45k}{K`1_nV+te)>L#_R332>THv)f&X}`658) z^Y3Iiol|t`pA=iruyF&%c6P`wGyX-rcNor&-o?!H^id2ox}l;%t3XNM>juFU>t>Rx8&0__6jK6@I1*_xm3mEE0~Qs+9){U8sQ8mV3&1260Q z-b?^kf?-A0TgI*`5MW=D_nF11O}@gxV`$2=SD=NNJ1m78W7N{ZGQ)~Wlm>8A{;9PC z)73q2W;3j!T@vW#4AnXxVNRSL^YDWG_t75e+sdoXm9@STz5n_Lq;E$jzG~}VqDY<` z7`jQ&a`KN%E|p4{F2k}sylw#n00{3@m|wvVX@5rBWdo@UFY9+KUWCg)lT;$#4>z0c z)F+T5viJ{cdd})Y@jrRhe($VWR_WO1PgpOwXCiO!f4H7qF+Vmcbc^ks^;u;N|O##DTc=r>P;tItqlv{Ly#}Sw3@3{g~eoOjp*w3Idg+&`A>uV{Ft$Ejte{= z#Vt105cPdGA_uqoZ450fqptTnuQ`lIANKQWYA|ux%la_|7TvU*%e7!Z6Ze3E|6C+M zLXtm_p5N`uj)P>T_VeZ88wxrM1c3JiBY@ZiHsL;;DYEs55Z7W8^as#TPyr9{^FD|T zbubVK<>ZFcL``+=el*qUeUzpYw)pR`pSJqsSnFIIsm+@HGxtdlue7P-Iwi9 z-sh=gALG(l>ufTNSrQ-Vkp`ElM{}?9~IbYS+`5FZQ)MxG_ zw0S?V2gV4eUd%<@%L5~Gv}E!oSUP6)C$5Ml<3duAxpYT&f1q_pZg>0{dLS00)7%uTkyGFCk z-xQkIYC{WZ{-nZzFqWbH39;AHqr%dZl$1Pgm!v;{pBkVqGsAoRxI0@#1L91;mzDVk z8lYa$Uv4l1Mg_giVi~LpxDgP|nZ5!W2E%!cfn@jjQ_TTxy8(6O-}wt#r|%09`-LG6 z-(D8^{ASlbli>dyiQ}<=oH>$JbcH46JOYxHaVJV9WY0D!o_x* zIl@FAwMMU`-WeSC2-H5A7F)eE$Y&~OgPwMw-~RJ#d)ypSvr*nf1=^wHobC{_AyS!@|J+9Nb6!F|Ybi|7wx{6_cU1 z2x$eC8!a+dVe}&?+_7J^*)r|X4XW}7Y`&!(9U0E*Nn0E{MCI1h$TdO*6_K9%v2r(= zC0iY(8xkW0vJhqAquS_1JW3YO0}?G`fgx;C;WZ)buu-IXoa=)d5l_}xCl(ePQAw+8 zW@{Vfej8HgVuP3Nr7BF}UqCJxnuxBdhVnc|69OY=Fl)?B9I}+08oKS~ayjYG#?|xm z&&9_>%5u%|7B}7`qt~+j8U*p|M!{`*@WZxUqexYQnp&{4U;%QB#u=ayQQu#cr724R zRh(hd%tQ72h8lNXtc5MW{ry9;-%_kT)Tr2lG%ZSBnR;5%W54pi zGf$mywj0LH!O`2cK@7@a7WiMBx7zE=orJyyD1b^v&C_0Q!Mt7v5!ww_$}X?>?pEt= z->{(*DM{$3rJ){Ut}f#&?qT_H`H^yc?+bOf4vHDdIj!DQyttg`jiy4jbIUGGj#4R5 zGK~DeSpr#RT~QfL9!7iPMJmwcOT2@&^n9Y>VRhqkiZxRhRYN&w36oX8_SM8nndjn9 zfx&JF*lbs1Ey$V`cjLdX`1Eo@hi*;{_0IMt!Xx#h2RCp2wx>8V{uUEJ04vut=-(%m z=4wdEI5ZUp|8KmGCe7Q7=bk5{b?q{gTn(2Y!HciKCX~&G;F0>yWtnmCO)i;I88Errbb(Nwe4&mrS{k#rigFM!%%7$j9hWN6^az1q$p_Bq8g{7=zn z@Q$N(3jB}+_4N59c4d{7k$_1e?`NY+Tl`0T(`x3OmgG{Izt8(i|ICbhhCT`kKoao+ zT!&%PEn*hp)2xXwhAA;3*F=LO8!!U$@PnoLlslbL@v3lS;#7uLSE5B4%l*rFvk~Wi zlj)FIJRgwsLUk^V7U^CdpiM#7U6ELq;NI48{3>a2al)&#ic)zRu-Le`0UQ~Xm6d~I zV=zstyg+_zg#$yk?RNYzY?(0NBXD#(vbLoD^>>NR)v&tq++*Qf80ZPR^Q|}4kd1tf zFjUVM8t+d(0LKkhka#D?nqlgFiDy`QLw3eP961JEyW##-gu1Nn`{|a!f{@Msl(myN zD9EoTfWr+tDDH(AzxvJkI+H$-jRkmX=g0>LO~(RO5*qB6RaeJ7-8Oraj3&GgZI(d? z0Orf6cK`zs6^##t-tZ+jID(!E_y1{3spwH4#cTN79!TM>TYD#V!9>bK7-WUv9&e`W zT`{o8$W!XCleCzQ6x+#jD9!7#pq_62D2%(WWjc#?kS{M*7E98|IdahsY|34*T)xE+ zB?!8a=YG2RWc4@0t&W2ysc3a{`)s_DRk=h2u>uNJu-YZWaislh6K)Q!uA%y6Jx$Ga zO3H5Rcl(wZ2n(FB7B>TI5p5vCWYUQJ2}+Ni@#*~vZH?knnru*!7_L@}Y(R~zi=k=- z`Rpmv>Wh^Fqr7o^Sg-!!#SE3T#~-7_daSUv#=( z!YY7bZhs>RK~I6Bk77IC;?mN=p&xRQn za{uE*&wII(EiW(sXWfsY*SR7t$!e%#ItM_g8W~J>MZk~Ny5AB){x$Vo z6BhFGfWJhMIVp}NjY*2GLMK3CRRq}VoRO(Oeb9D<=jtQiav5r#y{za&1RvC&!y`l}VgV>}9}`f8sYA z0oZf?oLIv`^9e)|@!1gVRHE(bcQUhAIT5Fjbo9r}CN29%3vxLkZbyjl@bD>8*K8sQ z_p=oiLaIl29>~y%%k}m_pH|njg9}3HT-*g$LaRSbqKXl2VE7CTK|=+A&?GqOK2IKU zGXFCz0eSwX>vf(n!|@${g*LAJ@82R$C22mEYf>jKP^*K3BJNmU!#KBs zUQk`O;BuV4zP3ryA#)oj|WKEOP+7xOU4^ajjSTn>)mI=-tH?&84W}!i0hps=c{0VYT*c4 zs;;H~I=q~587OvC)zt|++V#1y!iVT834W{{P#k>B>VIDEX;^Q(KwMuRckyWo zTm2bJkv~jib#~yW!Z7>16S$ZcWt3R9c9zx4i%oI&@Gu%O&)vKIslVG>7N3QrJKqSA zSG%E{m1nor!_3UQU3vxzncwX8ymcFmArLCvRs=@DX+gnCpCpBIm;xhI;{94!Vh+u* z*yAEEkLS5ivSWN7X<)~R=Y-E(T?H2`42sNFJ1Q3dnkIvP5EBv-+_dJfJfOnn6AcQo6)6|zEHU#ETP7B{ z^vSfU!X|X--7zLFyv={PC|F$M0!Ea7v%~@d0$BpSgm(mqfS+S$t@)P@3NPRj@I=Pn zF}))h2}Qn@PqtbsBh(vO+;$UIwkq@iuP+dsZCxl;xZR7Sh-7SP6WKbnusDb;b7Z8ExWS5@TA4S1anwsi8juHO!)@jkp! z*9Jw}6ta1OUmq_6Ep9{3cKb1Nz>IG(88p0ukVun zm6}NAL#O=_NK3^s;P*c*;3G)^Y@=h<`1X)WqvedBoju4ppmaPP_&gXd57pr>_j2`i zTkvKh46i2)5@j9KDqvP;#~7&96vO3}mHi`=@x_{7JLh|271%w0lKbhLArT=3)!MNy z*ZPhT-l06bUY6!{3!s_?3giA0i|lHjZ*aYYe?Wx~08-4_bF9IVNu1BoQ5cd`w?5_7 zJ3Ffo5l@xct&9Vx&hhl~Y7ji__7+xFMnI2;Qe;?YD6}gBaclL+eg~+TZcAdmLY2-7 z$R@~+c(3vq5o6hksiML`hDFRJ6hwxN4eSh-b2(9~W~ehK^wJX(HyYHl6A)wv2SHp9 z1hO~AjV+X>uk;FFq%syu$vj@pYSYXZO&Ey^uO2wQG$AK?8mFZlk&%-_jf}h~@l=G} zNcZW!;$L`rs=@>U3xlw5I5D|EPNlbt6hkl8|C|r|57n9WoV2f;(MG6CMeum+<(~lg z0thNaMPe~EydI+Fnk0%PCxxu6Xv8%LCfa6z02^eifNS}WyXu4$^6wEq6!8Q2Z@6bM zR%^E&Ml#%aovgRBS&)R}C=;xbBD7aL94~|l6qZ$Kx7wb)XPYO>O3I45#9-SwX5d;} z2iwm}IXPvqFc5wRINkrb+!-!bR#xmMQFm%pD=|A7%t;8$*MUK#{4eG`8$IS*Y;Pjz zZ4Po1wdkyzxw&~v=B7X^>AXX}lAtsdld28nS7T!adfhcRHwbUYtd|aXbiR^L1`o_DMMsw+WuAqN$_1P~U9$rKp@{4s zx9H#v`}hJmGb7CKrSiq~!y)7)NoF@sHM%rcw`f3~386$M>~EZs!@CF1sKccmPm8q_ z5T&=YcUd+_L}lQ}2g3_Q0J0}=1B39XsxC2KC_{F)Qi3?)D2TolaS46gjS{t*!V{ky zt;`XSi8~b-1qbqLdi-9UUz&oj(PKnLar~={6*duAu-5whPmDNpWn~(RF^|jn8l=`a zBNM3NDcAQSy!n^f&MnWYiOJ%EHMHKkKrqH+D$B1+oVZ^m?niSI{M8RkT6gdbq>P2h zb5b}SrgEU7oQK~4b+dlUN#ddF{7Z((!hTK?)LO0Z1ejchrLceni1=fjA)Jtg9#Gd0 zh?MBdYbtbDP{+JY0C3T;y*?6su{ABdskf^0f2~7q66Ast!>f%#Q%wXjdQ(DO>PSd0 zR}V2@3uNvYj7=Hx(qqlP40&^tVlz1h^G8x@S=ky_Wfb4iim|AdN*Cr}9xK(|EA5k* z{IAG$m(}DFOzyf?gC1ho}>mI+Jw3DHPQcQup(X=5Cm^kGWgT`#6u1R#rxgoj6>{atl1 z8V_g8a6-u18cCU>@n>rdE>Ns6^-?H5&23_O{YAIKf`pkl@}1Dnd{$JJWwO7=yZmT5 z`bO;O$ynE{`db7YR$GSUC>d=EJ)M}g1sr>M(mwbn1lI}lZ(z{Q_qv%tGwpg3=s@=D zzG7|ham{FE=Lv?4P90!y{!W;i9!nRho&+CY%P0XIot*Zs9R_Jl!4#snI>o;hKh?19 zo)t##Ek;`cD>-s`!x-M+TLb3aFUCQ|OlL(bvq=!$uYeqyeJxQq@OHNp426D|ySG9} zA}p-b05Mbfg`N)J0C0Gub?l^ND*!{3YVY)ZbqUt2f{UxHBln~bdQ*cyrelk?x>JAp zn}_QxI9vgc0?7TXh9kZ=I!a@45I<8x8eVtvS9hb*-d7#CHMpAOD|6uZ1CmevTWzX%Hz<0O(4PrZ$ zmdrO*jeowg*E^8%$165O6lD+)R+LK5iqEfu_OR*AuKk+4oTde83vo+JU?KNaO(3kkX;S z2sDvdq$B)U3&J;L5@-4L)7JOtBVBUmfMS|7HNt$2Cdf{gQ0i zXlHYmgJ$a*DX|aNe$NpVpQqB)8v}I5e@kzu@=B0TqsZ#h40N#=58X(-E(+me( zg`061F&Y8YN*;J=tZH2Q{0!^n)+9M7@Kil)zCX;Aw4&Dp70%BM|4Et z7LQhA0EdP;I&Ay(+L3rc>^0^(wIpI*e@9b`^fPyM5{)#i^?IGb%FxkI3r9GlW zHZSVI&r&2jVvlF6<=STq-_Q1_>y`phjgBMpv*%xkXNj))klE2}wy9my7jrs%Mk?GK-Aj;maCtjGmsybT8UNuGxS$ zkOUGDuiF>b>`KVU&0{CT_itXdtw^_c3}WX&HWmTd$#9J0f3JxANLMTkOchJw&n0Ps(6n($4VUnZhTH6)jNQE0k$e zjs`30*^DP7HX}@QQlXy7n!YgZ@iG&H;3`@;m;acW_ShSY{o?+7g!pCx1}HdD;@RT6 zPV;UMls^tpl!sMN$CCX-Y07}&W3OhIprwGxlm4OznPiBHYzX%6!?Avhx@YOZ{Rz1V z=qT|aS63?7IF@SCzU<$><8<4D;ye2L``@gerAc()NSo&F;8Pnl>aAfptXKL3w2sct zr!gqSLY%awfxJ%rVe7$DMb9o})pP7lbmZj7=SQmF(2(_dcV@prqqOAM$aLm$ah&9^ zTJihWdtiX-8E=#h_Mn{2uVl>qtBn}=t=*07PfWFjp(@*1Pk6P#o(7TAP(@Eq&p=!0 zB{(Af6H3mo76}d8Z1$CvET_}?T&RFPx_A@`U>*OO(R>o6JxYW z?!&^(iIxJ@F;f4l=2H|x1t=B>kCzgSsZA(V)y{Jz(ch2AE8$3~#AKF{cx3o#Xkd%N zK%2-smwH-47m~y3RfWgFxjLA6p$}T3n|g4cGQTj8ej;2#cl=`Myzt^G-%{2nrN1Q@ ztSqH6NEE1dOixNe1P3Rn(VOn8RM&jNHVsB$AS+;x=dc}h9m&6%z5a8`0_P8o@F%*> z*4jwxE$C57i3~pyyX0F2>ZXD?lDI{M2u|_!#rIno3kX+NbI{>?U|;$d9{#Nnh&XEA$JRqc{CYG* zTi4s+yo7?0JRQ4Y0}=!W0FxTFOYcO{FJO^`?_r$c`h(4r2<*on*}{1~f6`$%UvcSj z<@-Ov9PDgJeX{0Je|MR0i$Ap5Td?Vpuv2vXYL6PtDU;H8bAwW9h*0;dkiR)7(up{1 z`YZ&5psrw`WXSUn`=$*DQ;iYa0v5?O`yH^YqfemXu>?KRes>5~@fnyjg$_PGKGvpzTm+Hh*G#?tq%a=gI3q98d_fdjnBiP|L+epGc(mk z=_@JgNXh7wG|o%kCqV7m-rXHQ-+6)invsNr&HUxJPevsBAV*s=NQ5>dir)FmYd${t zJqqwsIY74gcn^apc!3PTz~h#0Yz-guZtnKAQpe>lavmCJlm5JqL}4MdZ;stXO@hRE zKx)vBW?cB`>4_PV8!kOP{mspmhbyorUdVH#@8bxMw=)IKH;?D$`}J{|8koke4ZoBYfn@^tsi z`oz{75G&OK{OrS?cOa;C3vVE-Oi#b4sOsAj&M?;{b_z$e)u8&TJQ4}zR>l@SHYBxQXbw3-CAs}%+^hch5WQMJDcE>%kuN%y?tP{-dLi^Y66V(f_o738cv>dyMb@LE^~WFf_%a1%qWMzScuD1zXOK2XmF4 zsnaRz)&*OK$URw3={ zQLMiHOwy2irmm3P^m-|y@jhec<;4fa?k=2mpM=UkiBt+{-$Cd_2-jdsVif+4l7huv zN%Xvcb*>=_U2Tw^5vja9A-8w{qy|%v1O$Wj_PA{Kp4^Ix!+Tw(*pl87($XL&+3Qy~ zm`T2_a&wy=rfK0)L^x=clm_x6sbiYZ(9kfOb}4G_aXtJnXrtEC%1dpsakqBX2dq;iZrfQ1MsG$<9!jG4{;0S#2gD)OJBwRyjC{MRJA zHs%G;2OuCIwt*l*o(Fq=m*W8(49p+kdoF?y)f99raT5@CD?rl6C>7>G|L>cB;|B^3 zc`ST^Y33EM?BHBLIXzt&&Oq-JTsDCsxUYZzn<41&kmvo0b8Qba6#Z8eI|RK$2?EVa z=!Ec#srHcz_By{v7M7RO9N|bse4VVR`%GcbE&#lNWtxqYjW3!val0EG&Vy|Zdrz(* zv{7y(VbutG?Y}fh#EK_KQ(5T(AvQ-uIibdBEP3@dWk@~E(~lz*92!Bed$YqgyHVlc z{>=_h5`~5FaB}z79KF;6z1I%$bs)6ciFmqxG1kA8Rf@13I<%O;)vkOkg%k0~ zmeoSPe*f+MhV8UZJ1hgQXYHu6^(U3{*5Kx@!}q^hE0UMyz(AS5vgIe*ctvD<>LqZ7 zQSbDKi^I}Ja^2sChQ7-NVKB%$VZR(r^h!9md zIXVh&^?1AUX|Yf}5`qngG4fHs$`F4u*dL3}Uw(yr)l|JVU3h> zA*(h;DMXO?i(H)LfGD0GG9mBStBBA3W4e(P)dNT)9!v&}7RWi{bJ_cC2<&29_w@;a ztoWKKyu|zq3&{%DWFu*PN^kXhykI*7BX4kgsJKkPuQBxM?U10=$gw%IQee0H^$ZmJJA4uQEH=q-!5G} zkz@Z=zN>g95QuSTyI1)NqlQdEFp5X=!=v&R~Tu^#p$3=z*{pWAJNhu6r9!LV&C zIEb=FY$t!|jzPO+JN5Z?E|Ny9BtD+CtwMW1_a81maaM-;OWvAMf&)^TjNAQH<_hnP zz)5;{k^5w``gzsczHksApguk1>suY9wha|krvZyL4M8)r?zh=YTZm*{2zUK#dI zDJv^0D0o38BqY=YSfsuHZaU9`%S=Egz1kC5NZXad82i*gEp;*!Obkt$s`!hphpmvD zEP*x$FxDL5g-z#FTzFbM4BbA~rB+wHB74&`$jFON`W4xZs~aX}@{ozyeMlLnA z4yanYCl1L3y6pfd;oP^TZ{i@*;eCxF4nCLH{(ORB*$l-KK|fsfe;&REm2N^a zcjcV@P?OG!Af-JhH0cM}WeKK5AY3i$o16CmXY6L9A59#5{-0}Z#r|2%v)9KH1Zi)R zm!MdggyU8-Gs+PLy-0^hpV0mh8Ml_T(ChO`_HXTXJRP+g(W~$&1rG$Pm(-xxuE!F& zC(CEYMZ<`}ND3M3tzYoLe)_%#&OSyFgV4Tj*UK5Y8-H6_{sCzY=W{JlMqMpxBwsc0 zFC`{k9ab2W^)DU{4tC?ed6oG`sx-a=ar~Xnzjk7~aAt2Un!SX#*o3hQrKVRZ?ga=4 zM`gu@zR`656HOb?K@qK8f@n}$}(w<`l5S^D;vxJ<-$$oNS)Kvll(hbHoy-;WWo6-wG_ zFqQc)M){hXXd0;Fgn)oRPOX}sAnBJh$soI0x}~mK8-s-&-uRPP5Be`DgKnciyi(~q zVSC@knm&zN)qfRPl6jtKm|v!*r+=zpNr^d+%`jsNwCDx=XPMd&Kt$R6eE>GsSY9;^ zCu`dd(E`=adRBLj?BvQ5AjX%H7eC`D>LHf^Z@%AMZa=OW;jZgDEWzk2B$q}O_$Q18 z2`#g>FD-;F@BWag-CoHT^^G#Wb`WmLq7`Pw%v}uw_6D;>{i>HSa<1PAvf%Qam{Tva zXgF=%3TNc|bGD{H1Nl)Br3wwnFmiC+laZ>Wm{cD+0rY~VifBdk^ zDi;gNc}&(|UiBwyk1HLb)0Q{7Jo3%DJ=|%KxCaleew!ZvU}5gz#DeqIz*(9zh%hqb zB6n|odjolM-uK$`ig4J8|9gK;=QY(wNO(v91!=Oa5%EX$Yqw%fAnzPM&kEQ-+$6BO zQw@xGsMqy*)2t`>3=SsVI+$Iuw(p$v%B;XUBYId=_tF0oV^&n4R-^PdDUX9jU{{V9 zPVBt`_T*RB*I&~=8gDiK-u(GFT$u}DVe~SLrSJFP8#iBO&1YeJ8vKcLFX|SAV=lMK z6#I7CH~R-t&greFO6$1v+Rjsw4IQ5(ctA<8KT>l!sLE7=F;^-Aj=44n)cd+anM^3hJ#Q40}7FR6p1E7Z{)WiYsA?SwyMkzDaWE z_8qYTa3#?-u?Je_LBvY19*L&oZ+H0YUlU7b;^FyUU#Qxe-|;sCW&zt8X5r5#QeibU zOlun(5_C8rx{9XlFH8FEJ%$k6YKIOQFudI7PI1RyeOdg2EA`6cmu^jJctq7p9hanxwGDB~Pd0PE*`J zFod9bNe7Oo+P9-WP^WnK5PxX=4RT6sm3$R-8JhUh*&m#JZoOCl7z zMq%5oe+4VM^Tpg;S4LCXT$MZ`z*NQyMhjVFf|J|<)xFIc7+~N1vrwtES`ATUiZ&Qx z{`+@_Qa!#b?;BB?r})tDCVIK7s80wPaI+oZ2lgzfTw>0w*(|@}S*pF*y7abe&;^6z zt1y(&`V;KYpIV}^r2zT0c<82dF`zgZ4bXP|8a;okOA?U|+mxr$^Oc9FO&-Ij@xZl+ zgd%w{g*6p`kr_@Em=>ee3Pw#tPi*jD-fcuj941(_{VkRrcf;Ncy!5uS>?j~@`nT<@ zNNvFsN@}5TB09LSs85rhGk#0D;db|3iKXJf_O06;LycY=VolZ?a5m}CLuYaMK-~U& z5Bh=SVx)8aoptxz(BTWu95l1}jJ5Sv2P|N2pu+<8y0*Ks(Y?mU3HsZ#TtOw2oF+%f z9M`Ye4p$c35b#)x!k7H-pk80!_B_|E4~-@Zl#}mxLC$*mlX3TvRuMk{yPx$CmuwDe zG!YpCvL4UH%ir)s=EKTxH-?i)y8dp{E8F{5BsFJfgU!!FZnQ5Xcb9uyP?9xe&|fOtf?O^N8e)V$EW7&jU5`iJ>42%3*b)5_w)L;{A(-eS`Y}M zAh)~%e_=5av-Z5ms0GSpKfMa=r|q8;NnY%JV*g*U{Df^Nj#yu5d6F0+{=I9_UsGmh|w zylW@jl>8&uHB0UE1ws!yLW_1Qt1n}d(o)+z?rA@b*U|Z8gV& zN>{g?RD9pw4}TX24WfuRFy%9_HZH-R>&bPerkyol4_2p={e6@udU?}fWcL0JEzm|k z$W@vQ`V+S?Nny~~*Q4fHS2u3NKB*Ov)VVMrM)$moe3Vy@@S6{_pnAMq_?61;uyF;d zuE_<0!E4`6r1TU8eTt4=ZmXE3*}gBb&0~JoGhP=|qALMxb!2X((ejZ+T#nZ;Tt#ks zM9>qBf}Wg=K|8o7C&975q}Ty2FuZze$W`>apw`ll7Gzvb8$=#r!3@m^7zW0B<48F@ zrp*?xWU%Og%7$EmQO#8nDlIui;7=C-6(O&z+2l;8_VLQ}F*erMq1CLCm*6k#3*M`x zVGx*#<)hh-T1sa>Uvi|quc}30a=IuA^f3#Sf|4+N0VR&v9yHqaZBsU4KwuS;L902w zL7dolURv0MM=xG_jdm$xv0iTx)Mj2jfzM%Q#FhHS&c+}~rd zyw*9Mb*^UEM)T>ux$e{J$CP9^f3nY-(RFS%hl3|dr@6mhsK7N{hv(#fq3qmJr7-5i ze!9H<|H5!8Q+jB&wr`;G0HaeYmj)wuX;@R;;-|zJ!Y7oKGgO{oYL7H5V|M6v`i0_D z=O>x`FcL$ILNqZZ~a&X!(sd z87|-zJFAh)LE9G=mvCK}YfgxhfA0ij7HT<9bGsg6y!H$8e+I_Mh?^iySw(= zhjP~Z9x9NuIMjEXSIC|;?vN1ZkGIMbtXoBtR~AnXkyZ3lxOjMjAP{zKqK(^alB|u1 zS%g~_W2t=h?&w=W??X5ml|3N&D7w8q*Z^Yb71zOBs|J9W27j?2ZzcmF^UgPCBx;@?05%l;L28X!su2__y#@H zfNDYczl>!w79n*z+8V+$vy}oOBfp0rSO!4Czw9`>knu{|zNAdikdcTGwUYAMvowjd zZ~G+CS)g(5&?D(la&0?WEI7_}U~WPPjjIjE$9K~6tbTcTc0zC@vv=VoTR3m_N?lY+0KXjul35}w8Y0@hn1BF7o$`eoe!<>=^F_&%@@90y)L>vAdP9b=L}oJikX2 zQrY30XL=A6h8|869M}|~-)DTUh3qZDWbFzn{$ZfIEnDTz0!hO-8K>n5p!542`48O` zh99=2Bq!$+^2Ne`*NZTJ_FHF3y`mI&$V`aIsQBU_4Sj@BC>(Cv8kr00n@M89KAYrx z16g`JUTlc?K>FPr_~UbA&Q77;R0zYw#izT@<7(m`X-aGn6qv8)2?eg$m2rn4;*DV7 ztSyLd(E_BK^-3Kb9WKHSlL!kI30`MR(@H7#VsNeyBmy``--1VX0AAPjJ#)8+caF_@ zyU*WZu?z*kWcNMp&9SA~qt=$=fW`gFiqlnE_)VP&PNM?+QXu&nkKIgm!`BublcVbXAGg}v63LN|Fq7CdRIHTn~ChX zLpQ5Mt2i!b*!%T`&->Ca))Ig=tml2iRS}OrPFAgHInW3nhqD9Q?I(b?|0KO8XGT-B z)CklN>;fx{bzC7j%OnLlz0J+dw@$n!EeTuL1UI5H6JGaA6B+ zHvxk0Fgunm!}H0dS3*_r8Q+^zODmL?uCMAuB)b^N69<7io3$4!ST}U^aMkMXx$@tf z{P{)0ehmYD$k5kv>&_VnLnD5drZ2wy6-)z89($qV3s*}|c5^@%iR0WUD4(q7-IjGE z>XYzs9(sVPryZfYfs&q{9t1EKxOjL{FoG+xQKbbn{7NI_v4~3-#{(J^t;{OXeuH;9 z^(jIFGyENs&&_H`I8#i8AO(2v2UHJIhu<((s)5%US`-m~(R`0--q>rL+C2aBK3Y$L zIFV1`65ERrm!_lzWR%)GbuJ}kQ-*jVv{vjl4((!BJ>9kBj%Y({~D%)_|cmu0!^87G*_Gc*Rl zIy;h3i&1EW&wfiIrkxgDo1khT>2Ntm^7i(&%poNO*qs&&HE0*5PD&6RaDzgO8VSRA zj)O`NBx`i8z}*#iE%;%Eq5CJ=g9gyrL*q~Biz|VeRL0<7lS>-<+!yKR0~#v)CD@>) z@YR!{%1Co#ueUe!DdoKiw7;}^mH807r0;Xo$A~;`ZK@&{bSVcP@2`O|6BNTC>yQ&7 z3_J^9rvatL)2B3&4zC#8h=;WJ2|B6Ut$jrGBqlt&qK9s|A6}?`NmW)*Z~rm%0nnVC zlM}d`-|7(G7#(5LUvGJfj#~TAg9w%8%*-nHYDcq~jhFGgo)1#5?(S5ub$7dgs)ICk zOH>{gJU?9$eVOAF&fQ(3*cO{p5Zi8+@Ot8q&+Z8QQ%lySB;qWe`yehZPANIJ(t3$I>Ulg5&avY) za9vbnvi;=1grp?uDC%XLC1fk4l1w?Y|3~5aO)zEdXa9;vnY%(-89bSm&iJP2T_$HXdpu%ny3^0CWFzv<=Wl+MJo15o=EuT+q zll7_+3N<&97O(=>aLhiy3D&ESFzeS3B4-#g)lZm_6HZ|K)n1ehq3;Ys;a!8&rG`fc z@ERF8V6-&dnL?}vyCUYSXudv%QP~@#wVaIbwkw>kHN!i-z*jHQuzgMvdi&>qkJ`7! z&sd8kzm;Pk>UP}so#pz7m-3U3pVK&d)E1s4VyI&qGooNr*q2*^f{{o9&b05obUdBw-WhJ}TR*xMsGIX43_dw4Fc zv_hbLGbnU)_j-?*-A)gy$l&P6!U2+kjSarrlT%DhjYE45sqbos00k?RemFfl8=Qdw zv1E+%3k{d3@e$|&w5Sr=+zeZY!B9=7K+You?KFV8R18~Bele)FFmB}j@#YR{)rukH zn-I}LDHS0<+Na`C4L_L^KLD0j*CG_uK0xLGvkbrs_!g;^-B*JsP^;d^k#BJc~iJW+AFCC^S6BA@XM=kje9?d5I3>*9{>~5sF$Vm9V-C>Cg=r`Edgnp?ZlxiptBV*Pf4%M@3>T4-!gH~O9F&pq?f&#n zAAnBCFD-@C)>hW(d5fcAzy2m^CW~O`=!i?m?=@^BXl2EtF51x8=&qF`W2P3PqM5f4 zbA(3&IAwShh`*r~*cpIOHiYxz`2O6bLrPdz|5R2MF)$!ju5sd~S#y&O?E=noR>EN$ zON7SXLk@y|Z(S&SJbdBkxIFFQNd&lT6X36ZJDlmL9Qqpuv#eVWTefN`pO<6F-}xBT%Tq9m>oXGo&uo%IDYduxRVLO`}!_ z6_xzdT~WP$Mv^3!AQp|Wy;l~jh&;NaVuv8`hxJoP0yc9H;gK-+{xPvdb;L=d6?+!| zp`@rQ`6U3LX*neTLIMX%@?E%m2Ma5!5#6O0ZzN^J>%;k;Lk4KUQmBYJ?vq;%Ar_x| zK<(;Q{$mFtvVFe})=IeK$p=V`va+()xtwc(Op-@3-!@?>s#_Lv zNF51Cd#FE7lHG*mCE`PZgZ)oHqUmbKmH{&7Kn9EtH`P#b&T(+1o{z;$7TL{XdEj%k z6RE8%hVnzefMfKda|;qsxY^vGI0oX6B-Ykgtoo7m0wk&2X;M747bXLJyw-b~NfZ zfWQ%YO38|C$Bj7NNjh z`_{v9+uy~gfSnH-?xIK32@D38y6kH>%Fhi$Aslp)nj#osIM$SW{}Nq)#6J^))P+aF z&sczXUA<45O4&CvN|6fN9sq?d3jT9^EiYcJE?1Hq%m%BxrUvQ74f{M)fvkibPQLT^ z`9>#}iJM|+nz$p5RPYBTCT5uIQth|u0<_?uAU~cWU|!ypBjHo}7a#TIh8ZNWT81W- z{dRU{ZHw+WBuzMW1Oo#jsHphu7QKvF!H_thcr*NwI=d7TXL~ zc|#Rq^sPrt6&3Q0v=}E$*u-|HPR>MMv*f^VTimr#$Mk9wu|Rp6{61R_eI_ETY5gupM`pvn?YE-#VC%Q&60fK7&Aw(*J6GO%Qh%~94OFZcucQ4>dNkrN$_ zh!=i|Xl{Nz0*8x>+l7hiUh?x4g-qN}yy#dP;?Cv^E_dl|Up%b?@hr4AmH$a`42v8r znMj=Ys%29)X3~Pik0m)Wz$J|QkL<8%^=tB6!7YGlcU-lchK}A{ko2SwrA_U4-1U|FGbaYTHcDR|U`k`5Q$NUO!W&Xt?v{s;}mRu41aEbCPlfKnb zGkpiUe3SuCDD`y?jwsRX|Kg5kZar_5Cr3m~|75eM_rcSN41K11dmP2!N5ubi?fA>B z_!pbkuMD0Csqp_jhC1LeNO!W&@gS}-y&5OtYwI6 zGbN%Z5?~MlIkqNHdI{tlcd@*q^P=`94=~CPuCMzgHd`N0@p4RrMav0i^Bi*dyfNPP zh+=7d_M!Y*@pman^m2N`Uc9CKr47-QQT>&bhg>j0dKX=q zmjs+^u)I#`^qgwU$)v+)sb1t0yN&?jj+ntzV6ejRj<9 z<1A=DyOjNZM7?8pCC?kRJ8?3xZDV2^6HRPQY$p@jwr$(CZQHhY{O;d-&i|ZG``hlT zs;j%Jo@cFl#WSOk_(OujD{F$G90>PI#M9%9SN!c4R}fy-QbtqQA?C7WYT(Zf zU2Z_&y8!seL#;MIayG!Oa(++Yjs94DL}gLM0TYM@J+=XfoP=E{D`g@z7GU9j1_8TF z%ew<(Ojy!Cfx~-)z3l@1_=IH)#ukdXIbKL#f)tws|C<4#78CXmA`23FZHTzLpz7-a zW#4Uw#(IljF34;h*llrit#n@0ixVbIs>?OeP!pueS-1QX8A^)tXB0t@hkM-LE&QFdxiC1T?h zVHC6gz{H2EMPNf7a^*$hQi51ww}5%wVY&A5V*Y;F#Sw)3y+EHh9ui#T7s;C~k4+EakLIwd z?P8;-LiTPRf`GOoZ7?9)O3U4*Og8;m^upE58s?X$>HgT29Pmgix^LOkDV>y5pI2P0 z7+UG!!eFk6V!JSmetaD4=|Z!9^(XumgVYFWj*9~Mko}EBjR`4 z?7aNRT{-uuSs6)+dop^dpqA{6@O(*fI-q@AzyGw>R1IQ~S}Y$(Ld!nu{R7NrEP8>F zQUx%egyoiuZ9_?$Hr{1*M|-yCeQX=NNCZJtfC@A7hFUuXDW{MK9nEx-G^xfJd%c32 z#hY@*s*#SCxLT@aflZS~^i7NY%^siMPX%CM!egDtq@bMqC{`8pL{{^{!(A$BB0$N^ z-+S~H6bIX#knQzl@U?#!#Db&{q$@x#@jbPZl!o4^hjd(0jEf@{c5DP3{ng$#G6rIh zq*T-`#qMdMlnsTHtXzc=LUMb>ON-F^xHK#SiK!TUM`#^#wNtV?LunOE&I_BZ)=(C? zfK{4bX1^qi&uOBPon4t#BYsu2PI_u>*#QLDXi!hAF(IKU2ITqTfTbGbm{fqW1TVgk z>ny0vy%-R|jMLbgK{~!i#MiR!wo*6T_6>lb2nss8{_NvdBx3^|W=v%bCu4UJ+OHyQu$`{eL&_wGS` zaT!^_XI#s#PBrsyHQ!g|EQSEB75u;+q4J@Zj!xhGEg=+t2>gM#q(c=Wuh;k+abhX> z>@ogZdYPUxwBuTn-~xpC`}v>R!$P5$wXPz{?h?0QEq*js?$oNFa@n4vW7Sgkz8__= z>)W7n`7pgM8NRO@eI@drTrI6gx{YA#<`H{qBKB?Fb)1QKZGK4Pl3@c_&$o-T^BPQy z5LCL6AhQdgqTXY7y`NIO)D#I(1+B4gcp_r7vLMFTOelE7m9>!LQl}>OaNXUL8!9^e ze|Fyih5cLH-{}quZScA|ph~YaeHq7R;$mWX)zh%kL!tuEF$7Ra7a2&IwWEH`b51R? zNyp<#Ce#ZYzpr;XU=g#lYTf}spbTR=PcN^cv-0p; z2d#?UwxxufC-vk>pk&Au110?Jt z%gb3inb9{{O=qq5g1cwtnpA?KZT|OFFsb~&4Fq(2fkKvSiGkEcc>-{qIL~mqhPS(Oy ztk9hLpSjgA-F&tg-Mw9~`}MRTe*A_YG-?W{9^!-K{dJILxp8mgfGxKuU*B^kVSoR5 z`-4ApI2BoO&E46{q-0`H0sMzz3<%~zT%>VvajQMH9Ga=`==oMQPk0?JHip>*$5*t< zBwGI6Aod62=B%m$MC7q4lZwH{zs=safofPHmOU;jHvjQnx{lJiW%R!tg?(bbDx81* zSyMz~m@+_U-Dqh-euJ}Hn&J@bWPLffo_YYrvfA5|a2-j^RGIiWR4DCTD43L);ZJ01 zZ_Liq2%4nFBWY>!4PI-v+@2?`Iw+&a%8bK8hx*=RjhGdBOVcE0T%!jvB7OmR;xv5n zM8@MJFfcHj{{To9Oo$2DnkW;<-x)ZWeP^g4M>c^#{v!AaLymvTvXH$fI_EMI^lwd1 zMqp&dQ2 zxE+2%HFXWI;5LvzbiKEh@D7aLyI^31jEaouz1bFhmMvfH>bt4h+L*1k89GgaR=LMK zvah;ktkEO@hlDf$GK@X7Zh@eu{r#Z`-W&vEO*_Db{qfV4?Ku5E&qK>^i63&^3p+q7Be%AC)S60zPdAQxC`-h|L=uc-z?iZVn>$&fiLo@>}Fj@)GIy=2c119Z!_r>EC?M9}SsH3_Mml zouE?QX(3fUzXFUmdrr-2b^DV;x+1>I}vaG4j5%m8R-NdSXe5k zy-Wh$AUVA-L{>e86rTSKVl~*-{N$9qRvC`j(b}Jtbt;C< zYWWG(T&92R(uC|tPLQ**pFAZL%F1lj++x{lkrlOx>E5jLA1L>TEJWhuek8GCersVqW0TGismo{d&|jMUR7GXa(|A=Vc7>JYG@v;~SOjLTuMA0q~3pYCYIYo7;vKM>Z#H~O{5g<`p>gkE*rfNY|YAEE1LtjVS`KqkmQZDIC7}8G7bS4}D zmZ{gCrEw`-fHqSG>{er7hq3Kdan-2SLlQFEsa|bYY33;Pv>h#!H6 zsbdPXk;%k8(XRw{pe&;S3%32spLp6*uW|@dKEkfr8Yx)8W`e0@z*c&hoCrrlPvUcj zsp%Eev5Ypyqasv2=}&z&PD#ymtXjHDu9IVPb2AW#0puzpm^r{}28av+(|s73ne)wv zi4Ys}@`&9ZPeHV`wIlJkP+YDzg-j@L9q9u#UIP`6G@$Xy|AIxsr}^DN$6m4y(NmaR zfb7i}m1_Qbo$#f}?PS4`AE)_>WmxBQSLnb2?;n`ez1}ss#nNPU&c%1kNvik?4vx{Q zCf*>ClB!Z;eyIMFX1r8a01T5@P^PO2q%$%uy#3hR{98(rHZs9|T3Xz{1wiJFTx;`= z*tNQCq+=>FJ|D-nGd$7Ixo^i#I&fb!T`9nGGE&fc)Lri-L1sIWp1rn6l*vn1gcO|s z-=}5x9LO|bs*l1k)RCbmT?0aXX zWq}wc#}X5D<4ord2qEtfH~t}>z#%{z+JnGiw^_B?#Q-LU7)+`0Ak=8=m!)4iS>K*I z=Dbr;Z#lf=-<4n#m$avTDwaY{!k|QJXL}cE!7JgeyM&&+#JcVo5D7a5rERXcRBt>n z+h8guoym#(I7Ob1h=>>h^pT2kh5jb72@MPybB?hm!AAVUyboh$s|0o^%E$_Vf&ar9 z5;WuH#|u5EsY{PcSzxVNKcyH^0gZ?~swq4w0A6pgE zsU>4aiE}rl4Pbf+*m_r7Cr%)b)44L8dhHLO3P}_gIB`3GC_qF(0Xa4{ma7d7BMzFL zo*o+G^N?E%uDdMHC}^~_xG`A3hP#6RQv3u0SwAhNCA0ftZkrq`H)HW;!V7YcwIJv! z@x${VbGywM1|Iaf+j+R^{Yz2BXc)5h#L3HCGn6VBa=u{+Dc#`LR&-KxDS}KBp{3@RT0MpQyVLV9*VS<}iXRW&v>Mf~EHla%xWvWXK_b&&gh#HCO`@cTnr z08yNoKE4t9(a;j5S^Ke&zBe1bGOpnxpQ`nRc@Kj$C!;%J;}+wGAUz>|!qjx1jFP z#>a{WH=-+q0fW0F@hj#?iE9t$q(Lrjq<&THpMhHSR`3(0 z4Aadarn+}CZgP&HHA?QE$J+rIXWOi+7;DPaE~nDlt{{t#u>14!YQ`FFb0Q}GWP0tN z%#4K)bpLL)`JBMHT~-G*7SbSf_m-DX*DLghh0}SloNz zHRmhbm>~8mxn?71C%LjWek)JCgF*hkan4(RskfS8v)c-&?!SPZW`OrpeIQEt=*Ap% zthQ}WOgH^d*9vgDeb@2 z9m059?^zc<=oGjJVEOXFHgMLtBeABsT2|E48feK92Q1R{XD}Q8oJn~RViY{An)`PP zyTml0&4LN?XRZ&-5bAI=cLt6e9gxo1-QZ5fH<}x)s9^R2`$iPk(<1;bFO44|%?5Cfp4nB0B*X)~k54<_{65mZ&PR(rM|-?e6%E&g)V%l*8vi!5dL=>-GCZ z+Pu9c+A~Z+eoKF@8OT6Rkn15K6$b73xQ7)7>KJfN4FiE*?m^q0Psp)rb!7>qx>K;= z$IsZI2+W5jl0*huBse5DOJzv!k<1M}g%P>B4jDvV3tcr|MaSF93^tRNjOZS%rvcij z{dbj~MW&JAXTtrF=7ih)76<|-gLY4-J&hX8)HNH(=H}}NEO;>N>RL~1jMd1T(+7f;5{Q2dobT+}4h@KTb-Dzg1Mw@z*=_2XCWqx~9bD4S~*sr`fzNT3`){Y>J-g@wOI7H7Gh2260^I@qt}7r{6ZE zs;g5;)YuvhDeR`PkWH#pDMzUWT~K7RTP*lxka3~EIE$akYJv)h2rS1^bDyq#<6(Hd z((=CZ4i+ba#THjmELk=dgRtzj7rgfJ0PK%Z9YJBGE^UVm?+a}J=MAjV zc({P=fk??3#=8d-fXT9&*>Yp6{>Rzs^QC)c=$)a3{&1n5kS=OK8vW#IgB=}(%qaqS zQU6vpBs?9X=`*9#!;^e~ecnCC;A*Z@$OuD;DuKU(TSMOQ9I zR*S;T^Eo+SWD2c7%XtY~UHW1==i(dT6UQ`fxM^eal`0VAT$_0IBc;v*72nJv%&UHY z1#oiq)S<&~o#&^iY10Ahkb_zILLrysb`>^seZx)E-v3$BwoC6RNVR;%3@dyy8y=R&sA**&n>mHc$n`0{FQ0JvBwmVP_rqz9`b3C)Nq(2C*|C>~8Zr%RHv5UEqm0zB0 zWi^daOW0-f1tN-aPR%kpPB4(6ovhSgIpShYdZy1P=N4(qdazUwY`dxqKe~@!-%H<5 zIs3M_a*4)0kX;O|pP43BM9iaX7W%P&;oqdFR`$Ny$~ihM!MU!z7Kl{5DH4zVFkh3O zZBQmo3T=Gugb_LL+)7VP?OkQWjdsdb^S|hjDlbYyU=~|%n(`rV_29}Ya{0Puzp=TX zU9L}#vK<)X($%%GaoW}UMxhY9+40qTpm^E6%BqQYzRH>%W%-eQ*r+@w5=HZ-^Ox4z-!&Sw(Bl0mGw71^NhzZ_(xc!C5AClC6C_;F_CXZ(S=N2Vqg z2H?M{90@QH$SnocXd%*ph1}|D`oyH5i#j8jqmy!~6Ja^IkFVJU4!>w;P47Jq4B)Fa z{#;mT0k6HijNC%+rh7d!T#-T9`J$N#1y#j$d!dBe_3LlO$b!VvZ7)K7`OjjUVBc-9X#LD~Hu9 z7c|;`O&w?)B-Y$h9Em@weT!{6oL+tT!)!w*ejs1l3N8Krs&Fu(vN)RyN#~8TRj-u#_H{AP&{@O%&0%7n_8dFUgJSrCE?O&lh>IWJia3DVU(I+_@k@n zK9nOXAxYh_9e=tFEC|47x8fQ-vWrr=YzbI74R8^@ZgY^s)V;UD^XF_77UnZQWOvW@ z%|{J!;HGx;<1^J+7|(Z430vIwv%xcdu86I=_g4Q_p!mKV;-*dVdFq5)=pSX!BDyWJ z342nea2Q6+{uif!f&H~*J(8_ulgmA$L*p%@`2MvT+rut~kxjn$(N%zu&KiHUK}tS1 z!E^Iwjfymyz|ckbxz=I1*W#iu!rnGtd9c5DOLA;u@V{EXSz$4!dw==g&VEu>rUM>1 z*#_$reEytGa3vEr{XPS=-(579lDiU@w>z>t(iscTlr!q}%2OXukl{B?msZI03rT`m zU+TpLkB;ajL}sMalIU>?IG6av{?Nr>mKVzEnuWarf;lPV$e9vt^}+MEpYVI#D_Y$SjWW@q+{@dL~wi>8E|}_rwg1Ywzuz zH=pH;jHqD^{~e*r1)<0x;-9im+4w}T&n?zg8*gcve|14yKA=^;wOqD^x3!T_)!{m? zad6bxE^$SkzMx65x7TK<{VOY&??IR%m5<{OMjrOY1HTDof<~C5R&~%! zXZC*W0vVNGb18JLyQk%lxjWf;y1gKTk4+#I#`16tPyOS9-w4w6A?~w;m(jc?bw;u( zl59rBaGr!?^1X>f`wg@(w_@~@4%r+foY2*VM@_~l{1$^)lKEJ+E(>YOz~`(nw#?$( zs-4k7XZH6b!18ysU022QwkixGow$olEcZ|IaWj}ULFD@9luP|OZ{tFkm2b}2VI;z;Ek;_byFPwSDX zqVcezYBDsd#Ox}ICS;if`=6QVyi}ekOo5s1kgNAU?CXbf{xjkb{elby(yEV}8nv6~ zkAK&jS1@S5Dr0i>>`NZ1Ymf;K?|do|ag1K~I5^-l#avef$|17DY4hwFq6XS%56m@6 zvTpu8nCh%(eOPV(n=Qk?w`z&xGj z%G?V^mQp1M^Y+r!yA_`)bd;2|Fk3!Eudh#3cLQ&CfjuzR?g-SsJSCFd=_My1i)nKD zd7`9*Q2E{~TK3->C4vG<86qhEi1WY(c<_hR|D$hYZI~P8`Ps)1;gSs-F3~#h4k4mN zi%Ub(cIzCW|Hvg_L<$=yPFj-FfUI^OIjMUD>3*x^t)N~v1hau~(sTJwz2rRr#u^#7 zCRoI@>h3WJP?V5dJ;}#%&|~Qj^N_yF-+5044P^ zhks>gkST`oFhI|hH8ja+pq~!j$ts@l-z{os+0nfNlRhv|LhD!nd||aTwqB85Q8DQ* zGfQpWe&aX};P@L!XQa$Q$0!g*`yhCZYBg=$r4fSx3U|BBeg*vgBWMU{=nNLKD_3d5 ztl%{+r>ptPJegLV;x!ES(00O@Ps%d+(mJ}t$WRlRr6rbYolvTHBLve!n0~ z+8q@IL+P$xwpYT)yGRlr*o48IuaiaDz}u3Q?In*Qten47Yl;3_r&w#|$rG>BHt6?d zWx&{u``*Ggo9L+2uf#`Eug_8LmG6v;AQ`s+WYJe!y@4IyD8r$`k zC_(#uEi`cfIn%VXKk_pRm~QrEq_RrI2wAbbu%Yc1d&IcLHrJm&b$u{=`v`f(PnwZA z9TcoabGr4Sukl6F_Dlo5_;mH2jRaEDiu;z@ZXE)%o4PtWdoc?L1_T9AUA*9h0=NXc z91sUNI52Zfoxn;s9W7A(oPUwJ6+}kO*Xd33c?wKH@gS_;@{ajII>9}%2#PH>h9SB= zFK;<99!x+1E)xX5K8hyUrwZgJXwoKR&&GZ8^dXNK2WI z-LZ1R6mXemAg$rzq4x*9Y|v9uW~F})M%(@wi?($3S&-V?x$9{4MvbZK0qikX+Is?& zfx)7nFrDT#=zXko>O8pCSH;9b*+)Z7`u@P4HDFi6F_ODGZ3RhJ);jXFr=6HdAxXj# z+^m6LP9#P>&Dh>4DxkuWH!};>sJKirG@n<$oOZH8Rv#4DwH7Kl_x2^;#53;U3Rshv z`MGRfHpEK_X=M~42GOH+?FTbJpg+{Y!IWzWO~1uXTNi|%F1ov4^N;+xSoQYLArs)OaFb5a=sjfR*R-) z-Bc+ZUyDiQQba|J6((oXySGvKdaPq?8hCa!0$mH^i>tPtK8k^@<26 zN<$1gC41a}j~9wf7Upl=7U2)hfEL$Pr%A}G3^Bd=Q1Q}{$aVUv{_(_OnF9$=epaL` z&A^8~P+^_AA?ybJhk^aH7G#v_C{wH7>M2_-5hj~`YB}Jw(e4NYkY@uMY>>^Wl2~is zFpf_3u>AN>L?sebfycZbKg%VOUipc6lTqR4N9}8&WqH~HU_c)a<@_yf>?3Kz08i&l>_o+ zE9b!vjhDNNO&(6WN{oN2UT%+(Z2SaRk<^p9b@~OR>`jV)63=v(_pWwWz#~q!Oad54 z&K7I@Kf+=mt-W>aP@9{S?DopByr~KmQOBd<#@=CYQ>H7&g13v_GMzTBrX~RST1TX zjIN9kgG4{WY)1S$Oa!!(*%B;?vSOG7<@6*{BF-*N#fQObi_%Z2t2-c&M zeSDd^zyVs}&5$ZZ7t|mk1heiLMxb(aw!rDMU2%;$EwSZS7;{ zGYztzj(WBSLy6_wybWv2Dz&}wJHEPqkh4QSoD{pC4w`v?Us1F>{TwK+B9}u?21?Xa z@<9}kt5ve-6|;oNlF)?z&>wbqKYxmL;t=!Z|ot&LU5$oY|uv>?}j#+PS+o$p#B|^PXtBwn5fE z$qA3>54YPVRzn6k`t(kLHBXDh;VHwJ-O8IhQgIMFD)z4@{QzExV&htby|wS}T1s`s z{_dUT{CQQH>3)sR#hrpgKZ`+u7Hhf~gOad&Do54sA(s^EznPRQIB=0qNB*Ypzwg=` zArA_is0WUVCSohP-|H-h;&&SoDr``JKDVuGf85tdZc0ir!laLN5IoCaah@h8#C(?L z^5T}GzSj=ktPLfb{|d8FWbj=CCWox;lw9-=(_vpw>JEI!UH7kZLNtT`lEz3vuoW8E z-TMQvn=(pt`kFN`6*gEQ_G;MbjAB@ZonZ%iSm^VLCTRKbBX7g@E`B?mTAJ#;p0w1u z?>hnbSbDQM*(geGGVxoDr4#D68AVVxQg(P{8!|R=X~{wF?gt+79Imi|^&O+4;Uk@V8qA zDdd$}E-RQ_CCbv)qCpc~v~;@U*N>2yM9Q^fPv6>@5ox-6->F<^DIgH;cZ?n9{fE~! z+SgB(bYf-!+_R9$;K)r~kX`dy4DgafuMT9(0in2^nFuIcrKqV1VDgkn_qKI?krgk} zx9BXTRGozr!bg3g8k)krBLyFtHSWv0x2ifwt=9@nlYPm)7vwPBkg!pvh zp=j~o;6vj0c%1JbemPU8|m%MCUYsn+i`P~`$hGMt+0TAU23l=ASG%)@?F zJw*ceLGseQ4DxI&4ystE+aXeM+x!wXQXaL;k;ghj!3gfpoKs?U9ej80G%5g#9wM`3 z`-|z75aV&iF>i&)gG6SJc^~2a%5_>kzK77QeiKG8GBfxwNDU zgr9p-dJ^BJn>_l)anq3~b;uINj|LR$qE?FyE-UgBYD74U4A6IlbA0`IXRu$DN+Jc` zIi8Q;su*RPdg-k6KLQW7i4a)Bxh+OfpW|bQ<6C~pkvi_G+_0tOF+I=+4kz-;1d$%% z6NH?T(8!`HLGc=iNpQohHc4iOKk%EFEfM{cIUf;}<3aUG?>XEKr<|0E6AwoqFfde) za0<_|-bY5R7>kf)0yEOPILV!kh&I7kZ+(g28OE}l+sH=5uV4^0UYzT$?Po<|Tr<87)M zi9{{v5R~QPGOWc_%!sV; z7Z4An(f|Mx|LF&)k(mTENdcQHE42m$cG{m#rQh4p0j8FFJjYB5D#ofXzM98lu49o% z7)Otflew*(ent`c1$Uya@qT1u4b9R+wIF?$+1~zb3!bhecj%TQD><(R8{e<_-d*4@ zG>GQovo8x?yO*gyI@ZU`R+z&VWV3c-Ot$CnN{D>MV+((+apg4`C5j{6{efM?E@=f1 z*=JSX$JFaBaaT;wO;-7-!`!8m$%}}l3PGoF02)>&_#wxLc=JJCo!gh5ETf}d-Ge4cx&F)GA$qMjFGjp-Z3#xXV+J93Al9|>L zSZoD+C<7=iKIZVQNqw^W#$-wg1syhUIR_t{NH{zr=Q{UjXQfKKw|@U^HHXYEh*l!N z4T3L~39|x!%h7fcT16X2Z6Yw%HhR>co^jjGl6U*lT)LWLNOke zq#unC!nPl?Nd3;?$$=D8>TAxb2~dML9i6CmU}u?x;_p3d(z!*P6S0cterycKI_Ac9 z#qBY~tg-`SI^~sDO#$~_rN0Oza-T4bb}@xxiJ8n@f2e+5jJo9HH(@AP74{%plvZu* zjjlv=Mq>&#!OooMI#79G5x$ZuQk`@u*;-q%y^8M-||B@**TuVqiU$eeX>2H~bZz2h_UrZcAZ zj+38D0Su$ptK4{^IdzQ*vmfL((E8gn@gcs;WwCLM-|E)0BsS^$Ni$9V>gcZq(u9zS zjqCNMwNsB|yz-@Ka#)69JOtmIF%frTy%D}WFd!!rB=6@R?AAWCh}KPs*IS)tQYDH6 z30mtW7nsa9NxKmOe`>Nt?JMn=Wo-es!>_*5))#0t;LkTtpsc&hp0i5AN4FC$E^bs@ zvyZg-@4x~=g3M-~vs3gyWetJeWG&HjNwqeL4-^1nn+(dsX`~q*iiT-1ggGC1FS9|othUzoWkHbM# zKOM|s3Z*IcFT(9ZL;20c5-9@K4ffq36*HZeW?q>b*Y~isT8%4GfmTK5Lgnoe}a=sTO%`apGl;ME-?Lcz+*|;J~ke#p*=? z71@F#D-7isjPK+$IZZn~aj_wP6%{c&p3`DHrRK2p5#-o z5fjAGZ7`9iG6u!2;D?420<=krBQXx-OT5pqd}gneEWKN&`N|qa2&!Q7o=ASLEQ)yM zcu#bqHf|55-sO4z40HJgrfJj#0dPv*N}{}=nblQiI{f7LUBkx;Km`GTQi2zfp))S1 zUVEwn2<7E%oL?*0m4IiA(kXEKRU)XpXl$%N7(#)4OEIdPNRROvI!|sABm}G706=TK z?D}I^P>s|*FA72us(eX`-RMHwh{?6x2h!1H%vFukrcdw{1+00>z zA>m#0OZtwDuPgeIz~z8xuDPT#rce!iUMj~Y|4rxusQEZ;sEFl6w6#D$kpOcRlUp)# zZB4=;_j?)LhDO|qShT#1?cb|{ThF>!r1!8r@LdQdAifE5ZYM&EOtw^k# z4#8;d`2&N_##eHo6B(1id;5^tmehKL$JNL(^1Ge-!L!t0b2L}Dk(``D?slZoEjyKK z1@$D2iOIxOPtq)NB@GrMm)mTP8ynA1oEPMm^S6nP$RqwHg1D@DiUcr>q0;Xs@gMFL zlmn6YWX6QTBNh5R(!Cn!yx&maL>D}i2d}s$n-R5kS+v|Smt+vkIKa=d{Z+O((+e=p z{B|M-p7Xj_va0S$5C4PpmB2!y@Rl0sfnsaq#)s$bCg76WBqIAtcw$kjgCdR-Nd9IG zDkmG9;dhVxYf^)lxfs0idUYQ>I*y^s-iUB$9Eg#5KI|}`9Hm1HD7xk`_Pq`65)YZ8 zyx7NhutT%H-=Y*VyTS=F2O~7-JN2k#!<0Lt4p(Em8to)|6i%$%k&smq`d7}(?Gb#C zpM#yhKd9td4VCI!Y_ZrtbFD%>8ndt6)nEHmi65`1LN)d}L|Jh!dKsg8e%ILuXB-RU zFNgButPTfsvKigRas(n#dEWlb$+yKXU655uY$m8R%#PE{ZNmNR2<&uf+r|WPWTyFL z64uAL7gN?ATJtRFEHsKb8K!FFc}}G7Ah5*_e_=oCGd4C2@nlJ+#@$hb^}z1!BIXo$ zq%fK*xjVuSO;QKJYtua5dq%zPY>kAAwg`$rR=wu>wF_YE3^vPPwzU|}pMb5|Er82#O=<3#Arf6+$ zSoL;hlI_em-0bZ}H{=eTD}oX${=$jH0$ajYl{z?74{N2Q77qrcU1Jl}iAjJcW|!PQ zoHDy42;ifg2_Vpe;7YH9LXgQL*$l9p*-J5Z0fyj#hltUudHDoH32%c(IePOk|F}vQ z`x71!#Cq~Enq%5_p{Xdr%crgLK;{%nQ6D$4<@0w}sWy~DW+GoWf2-jhlt1Lbf-viVOlZ$RhX%iTMOy;lc4(?F-BnZmN|FFwl;uw#5z zI87+#!W9=0N4l-d zLn^Q<`AYzsu97TCqr+<&me`UUM`C!)^Ho|Ta zi*(0ec-`NSy{ZT7mDaNU8L~aFIXL}b;ruwzSge!SAA-L!6v{?hPYOSsf}3~a$B+JS z4F;w5Tw?g)mC=(}?7?`T52R<)ZJ20-y2*xm4;)tf?GAWI)t@%{SCJr~sJ_AsQ$ex4 z+o9*hvxuqd(+lVDG7s-yZp=nR5=vwy_}^HCz`{#F!s--&oEmcpMnSZzNSOQNQa^?f ze$Zc@k2Y9fnvIgW>(<+xK*#ACUJgH`1R;W>eWb|mM2hI_=HX8$vH7-kJW0;PQom4j z8M89ezF}!zwjf>|80vCH4vAmLx}#{U|6Qw>Cm$pa+aHpq5a_V{hfN+tCn%|}lBlE| z4(bn*Pi6Wi_8|%;yfWnb!?4?3clNKZ7&FNeE6~?NDY;ilzPEgaVg}9DHmXF-Ta6 zNIXT9#6H@1L8dDW4m4zFeioC^wgHX=-JaCxP^`KbeaFPvfEutkbXUdWa@lf3NM|I< z_RIiH@&Er9I6PH07Tf-(oduEtfD`crIW! zht-_y>lPb%I`h#N6oEBfK>v}HpoH%g%I6mE2~BT=n7-By33xYh+u4W~DgW;^{C=AI zMuM>)k43?SqXKP`!v5W&B>y$M#!Ir&*>9>M_7*gAX8_IswiCE6Lrg1 zb4gXJ>Ie4+xyO)GaSvu*T&k}#-&3*Daz|c1rdEHdAtmb}RBQXMr*?6yJ2G!;6VMGW zYz#HCD17tGz~ojazP-+W;gGTxEhNjYFX(@>}j2=h^r8>p1NpMOh{s~N}aS1l!PbyBWIUOKK}ctkLWDI z$lQ}_<9k|LeX(E~n^*UP-ZGs^Z)a<~SVBDR1u%Y)>)f(xqs+>xS-Fv~PC^ zifOs}#~iZmm?z7n?e|gP?C&(?F1bgmQ}_(i;OhJO4y03Fb}A>BX&Leu8An0HW1NP3 zHqz)Veq{1*fYj)uB@&%&OvSr$OZ;^Iqb8nyuK0gF(XPXejSY;gCl1|ano=woK2f}Y zBETLtKpHb{4hQg9&})Dq_S>?5muK%1} zb}Ls3#q)yH%K8({_pEoE8WdC4{b0jOcYq=PGTKPvEh!PdXAa+CMOH{p*jnLb z=Lx&M9=3;HM~v&BB&xw4@V3HOo85n&Nd-|74D9zkV5{DI60+l^_i?AuD7w+2goQN? z_b)Zny#tKQa6BO}T~yV$gd`n6n+Z}QMJ;=T4C?iXndTSRZbyzaR%;D^&NC5A+t^l% z>{$Io$bQ8U_-4Z0Q+N&n7#mX?UVKrjf32W({`r85hA-|`FoDg$=JfC)>DIl6C*ZSI z4b^o+<*I~oJhdYHXx+C258)8yGeuPu=pfiSf^x!}+QnUjY`~BmdBweo2y>mNfin5# zM&%&%1j%r3Q2z{?N$Yxmmz)D*Rj-Xvg!V}Wk!SINI>-RTKxTRTd zjAczrqge&)I96`n3Jg-lgd|LStAC;zLwbl8PaqXfh)SoFgkRLl8#9xAfc?GwjQJjT zjo8vRw}wc8l*VNHQSX3P`$QnDC=~<fd6KGi%N2INuUc7H#OQ4+SU^lY^ z{h-!HOsAM|00SiiCd!6{q=6Y@aBk4&62WNHE5us*4Ng$~1!{-S+n*ZaVlcg^vg**m zgR;;VQ7(7<_(|l_8Cf?XC(zX^PB_%N#)VEmK>ZH{Gldln8zl+?Ru~EE9Q6C-sp#L( zV8;GxQgSL!3#M3<1p)_$rK;(#Hs6Q{^0%jl-jKvGSPNWyt{rdZQ>V`?RE^{ zFhNdmMP%;bV1M6VC;*ZP`{Y37ufyiu1)Vjq6aDwb3IU7B^zdq(p-?+@*jE4|f3M5V zR8YKyWoFN|?jPN_(e^1YCT~wP{%>BCC|t^h2lAYEwfq{4U-7p`Dae&m_5jO^SYZ+Z zE;byD5atJmwr)@e!2HZmUL8@ ztChlB7Ei|+&IUPKZMQCkt19D1Q_xXa!ar82K=O+hmUtzA#zrX)`hWXJ+v~01P5=lT z1N9uekB&o>OKX%m11T?^<&py_ye_?1jvvy=CpbxK$Q4iH zzjs%z-}~OQ*|}4XU^LRNauBB{IM>$K0gn9rm$(^JL{{tMzllwo3o_|s11JB7s&fhq zBV4<68{4*R+eTyCcGB3k+1Pd(Hc4Y!P14x5ai)9!`{LXu7nzyNeD8YKT2Dn;N}YnE zjfdB&u$r1ymIiua8vSYG?1j%eShu5y-47lnR#tBlH=vX@?9!y4b0;+n3E2z;UF~1( znh1fQf`Y=pkQE8B^pB<@YB9f$O3V3Dcm-Jmpoz{_mEZr=N=9~!Dy6ulrpCxx9rib) zE!B_Ux*mG%pSGjB`}~$xR?MK~#6E;Aw2T#Ko0Prqla|n z)-dSk=vKL626HhWiKX&C`VSLZ*@h35yv@I`1(li~2is_AX({{6wI~E6v*~S&6bV5t zR3v{zO@6!8(*8OF!QhL@9%1wuzh z)-CtRYboB$CzGz;+M(y>ZQ?LPvKX)ki$mvxEAB`NiaXel((}U{(magU^Mx|7%Wkdb z=Tc{CrNQ|0j0?(=Bbf;yet$-OWt?B09H^VWG+unGVE4h{fm7ilJg_vm;gW}5q1T*!GayAXdx1=`k8+Kt@W2z7BWI>Blk zlihVsq+p<#Z`9wo%r1l==;Fc;wCxb_t%kVV`dn!sAKGR`D5vtI!ISlX@Fy ztVG7ci?La*-3D6Pt{xwUQ)xA}4iCe5-7l^LKuLJ69LjQ#Y6 z*4AJqCMNpobAde5?d|R4=+}HKNd%CXxl4nvrd-9Pm88T<$=J45c(039w%-K?F0scv zKKNjroKjCMhX+iXZhr`$ad~)y6ABIi8El}6&5h6F>I;Cx zkZ^Tn`ecJ|T zlX$~(b4hL)Zb;~M1M~a*PpqKDN=0PfBo6lvCgJ#evmCYn5L=+dbfe=zjAj`g^X1lV za$uFl?Y-=u+1Wq3!voQC;suEsC~t(kw`Y{UTQaUqpn)2%T!v|4QqoU6siQUqlUq0H z(R6knJkw!UgZp6W#xWHf{p2C&t9uu^nzq$j^wpe|$+JgBqVf=N6u*5_61DDt zXb`b1rr?C5x;|0kJI&@d#Xmq&|1??u^$I2#zhRzp7|w@}ff4-vTGxQ!iuQ2vE6U~2 z$MNNkKP04U$HUKW8oO4Im5jiV%X=x@t?xEg!wj9A<4d8e8ZnPLCeRGeR}0i5adL7B z1licwz-GmX&lg+bph_A-s4oAz>unLkif!1OR?F)a~+Uw zd^BXUUVxgKnzEcN1iw^N$y!}0k;P=QTTSuI9l$rA8?0J}$d(i-1nkgi9@z*BMhJ+A z781SWrME8Ynnhh18Cc&59&Ql0vAHa!vW1y0pDI2?* z`FY7B_|=mW#=H&$P$Aa`AWh{gj=OGsPE>I^^;t5uQwL*0tA{b4>nc)_)_+Pijr z_oQe#f3jo}r~Mvd&16m+eO6+}!D;uvFPns8VV7x~^+gBpyVq@`x4Mf!2kmJ>Y2p3Z zpJY!QxtVqs3ob4$p_}ng7L?=xwuSF{de)Fa%b4=gB#2)ZX8Wc2lO6C;m z%~44vi$tMGOvcxQ{swUpVgIahC|12eDH-H>0C6MTd8g+TMgci_Uf0?-@7jwI}mpJLSgeyb7FW4DM!flD5Bh?k8gxb zi-|iwoX13O)E(K`#3w9kR#?S1K%(o=uIN2}`z@xLt5GiqepVDK8u#G#C0#R{BvOXm z`Gj@n=wn!`c2X#{InHOdU%PpH)S7T4R3mObPpBC)hq z?Go)@f$$J!3*bhgH}!ow2Opn;g$2Shuv0ii+=&)psL&b6j&Uu0|y}Z`aF< zK^{K_K07nBm~P)6zn7Na2z_So&R5%uOoqei8<_V!fW9-h9EFpKBw`_(uOm`SOiV&RA+yjaKMsfO$m(*Ur$X0r z*UQJdnGPuu8XDNi(`Xg_f>9~57t0tBK_8B70fOc?-?&EQ?TG&Hx*id+pKQ3+j;nkt zdceUk470#+c6JsHKKS#e-F87Q)03jn6H;4EZJ-OYy?Q=-)G=UW1aG0LtdDm`qt2X& zpC403h9o51f|Q3R9UGja)SrEcdCIehN=Zp+9m)qN6~%Ru6&W#F2FlyWHsX>T_cGHn zGsiF5;RXix>mT-6eg*upaJhbQL!hHiZ4)MT(l^8OxVN^9$gflI0)vA~;l|(IXUbWw zqWm^aLWz9~)X<*2Eqv9Z1Q>ND5XBIk25Swk&Ak6=bYnSLQjT8=DuP{qB|A~V`hP96 zW+U=j6=f1pd{Ow%N4S#R@gocyFuD)+xz!%=H727GfSrhHP@*PFKJS*X*B-rV@d8ID zz`pf1EBOF7z) zvffJ4n^Dkxb=r#Hh=^99FW5Ub4-GYIP`aQS7`7m#ky#g2GFH&fYOL++g3{JD)DO1> zgD`JUdPc)A4=QypFOS$dsT||=W1ExlY_X{#VrNf}O_0%dC~1x5BPvtaw2+7+#I^H} z2nk7^+{5xX#36i&gKpsH2=I|h#Y0^IViHa=jv zJzA0n9jMadb&I<^D1~u%Z{g$!UxHQ&@9=wnaTuV74y?ed2ey3`|UR0-UPvFyV(AXs?O8J&Go$UtE41*?KB4cLT23JY-K8sg12`S z>l^2(%!XYeq~OgRoo+@zh05;L?KCtIVjbTTN<2C(3bluY&`nBht>P@&uzqk9#Z4zE zqljw7<^Qw*PyTQAJfVd%y~MekjRh`rOP{XrkjuIK@dlgewTJ~G4{^g|?VK3}N#fE} zw1>tg8R1W6t9soSA^*9L4l_cA2@IwFYf!%+TZUI6CmpY&{@_xD?A%!Qj>&+7LR#NU zMPz2O;NhumpVtgY(6f7#6&ncBbI8>F=4F3>wQ2Yk1tIXR8t!(&=ApK*UGxocUn#7q z2?pE&OyvMLvd@Crt+uh`GEBf0-Amwzi{(FmvgH84-~a{DietO_h6W@2M+Bd-G*fLQ zw=thnbqG$!_cxZSBPEL4=8|hGb%&%tKB9#{3O+43_&#rqt*zgxT|Swk5Kzk3S4I%! zs27)v`j;w;c4P|3*p-|P8v{V?aRw(%qji-JsCx&3`NYhiLl1WEhJL7?pz-uM?uaQ( zE}OIl1)sPO%09G~o{_#A3_76TiR3T{YYKzjEcVU=!!^?dGJ>sO^dFV?`UghHE;wIK z-pZTB^|fttlOhln%Z+d6>`m%fp9=F8mJRgsq7|9SOL!G*8G5)lS(9KW4YQ}Z2lAkg z6SE6MY1D7BGhZgTzKE6U>0nb(j7iB&m=O$eDsTql`Q2xhMZhf%#o`tLUDr&Uoavy; zQB6!tieXY@7wTojdm@sOc#M&|AHYt^Dodde@#wOy_zS{xL`hBFGKCPJ0F=hLpB38g!V zg6*t~a=bCGjo1hTEoo`|Fbn8VBjg*HAW(RX|7gP>Kiwww$b3*=m)h;<%*!XRQw$H-f8CR?ux3l!1SKm^X5iqiyDl%!Yys`!3(|0z);2ZVf$mf^(Z{t^HnC==4YY+-@5VjW!QKI z%Qf+BA6FyhucwBZx^y5V39<9IX>WXYMfv2?si!lRt+^&+(o10NcRMq?m9r|N5)uol|DDC*6%^QK zyb!e4uFteM`uaC7zsZTa)|MrYNu2MmQ5WQ-HnYvslEn4RCj6c)iH5+H*Em%9ip!=5 zUURRghTZ{6o+C$2j-17&6doOolgA>>RowIy^d^rpg_2QGZPav{;n}Nzeu6zf_nF_u zQfJ$2JPGJH@S2%H60F)>|M1}h1tsr3h_Ga17bjAH86+1vm9hMVTS8C&r$3nl1}X_d zL!;c11|^p(>iZCwCpf%nBE*udqu984UH&-Fg_+v*T_!>opMgutkUldM{QS;!Bf?S| zwFgRdbk#(#Fz;_ot%J)rF$lR&0Y;BsQ}?Kb#@TV@8fT%SSlSt7ze~TfL2u^eKp~Pt-o(KXzNJu}XKD;ju)!m~!F%wKiem3dLI$1eW2^aG zJx-f%#K{$x9t8Y6U0A{p*3;w53I2{*xpT6~{qVB|1mHZtxBomnn4~SYc+{-rLr=;i zy3<(>P9np2V&iq<5D|GOb(?O z3f(@LlcGFS)Uyq)`8lAYP{c8qj5o(rHB>}nsLdUHT_IhRAe@!% zH4MLx7p&nfcn4#pWd>yTOI+vXAFZ+5hIu2q;D`c#5c#3!V6qxKx5s)Wl3+W%iK{+Y zi~NMl{Igg`(Xmibs5402YD6^NC^k&Fn{A0|W@TVNfQDu+w?o%Qb`F%73D9NFFU$rV_Tu(< zx+>6pnu8Sji;K2#(8Chr|4feT>pnbfG$QzG9U!2$-%PRIn|XCi3Wra%;hYr(56_a2 zkg@4m#!i9amzDKrW@cn4@vnvBO)oXI>jjc{^nssJmw{i=7zbr zq~z_n<8sX_=zB*t9b6B5FPS3j6XpRj3Lq0?PM@;d2C7J6lFRL57TuOx{;A7B{U*WI%)7k9f zi|XS=*3p_qawEViP>~Gv)VyP|&qnBQ8zv#8hDtYQqT;otz0E z5_hu+z$LVxYjFKdf9y&T3HRf(CR)cmhFsdpV|f^=Mn}wORRb|o*eM>UHpNIoDPYH~ zGl+%{TWv`yD9uuVG57nf{u8PaE`BL|rn!ccvbrRcK1*V|&y00oIJ)Px;V=LmH#C{A zF|ZcDzuw-2KaG+iGExb&#tFGBq^Qs)zhRgf?yMVT)Jdn_>~^}kiKS`%YC6pzG4qBq z%>N2f7w@LbH4{gil!B*GnTBL{Xo4*3mWkc`&6viV%n9NQXd0!>_(9f~aph0QW@tqa z<<##VT6v4I@XI5@?}_$YpVlf{^8`)p z2!mpd78RzGUCNA`Sk6swT5fUhxceJk&%9W_7(nSd+6`GKbvWcSg@`~2F~G)AtS?+u zCqA0JVDxz&tpoZH(w+O4O)v^< zY&gHNFvEt5%wqDlFuF?VkxUW{s(Sh?afPH2nu?I(cC4-twutIX?`vsbjt+xV8I^P? z?fXr?UTqk9w7t<5WGJRPC0V)guHeH;{S8dn+Wn&^7w?b>E~`{Tge5=!0PF%a{nueH z=%@3tHO+@{`nQ%7nwL9|(P$j5VUy#&H9iJzTTM^36SZd#N2a3Aek*}9%pf<~TIm@e zgaDSjOS1_c{e48ceUAbTZXicOZBbY5?F{+*C#n4=5L9?-rXwk>&_aU&-lJ^rZQPRE zPuII8=;@gXLn1QHVAb?D%PDQV&s!6jDicr)Yex)`PL`HbK#OFiu*jVAIw`D=Awa1CNKwIVFSF(3`gUB0*+`bEqCSlR&^bj@yfhEF;ix8X3}Ur@iF zzu_Ci{{`t-hG9lWxon0&L1}T?UKM(4@T2j2&C%PuH4S(B0puBKlAUh#IZe%}d*;0= zD`KnuldYFul$3T}BmylayAI*|w^X-Ig1|dNomt?8xb=7IANXXK_%yP+=26G*hv2W0 zHil{J+Qn(xUxVh2_d~D?Mt(Bgv!&B*t6#smzOqtW#EI*9l= zw(9BqbD>c@Fez-k{%97IdxGb~e!}VVacz8bOonbc92R3_H8vhMZ(vnl>7J zf>NT;Umn=QoZHje$F})HIiexKgA%yhR-yNwa+1bllt*h0DCQHoinXV&w~T%g<4bwl zo=29|Yb>av)H~uEm&J|NjzudbA+j2J#C39k2r@8aRYaBlz6fe1U$LL(sLtx+gP1Kk z7(X<9P=_CKf48#wl+6DyH6_i5#wkyMc)-6M8i-Vx`Dv$fbb6{0kscWd4UnJ%6a-&U zUKLy!62k$rC=SP!Wb04N*L_k?Ul@9yPGK}QS%;CLxlAQwl|PSE<__8xFEfbms8dcSrk zs-Rw0s%z0>VPOerEJHE&(aD2_^k2~XR~?$M7HGjU>GUDq+z z>>l`Xl9gF2CiVqqI+0!c?WA()W>YaicA!Nfp<$ zuYYb#jj8wT5|OvHwT;XzaPG8qcJ?0%*KqEPMj@djh5CQW{|*9w(d=ITGBs7{=&rG= zbHku#9WWSuZ)63OOTnu;J=pS;Dl8iv>f1`$ucbv5h_;y4$QWIdNeH`zN0l=D{-V^( zN-^?Z*GAx@Cg`+i&TP37Y6V0tpJ&io>mV*R+Ig|eTvCDnj})Otk)3l1oMy4pE`|q+ za^B$0r?)~(pL=xA?|pC9gjzPjigp)TFss5m$A=-d2^}6>$!Yk>IwHoj%!(-g2j5UF zSc|RM=*wca0gJbwL7Ot8zy7Sqs5V*QH5q~4@33v|oc>k2oGm*K=eUmUQ=FO+A0O{O z97vMW=I^&I-c+;Hi=}!=y_;>fmFyE`Uzy5)in9s1dt`JwMf+TGWIVy#uy}zvV+rrk zzmhCGtF0R0Qe-0b3?AjR3?i169L6RtiZREnZ~xN*T5DmfSL$R260rzT4io)XHZZ!KQ56lzEb}9PcMChrIfa>(74>}>85!9Yuo3iWULPKY+}_@PGYJJ& zNl&krJx;d=@=M4t;y@|?aAN&81qDfG=Wa=}%gDqLwTsX{O+Ecbvv~yoRpw~pmv?Bs z%i$ET$OI{s|Ac_H`sH-@W+>glw_b08Qf>XX?eYeRfJakPq*8YAWPgEpG-CyqR!i9L zgnn@iL%&i*XHTC?9%aQ zhS(1wdM;T>I{J0FMlVwGLvp6}k3RJ;5^wMpvY~<6DZpn1n^}~2M{6t&o^dWemOn3Mq;KoVv1pWeu;_PG43234&M%P0Zl$z z#P;!0LA2H0cseI53#y`md&CeS0iRcSrYxS~^I!{l`$`=+@1z9|3^ZF;@Y1qkLUioJB~>WVBqhNxb}`6C z+}*)p9Sx+1lDPbdM5TPn%~7){A1LG~eFz_hSGXMwpZ^o?y8LiEP0QZ6u?X*3SEz&%2+Pm>5!lwZ(C+jl|nlw#BmQ_zlO-(B z;XijEMR|LB7XiJYeDN{6zyiC#^Y(z~Esb91#s*LAs%UL=LJm96r*IO^#f?sj#1BGI zt<}Dy|Bn_p4$h8ut-AxfdM+3+x?0*qJ8p~cu-3C9VWdqG!Cv+&R7jCl@#qzI;N;L% zM&r;|6J`HrtXLGHV-<>li|#3R$vk~~p+}9u#fIYlCHHUS1TvgY{0oq?8CWHvTHKfj z50M_De1v=W(h3@3$tFQQ;68|LqfLV*y-$@y%}E*;092Hv4rf zpz#=jUb~F@df_+aTM~`O+X4bd3%wSlOfaUP$5lXl+btMxLV74T0L;k$@(-(F^cyr) z`U>U%mx)wLLqnruV}P?a$Blu%nCj!>lH%xk!-%LlFCC>zQGIwBWw({9WBlUyPrFDk<2gzd0c}88(p$Q>OZGG&@P` z=39^$DS2pn^&t6vldYnk*;r&a$=6OeG-+L7^?%2ey^6pERdhUy4Y(|G_LJKKU{FqL zQjk*(&9X+oZ5cbT;sGj7cBJbW;NV%1-nDan$p!RMcGR;e{5JSp5Pf7YdNL}&eITfY z-+uhgwq@>){CFWC3RHuq!Z=>5nNyN$D$ta!u{Ra5KGpns2kc3}Z*vSG8!lQrTolhs0KNLW=B z&GH1v(`dw!$j?-4<_?oZ&hmT|SPCV|^0U*J8rs>#MrcsbL5NA{^p1^X4Id|DWsSk1 zaQ^F=H)X@d!BOVuZ|JManB(WblMX~sVh)Qi<)MN?Rx-{RnTyHb`ipWTZ$?ZXrLsHU zY)(x<5e84UJ_rnui4@20J>;X_cQaeO29sIn(=pLtF<8VLT$WB9l{AJ!U8LaRo!*?F zadDMrdW8dB>?d3vOtF6v4TB+eD!M%+{l$5glbWgOekHl;qa?YCkCVHi_(dVftX4xc z!mz*q)kH)V@IEuVV1mBxh-)1By&1>~8P|rvvKsP<8O41P0kEAT?Ced*dHE2)`TXt# zCrW{mJ-FS9hJ_`ypei}Cf4GMEssGReD!XI)S-hAWU_%Nd*64U_cB&Z1cIeh)=XlB_?h5_!BmF2LOKz z3JncSm+#(jeocT?&M2_I&u~AaR#sLPl7Pad0(P{aPy2g&^#~bloeAS%ywvht&^YYY zV4w%&Ks#~1SCb3ct6NS|W!$`mgvoK3gVV_v-kbN;sfgpti|t#NGY3LW&IANk6fP-t zCQX~83)9ES4L!mfS~bbtFvDbTm)WM_bYuloED~ZdU|=pBvf`uzya66wUO`=6fK%6@ zg}S-cqz??g8+NI~Eo{AwDA3kcb;YIZ$z^k11s)VKDi+P#TTQ^tW>3nF#Pd+tC%tGc z7k;Oo06iOVC4P>MDy7tUOodD_h(wxpgyx@96i{VqbAx%lOWV5A;MQbG7TA2_N6 z!9~$=%&B|K8ap?#xHb=xp7M8w8ov`RGacVb{!=PR!}*O!`>Y+S(|e!SAK4SCvO!q? zux}ap69~o`L@dGoB%-?#tw3^m__7KllU+mrJaO3c|ctg0FeZmXC9c76*%^H0%K_}@T%DhU}`G0Pdu zEKpLGU?eJmj*Y*Ed^}SC`lzTFUJrbvEobt-TGmKJW6(e0`DVdLn1Qk3%W1V={ZcIt zdL$AKTMENhNvwH84ug9K5f#i08cnvq3^F40kA+4p72bRTJ>%ku#U>sKWxIXM9gUDD zi0OVGGTJLY4z-M29#Q)2Z?s# zU3C2l{tO1+HI7qmWmj}h#IvdeB<{t`(@=0n)zYG#-a51$9gWFmuWl zkwJ1`O-lHX$E)R%1L$)IJey6)R`X8gw)suxK);$#QI&MonK>zjCia%e;F;4B*QBRo9_`uyc7psCLS-;)61JMqr?e0m z8}SiZ;amg@3yYA@P;}8E@bjgmXO)U5;;ut%f%w(Fl>zML9~q&c;*qQQv7jT#V)N6w zdOx;1rje*On$qtR6Ya*QZDtW~(eH?6MLq#TQK5KrT$}5u=)ZH+ohxcWYO3J98bKo~ zZWjMMD(%47Iv+x0BzsR)Mp`MDXz&wEi_(TzQmcVm_>H}!+HKXdhMJm<&=#ZR7XQ*0 zdYb7e3_*&1QnqKbY6Lq{VaDoE+Po7B_EvI6^voSm42p zosc6(s?Di6<0U~irXt&`41`oT-L?;i*4^45wHP2j86z`LjIb->`Jeamy(D?fF)L z2uS(MqI0Xr^t?R6;qB-L!kh9w{Ik<8F~=*}6bp^^MjUBe5-c23AyNJ!x@P5Zyi@Sq z3%zsYaT}T6vAC;_F7)2#8g64U4r(3a)Wu%Z)njan1(ra$>;LKJBTAt0!FNpC{_-<6 zhTao8M{&Z0e7p1I-#>Xwy!k=|8TiLaCgzQT>y!CJE_!$O5q6qyZJ0P& z)El18u`JXdt}{)%x=`4IE6}J~T%AI%`0UBjt#N>A_-Lb%(Ymkq(cx%i)*)kIY1*$Q zL0J~G75LHIxenyw%Qk61d49-6$=JwQA_&OWkvPDf7n9Rh3++AMB57)gsRbxINh>S6 z33(M`0OM#t_qK2@&5ioZQbQ~b`;N|75~OU9%39X;FP1{G9Td3YJGPwIr6(kQ`h~}< zt1os6vRzd1P?qwFCJx?U{7nVLeStc`8gICSH%Mo&`-hBmnH_b@nGH_63Jl#xS~v~;?>Ppr=WzzmSR{|9DJPHAi7n#f|0P6zB^ zadmphXi2j?es3NEIj%!7*!h#pWM(&Tse7YxTjc-Vtj1RP{&|?1O=mm^=X~S+1bY3& z@I;Iw!@j&HAKXX=pdPEd8P?erpkb^$^wr^#dOq-KLL_-11oMpQcHR4#us zK%ClH82yX&@msqB>i$dw34=h(GAq5gJ_&hsl8T-kdkG^kb+1@+uVDL+Et4pphwu=d zd{bf0;Fz`eUKJV@btKnV6&5))zkCzP3#V_<{{1PKL{)}fc5cpxh{uuE+uN3#i2y&`mrc|h z02;IPIv)nvdpPLSu6rVtsLcJYQ6XIQqEg!SJsdydokhQo5n|1GLzntKpt`yl!$R+# zU!wq?JP7$mYE{KZuvjj@9*C!Z@sYYklF$t}&eSIR$_sjo`!dL9mi0kDA)~K*)Ae>) zL}rQ%6k8u~e0a|}@6MXz6e?4)tE8W_iZF)I;* zBYfcec)XXfv{bc?(lWcdq0nYwg4vOp6BmX4HtQp;z2pp?OI9q;WC{NR&=>$Z{gVXt z-EZ|(wfIuHq(e~!g?N9$(bZKPw$Q|%*qm%^dz&hS4j8d`+)4hsksL1xSE(9QK<)Hg zaj)b*fk}L>mzTOqA)l31fUmO4u6b8QvlvBrZoyOUF^?@UJRCD#Me@hN{(MA@sl7n# z$OeExOP?>-VPHeL@3>-+?5fX(w28JjTDPVQd(bnmKU%Oxq>~#g3KXw8|KrEntcqy# z+$gTubl{H1=YjP4cv**p$M1zktHIEJq9$u(?)U{?=Zr=>Cjo;^u@K_!Ucbn#ssE|| zQ34LXx7G=}K%tfX>V^xHeen+ES)FaZK%c0?oj0x^_z%AZXuioSD-)})+U$WUHa<22 zSbH@D47p;emAYEyXLU7Q_d^s!nWdq)ygWQ`98|`^!7IGi0u+#Xs(Pgm0CI>;LT=Yh zOkQg!#w0{j&J`&4U%d?|9dBN=@=3z59H`>ib9Su`#Y{}=syyO?wfaSZ{LB6;FoGSg z`@EzH_lLoAGvMRla`Xj5fiRQQfB=jK?8(Z?x=~$;p-VFU z+;KB}R2h_rq_0@FQG>JbNg7I3BZ9@xW~o|uJdM7cSr{TBEKGvfHVXxtkPuPZKwSSU zC^V@t$nz!w_CK|AB(>C62qY7$WntpXz|PJ0=>x%=e?{Hjp|2Bv1-5SmVvvzR>(^4+5U4(Sq1c>CLl0Lv*jI8bt6&l&(%!tod0=5i zyFGJ^SZ}ybm)*ewjhGw9$ayAsPmWQO6KZnkMI0VRAzRV%?L6J`!VQtW>rxdei@gI9 z_w=nrtwfd76z~cZ2jaH=*m)GR*qQF3+?Iyw93pH2E&){J6Ao_J%nms2Z8#vu~T z2QEy0V(nK@h${!vnQvlttIfXwjQSHNy5%8}_RLzLI4sfv)NeB+)n+ zvnJ+-NA-1M@CI@ju}Vc{M9d~sKwL=MxP~ptXE&D@A@?lc9RTq{A>`SIuXWdsjHprr zWi~1^LQ3$uJ%3RUgC(|uKTw%Wh7gaY`)+i1`MrJPJa7FZ*1qR$?>%38d=!44r5Q`r z@4R4LS$X)Ec#!Bp>@Yf-VPFTLP`HTQ?(ZaeapS}jobA-Lt3=ofl7L*)ShT7vqB>h^ zMWj^79S8!46`HRt&n{J+%|c+Iqmmc05w$!?O-)57At9lP28E}aZKliO8E4(|06NjR zX;chLm~fE5{_VDfgxM34Dg%2h(vIfK2mwMS%_0mcDk>m)8|wa2YYUbjNQ>na=nqnx zzasJCk+XRRQ#tiS57zG4l3rnZYxBYR_$vtWXTn>Bx&VB~T_1GWp;h#7>X%}bdW}rW z;_u&I_4UskPyKpeZlOIEzEG65%rsZvpY~R&W+*m`H{{C7Nx{rbf^sNKBcJLVWC9sTzf`JKYZRI@5DiA+uCdwHb@hCWN7-bc) z@(cpV0xCa182@{_yTsuaeohEWgn4jcX}d~ow&i0&+3iZt*X&Vem4@N4vCq-;Hae4a zf1Pr4N!}FkPLu-ESbn*JcT9o#d3$B4`NyYMBJr?kYLbb~W+}!yVnkL|-*T=P`j#uU z7npG2^!oj{JiH>B35ZE7^UEQO^>K;l_0XGXkyC*r3Jj%lcL^nA$%GAcPou5V2j8a{F4>(r518K7Mm5K zS!cU95cK-}ans~rB6Fe_tqzyOVH9ZbUm;Q;yx`9Sdi)bd@Kg4tlnkkWH-}K{f)InV z(i&g0#F+Ygh%(B4?-*BOY2>|xC!IVg@gF-GadGh6+}yX4`Fvqej-Wqxv3HFmie-m? zZXH)NL&jxDIJ>Si9_m}`DEHlW2B2pU=z&8$i0@i(cbqSv(asP&u|-LG-ld-39!>}M z0Wx#o_v1p$rV#00UQmhn4Cp1UF_qX@lXPxr58 zGl1xlg5Ii!s)FKccU<--2n>KABAC(gJ4| zo@8dUf&ykf-`DR%_L~TOC9;T#DP#m)ZEmy)f78EmIqzY_;df42`TFK<&lKRE5yWjh ziHRC-cAyVjgMjuYq)`x97WjZbLfUk})rimHd?P<@A>xxcV9(c{6+xen2{CrhHVJ?=skeAbyh3um75WoTnqqq+1^$a zq)(oco>I%IcF%mSL5b=<^5}J{?dzx6{l7YwW$Dv3zPjD~#h2aaQ`dJ(8KPuW0lT@7 z8tZgD2FYrbn}=L&b%+NHZnuB+PXN{vA8u`a7l0cs0-%fe^?-mm5xfH-DJcmJd%-?7 zHnx2n9)GUY&QBJ7WHrFerfS=kygit>63FA(T%ITXoHqt&^TI^{F){DJQylTmxK3>x zPa(v+zT7&*H5bC!B^Ack^M#K!do&^+aU>Bk=-^_$%O|T$K>`ZE*X``>4b*8xsSwEj zC`ce8W(FPeBy=lw^(3N}&Wuf&XR)q-B}>-ZoW8m-YfcI6?8H}Ao)d25=F)V&l+xCw zz{9In?EDF>KuKP5(_Bd-zdZ(y%}`Ns3<#xPcQXf{4vBbqAxleNfVzA`h;)`iLTqeE z;Qg_;$7Wy5W`Fj@%nTU>Budbmg=K(`%LtwujUAzqM^7}1z6tBH=qpK+Gng2_%FTjU zw*e2}S-#Zn-1|$g3Hi;j39uoo(HvTsy`b1Xa5DLS=yJSx1h}E;H_l4p1XlAYhKGNj z&~9-C4+4oR5-mDc+aS=Q$^Ug4kIy?Kp~gr|K_LNv&YcQPV)M%^=m!6hwn@9Q-iksV zFaGY{mRb#CWqqKapacQ`APuty{sQu0a77^@U^B+wsDnw6`F%wP>Up9}VWovZ$*lw6 z0Oi14+kTQ1MCrs|_|?CffAcq>t! zmIJ|>7Z+|B4few)cjhcB0dsmC9)+Ti?zxx8R`D40+1%Yfe&91+uD2tHA=pL7;o}wp zX}GQ~Gg-{Li@#v{`uALMO)hqKCyOEQSX>24q~1&4GzcgO^g6wq)+yvqT-IecD#k{t zR#<dd6^+Lt}s#HB72bN{h2ShiWQov^lI5HXD%$!=0G)h*2B&+0?v-v~k1ZB_qnd zQ1~%%Ymoe7A+MB*v zRneRJ+3$bYuoSU#(Mw8ffMN7?&Pshaep6TodLtt0#$V$|6El>vq(fA{0t6onv=~Pr z%}g0B$N(y*JF1+IY!2q7JrZchC*?&g%*GQFAMa^WLjF^kOhL8)10jc)1gYbBs;)8F zn{lvaRDl-SM5$xg9~Ss@aX1RXgkP=23-;*H(cAw-EMVVN*Hu}g^yI}OZF%ej5zJ%X zmmd6)0P8bng74L`3a>MsfU~$%i6KFT68JrVxG0#95E$2uNxSe@%I$q!&sWjUS6f7Z z&9*0juUSTE(CovojLcngrSAd3Y}v7e)E?j6$z^1n5OZ)q zb8wVGA^K0k-G#Ige~YbExrwX2sF$EEiE!*gZHy49WI4Wjq0SBaLnOL_*u8H30PPy& zt^1LJ)fyvt1z&DpFA()@Yu7*%5#1_2O9mtB&qjY++S*mavfspUyYiRPUjGOlJ0nBGfaN-aU_QF$tzVU=Xixt!q`o-c z1LUOVRV07}CMGV9PFMTWLqdXLV&X1y78#b5RIgiI)W86jn%ZiSBA7%?b>XS}q?zP6 z%oH6CX-yi{hVN!__NWloJP>&?z8i856EI2wo5*0wsssUmXnq&0a0YJULkf*~^# z|GtQ z4o!*1eDXp`PBjm5!j^4cKx@QwcH>)fr}~cw#5ni+KSG$ix6D4-e|~PzOz=LjtLx!K zM-!hT=T(yO4}+7|CBr*?{2A8tbfQUilVH~LcEkASerLasbY*Cnzvf$lh6Eil>5tvH z+dR(;gkQEW?D;%|@;g_rw+@Z26XXIP;}K54f%-7P=#K?1_btRO|(+~@&jTJ#P$PaMOfM$xne zT{)WbF^!9=u;MpAC;e2%v3w7zMlUWd-ZHa9nUEj&0fTiye&fd8IER|M8SJ>SNYkx@ zlKKl;F2>|)PuhrdOP(#28WCkeS9c*>JmU!FiZ|~&@n2Ag3kGV)N1UP z)G@qC#_Q*+(>EYgRZY#EB(7TlU@{5?`ALn+ilATP&i8H32(0ln!kfF4itd-N0RBn1 zhCVUF-5y$iy93g^fq9T2a@A-X%f%7WJVy&W+O1B}opOGk7pjFbWOvx5$LOix7gJ;` zeQEfOsp&qI(RnI!+jAv;_OF(!Q48vfTe}sVP^~7?*(QI8oyF|>n>Wp_7|hFh607Cp z3<%9hiR8&Zy3A@pv|#4E&o9$yCRap8WFKu@xYXF8yolj%l1#h1tXQk?{gR{y zXhnIq=ZIK5UJP>QfJ7D{AvO z!*uyx;Ax}qztHd0%6efS1^fQS)gYyuB>}v9IjrN1vkD4Nbf=^n@$gay}b#e8Vw zJE(g=tS6oZGu`!_i3yXtnOrY*S-lNJKGv0sH^k&}LoXt(c722n8*HuhGg@6f7qhZh zEg2V}Ag8bM1P){i5V_wS`8D5li%BD}EF-{BO=BRPvvmVl(w8f*r&p#Y6O;N^#g`<3II*r>RM^Mc<R@A-e$K=k2ce-ZMgupR@;+A zy5(%Pmx|sbyTyuv)qp470?RMtXQUW8c^EYfPMiI4pzl4;=)`NAo(&lGO4>+WSEfJ# z!_}1(HKSI`_Hu1b;D9RqK*`Y!Pyeo5L1iuC=x~e20WQMD#l;o%RRQN_M4IEHPm7FHUmq zkJ=YBJQW-_Dt%=1YTi^YujP>cR#}k zi+WGl_$xhGqa3iyb@oE7994>Il~?7jZNL4ASX}ur=(FPgcBWw#ZMIsFANUI5S}4?s z%1+-q)*e#U^pGSX6TXK}EMRK3&w+i~FAk;A%NaO_z@OgN8wC@ysRl9CZ(fLyc(Hdu zARfYVd70AtWeGy^y1z}G7?7~yan);A0}!9|^Gt>s*#Gu`48`h4k3v6n@v8myu}qON}LyXpxZH+Py$yFmDuqmK9F1 z{W0Un`-x`Z{cY$G-@JFaW2b1X0^1siI(lm>L4ssa({h83AinR^`5B}LZ?@P$Ks^{x}#0G5k z0l)Ikn>OPP4y<|ADh>t)RUlPvvTD$(oKdT&4)b-^Kr&8)= zVCI`t6(Ob0#Hhzk?~EtHGTV>9u(|4L*?*v9;w-%5qlPgKWASM+o_q`9j_jI zDfR34;>$yqy0ok158eIh^|dWf+0eBM3ly96WcB~?^v=;*e#@Bl~E)_>DjHeA-~)aD2=jn18p9fz0aV>e^VW$P>Y&$9vRAR>XnfRLMD=q zJA^e9!GM186H@oLBja5=9-D zYH_kOKklp#K3s3}ozGv7<4=wg9^tWMB5ch_vEm7RjxF%Mpxy!vWm;R92 z=`Z2Y5fw2@nPEdj$J(a_W|{aTiX5uMsJxk|KvBabole_-sXkmTXZ}jf#+gzj@~UCi ze`^5ZMkNd#H8U&&r`7=zu{=sU4ZBYgpl#4L$${8BFBAw6Gf-I`ZCr_tO|XIEd7t&RGgI(z+hG+PIyaiF17N1X8$ zJW4L7FtuAjBJ?kfk_>Ao?%>x%1d6yTAM$a6cSAjt5NI)fs~~OpNE|hFTzPRiY_j9h zKSez@ow71AajWquN#p5G8jH4ukl#8*Ug$;PSl`IV>~xV!tFor}@H92O%Bb`bhFjYD zJ1kL&fK}6yTjqerz05FFwK5Laq=N6>i?_|4g%%nPn&1_n>W%XZX-!oKddaGD zLC;)Ge!*@=Gul2DreH)i8pVrh)1s0ulJh?~Jw@%EoZ^pENcMJizR@Z<{XI*O8vQ+a zmM_!(IOps^v|vHzedf+?Jd{*zWhMz2FyYLttnQ+RW9g{*>0$uFdlrvxV9yTMqPo$d zii%1`Hg~gtcE`#|4l7CMXk$!Lm8uG0l=SY`TRh%UvYaSat93`R7Mgv6S5#z;NwD?< zP!C&=0|h_0e?MNH?sduO@SY4{YfM7)K2vDz0yWbnp99S^t3Al-puOZkZA>*}W)qX1 ze4p=l7|Z*tuc>v9?&~-1DtH^4m5ASQ4?+f#&yA41SgcoS=2R5P7rK&2{b2_XHiOaN zTG$KcA}~R#hh(m6n$(AW@=&K>WA^p*{7L-wU%&T1q{-z5X9l+i5-?B!lOg4DJb)Ood$(C^&0)a_`$6=+Bx={N8MY!lxwSgj;7g~*>n`|&Kq0Yb}OWTG> zLyLr;^9q}+v9b=v!|P-%&nluwTc_Jcr-}*l#7a^uI`V#=07*i(*{(`dOe{XqHQD>0 zc*(~H{_bc0Yh1z4q#VC?AK4ZUYJSbQIFxVO-^c-rGs+S_zr4}9K(!7+k52ZJ zl3o|W88PQ+tg-;RU7gkN)8?FrW*Sx>afSTq;JYGeA~BH%ma3XM{H!HxS&NvO(SS!Y zSf~l{#Tt0rxB}yPSz&g#I-G+Tm+0^hE>EnvpbqyN=;5f%q$1K-YPEM#1w1sFJ84%6 z+H6z-2@R;5v%SDkM9H+AQ__U&`1pRVhIW3Zr>B4G!}!2jT^z;jqHF=rZ6hRZ0(>RQ zbBIjqS5(ETYZbDNTxq2_QZ9&430xSYG?WpHknr$*i?f;86T}-Caq%6GI8YBW-P4p? z3~j3-KtNeMZhQQcz27SFc;Ds2 zi>V!RPHh|F6Jui)L`KR3MfJ!rM@Io>j<(NnDN8Rt-_ke7dZ3s*r4aG3XaDv28&6F^ zVRso#$B5;y%woQXTMrLHGkE{}>HA~j!2Dn934Dis4b?4l`c0vLHUX2o;^JarZW>6h zXcy6Yt9~Yj?dCpXHqYOuLF`%F^M;@(FHY}n{~mfCa}z57i#Sy&e;`3M8KKo8lV4g|SVI%DnRkut zCZomc<3EDuS6-vcdX|I}9qRu(3&7!Ygo(!Q9(Xv9w*Ty)pUP;Bett#)hUe)nf9>?I zw#p%4klTX_VI@N-D1lMpzu*d8*8B5i1XovAZ=G*02U?AmU}>OoN@XPxTz3twe{QAp zRcOYChJx-2{WG|Qj)BAejS<5AfLn`kv0Kv_B2y+$iYpoZ2IGbfsA{gUhlfOW*40(R zexcAVtRW|8e1HZsFcdke-o}FX@g}zae8WO12#|QXzIZ|Ai-(Q+{&JYYhIt?g^7E5@ zJ`;z!#4%wSGa50X2E!Kuq0d{MAIRiGM69gAGuxQeJ!DUhu^s%*;7YeqI^eEDE z-T{9;-oCg-{EnxZi|MLoiu5yPsx?({Jp%)S=iiGW729i&0JpEVOa^z`>v!eG z0%pDM3-tM?ZO{YuRnPR51Yu^SZYO$rbJ=e4A->TK{_h%N()OV(1@+EcP}7fVKI`Xp zLLWU35I`^==zKFgW~2UE{ngLmihtkdyG~T&>w6Q456#*Z zhO}toEq+#>cccuZ<#3fRsSYE(T>z36Cz#(ytwvTGm1;e&s9GUzn2*e9XQ)$kdv`pq z5zL1QgGREqRCzDhuv~4nGZ6YdWt!VZ6uQ}7-P6Ml;pb=2K|)IlIyKek@eY0G4;=9j z^Y9=8aS!w5sl-l5!I+pB|CScxft-1P7(uqoQytFIG$0sffelWLP97Ut#BH5yOA1Ir@hSR)>tPc zjVj;C%%${1L4i|V4c%Z@kf%c1q9>whFIo_wcBrdU7(Lt5-d~jVa*d{LtlvI6kX>9T z=ajzK@`R;v=!lq$lQmg04t9EJPEdfh4~aPXMZh9nZp;o9$rOcz%L)+>r^mcs(BSt8 zKQXFSzGlj86U%}9^Cv|hpeO#V25epawRoRWaIvk?l%kbUt)6Th5#ANh?zCIS0%5nz zgGorBSO`pk9j<%e@6FTXs7(|F|H6KOLeS~=_VH;1pWrN2Jb7IijD`hE<5SmIj6<2W zgcq};DdWP0(CD^>XNIGyzYgC$>FP=O`i2ckE$Pqh{j+A_F3Bl#&!{^8YRWXY>Rznq z{|#fc^wL>h8&t`(77 zPIugDbsdVtuI~(bTb7zy_q_dKsk#Mk3)&3%z3HUoYf=F6wa_W_-b$2^Q*2 zG_fA!afsOI0ZlfGH@y&P7%bwTU0oX9@Go}V3LZ#wI#jK)x(c!V!T3$W`J#{Z_BDH? zYinm2YT;;86;9_7OO@C?>+62QjSVa-;+`-|u@A!AU6V8U!R&1=cY;rsy4Uv&#~c}> z*zor~8}()gR`U`gUON0hQT2r#_2S>ZRNnj)#zR;qC#NM|OCgvTLP8Lv`Ptdn?|}g@ z=yNys7HFao6u$?$-0WoD@0F15{*cr<75MpQ#kIMpq|hxen8|)`2mAvLNm@nl!bFJO zM^(C$K&a1RgMc!g9|UGmnfc}g;(XV{7w_{)sm3D!jd_OV@Vl?w0{>0`35yGNfWz-k z!C6{v2$yHj&2;OYav+fQFB@My^X}mL`O?JT!}$5G{wF&b+&khcS7_jrwAAv)bIUlE zG5JUM?{*(r6{@;cV3e2>-mQ z=pSu=_knjAdqu}Woa!v0!xc$1o%+nPq97slfg^*WA{iPPZ7+0C(I;cz#)Xw}(UywE z3IaAf5HqX!BI6^(5qyQD5Mixg@E^uNv)M(xSQ~&}mcxu!`Z*Uk`RJG3VpYP02)T$);GT5wa zk_m&NuZeeOw7->c?4BEK&WD~`yFkhv2ODBCV8POk>8@Nr?sY=z&8Gd)g6G3GfRku! zLQ;thfP@)WXXTBDnX+7EqW|iQTdEM7ksTI%=P;WMmh?6nttohzX7gk+z3hv5_F=v6zj?#tS{NwfyV<+2Q zKK%Nw^;?c|<3epmbXTRSf%CMUdM3=_cjQ<4fssq8nUP(4#(XiNkU$5>HutYU#?JpP z%mE<`W7Cr%i^CcmTq7)0+k`=N>h(45YiWb|~V4+Ib?3Op-2>PjbPXGyDUW@cKjcpC}^Ya+`_ zH3pfpEe@;c+%aa|Lcu}S_GRUQjW#pB3B&5kVD zhpt>|LW+cH1JUF{@*|tWA=!nuKZSjdPH!E+8EQ~f5uspUVfi;T6@cxqylNtgsvMLy z-{0fBKO24T>#Jilk>n^=Wed>rO^^|H{Fh`=DZ5D>yrvkPv%xhJ%#5E@c(Uq&lkz`&E(P+*dz#h-kbl$ zWH!~`6PBCE%8US-vhoWVrX$>H!-kPUmtc1R_nvhdoavwD~Od0 z|I#>_(XxGQM~(4Ejq!kay~!5YXs$qjX2qml{dql4k?f=?N0`%;>7-^ z47)^p!ET8{=1ObY$l6s;m6+=l<;=tL%Q4nP<|Byd)#M=G5W6)p~1`i+eciqDj%w1_Q&q z0j_ro4i~D($coVC1ai&$U%%Vv?i?xhk0zy$z!VJF4Y~D%-)~LOE;mMZSO5@?ch_eW zF6BxMAyfl+ffl>V%tB2tLVb(0T9q*hO7TQXR1~YzlU+vv?YS4&l6_zs8l zmlD?9i?9Fr#w_*584n=mCNzZ;5sNzW2g6fd;5z?>^Lb&AlPKtG7@uYQ-s!n%c6BIZ zzRimc3f_=MCXwrQB`|T#(F=Y()jxjT+SefEXak4u6UbBUR)6gN>rs39>2{{!)O3<& z_1mH@kXobV;G&x1%x`M6!~av=&D-1Y_&G6hM$eKVYZ2_4qh$bSD%ROESF9HZm zJ;Ke-_oEy6*R$i?{Qqzx@_iK0Cys3MA*-s6Js%*`E+MM!5zohyo#y0_7s%qGnsS`v zE0M!_e|6#kib`3v%zNiK8W`@dQSun&E&XrMRtAqO3H?wyd z2=g$T7sz!i01i9K;?;!L<~$oSrmQ+JG=w4{Q93g}Z}@;gOmd*2al+aa(G|A|wBFUV zv;thG6c;R16IEC+sSXO?p0<^7fLTRC0!|k}XP&o(Q2@S=_|7t!$1&AdG1&}{56+*r z=u9hr3TXQN{^Ez2^c$3h>kKR*(e6+Ow2KQtN)5!4T9(Q57Y6!K-ET zB7FjdHRl}2x-K`Sv{cGFO2%~dVuolDE^I%A>RGNF8+QnJ>%k5t&kGYx{NJxEf!AK_ zEc`(y=z1qPW^yvH_*Ii!7*wdX>hndG&zHY=Vjv3pq%9$L{fM6&9)BvF%QL0j^V?D7oAx(M zm+Ox-MD_N3sLyrWAh2#*nuhqy&`?4aR_1YEMU+2+Dy-P8tt_Mp+)U+phS0c~?~U|v zWHX*!q*BtP5_r5Gc|qsPjrON;KvzA{0}pp9bNp+Cvar8TS)S$U-U63u?}d=CjKfD8 zJvY|`fsEU?Dy&#;(9v;^9jBq8E=8>;#%OlW=Fl6_BZ~+h_|*TBGsHbR!x9uC7K%+L zPSg=25AcARa8GMWMGsx@c-P@LIXU20Q@g5U6*2rP{sYKc6yS+KCZY(4izF(jfGX_KO}fdko05lXSna)7y~(Lgo6gSuwsw}vMxP@C-DHjE76iOX@|*nC z6WXl|DFn#2AjZpnK|$8%<6&9S%=IiRHb^=w>6na?kTA>s!Co}3|C)OFw9a=fd5Epo zZNu--C-{Q|1pT4maZACNSV&-}GFXpIhUL`v-bI{5iSc@iZ)qn|2!#BvzdnoMT`%hd zEX&;0`RHWfu-TSCXXBgw&+qU}xUQIja`eH+vye5h3T%Rc3&6~$H!|+tnbg#}q_3YCZs6(N16N($ z7@#MFx}|-5uVj(g=D)W0!Ox9nYB|@JqjPjfKoJ!OBep(E`WshA` zBG6*0V48$Y`tMV zG8M}tE>^CF-M_6D$>TIxYZ{5j%%50e9!r@-&u%bnqcdgn>Fto3qzdo(Bs)-?J=C+T zhTGd~`TSzWY|A~zIu=Xquu?CEZ)-u@uwV5&Odnzh`ir#iq8~_XNwX@%7iE^@)iI?u*@%&`Qh0V z5;#h|v5JU@_>WIPTn=8-puDHWqt}+;*BijPYHkjHUT{z&D})7V$i zPtF1<^?pZ;#=jcgE@#6K}h+xBxU3^8SE*!;Uda#&n&)Hlc)f<-hr zIXBzcH|V{-W9C;)LRxDI_0QBnx)V3=Ss=-Dsfw?$2 z4jFtdEB6mfF-b)LU9Azgvm%mn_ey1jv9ZcVZ-g{-IhcVfrF66V=VuH~TU)BVv-plT zm6Q20U1~hLd5`A>jj37k)bp{UQQr&$_SDqr#a0Bwu0nCM$vBF;S8<;2m%H;t%EYBb z&mt>arB?V0EEY=iG+(qprDkeJ{6>)s^jfo==zI~SGA&a#hL- zq4YmZHu1BST13(^^{EPpqp&}3euaf9_kB%j7?Zf1tJeA8@hY1I{UNNyx>sNG6ED^K2maZ^_OGq60)Ga((}{ zFSbK8q6`mlK!6Ej+FsDNLp2l}T;^w16{L?&ue9rX>A{m(#u6>|e2lSLqqcX=iIJbR zK7YV+zZ0jWQnKs zd`cs)uW@iVVutYf?{7G$kb&H}2`j(W84|)MWLaEXNMw&mJ$yK{Nxf_+7C_U9$;beu zrA35=6Uq7K6yRTn5rsAEk&OT}k5iaVg}fg_LCAi4gTr*K`GM)t{kLvNYet{uyBb{V zzW`*E_n^sjFyywHS7u)o3n)1UKPnLOv@DFPODF4Z6}I+i%A2Hu<7 z`vX>?TK79Uuy>OhXuUhqj!MCB5gs=0DfRg-S6o!qGr@uy8;g~(G)0$+%>@-oHStHX zf6=Na=hOhFH4MJd%B**d3ubMNvjd!o+r1z`Xn&}5W}%>VN%7}cs?39@*SOga?eNH@ zWMv*1Y-~1~B$qlRM3e&Xu;ZgRbkR__Fk?p}3QmnwO!d&5DK-z|kmzc9mmv{I$eA6{ z`Mp8YlUd?eIrO{-y1&fMfIC84Q3FCPG7hKYZi;x(p5UsN?+c^uxP*%NazK<&1$aRW z%AvGF!Dk@A%l`d{WsGrlYQkJib@<)XbT5kUR8WT}*v!)0_)cC?G&Bk~{`$PyV8WbP zf0=jXW!gX#jziumyNliAvcWh>ivw1I!C%pl})XGl=kfTn1G{}_{Xhrp0Y zoS>OM<5nFBMUo%ya6kzf8c9L%C+D^VHaFZjv}xb zU$4of`VKmXkjsri2*h$N-~hV#knZCidR<~761D(}p3&2#0)=5FHL0-JF##Q2a_9B@ z>NtNuq&!&ww{v2ZwjbvG*`*&_q+X6(`g~0ztkOb&#C&t5JCQn`LYO%Q0SKccmyoG$04j&|TO_;n2vd->0toJ8_w z8Q>Bm?#3ZtV5N7I0-~ZC6D!ie!D3WtY%+Vgu@>{X2HU(m&R1C>RXWI=sZ4jSH;}(d z%8vGyXyHsFO6rssKP*W2#H{ISp1kPT@kWi1(USD8u6Jtz91muvC#n7v4$S*QG9k0+ z-8hV-*t!4Xzxm_&T5&$G@e$-2V5!WmTCC7u8o|(Lnm{>U#=fy?Ah1;#e0ZoY6h)TV zEo2o1fbiUMiL9aAZp!Q)tRwLPLt>U?Ex*oAQ~O{^9mq#!7{WKJG5?0;wKPrqdfE%5 z!e&rP+_N9Ra{k%;odS#KN{vM?Zi<>t^r^@ZDl_lz9&;7NTvxE8CUES$!eFz}k=l!w zhc)r=iAR$9!m-YU1IV4yi+P- zMr0E0;;Ohkd|uuFv33j^QJKKL(gBNsZAxIf z3rf36jyLp>5O+i!gNY;x(+P7UV75>S2^>CRA9p^MSPvPRgiuB(@6?FOn#OJ-MV+^E zbd3vpf2h+GT%YXq0r`$R&!B&A z1}9uKahEOw&cmh3<=T(cHA# zOK7h{NiHmQ)c}Acji1WKBkUPysVgt$4E$ambfwkAJmASXX0NzNP@IddTAYovkt zSzgEfS2xK$&0o@%?cSwrRL`<{q>Zc>NnP&=MISN8|{d@=a zLdyaCdtr_rRu#yt`iv&3X7}D{>h?|5u3<9OR;89EhqHL~f};e8Oklpq-9cvVsiCE1 zYeVfxGTb7j%*J`Svz6Xe89K(|1HTSPn*kmdcvE7{;jF8W)nn<9*y6B4yLyt z{<~Nnf4y!eVSTRv+Sax=EbQ#e#>C`kU{l!_8K+b{r$LU-t+VQyD5|$k@uQ2^O^TY1 zkqHE`a^=>kdhEV^%^s|!BGyG}_+Em4qo-BhAd#q6A;#D~} z3b?0f3qBeqh)*=egJ{=3;1<5YweWO;Z@0Tq(MkY3vx*dU5$b8B-2vFx;@)X>@?ZIL z9lt-`chEeu?-WKS{qh~b?{s+%PRDS(FSi2U;;j-52n$uz)cS7ri`1JYzDXsA^#Yg{ zS=q9Qf7PH&5tOuq1k)n}p?kP86&2=YXf`v>v=SaFe;+1*@;zEu0?O*~Tzu@2D!Bwz zR61$9uJ@(He4Vhj_htWPnRie$jW-z1|ErjGfCJA?P!FZodx;WmW=(v^(g;g5*aJ6dPU7!xn(Xh|w+*w=s(_^{@TfN;7 z69`mjR>{&cN=Qld14x}($5SL{-;bYh!SIPLZ8!L`mzw}ROqPI%$iHq33;~~apxgHg zuFwo&_gc|wQn6feP>wnA8rS@HkU- zQzta(BK=Q+C>4fYR+#}Fq^BMkM8359*?nGPdMWMAF2(ljG9_)T+XlG`@!2<{G_H^Q z))7N6`CT^uICU{(;|_i4om5>codFTN3?8DaL!V z31>BF_~b%#bzfBMPE(e!1&NSXLc zm?i6<)0q2whCK%?N*~cKBgw?c;xtI zs4k6-pVPXQPHe(r{|cI{c?d9Qv?*_SA>V(%L1F>5@Sleg3jgaMprA}>@UQU)mz?>d zXbZnk$87v}0*NCbgVazCe)Yxl&$ZN%GPfGfFC9@2=A5vMJ=m>z9F;>HbxcuIP^%>J za>)pny|7tiIj2r_4ULh%#rc^kMZtL#@#wpn&n9O&6{&8x0@E%x1oHTR%YGuJrf*K8 zxhCzfxR82(!zDbgV1wiN4A~d(grjZX?Aw19aeBHz1~z&y`DD66^uK|j=Mi3wOj~I) zo-^|S;&2#18G=qlPwQ}21_lVB_m@xIZvOqy1I%6q?=izQwUVYT+oFKBi-0(wtFgv& z3vS|b16>LlgZ;QF-RR{a9b@TO!$Jk}<$rM-^5Ssfe@%5D@G383)XMlF0ETByJZXrg zI%uydTut}K@yd)1SC;=!FPXa9vEitX+@vhsukBa zBN{&DT1ox4%-ELq0$e0Tm#r|<&P_w083B6M!R`<}l&}BW_AiU&HI}6%=SGjsA!^_o z2>9SZxgNV8Cg>^m_5uZ5wQh3f5eb0GO~YEPVUXEpsl!Wa8QxhymBMM)4@^)#L>k5W zfl0tB1D5`@W^~N>OE>yQtzB`lyuxTANud1yLL#mTz{}R3V-||V$CMRG48Sz3+Q7@? zx_E4ccFo`94A$O^U^8!cjwap&$WpkU#GJ7{z=(dq_Fw6k5-3jB#mw-+SJvciCXZY) z{lJ$_Awrgu*u?i?#U0ZL-n()|wx4g5BJ7&g9D2?_m;URD6V;R*F`T?TN=AQ!$7MuE z^X45f|8K}p>n$|!xeFn5KG$9DlUk zWB&nGrvBbuzewluv5EAx-~e9n_J(+ zM1>T94$%GwmT~I(09npv6>!dTNGy4rP=PTvM)AGhx??}sR>_sLd%?{06XNc`8tA#I z^<(*Z{cY5;98H?ACodS4>qDkEm*6ovvo&2~`{_cH<^Vw!bQ&V33|e`*6DR^d1b!+m zt$Ns68u2-+#Dga%t6;ipOSi@zF1);C(DF6|iFL+VAw9tVPX0o-&4^6CQcFS{XaeK= z|6>X2v0}Ip%c+%xMbLa%*bo=l^oBEpqk`1 zY@aa#&>Fv9i(xKqU2of**Kv@KSiwhMDAW;b(uMsGZ1-_TpIQ27^^BaY@j!$+oyn>p zz~yWsP0}-AZqSebABqSZqzw`a!7RTECa%bN>_Rm~Zd@KD)d;0If1aOOo2k8tK^jLJ)sRMvD-T;7s|Dj>G;X}j1`T*$+|2BTB_X`t{&Tu$i zq6JcRKmMi*m3v`A(A(Ml(Bi7axSlDY(_}3{0DAcIiJUPI1gbjKOf)EAOMD%8X>3*+ zwyCG-G>2qV{5z+op)=2#V2)IHg_Po^LwgUH119HtQZ-HDh316jXNZy6MH~J8Uz>v^ zAaVsJI$FU-ha1=_?4uCbJ}AJXcrOo*PwxWps6nF>`t5%FkEbGst{5~#&Jt@F%hwl6FfR2QWjQI2CA0Q0sAMuR|ItrgJ3ZSbv zfdcz!T<#9XL+Ii720lto%+s+m?$n&J(20q6j~khEwm|ap5XItd0Qc(cnV6c22{^qV zZcQ6(*3p83g04-6L;<$xOpAk2sWxEJ3{gY6n^aa6612ps4uHRp?XRg}$l&wE18Nr= zHMszvdei;=nUPMnBLv8-+(x6ty#oLZeo0B_SVv+q5<6brY4>3SiPP7S$wcnHUbs#G zc+xXHjo@~862#_TNjvs-${y*Q|h*s7&x>xt&O5Cbf(y zTI}>D<@F^cQWh|^wMAw4J*>g&Ya5wAylynU1i}gqk8=^W?zRydOZZqZ2Gon6SN3;$ z(N^jTg#vd@W{ccEH#(#p^77$U>WfL6Y|eYnPBdVn@cxDD?5vsGQrPXDFLPaJto;1t z)@1UK*lpA9);x4Lekm?KLsNe?4A6d_?Zs5ZZh$oZVkVDUIw75GvozizEi81M$#hBF z`9^C!gq52UTZqczpSk&Bw!&NBFS~1n9pQ2bj!}E20`MTJ7LR(o$A4CR_p3#c zfQV_x`g%I5b6N_Glu;odvp$H!xdhbTpGH#DbG$Wxg1ilRX(6bAONiw3WkTShE4mT;a!3Y5|zB*jV@u_IY5dg@11(yEv~k|bv`V<(doX7N@a#%thSO`C_f%sJC!G7 zU~x9Wy_N;kB?yS9Cdwy!0Oz+C=(?|bo6;{RMiA-`Le{|D5BDoQHRJH{hV*$hpb!+Q zgt?)xBO(?`U0eqB1$679qgfN>|0d3;eb+ZOw0|PcLw0{{L992s3980|r1kKNc|UFb zT++Y|(rlEpO>Tcv3yH=LTP%mz&GrSa^P?!dWh?&qS#Ji+YM+Es7}-&djs_o24q3Ar zpQM&94b+=2iLJNZ5zCcYe?}+MTRHG#b94SMHO*$+Oqd9EPXu#0lQ!IXA$-Sb^IC3~ z$3>OE;he*OLAy5@svy?ZW=YYORQV1MujziB1JdmA)ROsvpPP&Gl@G$`d2DBou) z%D_`CK&Utam$j8ubdb6Z9tisR&dK&MFVp*m~Fgo0-=Hs*n5j){=tMgoyg0rtTzugSj@NHTmq1gGjn;^ z5qEq(AMT;Z^qz>|ra<=uc85J-m?cj3{s_#YlUX5zhx79KSC%ojs3<_~B8FdYrp2$Z z8s?&kjf!N_9~6|rY6TA<0sGl&0V1h;yZKHru+fIKW5b@X?1c?>{qGmn8VD(QKP)O2 z6+2WoT@J1(cTBxLoY%WP>Ho_HLylMF@TkKET$r!rth{d*QsCJ)z4dViNvw9y*SkQx zC_9yW5Y@q94Xm6}4Ir??@9vtWuwRk#zB2^Dr4-gT6{Cv(?-!3=hdpv>-( z1$9~6t5BI-zrS&rHIzynPi_9hwHbw#HfgX*?gKBmE$)yEEn_5Ngf9D4F+?_2NJZLe zkC@VtjAb9<9f7UpU)J%jw|7=tZuF0>sAFxLqLR|h)3)zE@civi(u2(fH=R+Yz4f1w z>H-f_%NODDxFtE)*B%OlL61pF;;XC_g`tHcSA+W-oDR$aAY5G;9S^loC$QLk!1cPp zQBD7ypZ}1P%Y>d!7B)94hEFrZz^kICeSBCH1%PCQr*QznR5{Mh!UD?3h??8Wlxmd9 z?PT9*>df0|y{^vD_((=HDO%2kva8yTX9?5g@E55h^Y+hNv-)bgN}v_1`~F-@dvS4g zd)iuPgi1#^-BDeg%W`+B#B7?eXsS;)S#B*1|I@twyrNXy>@1arN+t-<^QMmj0ME{0|CMnCMszT>hd2K zMU*)t#gw=976W;l_B~FwtFAw9C;gIn_bp*0d;o*3;EXz7DI zpcH_+5@KJY?XJR#?Dq7t1C|xY4GgwH^!5f-%u{qtAtN!ZPyj?0(`r6UkGrGf?D^oLNTqnz7r8=o?R#;BccuVYd^l^X${W2&7gcvj6g7 zvD=<6hH7yjj@#GnzzE98ao3f#i4H?@3$t2OG#Ua%DRAh~w|qX@$!@X|fAt&TL(s^sWE7-0g^Hp3 zdm0k*a@29(bj-N+uC~7B)uph7N@YYMzoHs`Y4t_v2xmCjn9Wk$0MBZe*5s2A@z1-Sz>~teqMTyXk3G(b3m2$VnDeILGtV%)i)p|dUSKf zEe|m5U6CHJ|PK zuB&T$vQUb4wzO!Je|3aY>|#X?h*77();Qp0C>$IJq+rq%J@o}f8S2n4O;QK%zciR|bOq(`KAJgl#;uc`Q^+3`*i%1HRz zi9)X*tBLDx%j>nge3up0s?mLxZ%)7jsSEKxyqLP!J128T)z0;9{{+LY!H9M5fCS_O z2Y|yQ;NIehiBX6iyX?0FEx`cfo9(alsirbUvoG(T9d-rMlj-lSl%RA(1aUKQI^1)$ z5a*gjiO0%Y|JT9>+{=MnI;?UlT!cO;uC|yo^qD=Yk>oeS^udSU+mkNDPI{Tmy&NEh z@N}RTGcMAW-N6z@Hg9=tw^6!REc2cLerewlH`ZC%9wHrRrSOR*$=zmenbOvqn_bW5 zdxx|Nw78ubXrrZxpw=%js)0r;&5D4cz;-v*8qY>X*Q+Hn;$zM0yLtVgW-{4~83F4G zq$<5-V+%OSP2Vrfof$%%jjl?+-*5No!#csmAMXpbHtD=kxbwY3kwGo)3fNwcC-t*{ zjuvFWBC#74oO z-`W9M?Sa$GUrK-r1`9y_?L8;>KHF2>{VA;Xk^|{@hzml867e`a`_JT<@}J4^NO@6P zppjW=_TpAIg17ejcE+a+9mClP(>>nbPEH zC&R)v)engBdiZ?0r3%L3Tu@JpgWCES(_qh!z{;=pK)x^SVXip#lnS}>AOGoPGJm=4 zt#fYYbk3__SPrAb8|8Qb$Hs6({!mB4zD%`XKXZaFUncrl{tg502Bw z6jnkRBOXsTrq%4SO6GNTaau9&#-blHH9~D|MM3p@_)>>}Vql##Cf;v_?eU$?F0Y+6 zH4zprAs`kSm}=+6mH@|2g!pQ0FJ|OI>_>MaB=K%&a8x(rg8?SC_KsuvTcOrLpr(-D z*w|977r2sL-koC7sJ_(7D=X+Q``y+qi;b~T6waRizU?sSh~h7j=bk7 zdC9pT-p^vP^>IbINYCk%d#7K2pejHA`i%YF;D`;0hj84c%HWELREzGLS+u1$b<>;T z!2^>EjeVq^IKP8gTYiNz@EK33=vIN+_{EOkqLQ?~t{Xlx@hB{SNQEM2BHC-Rji=t| z1^xMp6%(d;1RjP>X4p?E|C*-4HPj_om;v;5O#FS~+UKL)xa%wHHEsF#Y%#>hH>$Ca z%VjS=nd_(8P<3B(&C=V-HDdgZAXWqh6WPvD+L}M-RXbP zsO5)V2&j`4#?(6-VCV)9k7>TafeH@Jdd_)uV&1bx$Trim)0eBsk~2Z0wszYN;Qe9- z*9j5FCTI}vXSF1$DJlJ6i~oC}Iq#rk=CGk?7yOBc2;y|tH(x+C5P~QoY1t+N~Z@;70%&9lhw!%b40d06GGfeI6Zn#>uzz&=d;p9=d}Z&M&3Sb3J5dm zDOI*%k68T8>fdasghStXH2sB?Q+alraGT<8QSrYvguE(=F&NNw*Yt49OKkDjBz4y% zk{Qp>&d<*Sz!VO%p=f_9lR~=b6e(bg=U*jBs&8I9Vjm^=@?1GL&$#;UOslOj_Y!_wrdMU+3G*OOmwVvZlTc;n@f4NT(bvy}^VP713v(3VR12B~sW(l~^ zP0uUEV;-eVJTD7gZD~%VEFYb5aFj^RDQ7cL9^9=rFY6Df0UkExe4;`y1(0J_RJ0hS zGJcWL78OTRxKxM%ieH$$y`{hueA?jPKu8kY40MG(jq$<(5|ws|Heu(#f34X$}D z<=9qZJzorpM>7fQEf$v-Zmjl!PTl)LI{-w$5yV@+I6q&nsWkz)@OPt)7>~zmZ#Jnn zalihTyOfm6aQQ-><3{oi_{oTQ*y`|bn9;aAP~fhFloV63*Gd4lcJp~808?W{3Fi34 zLoag?nGY!^ToB*Cwua+sX?i6vYxU6l|pJsr#v0&a$?@QpS% zjNraj5;#~XA!lb!%O`4HUO!W_BT^n7h>8j|u5=q2Vkm)OwEAX{q`5f*8~arx8-^ni z3QBm~oL_qf?P$HU?DWv_Oa(B_LjZ{_W$Wc-&N3yqjym zy>&%tCP~QY#;eZi1FIMRBTf&soe$Z(-n?F6t@Umt$C#h(KG-~HBeAfYUq7yn2!1Y) zY}<|ExIP%NMCPi^20UO78QrR2J79^#Xwn2x% z`nHhm-*@tuh~>|`!TP~RX=O!jZ$Gn#y(Xc&^;z*1U&-xgvAKly@={z6z@V0hkN^v-Bn%{r#H6<}mBm#_QeQtVp%@R{CNQ+d4ddig35%>=NB5$= zv^^*SV`cSy)A$yjOMhr#0kyO=GXjL608_;Qf(Oxvfvc1e8TRG9Yc?Lzn`;sqMSXnl z*u6bM&}=gQj!g6hkwk3}n40PvCOjd(a9;tW7I6f=vW4BTIOZd>2{r!il7@;Swm3Lb z8JVY**3eq)z8SdFS+dHtw?hV+F2k;3t-Sfv4PLPRzRnE=n4r1WuGFs7Tg33>eh|i` z`Y0Grgt~p3l}(ho2u(l&j```q#pDxJv9M))xY%?GE5ZkQLtdBeU+jBP>BFwHcec#~ z{&w4fWPU-=neNFYf}P|1aq2^=#6d?7`SYvJ1>ppMV8E^WC$%mWi&xC$37#yT%;p?O z@YVq(3=&t&fs+-C!U%J%u!s&~O5Lz+L1iEdL`6{q1cYUd6;au4Qp&Gsnr*ssFkbWR zKg@J3ZB{iLs@oIeY3SMATYuKpdNwDvvX^Z6cXxLSk=kwi*vML6TMIm{Q^~X$XR_O9 zXLX1&_FuBL{wE7JX+d6lK8-UO*vYeY+5msPIwLF#a#lDnEKGcBYgn*wt`1+VnOUgI zW0aL`UZ_aIy!)y3;~X}@LlT^aN9*~1iC?qckeQAB7rCH;fTD&$C>;8u;rTKl@V!t^ z4`gM%T>$QujZJq68uf>fi+g(=)6a7zS5U$|7?@IBrGwzkKhR+n#&tT?YLyhe-Ol!< zI~~nwBdOHB$He_53Y6K5R!)THY>{kIuaP;T=Lt!sR`KH>wu(%l7C#8UzS(;6kIE8& zdp;gN;XdBLEO1iy#8ol)^4$~_XY0%B-^bCxcQ&WHQ8@|<47@!ve%||r$cP_l7%Me8 z*z7rz+uKAy-?Q-#6Y6>QOnG^ETa1ka8K4m(2Nx?>HsfMEM?vU_FBk-pJ!VuqO3cv8 zlv0>G-go`(`}_^iD1^fhahZYIe2ZK)!P(vago`wV2iQV=3lVV&|D#65E%*Q30{UXr zOyK1N%-D`dQFuN6idkFJ;X6GH06$JbIt>89FD=GYU=-jj;K(@zjCWzBk>pP0cWSIFfkkSLK2=z+)R>u|4!K9HLYA;U5Ig{*ICT!MKv_blr_PO*=$}Um&I<+!p#Vq z1|F&?9xqgr5}2ya>603gaq~};2^c)$y`WSuxBKqzeUJU7j@+vYb52fWX|3717daT)=+7$g#>dCwla~mV zAYhO&rVbE*2YyamI*61qveeWOS6QD-g^h%-S{c47e_fDwZm;WMqrpfLE!Ea#>U@~&~m*Vup zhED>7Ga$j>20#UZfW~i}W=tF42DZ1q9}F-jgmiRlT~&WZBQo52s;WxTpi^ASOXoxL zBqbEgb{Dk*9n<1W?Osb@4%-nu$x)_h-Gux;)+`R$oZA5g2qt6a&Rsfg=fxA+5l)Yi+rE}Gz?$s;qehVr|0^r z@3Zi9UkwhNRGAWvf|~l^V#H^y@qohr)h6wW^SI&0U$%DtKcvpi&WD}Y_qumPP?=Gb z*k}a_Bth1RfelW0__JfvY}KGZoKntCLphM`Dg7o+cY->YR8|{ac)#IJCf}tH)55#U&QID)dfBsv8fqjzd-=fkb+>0m}+vyaw9sOx*RxVijBYw zJ~2=$Jy>?cc(QTxOjA5i0i5$#Lh76UVi6P1<+kyt*5L5@JR&w5!Fugku_XiinBdjB z1>xKgIy#bpCoO$d5nfzM$3AJ^&C_}OzwdUy#*b;vP+z<9&CH(Pw`mhC=5>9~xa{NF z!&2QoZelGTCiM}I+5uLL;%I7Xi;yfKB5PIHCkqfbTqX&;L{-()gn5q?v(IH9QVVS# z2QU=i5=#BW-GIQCp z+{o}a%gH8_P(f(WA)S;K+DkN-tAX&#jf7$!fe6pRGO#Yqtq)ypHC2lX&cHx71p71?Fb zsP&BBUmiBut7uh91Ccw5MZ7%`+;-0^ z`Tk0)seSeNYJCtwI?DZLxnxs+@g60!*2v5ZO4;*Ze_seeaiaeeC^X=zDFQxpK)M

Qv&$k5EyaJckL6EO3PqsJd`K#S|E5YXkNiVL@J}SvU8%|6!_xFy zD;TiD_<>DY#(K*S3J~rd6eD9zRH*(?iCiYT(G{A;{8c3&rsacu@zTuSF#^Qt_7*yJ zHyI)V5&WZ+z$zOGCWBrYHyFzqCFMnW&it>`Zdq+g4NeD!d;uRAbq0N@nQtpqX}iZ% zeMU#S*HK=0A{k29bR07PRHb3ZslM1>HJQcd*K#P(e?w7M`Spd$$Fn&w&){E3gjxw{ zGc#jQBPgb@1w&6C!$bV$casI%)jHk9S_1^o*V*4_HYLP^Ujwzgut2+-T)LY$)}&bq zjs~R4zL5TiCL8XDmyodj#;%&uDqT})VP6~Ti{vKuCtYgfKlC!7FpM!)rc?$cr)+{V z4Lxn^(b}XL#FUP-A5qKDX_k(X(32tqH7bdGUS!QQ+)QKyt#F~lB){%|C4PnWa=f+c zzS<1iC_?aU+>FOqI7{*|QN5D#<=@wkC3J;%5!|E2~KMK0wREj3xN}b54M_6a($~?apPb z(Twnp#y480tv25@k48>M?CSR&3Kp|ItlLBM>1K!ZPMUO*yy0B#4sboT-fVZOkj(^? z=(RQn{N4}mueWz|1wK!I(7aw=c!sw0ctnHDQRWRZi=Cjpu8+*_^yx!!{3H{X%I7O8 z?7TDE%eiOcIqx4IkI=aS0LSFVjK2LfP!v~EO1eN}AQ0=N&n$^=2k^3DphZ%++NCdl z88P~BWO>e`DptBni1hJRG!R+8H{g^|=j)6kG3b6HZkCFYIMDC*1hWcsKksloL*sk{ z%0w(;i*{DzM%r=w0$@I#k1T9A+Y??{euN~|i4rFRvpT-uM?Ds?;HCkhLtWO!_5C1R zwS^hG8WjzV6rI15PpEGkn_NfNZq493yI2f}j$cR9WYZF$(Sz5l@f`O{Yi-r0GT_3D9W zIZ?>LEYH=~e-11-A*3?=4i^rY6;?~38Xn(a zbGf6Sn&QXdv_)ZM{V}B^>wnhu<-JYjqL!31R|vMh>G$W(C?>J z+;G#@xIm=_izIlV&83OG^aBF}oAU0epMdng$s@yBpO}>NU6;KjY?kN%?T3HG-vmS1L5_2P3jQ~Mtk@cT{jJ_Hg5a=%#f=0f-En|xw|m8v%BwLQxg2A zuUg_IH;?6cSlidj9m&<1HOk2d7dzMtTfOLRp#^s1tw)vHYkeTASMs$;a2J2Icc7|l zq*M@D@d2=>BcF^+E}acy09K=3RNd#pa7tM{Q`e#$;j(2Y&ncW3g&p z7-C0UubK7-D>Pcb9?u98X_L*l0QB`O!_yq#}$B_z>esj)V_REr%s^F4~vu zqFV*MSTQW-!uB>C{G!a+H2%_GY~e@b=TmI<5r@?1MJrthIfU0-AH z`J|3ZC>sM~gG($?OAX?9jwCP5{44@S8BAw6rJk0L*3`=F-TcLo9AbA55_;_?6DFwl z1KZo{D%{Q3GxU(a0LHL?OHX<4&bYP&^L+VgR`8$NxQcE?#9DrrBY26n{PmFrqG+sVm2A8M)m;`LX66Zwv|;Y1L&6A?|F)v zo4{x&`^L?U3jw|647t-i(Vsv*;ON8xID_C9ms}iQ-Pvz%Z*TTP*Lcy0awic(O^^T1 zjO6ex)Hg4W^ar`muc%2DNrX+OM-1%^2|K!Tipa|Yr}1S&vl0kDKey$IqR6#1Ant3? zu)t^sh+Sg~4^II@o0qZEa<=^?^j-5Jg4&2xwY9ULO7`PLchgZ>PqUdyU7|vVP;3cK z=yAoB_$c%0)Pn!MVhihwH8B&)N-#GAZB-12t8J-KJB2BYcYm8wYEpq|fhs7N`PVra1!Fqad1$2VSyE~`F$kF=&Yed zL%9R8OzBDcYakJ0+*VQM>F4EkMTH+ z<9I!OV4*bTyM>~sXZrqn3r+TSbZ8qJAZjl>Iu!`!ZksF#BG2~v?(A~+J+q?XcYON=Y0uZWSN$2(d)rVwpl3!#hzz8l+Fs?yDw&$<8%}(m*P4@e56Hbhvn8cH z4FxA67ybdQ|2+jTK68UFxzUaTeqWpsPtXuZM+J za&EuLola}lQ*S!)`OWjXUfG!<%!ZtT-*{{ zTxSDEya4?=nH-E274}x^dnli(MP`C>=O^8du^Zmu>vR@*pwIwQG@Pe@W(G0_AK#@% zMt0hmS=NuwFY}ASTxWe7*X}JL0piWa>%&4<8l-NA!@vl0UOYJro?T=ywZZx3dn86R?JbmyERqtZDd8xxlN(Zuig>gd$LHK}@Ox zBEFi|FYa7!#$b>1j_7K$Po30og|4A(7*`0#yQL`S^7ey!|1h~3x#+;*@xr5;&L+nM zWwJuZq}7R?B;@V-r#X4}g%4*eX(q;2q&K)!K*U$C#XZb$9EN#itd^}+jqH|638L!5D!2fFcV84bYl_9UQmi<8v?k|i->RQ* zeo%4!pf4MElb;+P4~~ri9<$Go+{>#}9R(UxihNkO&5ncNUPk`k`RYfxDw(AVJw6^3 zROb!CEI0irWS-^71f-4njDWXZQPmWx z?Su&3!v-|>NM)x8fq%oe`ugg&%frG>QdM9{O6IKhO-t!dqjh-o*oEDGcT}6;2uL|! zvar52+dyiAEG#WGHI>3}7@N=e4M}Rby`{B}B2=9uH_(Vbq3|mZKERu<=FRl$%z`bSjOf9#X9*yJJO}}@1&$b)RtxY^? zA>CRg1)IU^sX(Kz+qNt!l0FGR5zf6+<72(F>waeQRM zVE53bJU2I&LA%+A)X2@vy}MFnTU=^AKGKwDfG)8lTH4CV$tfi@ZX%J>TD;Zn^y~U= z?$7lvg8-)uG8jlmA)@>lqtohefGOW3JR$jwQ$FFpEtxu~Pyz-CZ&kJP#k<&Z8rZr# zGd{|``TIU7WWRWztk&p+1GoZ~rbXg$BTh|@o2@XGr9IYnnuaa7T!&MzDfoQ zR;AhPv4^=jjO<7XC~+}GyQ%HU=I4JjqGR5kXY z%)K_D76mV8y|u5aBPTZ6PPySvrS4<-UO6}1Qr;#vv*hTT-ZVrpllhCT=(7QCqh`~HrGTGb4L(PpkdE!=#l~@%#6T=YR zoJDb_H*BMC&z%b`1cZ4@d+xYEn8&?A^Xo8-QTwgRAkkCRjb7K%&ksMA7XC)NhC`#F z3c7YA=iJvfNb~?|;5c81LV=ariFa?F;0EZw4aO2O=i zc@o6W*BvI;vqto~Yp-_j(0HXo5 zq(iMGNhze6E8WMOGAvIkeABOQcVRUT6P)=&7itW>&tzic>iVN)W`rlN*ko8B9a)#C zXZOsE2m=H1#c@$GN&or25Csv@)c(?k+i4$?3o{I{*kmj==(c0@Vt;)Za{$`dK{7dm zKRY`|tM*y2W7G@#r9d>Co8bOyWJJWS!1T}Pz(=Dpl;*y^zIM_s9yUHDDozGyNc`21 zswQ;ox{Jh&3@xLSFeH33@hZiIx_amDp?K$Bj^)&^G;6@`*K`qTjLD9{&lod0e=~`o zAbU>#yZ{)saKVAZzRiRjMiJvE9*tJ(Mih6Zt}v=cpwpTCiz#aIkaEdy527r?2~WW{ z))Qp!mYCt4F+69x+gmZs=PVd#54e%JrmMmf8G_YIy6$k@lHlka1e5mf!!8vEziPe? zgAxSOEle-do}AM5PT(uglz(v(QAsR{dfA>@mV}h{Cu`^{^>$QHsj4}*)2W+l2sw8SE&?Lk<&|?H-ID8XHw9`xrAH z#aYSYx}u{IsHeVoRkxprHmcg#2%fWyomI!I|{govjAXOo&q>GwKKBnqu4u=

T1>?I^~O!AVyO*a};qiNT@;XGJxc0qTL^WB<54Cx*OQeh~VtN!sCmcnu)&;tn% zj)&(k&nLrW&-NSa6?=K;CO0Jg5Wm0gTSS~p{^msGa=`M2`1dwB7$1*XTwFRhPLfe& zZG?tIOiawgG<5`ojmj;shB+EIqa_@r7*0{ynMA{;R%`?;_pfEcutZie6TkE%0Ym_z zxXi+TwTlG~Fi2qwuWz__z0EF{!tnePdnn? zVM+p&t2b(|7Tg1jzZilJ7D_ctcJGxk1!52$2YhoE_GRY&bT@%34hF6eMj{K@jGWD8 zJIlCKVMxii<@rvZAQzd0SMv(lC6z>xDd5wW%;K~InrFYw3#%;d*3R;@PX8G=P?%E` zH&3MtV>m_3G#0<+9*1SQ$t-us4I9@aw5L;*kA?jR8g;DB8|F&+`EKq3Ht>vTN9lDW ze&0MY3X_sFkdQ^~@75!|C^Syb4~NoY;c8YCN0;wgDRcd89#-(mWl$sU*<}>^XoR|A zNU?2xt=dEpr|h;;M7|cDllYZ@`f4^<`aR=R@KDE>b&tNHz-`RSlZY4l^VNj2(3p|p z0_TjHO_TxO^otB@Nd%CXA6#ir-1BJZoAqZyDYn$=j>@a!(!F%}!K#Np!pi5L*v$TQ zU3IYJYd%?GX{%ycDW%X=v3w3s5FZhT+^b%ZB!nqDj>MG<-f&_`!0+Fc+-{ZVy|4BZ zv$=!=&_!XBP`$mxCTEL#+>ZIoiHXAyT#eVH%P9)rZ+~h^MgO(?@z$trBWqEXRtl}2 z$)dQp*ojG&4Q*}xjPV_7`fBpk*6u+V29_>fwWVOvr0A78>v5#*im|_e$Y5V-P8vRF z9>v@+^cREexd6KG=zfK)nVX1#0kJ9K{CY&=WL2W%AO6`qL6lor)z%~>faz!xnxL5S zp}v|Lkf6+OSEFlbb-X{^iNO83^c}AI*9+$O9ZS6n&hh&uVpSW5xJwzA<&x@!SAHuW z!TSdpEGHwKs^vdcD^ZmqS@u@B`1upB0^h+K?s3#9uCDz6^fyB_jqW;uBYb>Q@`iD; zrDs#5Np+k}gj2*G9>SY{hi4?Bi-6CenZKo3X!Nq)Xo%%sbj6y7kt|Cuw8wU&9R8;v z{0P|m<}CnQPKG)(0!*Ps5-oX zD^i4)B1F?@}P$_SFc;X9sh+ zP>w}fC^RJ{5+<+|5L*7wr?D}s5Q6c{v}<~BVJH#*IVl+#rmJE;=ydzX!%&R`$wN;9 zj-VeF)r`*1uLiOzu=oE=(Nb$PBV&mJ!qD{uMB8({VxANz(1b-rA&U7H?&-x@gvk4w z`RQxqNRQ-|JTZe#@(v!`pN7TgRIl1%hx5Ym$e0y$`I(d;4sY_8fAgk3J00^g5S=h* zl#2gT3r)PlUzHJ7kELT0{Fa0vF80UKiB(|L)+QJ;sXL=FXZ+|U?a_XL+q;Em%tt>L z7KWK)HyQ)&rRUl-w^3bf)XdH<2E@QWOo{iyQ7f}|xSPes$gUkFZSFIa_!sloiyQrq zfm*vAlG8KJW{-a`c}SX2NDuoh zj;pk5;jjFcuClM!`0PzPvDCevh8xEYlf!qvuBMz`U#PgXF9x!e=nai&a+RgHAyFwv zr1IM#(a>Dei4aaOIFw7 z1+q%y?0@EQpL7u8TdY$4RF#(pVwo&X@iH;hPCk1=HrF@(r@XY#Mm@J*dt!dwMkx=; zmpWUu@#Vb6Wy=-E>8wZRf;z7fCL1O(j zyWOx~>aw6(AHWSCSM0)utHlMF5w$AL94IxqfpIGgIir59ekNC3V-O!LAO@3+;h@@ zI4{4VUW`+BDC)3vALN^o1K}J1@rcXM@LW>Sl|HY{fz3O zf~)Vuc+?IL9pSuLrafVnT)|I}on4i~rF~*lSQpLBSY%yBi3;52Px}R_vnb}>`-)F3 zOe=#sekhKSG@Xy9ph9@fjSmUikm&dNR>Tu^gDe9>Gz113V_a^QdMh;hbOhFXZe-rP zEb;95??v2WwQ09m8`&LK+F<;*1R-E*eQCLJ`r;G@Dj8iIFGgv^hSO6D$xUI=P$?8? zf|{Fs=VPOjMRPsZQN<-CVGcRUAUyv|_2Cug>k(DNHVbt*kBps2>*$qhh{LIxGthK) zM_sIXx&Q^|P6>UykWF{a2|0S)bwKJmTL&i#AbeCNHK%u}nnxm9D`)|?IfzSJaVMfg zR@MUW5!r-2CwQX=DMQ~+Y;Lb5cvq(J-G4dt7Y-V-L~n@Ajy>KqtM=7EO)Vb*kU|aX z@mnb?kj(+fN%qlDjaS>c*$QwX zMS3MISoE`l{;3M!4R73MRNef;MliBuNx+piAfs8V#bG2Rl@f{%Bnk461}_Yr{r^Kb z(Eh7bxuMpTQ3H4(np;{rLO1xz06WeYFww7lX)h84f3K!<$8tsLz8D9Ei1R>PnM146;Y9HPWi|tQQrbKxrF~D zBi+i%N)2n7tNttuF=A+K5I#}wee$l)bu~W2c?-}r1z~7nLOzkkWo&9XY$v$Y^z<#e z>#3mI($F#g=MD<`uP!@~B1$mC`SPS35U z2C+0WD9{GhG*flSo=4WW<0g2+hjiNPV-Gim%%r?n*q4Jky=#+OqBYo9 z5)`PQq3(AAA-d?d|_2HW!kyqwuq86I$VFI~Tax;(&NPl7~WWuM0R_ zo7wVfnRc47(UVl4U!stpI)19j7j=0o?e3z^rgXN8?XGkDzmb2tr%RR=F`*=~xHd_J z{qOdS36bjvo`%ErAqh85xdwAkky@QTMw@!DjFcBpYECSOY_>hANvnfVXKsQHj;BbU ztK$^a8-zmC9avQ4>A}t0r3l2)<7_B$gIBO!B`|VkM0VtBg<=ux?2XJ*X(VO7k#j_E zG1oh^l##^H8V5JYwJeZ@yz*xeUr=HXceXa2^M7q=agF1Cn5Xinsv&sX7D5PGL8huDy$bfAJdfIGckOFMFyixx4s)5fhKZ@|2Yv0W%f?5`I*Q9%d<2dwY3MD@$&7h;X%id*nOEnyE}^ zkBj5PM}*t6w6cu1pu?y9wZ!k~n1wssGPN{|55yFNhUaQo7#j<( zRE0Gy|0xk62sdpMxqHnZ?RRUtXcXlOkREl?vG#hLcFj#qF31tRR1iMG$Nk{U+ zw|f+J#}fjCVZ;-$c{n&y7NlsQ*h5p@jb9!&)DXipNt5d=`d_aMOy-X9FV->VKzWGq zM#+g}K0Av`cj?O6v$-u?(>lq4@;Ua>nu`k)#yfeAzOR?o+238lvTkLFViSc<_!7R> zn~Wjr_W6gkd}kUUwGmU}Abx)hH+eWu$=@N7qh*qgTWqev#PtLGi^C()V+%d64aUXL zD99t39P}Lz@ke_kd?~`l#$=W!)kyfOEOqiY)ip&?3kj49g(E8QX;w>AY>%(MM6D|$ z_{l3*An7jjPY==zri~2ahr30;qN($`-;Z{LGKajQsckwz?Ol2bSSZeO)NU06_M z+_WuH1$V5%Dl;~U0y)E|2%WAfZ8>-^w=bxzn$_LDu$7XOX(C^Fd(dpRhT@|wrF4c6 z5fKp;jZ7U{PEJmE6h#lsw$AqOvkLnJm-Z%F=RN;O&7n zix(y0xI8>GGze>Ji3IXS$VQEw1M{T8(Hi5YmrFos%L;;Smo{-0XGOb$z;4hX9KD=nMpiaL|E!xSdE`ZGZZ?|Axqe{K@Y^&_&; z6La!Ha*u;f8}z|M5-PimJN8m3VPLMlIg2`vTj$RP6BM?%Z6^ZW*4zb}t-6^k4b~zr z>O17@{)^wA-$H?2TVySCyLH{MvOJ>T(qlMtp*K|~IftuD%f&;Cq#<=2+{iMVn`SDlLr#pFpEX+w`4lW3KD|-D|L=zt_Dwk49h%tjX_WJN= zjP{d#C871G80rXMJBk5@vw7e~^j}h0Rgz*~Fm&I&QUA;qEi=U4#%7A6`$ry4*%_!FeE&&Z{inZqoD7xBhgP&P4jO!X#8pFDpMvBP_%!1 zzL|_NNtk%hJ|8CKoNoT(K3|sJT~~c5EKCG2$Kg2qFBqlr{L`ls+iie>D{5~@fvt!x zU)Oy)9lJuOtq6zLow`V=(;$iZs((DeXYbg(Ntd7zD?M|xac8f=*~9T;qMd?Z(JEt2~X_~BlQD^z{cRz2sXY%8KfMs<>eM4|*9w{pW?~CHNe~JaA~>{c z6-|F+w>FNO&TWO&JTta?g|HO0mq=-3oF386b*7m7bTtx9U0;c>MTNlLLrY5w2Nb9n z6^(Cis?y*=(rEpjnyNBQm9@$|7Pb)@M;Eb?M?*tHMOEw_q(;A`Q!N!;+204PNm*S6 zr{kDpc&DU2;dyyojh<*yOp0n}dKR!T)~>F~r%7YAbTqcQ(>>Rm0IXe{swh3NIn>^i zPcJVZi|i?fT649q?0cvFT#j6bhxa|7*4_D_Rz!5*xm?rpY81b2Utl#;S;?PidHGqg zakZWjo!r_wkVcUBzAQCwY;(O5(;E77Hu@VB=k zn(PT<5+Dq6Nsd)grGbBBl^2Y%Dl)^WmF{XvN?;Q(n+5^^OmVl}bA^d40ahEd1Fkd< zy6~3@;O1$Qs8X-VFDapPdj-l%3KVvN+TYr*{TJWc|7yg=h{TwaHzO5~nwgqHDo4b~ z;_o?$*+_T!kc!T?Tj9^|X*bILa&mVcedT}MJ5PF|Y`3&teYa45wtR-=L}Sb)qM)rN z5&1*V`Rytww}Bj-EK5VNX`k$u#7+K4HRi9%?&RbgK)jk?W2&E?bghNOC26L|l1m^f z3I~O<(rb{aC@93;InS?u(WV#a!^d+RXZFNa#rkn1`M+BLSc|S4d6DhSM&6y%?)9&= zW;2PJ5K+mKgRB$;r{hgYU#m}%}k(X4utsa|jY6X$+=fG6sc~eNLvaZ(A z%xYk{6mot2l1NCDClJ#g0yEiwuVd!?^w=tFYfGRJll;)kjtL39dbBv{-{IXt`bXyX z)!g|7eq8~uQ|0(oFl_?SBfUgMh&nTC1`&hOG$rM#rYII{v}CBNA>@TL zU6VpYB|PKMpUO#?1v@hI?HwHx>!2zJBcq^AKBQra)xE`!0VYQ`x4r#a-ObI-J?ur< z#bv?yz>-ff+&%G2L1g#%80-@jC2A6i z5sxtJDP)Rf3ZIm55FoBz?DWB0^65)u0##`tty#&Y^%1qTOl>$xvwNhXKUWRwZ8JWT z7HqY+h)q=vkHOWkN@9*dAjJ3}QCBG?QWG(Ak?Nq_T23)CiJv28?|GS(F@0?yi8}o} zqs{h?blxW$x+PhbAZ~;ZT7om7qCB`UF`7{T`o4@ObM~ zMqAM)rKH4WY3QhzK|DEamk=}}#tLB4&%wr%c2{H6#W=+y%t!5P_5m!zbk!=uVZk;( zQQqEtF&8ld3=G=CHV+(E}PM+bN-^LP=@m@YjJ&M>H69-Zc}D zV*s5aF{bw=7>hlr+7I{YKZOZ?!SBEBuI8?pZmSqHw(&c@JYLF|W|FUfPW)4c+@2j`^}`8s49$!Rlq5<9u1y z{yjc30gk)Khn&dlRc6T;&UVN1V7e{u#UCcn3s&ETe4sRi@$%0n-)iZ&zNO`8eSz(V z1Q6(s6O#B-B9kU$Gk2=L8U(Zbn4%1XjSv;`Bus|FYTLbA zzN)ykq!*O&p<gvu%_DU}Y)`ssT>t=97;7xTq$7f`3_f#T9Aj6&TguQssj zfGI=mO)M?5aV68bMP9(k)h6-Sm0f z@nrtXjh}b(asE0-#BWM`QI^Q3MGglC$32uhhsB~mA@|U@WR#PGsQlw->wCoUTw<_o zd~O5}ZY0_!<6w`|$24xY7y0L=_WBl0{|>gjKxkt;YCKtCDZJR2xs3JVps{xMCSbH` z@9J`~Xo?RKzInXd2*E-Js#x-Lbf>v~$jAum6NwJ9vNnm)&{5-kEqf6B88Yiz0JYGJ z#I{#JYrx(Txe9BADf?cC;;CEs+#=mQ(mi3SIr1ruOErg$YsbD79*9V_pO*KCj*pMP zsyfWr@2^7Pz~X?LK{kI+*$ev1bt4H+N?R)$hPYSi-2+53NlZd!>&})dl7_z&5*F{H zRX%z*H^C1*_X-*=w6|CqK9lQKf5hVn+^+}zCfC?|=NxH+XlVe6iHPv25S7>YUSXgo zDxIue7eHp{6n!i8{U^N`6%`*oD#Q#U@iO6DAZwD##M=2hdJjr$RG3o-#KYaABPbv~ zINwuxQU|nlvC45B-q4XzkZY&#OLTNxD8mgJ_f+P~^!yqV#;OfEH;N^LQd2*+g;@@=sFeI*O0KxEEq zzL6KeX*y>D>q8V^GOAW!q*k585swcCphnZ3>+LE&+oaQ0wdIz^!>lG>( z5N$**8rgz3e)@cQV)=GIM31w1D_)ls9u@gqB-2N7unt$P-9Yg9))V<~R4=mo*5RVr z-3q*Gx3m**Bnr|XF=cW+(hA71!NTNY4O3jK&PjtmH7$Hlp}Ex z6O_1W5%B}U(2%qvZs*Iw2ct1J6V!S6K-TVby@j4D1_Xju{#HUN+Qpg>Oed!&{%c`* zJlJNa%+cXq%(}iBUxNvMOM7dix2H?!sc!QJD@MGM>}|NtkW6Cg3?T~n^AQBF z=jX(XQ%m1gp%pN8D&+74&(6qC#*|tmjoGR`HWu?w1VJN>Lx{{p7w2P%jW?Ow;3KQ4 zok3^6y$#;{sk5l}ejtJtq(uVG2==Ab`t-lPl?sOxNxuKKd=*$Nn?X!2arpd}`*d(P zF?c3TNn8~X!L`=?k4_4@N`qde&wntJ!v~ z&QAu>r5XdHkx;eg(`l6X=@|;wk^H3)(R2@ET4=&gEa<+uG`zMm=B96P4|hu@Q$`$Zx@P_9II{ab z!3uXYQzndT(o`(X`v`y4*^X!!Fb+HP)s8X?)+Hi5{?(4_`*;JZXxO-s-g!_|n@F2q zUXmY+_-peOy8~a)PBX->i)&mw#B<~JNt+>Eka*j}Bfn@W&(b=;KtysiqC<;-$BjGe zAL34f$)~eEo_56N^NqrK&8)&?gC~gyk{sGB1ea+X^2y#8YaKrR8*IYV%!vke*&wz za4DEb))Xq3my(7P21{c*~lF zhYpGqhr31oY2jk{Q3sY<04biJ($)FX3Rd^?`N+c8_dxZIy%wFtY5wo%LRb$8!e zb21{YJQ#$$!#s0jm2jIKdt(*6*&ux1o=%rusPAoFn{?;5y*Q3z^n6g|I?*qbF3@#YqB`hpt{RObbKq>5aNuqHb7`+~wwmb{s?w+qvI`NfZ+kCY z4GR6O3wnK)^yS<`v9vaqSy9tgSn6<*kv9gs}taSK)+n9d+JnM_u)+*fbJ+OlY zO7jqTqN}O}=9f3%&`0aN*>FFTFp&-X|KXO(Wg#-xA(JS$OB0>y77_7x8jXTzWy8=h zv&c{ ztBli`90)mGh=Y%82FV-JNDsF2gRWi!>lbbv?J`*ZN7Fe**A=a8G-zyFjcubrqsG>W zZ8uKiq;b;NZW`NZY}>YNeY^L5_kTw^#?Hw;YrXID%sI>bgOZz(U<9`Kvd14Nxℑ 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

EF64EGL0+LeF4bmW;?~V2N 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

cm|cXk#C;01;;*FNn_D&jmBr0-`$St?TX3v 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

pbDoVE+?dEnI>INAqp`s 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 z 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 z z_Rcs20v}=U+>hd-CwgwN_{e=+utF_^YXa>8(zTUd^lAD07FR~%4p%G(q0A0V`YJ{x zVRe_9D_{cU*cJJv?t_$<`iot;+6frh#cNVNA6)9SBu%n5!sy+amSWAIov4qxpTgD? z&4_@^`~7TZ)&2(WiG07E)g6+2jM0yV2Dv?c&6V`2Wl>bzayxY{U#deVyFBy-NyJLc z%4fe$PLL@D1I(8m#~fqMYR}srgC15pEAJizMjN;KPHLFghyb#$up;t$pR{}axaqWcjYw`FZj3eO;7bqMzr zyzWFIP%V?t@9i3?wD~>L;HHl`fuq-Pf#C2IMYJ>irHtI}f#yNr1qDhBco#Z(q6HPh z!Ca?E06cd=eEHKZHPzj9!qd5 zGaMRdJe&3@SP}D%n~K90hn(0O)8P1F1*0RZOWl7})&B3x{PgH7St$e%)p7R(b_&Zi$oL2H+uE{YpH9BngnKb524vlevpxb%DQf$8IS z#R8-ujBeE&rujYxaS%O;p$h;@44&ODP8N;;tQ8&~JbwVxoOCTxf__rAP(rA;k!|~X z42cOBCZyrJpO?srue@3{!)ik%3$lSroc@OqjateBk} zk!|gsy+5WuuEUw%fP`YzJ5;7Oa>zqJ_bx})0We*cz*Pul^Iv*7mKNtd8PCHJ&Qlfv ztR=NTx+F`&6rtoR*S0oSPuGMf8?RNDSS!zXd9BI8xasKf$c2+uOz+1lnkOjxLR(Xm zeHL+HN^9j5W48mErrvn>4U;Y)Gc>>b{fkfZ^m$r!QX zf%$F4+uv_Bvmk;7l1c)fU-?@!N=(!}GADHs+M`DHLN8=YUPm@k?7nhuz0fcN;o$P2A+Z^&MlMc?-m$~JT!(2V z(b=z=w1&PN1JtYI*%0@;>>Sq(#3lF6t~q?{wtCSIUx*jx*QVFJ`jnJSP8(ruXla0+ zl<7=!+~A`tz=x+jMFL+Qke}Uf-oCOcmqc!dFkYvHBGHd-Kvd-?SaVh&ZHUeG3&}$T?mWf5rL*vuioSI)|!0 zAjKwQ0mo+_$zodamRl1~2Od^E>e-Ur-^pCQgFRk9KFwYeh1(2i_?%QwvsUj^WkIy7(B*AOw z9y5+>s7bH#wys*_`+H5yucq-}L|bfLic#$KK6v}5v}x@Y(N+|0qI`b4QC?AWDoJcY zU+eG_#Lr*8^aFXy{{!)mNUd(pL->oYwKrP@%!Kuk*CqTDRhG#x&{JsG1keC?8eN_c zljzf@8OAjA*NqMn-`-TM%M@DfKhZYcJeCDVbv^OL{jFP1rc3$Egp6M--`HZ@c%8ec z$56Q#S&$N)l>8B%t-%Fn^*-`@zg1IO6%Y7x(=$y|3!G}Stg`aK>w74-K){<1Kf(sd zeFLsYy&ag ztcaqJ*P+|u>@dak++5#4zqq-q9d}vK7v+hTM}5skkM;Gsp%9egI4eU0r-}gJa_Zr* zx|tD-1X#1En*aza8pjen=MgK#=iT}{oCv69%2t30j)g4p>da2;KF8X6*7YTsi)L$1 zD8YErvz5*%_$Rvdrfa5PrLLHfx82K`Of6Eg_wkL1d⁣OsJactr$wPAdH^tWjbf^ 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

bpVtYg;6a6-M|edWb0ZRA|piQ)7jwE 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

7F23$s1G2O~M<)QJ$(YHE| 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 delta 262875 zcmYJ4Wk8i-v$dtWyGu#wlHN2Z4T7W~-QDrf-QC?FAl=>FozmT1-}e2^dCy{c2;Sdv00Vf zh^)-VLm^o6!6$^r(U+#n|AajIY!?9&ehhCEj)!Ta!yV57C8;`q=RnZH&Z+R1S*Y*x zy`ql7p#PMff@AEvJ}&Ed+rYV3QG(P)D}jS*s{hXF^*+X8Ex|!KS4Ii7_3qHOM39>t zz-RbanQg!DQ6`DqlFyY9&1@byhDt&;QVkO?Xwqs8eRB;xrbm+e{mBu!;k!Twz9yt6yvxMVFAP0?{wm zN;=e(OQ6nfb+jFhvGo=BoiCBlO-60UK;**Hk%;SGd6Lb!snX`a%2?Zo^13P4TE1lz z$3S-?dxKASDnpI8p6Cmzry#v&wJZ^FS(I@`4gJ{$q3wt$!GV>H_wKDjUOmLZ@}+Rn zbGdz2j3GQox5B-NPsz|Xa79r<|9#uY-eJJECzQkG+o#a|mFH)*Eg%f6w@9M{$Je+fvvaVn>f#44^?dg?mS#mzn#@!;E(6!DqC%K>0GOiF!5r#{A=lm3X-Es54-y3Am&Nh*|Ed>9C z!!)v!VSg!5k`mF*PC-WlQS=*w*2XpW%^2gNL=r}8%T4c}4KE)c#qU~(?$C)rrUDofb2q_JEJm>HQQ^mNYH zSAs*Ie7t|X>ehJK@Z@9&2%a5=s;_BJ&8m`R;<_Dd=>?|!bP6hH=Ux6nxb;vTd6BY0 zl6C8p^i2V_qSdz;sP$;de{~ElJf4}4u#7zMRT^F24J#<}&CW0OUb%MDWn{>D55&Vo zwdh<(^nX}tTLl@$ggyCmU&YAUSUDNXb&u0o{?KI3#Ek)E3sPp!l+nxz2w>bl?hgvO zBI3ZnknaN(Nz6X!Q1pk#e&eHjC+jdl+I+6$6q%797A@BSWbUlA?3Ojh=UdSP&mE6! z%DWcnD1@ZlT^t)Lt5EN63I(R{a8nB1`dc%n#Hcw!HIsspVsAW7#?<+1AbwjFN_cs# zo>663b*vo_nf5!0BJfW{WQdUS4iRy5j=Y5~tlZlcTr(5XU$0VRMe2?G$wz&|@0@o` zi=D$`P)j94pYuVA(g*~Xwk%au2IoIW@uscMHa=~PzLDKZa5-tQd}6-aVX5dTzD&Lt zN&Pwkp)5($3;X0Fu*3S8wDLmv_r<1Tp{czx<}w z)21ysyGQes!^~v4F)BScA~i4`kabRHFhaMo9cyC<&Wh`uI0GCN^hbm3 zV^Ob%LoswEyHLEOaO&WKMno3=9sA!OJb)4J@kv zo2E5|+24=F?k=Drcjw}k7SX<8L}{T{=v!C-C3`6!0a-Fa#8&0wU@7JMo~!{Gk5ZaN z>+I^>T4VAnDJ6<)=Nz=jVF|@FH_j(hB`9dJAEiNOrDkblwYaGq7P{q2oQE8==b4GB84DE91Rxl8RXA_?5I# zK~`$%ZvEZX7S|vr#{+-Z+DwUueZdxk&|L2i7VC`(c@z~vMO`v#B!)71TNBV+l30ut zj+Vy;qnuT(Iq70#w+^Bmfw(qYb6w7UM7bfq1-*#ou+1g7u;9n$4<7R^3ScsFuUrYS}ICA6+Q9@66d2{!k2=8y3uBY!J?P+Ab>+u;v5rNr^4^e}EA zOIQ*r#|Q0DC`(lr=lVd5nb4nWM6l-EP&>wWR7ZM*h<4vV=gA?zQ31Taag^1EIHI<~ zbm5=tlF1VX#&%5g^F~b2b_((Su9uhy1_d8+LE6f&x0>E@d?w-fpyq5T+F4-#rS(Me zA(J<7yUa^i&kFVJL6;3nOh{t!H<2SEGTTx|y)mDZpB(i%_8p^6@QNf__wpLj(ALTR z!PLy;FyUpF&*Jr~S}@S+3`Z@4kJj!Luq~P$pOoWG2 z{+souy7&9Iixof7dM>wfW_}Y@Ph@QuPB0}gbsIc6nABM!1+BGgIsE++zV3Q1{1s zGx6QZ+h2J@q_AOLb$Qyus^O+s|n|>YZ zJ&%^cg9ffJ;&-Vfv?2>XNN{C{

P&+iB>ks|Yg_<3QEk z{Gcuo(w$72hY%B1!7h%}Fcanck;kGJ6`^VPeL`L;@T=pdF?WX*{k`a{J{$!=>L@jEIomv%8gK>@DuT8FNc~_<;UFT1;4FN^(#D@G*RQ z%mTKle+ear3@Tbvy^m|-w{qTOedUpgDQVvBf}%AbwAa{|sb9*SYD6fU;MXwou_5BO;WGv7y#!DY z!Vw)SPphYy1u8Z3X)u#MzfN3t>ABTec2MmDzu3Bb0L6A*kByqu{DxyW9HB#X=@UX9 z5bQ__!Rt(VWFK*@uBGsSH|=#`)Yo|?AS48e&m zX!S*EvbHkTWnJwv)>d)*$AxgIW+H8!ir;*M)cCDIaXyR_O>>`azppsnPP~&Yh=Rf_ zj~x&o5^;Kxw7)M}WUiKPxeCw8%?Nm0&#!t_D-p6>t-@P1=uT#_7<5vuPCGKbw>upS?fx}xnLg9c6q}~K? zn39qm0n;qPVk~Z4LO`fR^%+;8va7} zT+D`LK!ORsLYQ(xXAw4EmgL12m?2EByDQ?YI$;{OM)B}PAFj-Bh3J_05*6<6QGxOv zX1ehH@PJuC1|Q^`3yC~dXY=fW&E@4r&~B^`Lfunsb52AcJZydK+P$wjdbMAy-+aQ- z9}x+BK}zO3=pJ9eU!n_`G$cZDsL%93k+H-a|% z&<{4vd^gsuLV4WJsK_by`*`PSRP!;Ik$;KcZENP~iDC;ii^xVG{1unM|EE4fWxT)F zvq-wip$-zavyh{komtT$!-FtpdY3CS!=`H;qVEz=sMOwZ>S`PDuES3O`{p<=t?shnscqAj>LbC( zigq-%u_BJ&&moRi_Ps@_-p^6eLt)S5zn@w3XXI*$1ownA!ps04Z%}px_$6+do2wne znfa(>i666}>N{3a`DR?x+xG5YA7tbzBiz%Yj=r9E5CtV}WbBP^m71fvl5sy4WyQ3* zuo_c6A1I2+dnFZNb?5}o&Y3ql3Djyji=mQr!CYMk`zdZ7k6b@4RN6;aJah`fAI}8c z#}!El%c7_Xy#xNWj>i-NYTB4sQ1J-@Nf9@Un&_-9@Po*!e~)1%EH&}yXBu8YK2*Yz zGlU%=oM*qhmm?lQMpceLAz0=##N|{JbPF`b5i|tE335MDkGUz$#wFrc@@4Vg%Og*~ znvNWP&!UOaVR;?eeBhdCc3k-=SYiuju zIHffrMmhCom>fui0wy@^wlKXM2`Bhzj(B#VXiJLui~5AV3sB1sz@<6oY`|rKWWN!u z(a1g*T@jSrFIf9EJH56D91z$9|0NUw!5?r!*Cy}XqCaG(A?=+4-ZAEt`ZDHx>B(~# zJ1nOI+yK$v=dN|Bak}20aT+--K}*N7AKj3kk1!w+Q&X$7TN1MhCU_l+W9`8M86;i8 z_TDNcZp(_Tb1^b?-Cr`qJ7zSdTX%x@7U>pr1a&B)~_o?MYR#M zC#2`%`b_gCgaqNqE*pK#&il>stQaXMus`?$koCz7fz?V)qoB*RLOReP`8@TkeNMA! zIyn`}r$ofoLSVs<;!3i`ao18m$vMC2>Kbuy!asGke8u^8HvNH8g;Muy$9J|^>Wo}g zQ4zuF_e!3(B`oaEj_~rGk2{4$!W-R)iB_a8Hg{r%9nH}!)%7si35BIO5Sr)xELF84 zz*iM$EzPxoj!@lAi=e@y!S232|`=3pMg~TxSwlak;^H{?w$YOh>gT?7eF-lXqcM^YZoq& zImFkJ@^_(zg8X-LOg;UXgt6VkSu-KM)F6E{MkovcB*c`+r^p0*yhY_<3g)OOQKkGJM#gsBSpM3a(U+M^kRQ@x+W z11?%@VEqJBf_&47cUZfg?_!`DJq?6R?7ffJ;;?c`O9JA|)v|4)+NH5^{BQ zWdWct2vPd|>?RW}3}{GT&c_>lvJ7fYgRrJb>{sk^uLK!*ug}iSAFNy(W@hpu#nM5O zvyLjWZ_Y{ZqiAN8y>99>AT~}tm?3lQe$L3KIyx;p*fH|u%uAcYgqz6ZqGg5qiFPAm zYs!O&F9e2|TZ?{TU(${`S2WN9m(2zl=>3|9!%SZ@1>%Y^;Aa6c=vds>!ODa%VlLuo z1w{q#q&Z!HQD!?kUV@%5eF>l2kn=Lc*_3Dx-_(cH~0sDrx`h*K_0 z1!9aY>B6$x>|EdJ9qdds0}bM4od`CE*__tK`seMV;BqzYVC{NF%1O)~L2ED^9 zb$IiBaEKx9UDi3Ffu;VBc!P6cu3p3Xmv$qbSgM|>Vo9<>MJwoLx6gc>1W$X3jrJ!B z2@~2YP^mm$ShsjT6rQN-Xbi*b_D-T7q@_|ZauL?LVvqsE-ufM{klI+vg(&AR`b6%L zNQ;siqmbaD=wFKHsJWjcWc9j_A;k-`!rB-Z;6v^CWBM&!H<`YyxO2XY0&h5usyo}< zqI+YhlL60#mz|Z=2z7kWsJp!>4(T4Uvb4hIs#=L(P*Shr;;=^-@4XBGf+AZDtE!IG z0t0JuX#)_KIY094X-CikkuA(am@`-Zyx@9z(Wr)CVD9Qyz|tFPnp9NNgRJ0^d!o_1 z4PYtsWa{nP#BObSldz0_U*+lG!}QMV(CRgIKhs~X=Uer2bulC5W#$QLA7S3|P(YL@ zZwp*eB$yzP)M4Oj#NS?vjC{}w=H9!p1$w(M;WNYMRuLyb>$Jq-#G_}#w{SZ$5 zRK*zhcOUQ67QW9(p962Nb|+1i^Q-H|j^BnvE~6Cc8Y(TQFt36@ zXS*XT#N4R38(w~+p3gi`m-d2iU%$Gf&TCk2emE=1!V8unzaWN=SHVsRR7Q(Io2J*y zSO<0{+9%ai_B3zoK^J4a!>z3}A|A0Iojq%kh#exV7O#sf-=~-j4`H3tl9x%upRUF= z{f9+0`$A~vQJl&HlnitjIf4s+?7D5dw14!rt&j`HjIPjvD7*D`mxin?9@CS z@SRdIjTVVXbNxItH%OWF#?{G%ygLyn)34JB8v8}|uLeL~EQ{V7utam4p zS#11xV@`zM?OW&W5y=bLqAMzafezUm&NNyU{k_*|C!%&%*SI_+4-GS!yaK{g76&+K zBMO5}bX#<%!7XX(GwJoeg|k(^kRR;tl@-ipU-KmV(K(}pho=5mHmbemIVhF|t-xkp z)D+0w&{fp7Hq}2Bj8y)yQ^{2uB}qi-QDS7@ovgF#M_7%t@j0Dd`R`Cm?p(SdQ9C&d zFCLt5>!^pksz&5MjnY;vu?dN6S{4BPGRq@$*3mp?DjNb>BGS7wg9O{r@dJ!_Jeb53 zxpNzkE=Kvg{uBld6oR8(D0SI933K}+#di)^S)L8JjK$m>i48yRjcviFr9xrQa+bj6fZmWBG!v4rt#l@-qNV&JL4rwi?6axgQJJnP} z{Xv^B7$(ccA5w3QqQ0$gb?8RDn^5b|0Tb`Yw!&`@uDwK3@CeGsI*}wud%81{ z=X$5l+fC%J3wUI|`oJ}fhS<5=(V)9li?BMq**%Z4$l*>1W-o)BhhSpk?%ShmuJ&tb z#m~m(@Lr2SZu{-FPZGWva6)Kl&lp)T`q;ZY!NdON%}+WVHkE;^6RnK8W9-Vu#RGL+ zSPas~?B6am2W?@AtT_nnU=D?1(To|=J>pbwh=fI){?n*gD-jJZ{>KMxK&dwgMGPHr(g*jke(1H})+K!z?aXER)W&CP>= zfti%-8xAF9NdX=q2B8J_Z%i}srot#dd#j|DjOb*sLwqjIeMiA6sX?rJ>**90k z(Xr+=_rI*bj9S@;`2q$}&SJ%3F`b>#2v?)b9FAKJS7Kyufk9jODyVmBM`(F%nH zMX*H9q6$x4JVWOt3@xIHN?Nd0Kc}LABE=vmXmVPujG=t~3z>u} z7e1S@*KR9#44DWRe1RQ*!*ny+%Vs~!7?6_)Qru=(neFk{RVP;{!cZumSp^XGj*ubq zG?speeItrax@$)nWz8!?(pV(AI-XlUKJhmxl&xeR6%2^^XZ@hQjNZ;R%|Vf9XPfV4 zPGe`R$yC|sLK)!2Z-%v#nhbNXXU@yTgUQgkH^k)GGz^#$ux(keNc~taTfxQM`0W4a z3q#wuAGZ1}N%v_hs7kv5K;_w=c%M5)XgAEH?u6^Qsv!-~#xWC`9jD64F- z&OSt??|ou=2`qJydbs))-`jgp8~hdlTFk&s-@x@x?sO1)D9jZXa*w`iv~?ybE~e}0 z??In-*d0IW2#Ptzw0m*#_}yD=dLFxy&F@-SbiLGqx7OXBb*^#+I6Hm&P_2wae|?om ze(LI~4s-Cs??|7!Bfo#=qUJu;qDErfB^Jj`fY(9T?DMmB50}uva%Fz7g4RY0l#kld z2D$rxDDbuBys);Wrm9qhp96d%G-O>Ec&#(X16ZGtC_%>MhcBG!u*9Cp!IwnVf75#2 zzTA;xluZO}Spb_Ib(zdxYPC3?!LADIyHmimjEC`F693jH^XE@!NT^S?I)i#TE8@oV zE3t+!mFQFK7~~OVI~N#IPkI>Dcc-F9sT(oQxAa2Rnc&7$$~-a%+6j))Djw;uy-v{& zLG%H6N_eOHVY~}UQetdpMY zqwh;Ej3JmlGlzh{iY0~IOL4j^7jogwA}K$mO3pb~a=isgnK~cs;o+MBHMP{yk<`gl zJG-0Qg~z>0M&EzZMh*ku$V6hoZvH>tc>o<+bYNteKsR3@9Rs!u2IPv*RTkWxW{ zh6etFLO>vLa&&aCi(g6v(QH;OyiZ!?bnh>^4Or=!3V9$~kqLZg9^vC*BZdRsP>mwT z=Vav~BFStX`Q_f;7;?$h{c;L8@dm*l>$A2%W6c-J{wA=Nb~KR$G(%xCT9jkp<%L1m zLqd=uprm(BY+`tD=lMrqz&{rF_j3n%ARXknQz{2wpQyU;QQg}4pir7weAar9m>5^O zo5al>h+k3NI=GP@)l=-oPdkPdCZ`P3uyn|+&(xf(0%EJ#wp&m{th8V}9m2z7vNB*) zR6vUA0ij~WuF$>VoZkOR;loa9YHnT_0=2VEue>#9cMAzgR&u=`5XOo+VG<=V|J3TC ztN+bodIZJ1p99M{o`>>3v4;Qtq6*LOTC2@INI5hM6`f%A2U3fU*#u)l5*25#NJ(FN za6iS;2*9SLr^}m34goJCeETFP`WwY`vvrP>Ph&AvrjzIeeSMR&b5N%948z0Zf{qvv zU047G7($8UMEZwO(EV_xOLsT6w#Y-nBH#R#o|sA-hL_dwaz;5Q`<8-1N${ zZe=*~)!-OV^kC2BbRLKXE)o`tb>KeO z&E@>hIwc*ti!k&~ehT{Ju0f7Y{OF-}`X5In24c@>@A!1e7YDXrX92u;U&Om8;~x&6 zIB+(Q&AcHZKIi-{90k9|`+AG*qBA${LbuZK_kX+G^Ld|bku#siuOpoE+W8=l?aTe! zVl#jsOhg3z{c%4yO`t``e=$lB5b1h-9&GU-_`_~IkCbU@iM2N&DXm33-C!lY8bmfv z)Q*M6Bqpw?Socn>4W18iz{6aa&962xFp(6MRwQ7uKr8+CkeNU3(chB(#v~|t+iOA{ zqihU#0l^QO&Bh`+rybZj`o7@p=kMn9c~j7n)CS*|yOrs$vTiy?u)yF>TWvo6zoG(r z%v2}y5evz(4mj{CXprAIOMiVw`Pd(W0u9E#ebL|5SaULZ>=B-hB{;w+DcHYUM6766 zsKL@wCDo)XC#Z;kw@Qa{OnWOCNSI9noRwe^whBpBg-7Kfb+Ps=L&b zjM=Y;mzF3wJBlmXuyn(smf}(D&(fK2m_dUXS@he&&s$$(jg_kxk75l?(Hd9#j~;DR z>leW9vqJ5%aMgNV@Pwy}n zO+Xn1dk=eosQs0>ugmxHHGQGuYiYGo?AB5{dq0zoqP4Gc66xSq=~B#>UUEpE=1|Zn z{DC9Rn8se1Ol}9yNfbhwN7ab~3uTHo@I1t{@wL=TkN|n(N5~LvhGbEF56}^q?65SG zouu|bIE3fRVb;fnEjbnHuOS%qkm>=S>_#MIE4p4AE#m*w8ApGAeh-bsj4vph4^zN={|C>J-8t{wU7QV^eL0_(p|GHu2o^1q(<{4E6q#b-lFFyWfzVE62Kv!A7 z0PpC%>-WpQ4y*bT%I{2dnc~)O7!a@#{xeVhXN(d1fFWPLnD}g3bW(!iE`BHk45T9p zSo)7VhPr7U>!~oT;Gwat&-Vc;n&WCa9YfZ7*1@^eb_RHfy4(JV+|1NI)eH)1-HMi+wv}=N8E72$kO?jf4>*1!SVP zzdu?}6KNb%F*e{o_8ATiGxyhBaO~hFbSr$rA#m-pkY&)d%nr#AWPKM%HlaXwL4lrK zT~kbr4ZT{`0trLZAJ2DPP6~rDA#~Z#M3M6dZe2lZCK+(pqn?Pnb9Y)iStcv8`GP`_ z9})`G^$5&Lj~Drt9@(q2XYvL#sNG+#ZEt?8<)FS*cY}q#Iz|atf_E*RC3aXRH3U>yD;Qx&I ze;><-e}8vFc5y9nmoyLjx1rzc6d!p2yxs-&M3{#CThLCf7yNq;8I$Kc4%xlKr>4K^ zV}{i)Wl(6Wo+~7u1xbU|`OYZVJD_(gfus4Ahc}ZCsmlc9VVr8HXcVS9quy98i{3#lg$r=a>`6#vf_?OPdf2lDr}BCpbkd&eI> z^eIlUxI9~$IGch9G2v_wiYFWn%H~2h znYSh{w0n=xk$|Ty&HU{7AEG;PR;4g>lI^4C44B!e@+C==!~kJtr)U z&dohV2nW}lN*3R=gpyYv%RGrwC7uN=7L4v4+|8bonByZz!TYM-Un8<~q^~h3zDF21 z^+a!*gi3isaXbsDzcqV|PS0%wJrU3DJ-0mekVp3c7(iTGTSqN?$;&=F^NH<+j;H>_8es((kO@KHC@aVR*J`A_ z_Gp9mIXXMDu&0FQDU!?i!W-&LCo2P~qN4jW6=cKf=5Jod*#4HfpqM{iMHd<3v)u(i z*$BGB@~$;2vI1oP1lxMl47p|NR`OKq>cN_``Vv91*A>F5)kfg$FwW%Z3LZGj)}^I_C=|B-r7oQg0)4xaqW;LbGYHB>_iPFPyBnt-TK@mbJz+ey3-t z&D-UdRzPzy;($XaT{Rh>a!K>;01AF8R5U{W%w;+i3^K9Mb>_cwQ!q&DDKp zvGZb((OCX-_238A@9XN*5P2P@P>#Qo28!)2c;g#AcfdMHxyo_;Gyabs-Fcog4#b?K zMa7nVpYMhD#$mLaF&R}8wIO3 z{^r(|NIi0PZB_SbD@Z1oKjLJ2K$y_cuOX1qan3BB1wuOlA=>nKp5pyXoA&4cwA7t$ zo?)0$gqI^b)cJv4Rdv#0J>7cnz~S7-pLsubb6p^rjbEy2oX3;!QBZJ_Ob}Vaav7A; zMnn%-yneT|h;FhLQdum7nVa%ZweXV&LO4E5F22I|4lJUHkBG=Nvkro+@5-BL z;{)%`!h2n!3ilV@RuiPNBuBOC=$jKWxYzrlE#Hju-ydma)d6t<0qoW50B|N_13tSs zT)Rd1Jk!Bz{ZAs5J&gd9K}=@?X;x4W-Zrr5%tJc%yez6LkCNjYo1#$S3&wH>gr+Kp z2L*kG;PDY4sTroRw|QGcg9Ld<`%(88zqF^WfFRIoo;dU?;&dsVn+6NN^g}^E!j}5Y z2TP;q>@v&j{%h=%<-)%ADkL&N(ncpGd7*-;z)4Y^`7vmD!rb_Lb% z;uf8vIy993%wsF6f97#pyJIMyHG{zTgx{jfo6Im1bjDKsr1HMe*~jqr8&xXmO@?1X zAs~*b*&ay&E!UNhQxcYfIIJ>2*%uJu!s{*htEvJkuxXlu!~liTy3t3#O7Pf7nA$&5 zM&*`@cR#SNF3`NRy@V$h7FZeOU7bSk^_RXPHfA^6x0f?_1B+KAaA=z{|C`#*#?96) zVFck-(NH*nf|0L=x&|R7*plM&gjG=OhoN)*B2Nqk8_+DjZA==@Xi)()$=)T_z9LK}${Ql@AHdnFnlbPBK^|93x)DHpOH@dO#iyfl z0*x?&=vt7jqhj+~R1t$ih&kSecA1%^LsnpN3%dqylS(~18z zH>N3X=UiLS%e3G^7N11hlg!<#6^6d(kCaIf4GB^9ei$qkpY}QjD}S2MPfj*Z4mnp- z7}YiaHEmBzSjz^MYm0LIgL)@*+nH|4kzQ&^`H7`5 zw$f=Z=1?JHJE-f}8Z72R{5u0DCdShC^}W<4@aB-VNEMUg%H_jlmY% zn%ITbGPRh8(*_woSF{2I1lo|WZO4xeiXtugaBkilsW8sxKD8BnQ<(c+rA~LPa$-Pr z&`Qyb@jtxd;CQ+I2Rx79<9~fBmH0Rbyd5kA=d=U5^~U#7w8#-<2D9;owZZwB`hxkwCEXX(OQE zfH1Kn?Ab$YY$a_9oR*izKuYhlPF6;tU1Z#SJBAscy~7NNCSh?|gz2cmyvymoc8XnZ zPKuAo*2~%F?kK{0hw;|Dg6nZhwE_ zH49e~as77Fk&%p7o?~6QTDG9W{w+>%pnEFo$2()k7OyNO=J6G$TZH(Ea`N7%w z#6Q?i8(NxBXX9~fjdjqXai8)5Ou>z3Z=_AG@^xlGqWfQLIe8VMqQHll{29<#N~g?3 zoR_oCq8~*FElmzHG;Ek(7qPE)g}{(a{^H z4lkO{#MC>T#`UuJgw&Q%vm1*vSd-}_z3r<;lZ)@ymt=nw%p~QH=1Rn@&R_fJCiVaa z!A3{(4USE%;l&ms9*~t)*mNh;6>@&7(hpVX=o^o=$QU<6 z^?{g*1I{Lh&)PSN@oJE=+TS@2OakWp(&<-{7r)9Z6zuI&JMk(gCc$6SLV!>h({B%j zD;Z-+Q@XfMexdNbTk7T@OdqU(6H)`v%FaXo0|1|B9irU zE(XtAUOfR2@<`6^wTx_IZYU=nd?~*#9~y4?@dZqu6>xVh-`^i|+Wm~V1F%*U$Yo4= ze8<<&9z{~d_@NE+Z)#A>n%e;(Q8t?d7(*P8)J~}Qm$$#de_Z6P z2E`yH>4J}S{4y&?(R#WUmvO-!L9wG2K4alsBpdMhHtYBo`}1LVGigKW$X;*f{9X zheI&75=O(2Z?Ac^s<-4zDyH zb!T{5sYI#*a_Y=QR|veb)2KOgeEyR^2D{?&N2dugl~Kc+ODi_<^Hxv(%M$}$)!}EC zw^P300)3=%M!ZDnv@wmCs_-kjowY`vZXn2OaJ2?b<8-C#?}~MHSMBz0K!5`9(Pf4& zub<=6AVcxse83GVK|diuc&#T6>9uw!?%X~MVdpJ-41(8Or>mdt<{ob9>l-9u7Ml>6 zf0rKqBas!S zal}YdoT@=8BUX3CWGTJIRk9FA#%45KnZxi%^jN}o7*#g5eiK~+KUnpW;gO-Tpjz~{ zPGAw3TFh~<_*ZgOUwLXG`JB#`^U}qSR{wZ~t z&?eL|<<5P#xUlg-8ZTP)<)KH+q7f5fx-<@Uxkm)gFYU+H%=+0PZwbyhR!ZtX#t>%% zcjpy`?1eBlo{pCgSDcXaLy^CH{tgmifjBxmI%KJnQ#Sj8!MdCoJ*OHT?V)r#t+MAh z%#gZxFIv<8r?dAiL+U1gDj;>Jfy;2d*l#5)7+ z2fK(PaKOiSzY1kwOq-Mwnc)(^=TJGpZAkHQ>VIPI(T?Yc95R6{HpT6JihO;^uUD6p zfvrQ&F+$#*{j$+b=6D;(l)#6H)GX&jACqn4q^9gft9h6Md~@9kN!clD4bkX(D?3;& zQ`3R3aTWyR4Z~6jxk?oV{NvOgn>rvt_EOKveqX!R zg_Ejj4VIs0h+d;JG=kG>MRZiP6o#{yF{gN3|GvJjsK&FOIvL;&u4Wt+lL*jF27VAI zsQvc%$8N5Y!?2^3J=q$6m4^U^cSY{BfCzWmOG%c0PI>~^64H^_y~6*z#y@%PC%+qW zqn4ZE;To;XkMVVJZ$&7P8^>_>WWP0kUc~iLsJ3;wI~1G-_5N!fMGhNH06o~620d%8 zhbdbHzHn=HP1ZZl_`*@c?)_5>m(uHCV5}3+7h&R2i6i*??uTw|9-=VoZQ8=uluFLR z3YT?q1+xZ_$Z1P|0p2TD;N^z91{3Q&;(XHw6}2^VSiQawdQVp)HiGl-D-pEx{in1c zAi3n2CZ5|}oH^ntf&C((Gk>trA$)xCKI3R?e)n!j`I8Smx~6eZucyhcarS!|XuV@h zFsmm^OtJd~MoP1T)FH~zRt0;S%PRMm*WQmKg-8IeRY%3L?bG`31o`L?PyJD+EK<5` zWh8(Wp@gn!Rwe^lABs!xJGIbsb=(mDu4$aNzx`KpqT(4S^&yyq$Xyw-l!>_cbdK{` z@A=5gLklSHOlC|OGSeDGh_eT4#+BqI@O573FrvxoTB5sUk!}8UjFA>^))ZA36rGR~ zMSFfRvZ5E}jEkGK$!Eg6FCFou@0*?Lj5cPxgtoy4<@E0OaRa zLZ`JzPu~-;3*e&PXZQuM#g5D(>l)zmWH^3rWP~ZU|6f=@?9-1VpL<^&mfZ4AK}N%* zeAQRf^@3$`b2~I#KbO(i!v!l6XD7T2@TzrqY1xk+9QlHyR9mm(a>;XRFlQE2In9UY z+a1J^24^w?*eWWG2pm8G!_{@n%ghA%m}#$OPxe}l01nmtFiy%<)mVtz*Zf~bfw>np z#XK!Ga4u$Yk(fmW@}>--(2(x|-UKtFUtyR;sk3Lko9iym#{RWytYztGQ=WR~^w*kC zTRxUPF!D81@)rZCsVHq4ca`L}wnF+WV1f*fH0V|Qi-SxX$Dx5Mu%l!fb-uIJ8owo$ zpk(PfOf}XBIWtM5Zmx`zZ}{=x8#hco>fiijw-N<;l9N{CLx{s>1qohNk>cLa@ctqc zsM2p<`F%w<08B|959ZO3f0oFO-|VoJ#*-Pp<%@~vrY)fisil_GV~#AMnGDev9AxIN zd>m{!aA>_$8F4^Tq;wj(%GTsy<1{@L&(~klpxrA%nUu*4eCj{#lu>8k?2bMW$vo|- zVJjVN=Wkhe6BBbP9!g?drZf2Krbx}8`yqxFUn?*P*d&0b70lDZ9-)BD|I|UmIE9Gy z2)<2hnyIP(*vQ_M&e8ja048~94F~MXkpw~*I3_DSxYl*-AmWW2Ikt0tx(Oqb8hX*w9C zAtuPm>el>K^Rng~9*JpoL%|vG7+h>a>Q^ojS?a}isL&Y$AI&wEe?`FanQ_m}x_c(pwl6VrR#{3N~1qAYV;domzD+wYjsUUhC+n`o#VU zIW!TLV?C=z2}95N2&Ral3qLX%3I=y#L^(??%)psyaq4{K3Dk{M6Lo`W3Lzd!JH&?3E-!R(bm=OrQO2px%xX zR3>S>Im97wIF;h8&oHzH*+#@c-9|G#24hN8-I~qI+hKKs606w0+4#flG{Ec?aLb9&or(o)B{R#8x9Nw{s$5v^OZ~sDf|w zsDK^A>T?$vg$e0zJ}G(Zzh20)D?D0TZo3b}MNkJud3wX$ zuN5Q}_P$0R1d%BoK(qPD#Rwy@#=xp^Frp$AE> z%lF+v=_Me?RY?;xQ(CN|or2WL+d4{-2>I=ZB@^M^0msxODmYt1nTMp*VWCsP`bOQM z4Oh%`)6vKtZDCIn!4mS%1!2PlgvK?Jg-0sXYag-&Cy+i8AE%gIQSa1c5JRCp6(f93 z|3n1W5Gj6@huSZrtaJGLHRb}a-XrIMlE3~WNRQMUGg#aEDLW#7TgWt!+lXUteD8`a z%*M)`Jd1{=ExJQ9{t$c}F9FQpI%JUS9!gu%F-~k%G7I+3PZ(1iy=nhHs@{Sti?C7K zmhJ}WMnGD+I|NDT25FFx?x9mkq&uX$yQRCk8|m(E*!y|bx8EP&TCRJTnQP8C&hPh* zuxK0gwim^7H_R`vw+f_vkuVPH4(7~nF%1f@Q}EKVVr^nLUSqO5U5|U;X>fA_)}dUc zBO58$PJw;uJ79L6URI+CmaYC@XGmbUp|SO2kyxm=y`N8Z>iEZgPYCGVmmgR+4pgS= zOSY0msGBvDUr(4IiqiYEWjLOiTc%sVVk)q?z_jiFtdDb{MOcT3{SU^;Y-GOx^#Um4|kO zG%{jfMf>*Hg&y2mq0%_4NN2KphV5NGm3&*~#v2`5XEU+=u(J1xxQRMm-~;_*vH@;Q zR(${1nC=^7nIQ1Xsu-YUyA+W}^lRa~w5(d!geDl3Eb~`qUF1Kl=V&dQ2XBd)np}@^2Ph;v2DjWOXXf?&b z=wnp_-Hb3+l0vLeRm&!82{(Ps-psp7yed@k=sH76Kka%5w^h_LoBo<%sK&jMrxY&w z#$g^O#BI%#7Pnx>lP&@8STg+u;ZaOOuLqwpq*%5p{Un{(gDIf#+CO+rjQigTRI7+T zT_42|!qJ+V+HNuP`BThsy|w@40^67^)mAM4IAEze&#kocP_dUK{U8Bl$47CpsGIso z$zLCCu;^8ym50mGb8d>)gn~;i%QnDjJC%_A)vn8@$f)YW)@mInxwL~+-rBWme>4-f z%;JdxS@$@69N?Fatl7fcXiG=Atw(=vwsY}3e{N|WXFliM`8g@+k;Rts(q5o>yQ3iL z1Q`l2+!nARvB1fd}d|e`p$N`A>vsSF1gI zj33bK*H`o~40>b~zVF1yW?#v5mTIKJxq>QEf$dj9(ox^^Bp%S^M`(tPSYIupykKL? z%q#pGXdRq4^5bY+&=K!b{M2@KDqm4_xIxX zhY5GoUr;iZ#zC(BEj)i5kH*jjJO_nkeK&+S(ogXB#Nj3pgl_HpbrgNI=81I!*uohq zxYDO2p56S%USux^|DlM87*wFQw_U3{%xo0<16Zj3F(NcFz&G>l>Qy;bxk~yA-?zKv z_*eZ87uQ4(_Aioq(;o5{o1cxTamk+2&s;h?T^TM8r%_-Ud7j*X+WJJb=|+i^KFcHL zDjqCBzNoaG@>mZYbgxt^P!_NAJ-^wKxTcU(g8_RG6F;u_Dr~2*d+TmkTbI zpVMHmcL&JV??O0|dGDXT!-M?wX9 z{ZA&rxW_P%%s=0{3>_~9^cGek^)9xw`1?6vX>!yI7!?L9>zN5C~;y$J(7zwz4M*FxZnh0~c`h?MgjvHo99{Sjc?p zRb5>CLCu_QaHydj@;OT^%hC+a-_TYh-%Npu`4z`)t_-}s<}N45;iqj9nv&F$TsD5r z`SJh@9!FS|(I-H#rrA;QVYXD(<78my;&fF^+LQk`N`&jG-7p?laJ}Sg5e}j#zlrCr zULZA=EHx|Ygt@L4w1qfG+Df2OWiJUTZa`Zt*Ik6Kc_TH!!RecwjS1{CxI1gnJ;=V|J)3#Kvd-M>kK?bsJ~qZC-Ecy+HXpoGxG}Z&hDA-k@n6iZ!A|~a zu0IOUmb!7^uSG^aUmr#&N#XPju2|v%Ar^y=v23DjG`Q*Vk#~JbADGdVO5a+afL37p z0}a=NQg;j*uR-5$&T&Phq8EhXAF!+_b8{*pj_!gl4Md&Y7gL@6ZjQCXuL{K7ixKx* zu$+3KPp?IDgU!hYXD_!#A4nYBc0XjhJ(6y2rL}PrNB=AnO6%L)5_#)E+eqd*n0Y%A z>uK41a$XK|3ssU(_U#y=%-lEzBK(5UvI+`e{OhH%&N{)bsmC1lj|hvze16YPQlOX2 zEL8FHcHFp&Gv;#&Ca0B}zt@pSS6844$S%>N1;e&)P8thsNJ1R$dr@FrI6d<5J1VR5 zzwHCjx+D<^jb{q@Z-x2Y)#7$9W~{TtMG{mGIej@@vmn zTKKfnQ31gqb+6*&T(DZo|2lB8namBRLrXZzjop1poUFzv&~m~lFbBX(XqX@5s(L&{ z`}6t0#vV14I<`o|2~SZLD8-e2y3>9XQxA zWrC`k$j>hG4FICa5*PU>1U0GeXkZp z;g#%#Z}24f@XzJKO8x`a3LF?MmwQANkJWq5%*+hwsX)ixHg7uQ&>~_(+LS*z^_e;Xw&76NrL4EgT$T(pN9#&?eDpwTRdf)#h$Q-3 zTZTbgHCm*L9%0kW%mp^>huT+_j+U2n7PH0qYTp4`+K>MHK=Km4-34=CuKn26cAEEn z&e7)6`UTcS0{&b4b_Pz`!Xo<__yap6jUpB~WwSUY_XX&n;I4#t9w0EAP7Ny`dDT>cXo-{9JTcyoi zT)k9o&3SJI4qX6zs)W2t`@v-3_s6t44|Ll685KG|{#PrgYQ#r80q^3k6hEok{I5o| z_3WtbE%Q!3OvuwPYjz2o$12KkM=JuQyW0V&)q9FD8E7CS;f3nBDLI_2o0jDF?Dq*j zHl4F|2yAu^5wDBWl`RuXS&jTQP_OJ?Y(@iBL$Oc`mhWn10bp=JrKCjhS7Jz24ZAtJ z&G6%I77@KP>v&;l1UD|53sw$wb!=GJAEn;X-x527C)7WG=#WyB#c;cHSB7s8Xg{ebzUm zZ9KAf-a4J z)Y-ib)@931o{)UinS4?Y0Ey++z+QpJ?5(A(tOABgs*#b;!9_vTCu#g)zbI}z>a!ua zZcYPgn`zu-(^0*Y9pr;zA{ZyX8M!Xb_o5!0R~FFXzE2@S#}5tgVWLD*!ZB`HTfqPO zX9ut8fv&fW-i=g~9xhKf5cy>HX8SjJ5V3Bqu|Y<7gvbcamTE$MO(0oo=jMsjL6 zm=@jNu;|U#V9zBdT!IW;2yD^UrlA!7vqRpT8Gy7sa*SMgE6;EdCe!JSdm%U${_iJy zY<4xeehNBx4Aw7;HHn=)z_FV1~4!tSi=7p8f(i%Tl#y`-0^<%IcvlfVWa}_ep zib6Yz&(E5PqISKGvkLQJ!6rdZGQ4Vt51tH|v@9TnPhDz31shcnPE$0Si|NPF-u)?$ zW8IHNKzGT>zCnN{vreo{iBe<&T=OYb zz1?l6NKJxeg{2Vr%pCRb)&RG^3+Fvplmn1JPS#n}*sjx5Q^Q&H;pL4`Phcjt3X3!^ zhq|AV5uw-W?tC}&lP4=)eGaRuo}4Dajcnq{j!7gKe@51H!dWA_*m4q)-Omq54?+|; zV_`zFEo<{5je@&)x}>njR98`p{MUsUEeUKIjc&Y0u?U&TN%>*r0|V7kv0W;e2#j!I zrgNniV8OT0K`Pls!Riv@uFt#!0e0{QlW}N&`fIulmgaGNt60;^tuPQ)B}6cf9e0^- z{z^)~fDP?W5zdsOmYo9n1sYncSu5BuQ7w(id=gF^8jPAht4bJbob^W238F?zVx?TG zcr)9ig_vOwjvxGCI}h_SGH04NfM1&UwbHtee5bZ;27+`lGU#kZuwX?j1~j?&0&>8p z_3@HJXY2Y4)ObEOFQNgv8g})XCh#IH!HNr6{=uhgauEdRu*M>xJJaAV;jX^Z-BVSg zSn!PI$%YXb6BYiA1Z{}|!NF+leUr-GSt}Wks6nPU1W!AA@$~J1PJA60J5pNSegNA; zcPF3Uv8%?tg-fkAEL6F_9HZ=X)~qcA{(1VxlP2=Iqrx&5{e|O58~@efyOAI5Z^Yvl z1Wbrl|L{*ZMk9%)-1ml3ZEl~Oju`c3&tgnp0`w`yVin~PUIQ2$?LK9lE@bjf_NE*Z zf~w}$uZ|3LoiNh1@9@CnIGY4PIiNQ^u0?9`-GQvV;h+BK2D=IlMoRkFoLrhUx(?bG zF{Z71x2;fKUtv`W;q-o0YwMVsK2lYl64?lx$wnlKRf1lN!De?Hh!c{}4=-@uHz|`; zEwM(NGBjSd#I^}e>+j4d{YAG6>M>@ExtM9#Trpd6XxfMRLWuw#Oyf=evr6lGF2*@ZXoAllWXNct7Y4>{3}g z4LLZtC51pkUWEH(K54>(pMpQimsErvf=#XpxU!Bb>Obwrx|uJ!yxafj_Cv(Gbwihh z4*d=Q^8+uhA^pIQ7a4Opcjo30=kU>QV`&zp`DyRVKyljj5+2 z?Jz{gz56f~`K}h_ zbH8s}9vHr1YYz~Ts;Sr+gZqgpqXRF$k@yx@7>TKq2YOYWmd|Eo7KIehCEav1y?3A)~|(@wrEEmX`f%6B-2A(3WB<;EM`N=pqmYHLf3* zYa0!Qje@NdxRy^jpWY-j`Z0=`=4uc$XpPX6e6q5W#^NaN&`{3_WH)|6VjI6UekIjH zvGdHy8F6{9bD!)ED=>vP+F@0xo9*r7c=fzNu(QmHWnLVB+&IlTSL_#JE zk*xesdLb~=VJ|9d<8RIJ?>6E%d9*sEnC_8{U^WO3Np;+l`G`p9&yTTYuDr@NC8dZC zx=x?v<|)5^SS$jY6cyI?R^tm-VTe9NJuwImse&hDSZ*c~15sbUsX=5Yh+hQz9MDvQ zkhid0()Z*iu?o>1Cq!=n%^e_HV$8VL?rKS~wpwCvFfQcLm6Ns3Iv7lDetxIU%3Ac# zjMaWbX(>te5dYk)ja$pev1+bmIeuK)LCco`A;GxcvaCuX+ms1K#iXhR9$)#R z&rTLrG0`-%!7IP`!ZNPp1M(^iw=6Ukbaa(r+>#`?n;u@U$nQ+Qz5Q=%yry987ydT1 z&^7sYDz7UpwJ;vf`;}K!ri|@Up ztev`Z+T%xfU<&4(yNAmVs>ZH~fpPzB^a`lYg&HDr=pkMb$9vaELroaW^Al(T%%tn^D! zG$ZErnMX6trsXFBv-RiHwK#>1%{lBJaCVG2NA{-=W>EsOvRJx%cSaj3_~?GGI(iI-Adoc(PI)&r@WtNNHv5?G>NYifTWJ z1X>inBBY$1>rpA2V5-_+%P_=Hzh+&_Xc9TLx6y)`k4j45{;`?PqA0Wy6#Kh2;@Ut= zq-cOG9qu$5Lo1rn- zbx!Y|3zJ;X6V80~<3s^FU7~j@*a0ijoqvft8=7dKdR1eVy2*BEE<11@95I4{*R=T(l3t+tM=hse#y-Z>sneswRwB?4fna_5GU? z=GYDjXqk4MboNa?meyG}bfn9rH)-lU2;FXeFn2km8krr8Wv>Yo!R!lqONoVsn~|f+ z@Ggd=2||I#CkiiMC_~4GCf}k~G&fPj2A!p9QZfO|66x!oTBx54HNd)WFcum#+W)8|4|2IKOYOIYvC58H>XVsEMZ# ze298bBm@Kh*gMs0V!vbjg|DWPr+Bd%%LiS$%QzcGR#SkkWlVy+)qtrZU`stbO{@8r z{-0V9>(&4~fP}6@DAGJlz>Cb-1=>j4V?RYZ`}F5R)fZz%rCFPKbCn7JZ7f6dhqoYW zV4w(NsrZOov4(?kXwq8~N|cO(18tj(iLD&kxCz*eiG#8@Um0;yRMe3i5ic--etY^3 zTv-61OUS{f##!$JemML_MoE`RE6SlP0q$WM_r@IL_&L6Q;($Upb_`0qm{i0hq~}>1 zWv861O7<@DXvm=@^HC_?*g=>~wyGEjrpS}X7sa8sGI#X=$$Z4vg3+$n`Su{=<~7PE zIghpGYUYiQrbC}fkb(roCU+yjO1c{fxXV_jLs8N*2CT|U{xHOMj9`zB`}$4{i7{I3 z`n4~1uf?~K+Fik>gQGoHms)Q+iBmTXVQGvvL+;LrURZ?go6z4Hp}IGCmx$S2 z=mIKoJ;>hbURP-E+Fs*)!_wGU%)HM5G=dHYUnIv|%oN!$jEUa*Uw4qL3~r8X$s*P( zi=b8j{14r5R9d+mYHA6rg=x!#k%_@yS(!r+Ldn(PYC*`U?#K)h$<;LUd9fyxGhl}j zNca%hyFtVH_>CN@f{IVc@ZrO&h(wdL=rXHQ4b5 zxwn0Ph+pq~LJ>aqW#P0fC;LF1(GuLaA*}`z{nc#7U;mc@(JxIOaFvsng-nm@#gy4r zUxg$&VvE9iq_Fq&$J+ApV0t=WN}**c=^X5{Hvl&oC_(BQ+K(}@jk8c`cQL-D`np?t z%fu;(nJegfi^l51x)JbTSsI{Vri7B-$f6w{*)Uzk*)eflPVwN7XPy%4dk_k+O1UvV z?~Rt>UAwbGy&4{F6chN5MFBFy#D;vu8m|LcA8oR&zWeo57`z3iGnZ zj$bCX!ckTI-z6QCH)D^E73-tQ?I`e)DxjW43d#1IOU<>aj(q?2J3%CK{Y3YydVkG3 ze7Myki_4DeALkPUW|u`O*u>k`YY-k7RP1!FDnv^YlV7WX88pqan?L7LNlT@&o+p)% z-hBO5xT^y^JhdMt_e(~)6FQ=3fR%)&C$Gap4#nFm;Z90xx2qoMC*CSB_g0Kx4{|L{ z>MVY_91~CkqwJBtT#mhR+*U7+6MT7`s0PLKMzgW!V!(?&K~={mb%hkf{P`@@21V+qbp4y=f1qkWqXFDyEXILKY) zN?e3jiR&M&zZQ=LR4|Nkr3s-mB)_}me2>RcjZhCAjd@e$X?0k1UN(0V*a@1beSr+j zfG4Wd*}0nuaRh_T@+Z(rL(X{ZR_6I9bi|g(%m1)+G5!8Ry8$@o3Tbdb%AYImiqTIn zSlbMg)qdgtwSKFxk4b64XCdd!QIR=ozFs+bnOpC6<;yb1L*qV31d;DAnv{KH9v=F8 zJ~M=lyB#(8>sy`Xpm)&Zl!4{xJ1++$09v<|w%QZ1>qP`~SzisvZwniKLQeA^z0xrp8*PRKBd(^~3}D9D@SweqjDdl~OS|wJWXF1ni(7T()g4 z+JlhHEH2ma>ilnz+&q_qi|wS+Yp*{27?er9jo4ry$og4TyzFjmXTDy})(P8?gv%iXcFtl36>S;83=D>;jHh|&`6 zba%G(mqM2mqu^bCsP_7`xXvoR-%7Y`Rw}~r$m6^aZbZYntj!IuWx$Qf&^*M&p@rsH z@-Ma@+Ta3JVN0+D9d5Ehe*wTk#M}gr*mO%XY7|1niI;NnC;j;y8#rw&F4KV?gqM52 zuK3%+Np!6U?#Zr0KYIC|TZ}}fZ$`VBKK@|i|N0kv|Lb1>|1~g{&}&4$nX|}*hZz`~ zgir6&z6flsGYhScPWYR%Ib!qkI&OGLP%XXnfa~V={uEf5m!iG84kV1KMFusHq{Fi5 zI{l7Q?+_vJv+msh};4#@4<&SWWvX8y9Yd$zKZ9F+Bve~=1LL(J;Qfu zqNe{IOn1)?mx<*Wwb&p8ex>x*ldwWcV`P=UWcIGoq@%~kf;BJ4B)#+mN~Yop=m_hp zb3HQ}_F4`f1##Y~--JE^&X|+T!MR@PZ6UO|g3p>28wZ*3&vVN<@F1%QRE`_*@i6q0e7$ z=gStdVG1HS3Tt0^SDL%;o^K6X?P0KMYk7zf2?$t{*%5Xx_qxqD`N&FHXFv!LByUa> z@7aK$GctJ^FQw_B2Q4Cs|45iVX!CY*QGW#0C@guzu8_@ zM6o}}Ztpmo8*Kf7EHXlFJUc_+LH0VRs0ovQNi%yz5!Vs#L~9|BiF#kQDdx|6R%NO# z>T`3`awNL^t7<>65l}^XbXnsZ&-6gcTq<0JtfycGwh^2dalAhy|Gr7sNhymSl4tb6 z@^HyD8lM_n3ejH!ZeRPL3(Cr%DGB*bdcsEu6DlIUvYIJ`hOO^ac(e;44a96X1AtbZc7Of;*ZG^!j-1^Skabg0OPmuPa~mbWlnLW0j*7k9z_*pSjlF zT$A64ApgyFU3mVb4HoA1)WPh>bhqQp_h=)Qv~+=wNGY}L-Nw7JwD<&m(43{H$A*u6 z?zEN`6xLIwt3m9C7Ac&a+y40c`&auAV3H+k_utRy+9TJL#V~vM49UYHRoW{wA5h20 z53kv?IGUq8e>`opllSvjow547)Phi>sia+_2K2Rn#h1@!R?VUHx$Q33yH@NwqEK+;b6Kf56YUo z<=M%~wWiwVR~W^XE{;v<$ONEeL?vNL`Ok)xW}q?@K`;3fas6dMBkxm<*w#tiINQWJ zAukHAhVSsxeTNhK!%;X|<@Kc|JkaKh&)4>n%J=S4zzG}9`vLV0`L@S7ce3{LFhF;% z=jXFtf3R;H&ev>8FbEt`(|`w(@yS5!U(xr=ME0KFW%9hn*59=*Rb$tBn+~vkSdTe> z7TO+p-rIPtG@J#0rumWZQxZOCI&C&5hFQ53AHF_Rzg1GYoC@oc@7_#68drSjXT?hZ zp7upw&lm=hHA0w~+2L;VG_+oOK`>TcnV92y@;Ih9lE>Czstw-cbWzo@*DRO4k`OT-y~`pxre6i0%6l%0A}MtZPYR+^uSB;^a2=SpA7p)K4CA??FKGqH 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

1Trn#|zX(Qsy42y? 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%0Dae!)CgKg_|CL$9y@V29LXw$f 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 diff --git a/test/image/baselines/treemap_values_colorscale.png b/test/image/baselines/treemap_values_colorscale.png index 71486fde4a77fa1b1844c5a90c6a5e71dc3052f3..8c55d1cc1ab1fab657abf9f6ff1c779585331209 100644 GIT binary patch literal 44612 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 literal 44588 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 z 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 N&_Ry_m1Lib{|D6%8GZl& literal 41117 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 P1+&I;!|IZiloS5}Q9&0k diff --git a/test/image/baselines/uniformtext_bar-like_8_textangle.png b/test/image/baselines/uniformtext_bar-like_8_textangle.png index 2bc7e3e2ec4bb3d2afa68bb10e69477c4848c2f7..3ffbbec7d1459a3c8f76a3879304e08bd147e7c6 100644 GIT binary patch literal 39817 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 literal 39898 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

*T)H0Y`9d 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 z

L;nZj6c=YkZ;Bhh{{fM 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%0DBi)_SX$=rm)r`4?$#klGE~}& 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 diff --git a/test/image/baselines/uniformtext_pie_pull.png b/test/image/baselines/uniformtext_pie_pull.png index d351a94c488f9df024a815b73217f3e420a75d43..c6da30322988aa95959eb2e8f6bb64682d4391d6 100644 GIT binary patch literal 82953 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 literal 83065 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

7SFp(4tD*Sr`G-)&`t!#i6T#pak$biL7{=l zgb$khGUNJp7!~C^9cZmCACN+I{7=Xw%-0Im5y?5R!uId6IuxB_)8EP>XEZ-eAU&%z zC=f2x*9|%JzA*qOCeEGFfXWaggQ5wGZb6Pxtq6v$uVFrP$Ph6yK zL`0Ws0-#uZO5g)u$i(ktM18-2$JJ9Lm-9jmoGJ)vxCu{wKBorWPYvf@CIcfzhI#lS zBPP;KnHEkAS1oKL5gzLM4Q)%O2qa>NpFy~r8y2EvrCU^Fm36q_!3;u*o=3nN8FUU1 z#@MYFKR&>h!U)e$CJVgwmrIkV6VH&c3U`CS0J(plnc_0lHej8yiELu@*&x_G@ltZJ z1j607pUG!l1hLS<-GpHGYz^-?IQcQuCvrLBLM8UMMPjUBzQ!my+2hFz+4I;mq+2AXV7y!pZ&RszzWF$@pt2^zaM*hULUG*{_Ngb z;#-8g&oT~2ig4~>*bO+01r1<-dC@osiPR*+0ox0G0_I*yU$4ZxBZA*>HVkVYOR6Y? z1?@9H^BM8-1@s4OyM(eERa~0$s<$2WC^5kVo{WEj7!2^5zlMB1<|wmP2D6N9R)z?_ zrs|Flr#mA1e25I%2Z(_zHhXk5dkHmEO7W^(3o`zgV*kHqK>N33KyUf&Swtw2e+TZ2 zsMV6r%a#IJV1z)pFA`>WQU$IW!Z}P*Mkx>sFon8`_T@7x>fp~SgRsxiUlWr6mE|7$;knw1DGR9f+B9tT}t0`7O>|GumXL8*xx zIuVU}0!K<-@z}s@K8roA!zBS^)crT~Vp4ukRWi7BS=@CiCp1#3Jmh9K4)|{)ZlX0J zqJU_CUi!iuO7io9CRgI8t51$BO!ni)KBYm>Ma{8;}<^MvGc;(66d603_SU?CL~bYE3H5qF~V#sB~9 z_ZHzkHs`bsfx63d+-YD?P}0<>p&n7p@n2(OpN-*r9Uq_Nh|!f2V}Le^ zB7WsvtHh)r=3Ve?L%jUzy{F_@o;a2)pSp}|6veo`P@ z9i-sLJOR>0Re9{{*RL-f=A9!(qr|)a3QRz&Jao){6JX2|t+&EfT3$B&wSWAt{p$9% zW2wmpWKvH(a&{KCb6itTc7M;vRumDBN#Bk!#y&vv5IikPf2!^d0@Cng5we&=iSF+O3YueFLW=BqUjFU|QLS)b0&lp$6S}FwT<*cL z%2Wv?$1?jPlOw!DhPZd=)^W8r42b`ue+WRYn( zwYQXB4}s?zU%u7o|CY+1Zy_o+Rj~#yD~$3f01neC%WqMnza=K6yJ(} zor-^ESLVM{UGQ`pT;?hsPa$oZ{XNH>EyD=jhoPOUAiQmyV{(ec$YXe|YH!AKIt6PJ zW4s~1fIhqXQ*LyuqOj7{#L?)V`>C_s%asDYfAtqY1XEOHe8FgW+PW0bQlKnrXNd3T zSGN(=s*RVwy*9Cd*Z&?L2WaAEP65#F^B2O6&RsFlV z8GDhBRT@__098I|3ux&+24nN_zy@s9_GNHc`^2AiR7X4=59P=zvp-k`l74J&{y_RB zedyT%5~Y5Uo`^`(BZBZ)llFIX0iCABH{uvVNcxmsoR8a=QN>yv%EFA>%UGJupIjBhwDP z4BPc*ERTmf=v98@V|oLe1l{)Lz&dv1k`k=~Hi}g5#-76lf8vqb1jB6zPiyNywLjRx z-GZ?51Vrj)c~0i4LQIlL@#%x5KBaWbWZ489aJDCXRVl5Og6Ll)>UO`$^U|f-vzF;T zs2_iA>^!NFa}PMHQn`b%U4?-w08?a`ty&Z~C%=gUa&pDwn!= z)llm;KXOLnWrxS3?j9(PPj&h4QWS0<){JOAETNV~DIPwZn6v`1k0MYA&(nFR`NC4+ z?phd1x-yPI>nI=BzLUWFH;j-dy-YCpM$KEBaa;E3hn~V}2lV%V;pGm`vEcUd=MM`P z#~R24jfZ7eGcG2ZG?O#9>iZ|pm!YjRU~mXbl{AIEZ1 zt5IGr(A%#;BHFPjUPFwj*>3`%$*1na0D_I2q4?P+{RwXP#h%2PPn2JFwttqp-XMEx zc!HQdkQ0~YF#trW&k;OPA|wxL#7?J0z(*^9cWln0qO zhl5yk&Q-}Kq-;@OF=n9suMM?@ohX%SveEm~3`V(X2s4Z!d+xZ1lQroN# z_uLbF^lk9%0wsV#r&XgID@Ml($dY3?S>Y;u{Jcyg@zJ$G`tIX)Xwn{o=x)103YuCN zG}(@)P68(;!4fwYG+iGsiFf`t zAr;2iRFX`H0o0VHvr}{6b0Jlbl??O!2Aq2s^Odb@Q0ptps;9HUp6)5Qzm)@h7|Ted zqeE$w5mL3_jo)EH*(gNuHw4Z#Wh_rb^_z`Od&|Rgv4YpB-0An|ELfII>a?Fey|oMu z0|{Z<4YYfBGL>!1+9~L|qr!v7Qm@6TJ6h0j_p5Gu_|k%~LtW>R!70x#QNeW%<=f%H zv+}9V|MqrkrP}IvSz(%3{LSaK+1$bdY-$ z-){!rbD%#Wb?M=Otoen*KMEJYy&f`q&Ta{= zkzKuK80?#m?)S(MnAc5jyJ2e{dI+&Zy(;1cWVmt%ttz0e`+)<=GHOMzMxmA>M zf7R&Y`HO+g(+$pQo2!lCphxrspn<%V(nr`jq6&-AzgaRwEL+Vui3CmsD4H|0>N27O zw0M!+lwZl*xofeCD^Dq7qf4lO3z8{gnkc6*A@Zp{jX$QM00ix)V*qtu5LE#eWi(oJ z@I~1;c>zzy`pI0*LEJW>`03~|+KLwQn^bJaWIEmL7K1VVRf z7(emNYPR!Y`JJeKZEM4+7Xwud2o>)hg;9T(BO!4#Go!I3QICrW8@*-ABN->}kU1!o z0?xe{hVB%rQClP9-TD6*CH7^JfT8MHlf8pXQe?I?LN)I$4ZHT>9A=SzP1%AfV%}p$B_}KvEFkALc=>E3Y45MEWk0+PIiqni1KZna{v2VH z4v&dOxfuCh%7vIY+BuX+r~QK+O&bD+d7e84!I zBeInmO};PwYs<{T<{1>*=}h4yD$Xh*KbbQq^)Oy5R%!LM{wBR|s^e^Ai1};a;7*T) z$BW_q?85fCo@*iluew!-w9^dJf6%$%;m>Zj=D15q0yDjAYEZv7iOkh-Z zrfyJ`B|HD4n3O_r`F-FK7{lf4WD{;G^tMHLgMz8zjqll5A@s<8k$0puMRd?70`v3) z?|QL{n3!k=SxiYKx;OjLWBc-~$z=8X-F1LT*y|NLt)m4*A)8)cSEZ|)jjkcBd@d;h z=6%X~7?#ymwv)CXd zF*`y}XSWE82CMN6v>>TLZT4W$G43Nl4*`@?&UOyWUdnbZcGGFyw5>d4-|}OutCG{6 zrmp6fkn0j|OAFaB0k9(Du70>(|3XLahcBfmtgfoS&StUpcUqe_kg|bOkX{cyHYAax zU)+hEcOXQCiW0!Yf+=XY2tLUp-<}0$zEiwtazdEr;Am#KQqa!4M7FvA=AYgHz1!O- zmm3LR_*)T^|LOD@`buc7ZyF1LzF)~)Vs|Fp2w*sI~WUb&KXJ!v) z%!-c7S|_u*Mu>$s5&;Un)dKc+4!@C7r|dXU7(72~0hCA1Z)>h7@F3Y=Syf##jt zFA@`Dw#H$zjmEUd!M~U-GQHd5GI-SC5vA*8Zar+?Q8^SamWH{O#2~Ucr_iuFuhd3oVbs~c+JGAY|LtMdni~T;@>9PlVeEfT* zo_cQ^oa}=upPcuKohq8%(yzHt?YNOnDebk#8JZZS5R{v3!$%t}XcgzejrXO(jlGkD zUvp8fVaZr+^~#hjAf*HGZu&2lDm>h>cz%DR!B=m!G%ZrFTP(oXRV!4(?`3U>W>=2zdBKaQ)!vp+uX5s_<87aC7H^eHO6teGLG-kiz-KGe)w)8vk~XPTMiD zj?{1X>W_Gd;51iPa9ysdS}FhlEjLcn9JLt*27z38oMI8(1)ACO3=S@&Lg_ZNpSBTI z=^^?mt1!YGY3Bw>8KLUhojy?S9=96#4QFsMM$pJt>qEsCRK2b4_5BU69}S#*O_i%j z#sl<~)!T(=4noAaXOwjfWr$e~jF)_H=iS_Hq6!t*PDh{V@M zLOr5*!*3-c%im&VrMG>q#)@Gzb!wWB`0Xx*G%wO`qWb$Ww&u>Y-+J=_iJ6Vx%QCuh zal%;5DH?sR7!$2AB_X}Xi4J@x(a(;DNE!Qgf;y+Ey0ty9=^)-b2;?YH?VVPe^QYVt zHH6J;Rql8P*B3yZ-!c73|0@Ofbg<95(Gly*qQz)>N0F5#zyVaV#l!=2B1@^aF8RRY z#B@)yVYKR+tHgAzKaYJy>tP;apA&~P@B-fcSkDy$!Rns|Pb_S%&m)NrWZTr{-1qu4 z%7B*@D!}5j&^rARa<=;cXikt&`+bGvtd@&lsvvB3W_r$O8P7_=q_pWl1OBNWXhYay zmAO;2%_lFQ&nG2)>c5|g6zZ5Vk)?j#8T}oIm$mv(pNpGRwnf$&&RJWy4WS)PDpNxX zi;kyE`hH5H~x=8R{!Hpnb!W3CkHdsQ+CVp(PeUg#(`dIg!Cg2MY>UHYW^wT3mZH{AN zlf-=5Uxj%-q2MhtNWd6Fe%mHy(S6}!C^`!&gl>q-wI>E~50@`R5{Sr(Dp0IQ(B%?i zb(aoh8oOoVWUUUCR}e(JjwW5CY#5jF`Cznjj&2wqR58Z@K=Ma7VFup^wWMTi*&5@y z`R@QcZ?kW~n_59arDrg3EmR%zlRVpwtkLlH-UndmdfSe>OtZ}>g;Ec)VyT)-FqkCD zr`u8RbJ+s+O`Y-%c}7u)r@m9?bn=)Oxl2!zI}i2u>vje!bHm{_ply4?uK3H~TJ&2+ zmbHql_a>$F_~`oPB0}t;Ac_6_*kCdq5Wj!cv%<~LjxfPgh%JO`g2|?QJJ3S*4226G^3;QY+GZ&k!6&no~9n!1-FMGQV9e@ zM{ZKCEzKo$@;jPuVI#y01l|F25!(ENR(h^K>21Drh3Gx%mXr^M#kZXwpO1IUex_zR zq3C~z9a9%Efx|AXl+FB6GXigbDZ}rUk=eKr6uV{Fy=Cjw)TW;htqiYBw+YN!gWv6J zZD|P3-h|o3X3cHbiT{$p_3&q8?z~!LeGZ$wx07DxNR2;t4F|<$&paUJYXvm?dFVY*XW%}4r%5PwICw=h zOt!DDI}7oP?VLC<&9!QJ#~CNf^1!vTBJsuPsV6cvlTe#8d}l&NEy_L+Xk-Ndr#OYj z>oObam}cOguz(6kw5s)bq79n{_!8jQfS)8_rB(jK9^|iglgCp=A0LMNuU{cwQc;H^ z#RM1oc7Y)Am=-a+we^W-ZRyX$kBdZ=0%_EEg8(dEEsC(`kI;zo+ItD|qlEV3!wB9K z`f+8sx^PYah=XB*Nz&~re+ljFURVV+s2IS}u~1IkD5Sy#65AOL((vM2($cZ#6BlS3 zODzj#5fu~|)K$_g*%~cYGRw;oSZ#66Rz!2V$Mp$LFJ{pno;?H&SjGm~h35hWO=U4B zVgRTwdRT`jB=n`Rw-ASpwIhnx4vxXpe;;?gsIp+;%KSgDN?W1fzuGr@j?2x0YC6da zuT;2x)u^!h_FMmTjtCo1I}@U*50|qRsU-D_#&K0l?S6V3$&ISzaZp>g=x&khAynhNxuf9vz zTa-*_8bz7W#s^CV5dQU)K1u)@h53>}=_3}kx1Cwf^%j@*EJs&1Nc;6@H+nrY-O#3( z0GC!@ul341Yp`DosC2OW>G6x}{QEl$TB8H*SbG2v4{>r0JzGPX{uSG^CGklx=GWnI zEl1%=^{VR3eSKNMlE$e@ioN1%ag$SB!MharJpjY54|tCE+WL2n0A6%54_4^J|NgHE z8mwbt+3PwJ=4;fa@P!Z@aq;2U_KPNd0@+4>3ij_r#DW=w)!L_fbM+m98kT^K( zfgya>!C6ul_CS_~!#_Pn^A$Wj8~3xiLYeC5bWW=g86wF|`(Jd9b`FBE9Tm-z5;!Q; z@_=T3t1-%4JDsj|+112co;SG3@{0vx&UrYhB=2jfn!KaAIgcjv_V;ANJs8W+(?9G` zaq&ogo@7(u(a_KgMB!{2#eA7PuXl3l9YmaY)U*1<!*(k7D?u>%%~_1Dqv{l;ao0 zr0Qm}H?7C{3f3rK7PJhwS`VUq8xlGSR<{o)rm{P$95IF`vkcYS2@eX|%4UuP*i64C zF&k4@NsZSZFyJuEdOY5;{YuSUX6GIj8ECh4?%PKp_~cGc*3jkHu7c=Zq@)Brf=iv{ zsTpTO*sxd=Nfw&$KgZTmb(U#8U8sjPOa?f16Qr+q_r$OFqhR?IiMA`LznD?le4cuS ze;%`^_#9w{SN>dJ5O#3``wugDvHQp}tiS?(rC9Vv2pWayZgx zd89wKe}F!vtbhmQpXPx@(y-Hr|msy>|?7Up*it zrRo{J>fKEm?wRDL`^q~daB%G^q)~NIjUDT5bjFXQ2Y4Z;LCCSEu}f{h^gZ8gh}Kaw z<_-@-8kWs#>8ZJxT3w(AH2n$KGB#>823NtEUYdl;T+1lMoZ$d0|Nq97lO4IPdO2RJ z_1V}w??JDbn6a%iW!~(;x#!L}RMM0J%jp*R^?G3ggLz?baOAczM2h25iux%C zpbbt`=a#T$A>^j;FU?ux#W6;Vmyr%eKy^J=GLHnJa#Y1_YIVV5AYSG@vTcCaoqRgT zi;s5Oyd&994KT14?VS4aU6-qy-l8~9jU{ER6r^S?%S1X=kQslP+%+)9^d3Bj)MZTaYqi znAIoru=o#pkj(e|E#~F^dWZl`Kh0dKpn*+N6zco^|26g10aXS|-*h7>-JyV#NOy;% zba!`4r<9bmbhp5vI}VM~-6`GDQr~m%-ur%ko_LSTo%jvRN25&|J7zfMqqQD~ zR?z(%xstNw?cYM1;uw=VRF}AvBrA3}LR%e#e63ntF~C^3ve)(Nz+P(fUSD#6IU8M~ zyuHmgWPD!0xW8%6&D!>UXg8B3HW}!wFGj+_IX>IMc)C6F2YcLCDEVBtQ9LaiA zyu$_MG!WoRv#;3L<gf4Dn)tr%A zC2z78DoS}uKisldvSTcVcX@O;iOXm=VrT0XL8QyMx`wmbU>$t*4Tj1v8m{1>(<+)@ zes(7)!}j6gs`%FL1gFXAI?>e6w76)!cz0)gIHn?gVH`J!%4CIh=u#(tGdvt#7s`aC zWZ%k)v&nq~>+_Y|KtNz4CQf>o`*F>CXH&M5>r$@iO{Q6M|b)@F^sjY!B6yU zCw`9(M$5N+{%9n8J3+S|-g18H2>wD04CE``rt2LM$b*9*aNwi8T&9SWVOP7Oo1M|O zS1KCUO66zfswTFF1kudc0vlX>^K;W9H230Nwh(+GPCbpre6!`YpA%Q*=T`|+jy@N> ziAh!mc(~PdbVB5ZLY^4@o%cj2&MxB9x|IyxOKz4mk-u2>)No|YJ6Q}{o{Zk&Diel^Z#qNSjZZ3g6q>URAs9>;xTnky_F6FXL zuRjFIf>#6$%=a)M*l@h)cYfzx`iz+umSV<1Cn=`56y9N%D&K-KYA`q6fTs*CcB@=$ zG%;Q0^co!x5>Y#^t?xN8Of7)QjxF^xCWmx+u0L}UVUIr-n`Iu9 zj1#~CX^jp{n>QsN6{EO9WhywS_}nMF6tjs_%bQEVlWe|a%9#jAbV=^vU$y50RIirw zTFsoNK1VEDD!;!zzUbP`hBxW)V!?e)Uxs?%sD=gHc$2J?Mn}|g>r^8^Al+pb2jk3v zy$P=RS%*DI&3VSA<_2r&VcSyxXhzX7aN>zs-YK@Tc=gy2DEX&NbDv(KFO!BFjsi>s z^Jyd7^e?1BOxxM7qWId@erGMs^X1$NV1(~TZEVZ^&Q88DdCcRO760l(g#M*f2T^3U zr|06mlQLD2kTbg7qWRXX6aK@QFVu5E4yFY2=(b8sv*#jyGM^JT<)d2vzPh7I+MOGj z2slJ^Sp8>9OP#oM!oa&KGgqpXcdMM%KA1RBOr&`e{e7Q6PqY&vL5E6^O35-{W6OCl zJoS^3R%9G%4=^l0mRHHYPnueJD;LyW%dNs>rb|3!1qdxyGr3`^_9G9k`-fO5JYjPbTvl!zwzIel8t9c5`a!LgUkDOlS z;z-w%1EwDw`m}Xe1yg-+Dmh=>6O3BGUwye0@KIy2aZK`JXMx+ZJ0!s->guqKr#0)= zteITUL+DF(-VfZ_4Vo^0MjxW9Ig!a4i6bCToQf%Qv;)J0=QuO7I1uE!Uc4o(p?6gp z1zc6AC(Uo6tplkwhc!)21gVMQC&Nk>Y?avpR3Z*5X!6-sc_jekPE(1PhUk6vFSzv)4L_*G4_zjDZ}+ zsYVpNk4Y%)9WC?f^V)q0y_S;#5y|Abj(FzI zE@u8y_5-#l)VeO`U=!}>2~Lcl)g^UJ%c|p3qDO$TXuDMC-Ds3csAa1-ZtEJ zm-61r)w%EZ=M4ztQ~B^F%i|Bx4!;|`O3|D3lMbtrW+8R65Tdu7oLQDD2RilzqaFRE zEv9gbExbl1VU~XHeW-Ofc3f0~V;GtrKN@CDiogvgKs`Fdi*#0Bax#vs9o(!6tA9K; zU}tlzo($oH4FmVESn_djb^aZxz%b$wwQz-4Cj za?7)z8BJThu*c=PjYMGwr=$cgrCoE&H}0A5y3} zzSzzC6f#tQu`NroQY=1uc;8q_45q%GtqPqrQWON{!k6R?A#Kckobs3jY)XUKOY`zr2ShZUEUW6awf)# z{YD0?PIVc;#`bE}dq@Xv|HT%DOEoO=K+WhHo+koAu0%HUU-c?A77GoSj~_w=LeyoE zUx$l!O}vK#i>QcCm|4@>+uLEirnhbMQn{DA29mfya*%66sR2;+EwtuU&)+WJjZUrg zdQ7g$j^hwVu~;2op$Oz6`_Z;4-I);?No2d)Hgvq2KVlwz$W{ zVGoqUhF(GbR&WHc7p)V%n!JO{{uy*cg-pI+nagMP7(3>)Kf_lVO6otbT#-;(u<5CWXK zD4e7nopq!5T3f!{2jbp(b(sA_qujW~h!xtuv)b@plJLjiAd0P>?|9|$7^waV+c?$q zC0{Kbaw&#s1N^c#7g@diW6xo2!)VBi1d3*18z$=q$JA+Hw4YpbM6%Vd>2Xnd#aZxl zDhmEiTjL8h)imNe9Ae6lzJcWTX`(|SSw{zD`*zBe`gosetyFoMy>qq(o!p4$^4U)< z*}hg<9DYhDBZv%0*Ri?%`-&@>C-{gi>DqGYuQxYuC{aNe!%L!G0R<%7rz#s6S$!I7 zaCY^>io4aO6^Up&H*dF~6jY64fp07Si5>{k$4m7v4o4;?;uaLmuD;h>GnbTPghJK7 ztZ<0(LJ2|djH5etGecW64MzHo58dn`3!NM&;N-Vf2^2$jK8DAO{#tPFVxdB*7VsjL z-c`8DIOfV3V(w58wm`sbQyqj8T>lDA}R$uy68?hjz(L*xa z9w4t*NNl7NIsx5&E_x|;R?ju&`%RPes-M_lz5Ql&Yfi-%Xytu-Sk>uxx%UYiIrsc{ zWAJkVOagci+D3m_J48+Lbn{1lLG^GV(TTZ0KH@-NNc=t`f^RtO!9$U+7{C-DF{O+#Ec#k*eex2tSlPDh! zXR0}^@bNP55%xJ|&8&X1Yx1U0{|_&~&yIR0`!7K(i7%`z(Rn+n(3a^=pY>n+*Jhio z*vUTpBbMUFbkO$5B{sqQUSy7G08%yB^0s-2@oegoZX;@LHW zevE~F*F~|An6nXY=&f51ELd!P`0mVTxoSSu>xby@kJVUmp_qaKnhBp*7}=;vKV{f` zTNs>O(Zs^8-)*dqYtAvyNWB1NMF1c*fV(tAO&tJf7&%B9PgH+4(^Z?E9ECMWqpUH( zpGZrp-)H#w$8EP!;0kH6Ny^0h*5mTbKKf*}f|bXEb=CTuM%V7kv-4V(7lB1>m0^Lu zVjJcK<_Rhh5@!-Oix-=AlSF`Twc+7?xy=Na8qX#FWcR2+1iuQ;gV&jAv1MR=jyV03 zrgpFR$O)#)5(31x7Bcdl0Tysl_&D}8M6s3`u>pvB0H9?AAfg*Zw3WTmm*lZ8XB`%| zf_@+3Fw2Zcjb?rMD{j3~tFcJcOhL*++agattE`m2p8Xs4tif%7^_h(0WVxBYTOPLP zwMA~q=T^Ru#xdfq}WZg4~W*a2#2~(KH+rjb0K0nXBpS zo^W>BEFs#*c?tYLVGh8fzooklU>TEF&5y$zwsu1ld$1>$_AV%GW*k`Ch!77UplAF3 zdT>7v+6wC(mCq<>@QXI~6P|nUQ`9%D_4CxV^z3O~7vx6dlP97alb;s^sp`*cx~%>2 zwyA!sXNW1Bn?1XUM{zhm-MQ_aHLm8+GQO=;D#0XuEF&nZJ5XXc9?!cg4oC7&PWa@A z==&nuhf@Ns*93Q#-emH#&@*?h3MB(Ntazhy<@rE$;I}9?x1q^tz{!mqp1ccqfgM*L zw}V{m!yIcHHXo_oa-I|27Nfr4{p(eMXB>Oyz<8xywn&$pji=_a%)^SbPZ=X?{*1P0 zJCdsgyA#P5Vfbu4DH$0gN6XDB>|^cxtvyTSjh27Q7-||(*Nfnu^8_k|4Ir8e1-cv! zG#)OyJRgog^m60q*W?Vv{7_t6qH0K)?M?9D~PMW(Wt#?EundpJyVssq4?}Q zDJ!j?gO6irlMmzKP;-?^`jiI_om^~UV@T(^7kIvQ7U2UsHyjJ)shb{9;~ux2tSak} zkY?PBK2vRW((z;|;8+qfi5|Iq^ig=fA}AD|_?x3TUrwjPTYho@_>eT?hjg!kK%yB3 z0Ktg8=A!F0v#^N{hia$y?$5c=gib@7>RTLCA9^OHzW!)p37gb>6QrOZGF+K#Y@^)T z7u%rP>9x$;Qc8%R7z_?jgVTiPS(tyA8Mw7Sk&Bdf$R8UhJ?;6Bqgr-Zs$H&NrGQn_ zpj)n1X(KWs@IzAo&yqeTAX@o0T!yPkU7G%9SJCfBIkikFn?^d1g(f3J{4Tv;Q@?YjeGn?uf}lc=a@Ebt-T$I?flJquW0tZWtm{D ziKXVF^I6Z;)h*4*XA)_?Xx0I!;mEWo;V?<`vJ(0n^|IUciXu3S?O=A!ktSZJx0}um zU2ChY%KSfR2^=`HBSif4?l^RG;xRUr?fKj6R#@L#8Wv_WXM>`pVo7+Yv_CvN4uBVU z06@j0pK<;lL0YvpxoqJ6!k`RVqZd6E2*=3WwF#IlcPM~=7Rg51Az$&ik(8Z;%n$mn zYDKL=DAFB*w^w6dtuE`8-!GoqnqwEuZg_#%FVT`EDsDn=;jVfn-C4R$_T{uuG;SZ!sp(6DFMrrauU@A}>)s7Y{->2QCHr)cc{yM1q=#4aRU zqRnBU20kQYlYcr_i4GH|UDJY@nVD(4bPD127Hz!w74l1s#&BxaG1RY&bfpvTPkw?= z719nazYRSp+W|O`_06x$CVjt{Qa&>hO3c;TEabx6VGaKJ)pLEkB;hg)q~`hfhRu{K zR=7*JPXF4QH=-puf;~(sOn=!aSt`RP05ga%dvzxr@Zb*qga}HJBfnGAd0uV+9a5e2 z#o*L0Q&WKdLkseM_A4kXjMyKW;$>LLXx*T+iejy3~71xNw7S zuvk@K%pX-)0B^XD(5Z~=!-N0eFWipi!qn^3ReLUL?5}vfz3F*F3x2R^N5<`sxnKL= z=1f?E{2sj~&}wx9b17rhrgo1=dZINeL~M_+=Sx<~SMpI`Hm)9%^$_ZCIEG0*9Z2xN zu6PGtA^BlOAz9|G%b=7OTl_jPm0M1W{wg|=TzrCuWyYe2;*&fD;+0h*PU z+M&TL$h&QsKAj>K$)ainxZ|CT+#bC3fJZE_E|cwkr?=_jN)6B5_czANsDQ$_C@#xUE=15Vd^(ddFqw^g2QI=& z)io`yRO?$OoF@n-^G9i0zVTlVY!s4|Ys{K4{h|*l6(Q#H&Yii8Z$xzoJH@eE=b*>4 zc0g=*RifR(=62n~R961Mao+5tmB0b;&W}jQ%zpghjUhn9coufI9>-d(#0ecq#qh@0 z$hfr-;Pk!2s?6j@$R2m(_Vz%Tt57n0kgdu$TMMKc9_d>kU2-(vbuY2A%~e_kldoJc zFF*G`ukUO{QXi@t-D4O~3-J+)Wo1Ni1|O^qe@a*J!}=6{JfX8>H}sP<&AaDx|N5+j z1+O9c^r(qBRYchq6FRwgoC01o6>^ml2HNyAT@ZK7GF>njs(fK2fW{vu*z~+u^^MC; zh~7rc22`|ve=4a?wc7%|=JmA6L$lJ#aafF~p{ojs?iHfnccDm(`3C>z*U6pS_`5g9 zn=_@yN8>hs#KQTUp*q{xF{Eazy3a=r&zH(k9q;xiT}ipH+!eZuSLaIz9fb2zyk;1n z!jf0dQWuB>V;h3RR9FJu!TJuxbj_4&I9(rUE!;`Gda!uh`u8f zmE=HiUSAuwSRc&owrsD!#`(T`&6na|T<^umg}!&R5rU(`IUC>Xyh(S|yj~`ApZ=^2Sz7cY~vu{$bZWK*hqJ&X)1O#DYCWnP?GY1p84|wvb(<<>k`e zPep;shj)`+d9ml+RdjJ#*!sE88P`$8<)-b=n-k9~CUy?TuhA74vdvzEW<=5IDGWuN z3oR@Sjp{S`H?UK;US!ZMivDGG$Brq3OKfKf1h;vA>cR#Fk>L2(2v4Y~EJgT#UnHfb zMhJLc4-Qbi03A{p?m#q!GF=h@rv>!1ySta0yreRWP}1k9^t=muk|>c6+5KYVej$6z z0&s^ecE4eF6#dlA+ubsk1#a&dx5w5_871`w?v|z^+6-Y?^!k@!r8MqNWC}nU;O0o7 zPKwpf?mFC`Q3EDFtq7OzHB7^~AI%3YFY7`=M=lh?f)L<)R_I8erWfn8fzV~9wtx`P zySXbvPxMBg3wl9+Q?~5gZ_$G2nF1IUf6-^v;8{|V(z;`Hd77I3%q{9WPfp$HG!qgw zc{mzmN_iQ>uuP3dMru&k5%ZQ&zF$~wJa-AY2RZtw{<1M65Uma38&h8ma;-)@tUjK;tESnvZd1}%8yO? zbp-{p?V%{6$1Cs}r;>(K?u({lr%TZpbvl-d`S>t-CN>eCw{zE}$(S0L1XE~nq^*t? zJC7qpsF}RC;Crw+l27To&Z=Y+VsbhXOQHz^fmW|8Ym@Jk#4nO8@(slplq}8f>(NmH zwnHtE#lM35unDWT0c(w4;os>Etb|2Wwf{P;cJsP77isx^wz}po`Oy4fk1cuX;;*;i zUvK%W&`)C>;iHXQQcOR`wu-41RCIClwS%fr@wZOG%nf@#puXRJ96Rsg%Vtx%B0~uQ zdPoWAS4Huxnktgi_}25k6{r42ykN~<0iV%|AiQ0 z$x(*`+JlPZNZ+PE;`GDjo7v}Xa6+Fa`k_EQ-~?XauWRy#`ugXh`YGYY(RPYA(^d7g z@l;f2+bv^*@6GG4s3^^!%2qA8OyPXGyPe)Wc@^#@ZApP#NAokH>mM4>Y=xNDKuD&w zOk{rgUqd^zuZWSV`oZWCsW-kSQ`Yz=uWmLr&a&6y6giK11W^=7A9JqV;Ba$T;*db~ znzr)E(g)J$SRewJX-uk|chDyq$(4CK@8&#*1;S^~>4h5xeYWFM&S!?h&cMBKx0@4) zw+}(Kj%{K)|IG{NnJ9y6@VO^k&1A(*9r`?54hlK(AbkYLc#mm#;++TWt}DFP%* zf4fawX&!d!wu*7ui#fw=vJK}Yn#8uPZH7it>g;%Uc;=g3iVHZUAyIzuu6SfkiGV&{ z$Mr2mu+$r32R8p+{+2Ztp?TMm@4O?QQo8lw@98j_t{s9TF&YD&T{1D7nuvWY>fyab zC+vigNS5xp8zSB%DgaGc#Pk2QdEeNB9;yX;6{SPSfgBfFCrUV8~BWfhMz@J16^vBA*O({nrj4j(#7_-Ezw zV1s@_MY^dLf7+TbA9sWxw=99F*FOyum6$IOIBQ?SaXPFU zou=^2C-S4yzT|mkKbdd5Q;dH+yxaqbziw*D4 zqv~udVP4rFr#E>1EfvKdAJny2Zv&RBEf|;QjS$v@gB06S11{~d%e2gV>i+gi-k|ix zGG&HXl?EPbz<~YLL-?n=3>oC6iTH{HWQ{QG0qjkp< z_Yp(H&cuY>+cX?$Pjr1eSIn@r?T|{A?M0G9((2U(1S*y2#&0$T!0x_PQgV|zFXq{* ztTHjspM6g@V4Hrrk$Hw1IOT>g1;YKnf+llaG*?9%DCvo3CPj2rv49NJ5)>Iipn1!G zZ6Yj=cm~L<0?Z&4o&$citF7d3+8*8iKDi(xKSyia#b!@A0B{(Y-(<9e7f2$ zStnieA|?JnYN5LXoiEP&3bH`794PLZU4>?>k5P?W(`zHjUHKO0g zcK`t@-+SR)D4hpE*K3~=@m0~>vBZ5tZ>Rl3B7jgu6pjzKPBgT%som@gKz|6paS{VK z0TJ9~TvJXSS{TQKoo3D8``N|B!YvQvwn-6xhvQtbRUr zRsAC0A7%$E`7F8pD^4RtbH#z6)1gl00Ty%uPIzqW0N|~cJ3-_DXboUBa6n=%2hf~_ zbNAqVf>y`(B$v7wt7U7#9vrXmhNzWIv|(m#GAsIwZEAj`K-FiwXvxTBiDxu+s|g~N z)q6C`ibc^u{3U~OKpBXZePhJ>MjHtD%s|B`X8R;OKoy?M~FMPX!|{ni`s>Vg*jr+7-3nztZ}F)~1oo1W6~yzuq6aDWWhfo9e^*QDWy zt9Nkn+6_i2+8Cb={OgEVH4lATfKX+$u$2`(r~R^}y?sKbxG+8pjToFO1XM)f`z5~f z%~j9*F22!Vg3HFz#dKAh|uy$yAa65aaI5gI-| zegeAyEiJrM49WWlJ2n8RA0Qi~Ym}U@5Ct0oK9RZ8 zH(jbS(fZk8embFSXms?IN|Bt%T8FO<2Nw+u+*GmRK<$`dB)+}}bga-5cPIw=tJhpL z+GsZyFhatMS&|^zyXMeh!|Ezb(MvWi)*;lV0ZO%Tpprf0-@@286dK6GRK9A zLIq}PAXW;0z9qjY*lB(p)Y~*IG>#H9bGwZ|v_!9L`m3t%HM`oVE~_ zS60ATP^JW$IekG*`t4qnl$6lr>J{BX32(8;$VL&(t?Sbw_Fa$GI?1i9tayjwF@ZxM z-h~Y*G)8WhwgXwh`1$!Ep`dh+X7T};s{Whv)h6@xHu%Xb1~Dw156X^9T88Y7>%t&( z5iQ>$i=I&Q+xyeb^T(Stjf2DKQXCiiv#vzrPU}yi$rIN6b-f9TV+Qy&e^9s>bB7_W+=UhDS!)NJpK#_)i#v0G7v_h@K92hDpBr8AQS9 z)mL;iPgDX9M(pY75j*Yo^7g)P)5_`1w)8Zb3bD<^Thb}t0ndKf-|7K0Q0|0foo2y{ zgb&yTWa%&Gzwz3}V7La`g`hS6=S+iv>1q?H;S3&}e936+x_Oeu&iMxPBldUiBHL#? zo0^-?BUe}qI-(5x?g~dufbgOl(1++7d?cWxN)*4Gyl6wlAmMtbUsT%S(Exnt$Mwto zsoTGYRp$#9+2@BK?K;cAFfy-_)ncSWQE<_XCJ%9l@u?fBtv6!Be5Sn2)6JTH$)TZ& zpWBRGiS6NR#RJS^=W^MXpQWazhJAW^%5zZuIh*)?t)8feSUiUlnt>9=TnZ4kwTEoZ^NUCzf#Qse3~P>b zyQwae1!){_;JTL&!2EjdE!MvSa&H>Eq+-e7iNQpyhEPI!nrbmghqVahq5~T}VPJR9 zs-~jPFG{HpB3&oF5*JOJ;Cy_1SS?0LKz+y6)zy|$Md*@I1c8CDh?{^;ZV^b;2ti4w zGSztl$~m5pBJcZxjN_pv7K#Qoi4{<%A8H8VcG*Eo<8l~v5al%=Ch()4q*p02Ty66- zR3ubKIdtm2zL?A>QhV{9e}@N-&~RS*pp4C%E=jL>$s8~k>=V!fliSrLoWbn`BlL7j zJ)fAaBxtKx&eCxUvpbq82JGs1vx`NY!y1|Gv6`A*=i@c;JQ$`K1Y%{knMJ$4zUKCO z;GRzdmDPxjRq3~*;B_HaNd0+HZNMcNI@!KmTv@!!6mH&i6*%DMce~kJBV22}n|+bz zKrB1R&huMVmi|apih&=YTK0(v50usdx&Ol_`53)|qN2^J&Zq7Ha(}cp7eC)stpi(U z-dIM;h-91|+3|S2g$ZBq0MPiNbvbch ze!o!+DBL7`ZwzNXk`~fnwb zN|8Kqi7LYsk67}{>?Pk&>_Yt-q#GoG*bmr-`6^604ZpKdeAWXIF$oE+N6&JgjD>?^B)18s#2+V2F2V>JBz{dX=0vNwuZQ8A=^-F*M!UlQjJIN3{f8_9TELgT}KZEJ-T^B(otCTuEjU#5flhc`M%4 zf&_Z|JpZI>i=)&aohko}PRfgmg@sjTk>uu!TT&0OkF+o#hLCgOKT=U}!6+ywAR!}f zWM8)4ta{&B3E`<$uYZNtVw{gpA5%ZT02-D7d;(D;A+9tW!ASEL~#j;^VXu;iFfaWCFEZ$+wbUsY0$|F+zK&3 zT|OmX{0uwH5@KRPk&}~qczJb?jG)`D;0k~(=-cIvAzQkLL|0J(p4NvP0e}~!V1O2^ ztSk_Y)bNjMd|CRx(*e)0zwP%&6#V-LtUCe9lNQ4ELp3^s^#6ti{@3+C^#m{k1p+jXCn`F_h#AD#EiI+p1kcqr_q5dVg z584+>{=0fo2=fAukEZ~m{Eg4|`rjzPccK7`F&UP8M+z4S_|HHAZjd4(-up~#pfSUL zAjhPog?E5zG^V#R|KG#^v8`z#yb8?75DZshC7uHfESdu<-2TND`S-jq1R3uOHnk@} zhu(ja0n|REa^ath`QN-zfM-*KS_n90Ab_U-UQ3|^p<;v0;CtZdm-p>R1@JQiH!pP_ zM6dsVzCnHpumsK)Haac+%U1noJ%-4T^Z!M^fb;)oRs%8Zf3yT=UeO!5tuh7%QWvDgHY&FeQQ{fQ*uT^8No=n*)q$90U{(P_!krgKGc#XBR)j zk|cW+*T;r_kM!-;zaLn!1D|1`pq`&oZoh{?K|vuvP7*AX(%+}YD2#DU;2S6z2?g;= IQNy7B2b|)1ga7~l diff --git a/test/image/baselines/waterfall_axis.png b/test/image/baselines/waterfall_axis.png index 142a9726135c503fdb34950b9db685170e3243a0..472f4304a18c9e63ac07364d3921f1e04bda722c 100644 GIT binary patch literal 45686 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 literal 46132 zcmbTeXH-pnBxg_=a?TmVL`H_3 zktk`%Ao=SJrgP5o{`uCuZk7x7?yjz`uDa@~>iztVlJuz)7f#^e;hmC|kyORQJBEP% zCpr#(Gw|rRIUXK4o~-0eb!YtfAwu-o+ryj71{4uPR~Q6Y5&r%}elHOI#`pxcZ@xoR zKI;(1oqQy9_N3D}mrrW&V>i#LpJgN@I5v9e_{oW@>gd#90j_;7M0p7#$51m5#%L9qO$!_52YAyeZ|6>?I;c`?jcmJN=J9v0UUH z`2MTYp{FnZRu2(^ycn$Uo-m*NN&IQzYnOjNj>hxNIaC%tJeI4L2ng<-dm4d99FvyF z@K!63 zL_K`xzsDuthpmx&`vWWc-*M5au%P+`3ScdNw1&P94DX_F(aDqEmDHpDzr{d00(XB|4ipE0*tyoreICf^q;N&SH0w(u(jU?45I`GR{hoXula)xU~7=EY649dr33{0 zJuir$O<0-eWqcWHfdQgm&ZCsL*ZzwO@9e z{c+>B-odCBPkRr7)lFyy?ftV1WUUQw8#QTIE#rTdfe-&H@SjotSKz}@fsplCz%Kt& zVDE1vH>QZ-h=3@$<4^t?74j!I$-V~{+drV1Q3bw6xM-k`;Y4!;u3Gf*i-- ziG1M zCh?zoAgaQXhC3yn(+@ z6HP$-S@L8a+6`Z@ilcZl3fv0$SA{FbZh}d`DBhza-!20a)&URqzAFU5^Y0MTluN>R zf;J>){|Qy#OnQQi`$>G855A&;zV*jg0)S;dZdT_e|7TR-zH-6lKjDyb`#WkGbt1u6 zFvJZ<%k$^{ne96>uxn4d;A-iA_5$&byuU;}6z0F>g$4!T73`e<{giO;e_#Q5DKd2v z*n82ng+HAU0uzhc0OJE~GOhj$^le zKM12XB!f$E0D&#PU$s0K{otd*+h2ciHj2m0exm+O{k;3x_3cm3Ddd!t0^XhGQ9sm) z`56SB;NnBIf7}|_RB)1ri?1$RLL+em=J>w^xd_hqSZ|t%;gQT3t5LIgMebH+YPTErP&kewhUlej>Af%ZI7#SkT(c zIL9(Bbt3B(%RMJ}0QZ_6X$>CZ+Wpo|2KOor%gy9fY*vT7u&u6AbVdNhiP|z!>7M?rKzQ?Vdc3jetdg-f&XD-^$t$B;(LKvo8^3O-t2Hyh3h6R z>nRC!|CZ_FAKxy$K6hP0ufnk_=+do1msQgcMG3HsciM(M?Hc8|^LZzaC!Do>m$dzw zXJVS^{?5iif4+&lb#(o5_1k?~prrA%d(!Y&0M}w!mex9y**H0sY^t}CY5jL6xxDfS z%MCxkvUEz6#=pGosDH!2=dxmag^{t>#HMoj8LN6~B8ysbs?A9C1yR?+xHcHjpTDDb zN487UnaTk}ndB|O7Trqcyke_?@Qxw7B7;;fLg4f)U3<@iCy8vlPtow3x5bNY^aZYo z>Q%d!ZEr5-$c3?{Sr3)Zc4x&jbBRPWVZzw7`pv}TLa)Bn%+gK+f7Y&WwAyCsC5^}9 z0A}M$^zcS5`-Iue>fIIjmN;Rp#j4GCk15yb*0>EC2_Cc7&SPXEi2=02{U4sYP|UPT z(|37n4yCx^%B0yeGnZJhQ3YT2`$nog+}3Bik0@A2PA4t1p{hVc|?bR{jh}ZtwbJ#Tfgw zA1ahAs-MIj7*Ur}4|8v_9zfRRM+_H>y^}z2-Da29va{YZq+VA-r^r$x>R{OGz@zA4 zpDNgD&DR(B)bovHh3l_HbdX-)l^OpUD9|-85HD5U_ORqZk5YkY3-&=y6;o6Gyg*d- z-iFT3%0PsHCrT|vspV0Wmi{g&0xvJ+IRUWJQ3ZTE+8jZ<_7r9M9qN|b)Otx;1|D5> z4^>rzjqcxHa45K{nHd>yQP7AGasB#rrltsmzV9FX78byqP4n_{C%pVT+%WuF!M29i z#&8wJ`_3d%vmR~+xGFauv(4)L+`UMH5wi`l6cOEt�j0XZMHilrMjw(MY{>siM^A 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 >L@JL3d`=_Pi*>}LHq8U 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�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 V+TpeepQ})UxNi2?l)r&_@_&10Q%(Q? diff --git a/test/image/baselines/waterfall_funnel_texttemplate_date.png b/test/image/baselines/waterfall_funnel_texttemplate_date.png index cacf1534808ae4c0829473c718e096de742c0d4e..48d8937b810edb256bd6d9338fc68ae9fc972c29 100644 GIT binary patch literal 34470 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 z≥nH14Ioe4#yju_{jL*jN@+f?cv;C4iIr#2S@>w?f&a#AF{w)WrAFhKu>u16Qn( zentk%BfengDcPD2#g6m3s!ki#UwO)QZIrm5DJKsCmFNhj5_#+@*<#=? zk~{IDxuq{ES6;W7EiEb{3*y)a3ND!2&OawdI`>buU4PW&|CmW=DA}W}I@s-SLjaM; zbd*8Q!>qzjqwv^*ee_Wci}#kMN{cJg;eGCvTCh&tJZaaYk=W$VYd2Fa9&Xy%M0fVe-qgMwud5y$ zZ=>%E=QA39WLcEwLx2Z`o$E^{*hChm#Jo#<7@N31sws zGoDk}Q-qCs%?_)NkwW202BF7@9pzH?X~a3@I>Vw1jf2S7g-Om0h@_?{2i!6(%O*Yw zo%F#C-SKJC2X0cBl?!G3SNE>qg!*>dLJR;w=nOQhKQcmC8}&X(l^_`02rk=-wt4bWI4?G6@ge)Ri*w4R}WWFpRrm#7K9kUIrX-epOU5W8IzIQ&&5#kmnk zlvcZU(_i>D$I;7hcxC#M@T>%o>0Gvp$^KwOpj-qu1hC@H{VPiIUowpN zS9N6tA2f=<5bKZP8h(ys=nXzK05h^S9~Ec&ujh#KBXF2LLCvClDM9q#f^5KJ@Sr!s z3@>1Nc=n&OY6NpS#~bwiRD z*jFI$z=K5YXBR{M=Xm~T$LFxkkQ9N98Yl}T{8v!sjs?PT7w0E}zp}JUL1`9KohZpLovj1JVUkGW|cj~(aiiL~8Ml+0&q*xuFot$DefPMJL9v7wd`y0M#eTKS|} zs{d+?AQJL>TfD>3^Zx8SGz5Ke%db$g77w3Rs(H57mhIgbJ&cwJT^}NnxolFfKV#Ev zhHE&RckO)rkn26kS0GnwI(zv%~p2Y@{~y$#|8I?cR=)fJ6*w`?XpE9mGBICZ@RJ#sP~79zSzrE zGw<8jhxmPgGW1xili--we7XW1{NuEJ824hYdV&8eLK|%7^+~bkt8XqR;SmwunW4NG z7Z(?kcrcH#&5MioAqsZgFXL5 zr*T%(HU}>y987{zK!6mcgM)g6nJA|wOWY&UrMIYkPN;%28>_2M8D-_=rM4R~L+)8b zdOVQ%7@L4RwQ}P_jq~o{#Bl zm6ciRFLFQ$&?cAs6wl5WSy_h)Z#KvB@xRt>Gu|WR9W!{f()sBHT|0j1flnrd@W*>> z_3G9pOeiuV({Z~zl~2gkmLf5k^iQ^b=qB5fZ}FI;`q}pFH(tFTu3wf5%|?5{P!sX) zUg7D48q!M&oS~uD^e&8+MhNvL1Ff=J^)%-6*C!LbD6i~tTVb1Yi0b{8mm*oc<5TK+ z|BcvvPtBO6BZozw z$S$AN$OTZdP4{co{Q!CT+4wqO5hoV$rSJZ?GwrdjS~G1dB<|G^cGqKz zT-Cj)B_g*-h;2Z`+Ih3Z3@44n*3vO+cF|D{_Bzg|@Yptijtc?%p(%hb5 z@ouI|I8)Z5Pr-lwX$=VYqm7ku4a=fu)lcw@6gi#I3>&YgW{r%h9vbGFYY@cB0oV}3 zrH?>d&N~f%Mj0N0l(FPD9Ju&iDVg$>Sf*GQnX%XtOKl=eD|j-Gb3OjM>z~FZ(}DPO zE|FUyPxsoeh1$XNn^P*|CyO+=$`QxA$UQ@V6uH1n8FF?XlzEaP`Z#FkN9)~wey}Ak zLo9RHQ@3K(XOy<=PGlD{{hnpDt&-4<&aLp$<*{b1=M(LqFOd$tpH@WuF?XPLVz_e)M27V>E1eq9{| z7BoCBhNNeL$kGaeY-EXaoNmwoi(h^EBw6-ev_)8FBw$TACI}q`DqU)bO227Dpd>_o zV9iTJLT=5BI{fJ5p!;$GW9;&fsAl}2uscl$X(DIt!2~YJUNotJaegjL zZ(dTD5P%`QxC|`rm1~h2DNWa<(DPnE32xTlvhJ$Bz2xEwKN`3U+Cd9-=>4k3yaxNW zAwtIv)g6|E;Z=4$49(huq3R8c%HQ&Zn^R)29QW>}Yctn8Dc><}QIg;Ppn9g43dYWn zU<8MNgNg7aFH>~~ngM-7`I~0gfuUcTHYeOFmel;1DI$Ze~%$DSp#Y^VNU zU!vfkijf}<+Y}tIDNm(oUXhAIVtz~=k5)Ga5228IXeRd7AWXBMQbQiohy+6~k1e{d zUA|3)a=F_!@|bv3A(wYNT(a_C>J4G+hM-u!L=gup0H6_u2vF) zXT77VIb1m#WN(Fk+yjqZkE{4p6`|v%UU4d@dNVoI>R^Fh6&L>J6a$}bwghY|9wVru zMn0Ej5Eg+LBe9t7by{|j8@Re>XJ^NAS*GrtAbrt2+n;;LZtQ5Hvha@Nb>caJQSnTxh0~Fz)``&_6pI19Sj@2*U&U%oQgA&PNfa zWE5Sk)`o^wD&DKsc0+$G?@c_18KKAd5-R_%VPP1v_$Pd;R+%R}`dqV~XlAt*qoRL% zees|-hMdcC-aI+r_U3A3OhLBei&8$`t_J?jXIpSQPX zO_?S`saN_Lu91j%TB(ui{!n1?ckwqG?whKe5`>9$~F{n}-bcG_527+IqE96MMsCU>a0VOJa5M68bs%8%R z*@tw2u-X~H_MrhwO-+q^(F?Hw%$Na{x{jZwh!%l`Xja-rZn}WxyUp2nG+%`saQd7; z8{p&AIPjl*sO1b^E8$u}eh2a#n~G(ir;5$h*-P8>#WIgHy1UxCAGVq9>e{n`>~oI|Zx#jC@gIs?lVzvNIe^=6QlQ3TSUmjZ(s^=IPLhI_xb? zVPig{3AxHhK<@Cu0ZT_Rf1dvY0gDQUi7v}xrmDNU`%rbrREcD6QSl3q`G4RyxnDV0 z-H58IuZi8v&T2}f36g@|0}k&@Y7*olf{>9{Mn(FH`Cnc$BWy`>eU?`(gRd04MK+S& z5xJKUsX31SY6_Q$4xTdH4=Hklng`M|`K9bNlD=#+7M&jznfH^PzCOeW54-I#bQLZ8 z2OqIWw|k~*tPO_Ik3@Fs7o!V7gw|c}Pe^TMP``>aZ~%wTKK7+s7{X54;a|x)TEcHV zQU|=b!Y-QRPo$Wu#8gLJ&ZCWZc8gBW36CZ+ioP`V4UTqInppxMLUcxIUy z*I7h^vi~eCVms#;_*$SaG!qgys{CCMDOm=hE`#Qn{%*YR5lihVUc=4lj8gyl+fFr; z6y#gwuEV9amWBIE(^$r@VQHXfBf)5D2 z$0#9YuOMo$40k*>MvD?h3qh=ECrHmf4Noy%V9{`u)WgZ{fjFKiK>REUqmO^)c#hQ1 z8$LUGh&-ty&jBEV+v~r=*c7}vpDZ#DWY8>XY~-yN{P*#_k}hpNqnXUotRN5o5}+g7 zKdi^0KY({|10o*83D9SRmeIKd->N>M(Mh1Bp8ot<%X)=^LkTZ^8i4Ybxb&AdXMW#R zdcpkx&GsmWk+-Z(8P^%riM{v@c{Mh^Y{0&=!iVrvTS+*jjV zb4y}7X0R15NI~OH2mNs_r+xasF->q(|H&SWV7&naU+XYHt+B1BdOipppH>&3+?!FF zI@u3z6eN8jKSEs|_fB(oF)>kH(gHZYoR-J{C+dSU{PGu)DSdvzHIn>fYYdZ0qW|sx zC-@9>w*&9;2N{qa=$`t|;6wH23rC3<$)$uy2xY?S74j zt$@6$4V^AoH{^V~pjb{-H2^fi+($&k5&`u1seU`!O0=fSR<;w!mZclZ%ASRg@)1fW zadrTO){j9UCmjUl$r3$8GPlDQvko&BP9RM$vENZ12Ehe^M54C|JC0Q+RQsC?ayPC^ z1xfgDLPwq7_8*xffCAppl%WEP`eU&L#QHd9 znt|`}kA|fo|yDh>`Gf9L{K;acfJ+!rN@+ zE8|g%=p+N5DrvMVaM}wr;17t?im)n};uQkdKM7!z+EYQhO*!mRz?6Jt0_gM?kaG?1 zKYE75ZZh}_36}k7ZvEP?KS<;U<$Ch6vNFc(S1wej)bc)zI#lr0m{uExlm`3nYWjK^ z*I4I@;lF!MYBI1y6aVGyAcPaa7a_j>dK%3^86JSdT^UsW##+E%=%$vF>QBCxul76N zgH>x=Y=VhcIjuo1ue&*#8c|6$G|uNs?9!cUcRH0 za}hU7S4Jr_F7l}#HnTR7A=E_HKI1??j(VSKF7$&z0<0VvtXv%9d6^Ueyg&ZtR5@KD zhuKF-mRcmx#pCe6f+x`$^qA@O$Fn^YbmKm+r_h{f2}yRbKlpa0f4thWIZ;eLC~&4( zE|>*e-`M&R*gV|69mm^Yh}+Krt|#&gQi;#eHN{?DjN27~gtS&ZRs21W^Ipmt2~*0= z*5B_{YZUstuy;3)N7IC6!xT%hdcM;13gKSc^Tf(~Xng%1h4Km-dQgXhJa zEecY|+C=-cInuTpu%^|9Or+@rnt&b-3ElC-6q)~>#q~SXN$rjoB~8KafXZa&)j^Xb z32vvWf4)L);+D$1Lgi+K(?;N`I+i%~FGWsj1eQ3=Y}D$PTORi#E_#adIP4joZ4|zI z9Y#pea}+nVRwi53bV)#mK&i_Pj~c+Lu5eq{4(}q44B%=5hx_Y*_4!PTCnhh+*e}Qi z{Q*RJ)r&iiEmA4w`_}=+1m*Ekwjk8sY1bP&W5*he4^2f$DP>FyMWFZ5JDN(a%$}(i z14DlB{UadU;lwu|S%h`P_-j70+nlN}(bZ!}rbMOwKrE!36L&hx)w<+>SRcGNooG3@ z=J9^fy#;nnAxl?1Z1}%XTMTFgJ*o|4`*mut z#EgCI%Q@?VjSL0e7Oi5!XGE50GgjdCqG$|J87Q7eGX;oh+*uS^Ag)8@ar2hF+>Sbk z9zNBD1I`)e^|A4|muYzRm9uVn}e_|9pj- z1yJ$Fc%P0o37z!w?a-}>Kt|AZQw4}M zQm<8pKQCS#;19INZ))_wZ%tP+X|kw%dT=mTPXudMyF5Dx1B&5e&}*Dm8uBcQ1>W&z z9sTaYBbsZ9)>!+cK`CLi0vGxV1r36;1BB=K3XcGbbm+x;ao^~-k}ZZu&vfUi6`OV- zK9?1ZMosBGS1!~wo|}rnyL+==FYQ%YLZqJRobK0zv|U%$1y#d+Ahxj zp))nlal#z?wB4vqT58e~ani6@C05yfcJA_=nQSH!I@n& zjO;#30{6+7Lg~97j8Ro@M<}BlSGyyew)1oQC2gY??YVaf%lmb~QM~lWBDHFUM|Cph zb2h@fdY0GJN`kN)&Gfi6vGL|qBULIL_xWu}8y5Q+E;%)13(e523c;f-uE6^^G^O^? z(eEmK$wTNLEnuivbDRiyYH2&m2F6MksS#!+YOc}SUNgQX0@(Bz?eKG&P_XrXauf+S z5SQtnJZU#8{`S!u5jEq5FUsPO-Y~EOUu%5_;SU41hStDh!=BI zjxX9d-cvKdIxemzx)Y=`#O_@-)e-vwY3#5;K~^)aH=}A zi6SNjl1YQ!D>9I7k=-NXpA2c&beJ;A(`jn7j4e61;f2WZA0dIh!&O{$&_EBe-MPXO z-BoF>Ii%Z%6e}=^@z?f`;1LYU#W<*1a9tk5IrBpiLus1?GQWpLxUf=_6Mjjh2Rnwo z*?l~g-|7@dt3RBLIm#3)>%!&Ae*DV$74iagv@`S=e(9pjpS>&>OkM8T;;@4`k@xuH> zivEW@5IrA-(oGyIq8JgeaB>ER-cyB?3^0yJb16~{2jD>OXvExN5%JhsS8;L7B)^aEL)WkEs}#-t6@76_BB1D=1qB}$6w69o0tw-9 z(R`spsRAQ~YV4XeJv6XRi30J(w(LdJ`Bn#tMr{9=LS4>% zEedL`_{hlSNT&Z3ZeM){ zCQA*R9Zss}t#i4q+j4tgsv$3x)D?ga(35zBerq*U zQcxhnGD;aiS|!g&4@+gRsMGBsSmp%z(N;*?r(3?p6Pl!UdG5n6&`k`U5S(&DO7o=b zfe-$<+WnzNorhvcE19M5Ky(sUhH1T(Mn)=>xZz)6v(e>)zkT?*zGm{&MG;nuMjI0W z$*#0tH1G&mqTG%o-&YYikfhM3tHuN%N*p|ZWa^1Lps~M=J3|&aT9PrOh(`rU&tQP{ z0Q7QxyZ5JHEzW^39mMrRUGp@^iydeZfu8l^h%j~pt^joSJ--L|{a-{ti5LYu^c`H5 zA@E5{7I}q{oD!h z^=~;F_H0`3W$C002AMK2N4#)ogA%ac146kQ*owe~BMgLFJmJYNU=hu*qP#~b{WA`< zZVA}L#03y&G^*g2?qRzL>Le;*c(2u4TUb_y*=w^|IEUc9M({`(%J>#fy zGPVgSfAzU(ogT%FKFMv^T#wX0HDQwGe)A_Z=!$nGOAI6Xq`Y?2VEp#^D!*Ma=lwle z883jTq71uKa#fD35Kp6lw9*=j3a#6UuoNToDy#`vniGJCV z(_W@hk6q@scDEOKKLB@8Q&Y9>ghH4}E9>lD+}z&0X>ed}xchN1fz5=9Ejq7Z`58dU z{OdXvI$hBhy+fBm9O&Kea09r&x{uz&|M*=-crB9Nb0|4-8t9oZU=T)G^j_;Z_fM$` z=WDi#h82g31`86+sVOouNlx?T98@wSO%|j}l``kx*AfK^UFPH(1;VJiHy-(cOy~Q2 zt0XRH4ukRDTII$G++>tFpTRfw3B37U+nX z=YcE!3Zab06#Y3F=e?p^HnJ&y^3aN15(AT-&im_{RVJ+5k$Uf6a$9XHEd?!P`>def(ys(QM9QxW~5GDwZ>Y=LO14MDf_K2 zhb&I@{4)+GbokHe;JTZ&)d&Jmv-l6_A+R~ve~1!A!K^4-r%5mLAlp* zZZ}?#^y=F$O7-iTgUO@YdrayktiVZ@k%i+ZaflJV7?A^Wxq@!~woytPUhjT~z5eI| zf#62Y;6|1EH%y#!uB_wQ&JP?KeukpgDrj^0R5x8ebMQFyu00hjtl#Ig)u@*wS{>5S z{aVykOqb>p<2%&y#dfGI5xnO$GLz~~SistVR=`STyzji|b9%pep+yqk!SgcV^8X z5D~y6`vRUO3Bl4c*@xQ@fCcm(%nT^Zm1tnzc0`+g`Kp<+nFF%FtiPiS>J9)s9)YE@ z2^R(Z0XUInH6R^XI>f&0Df(0hWSdDbC|0*14)5>W1w8NzF8%m{cb0lopEj-)lJ_JZ zB=o5Utn%{bvU(g#5BmvP2pgEg`Uf3?HFf%z-$V6)2@R=4 z0ZSb2X%HX0I;%8zfh;#5%Jp>_?HXRp7j4Lb}-#ZJ| z9JrOJi1KHbuU|keRR+G+6Q0QM_7v-?C=*UgC(H3L3y@lnxg!l&K2+kF-}$;UWsM3nTEinHORf&6ash57cDutGwvFww59(c%3B6R-aMAU6s!$tnxP z*?k;IhTr8(KQRb%gMKrpa#?}g*#OYGr64(=3I9127X)dskmh;II7PFKeIDDA{cW?7 zZ6D0x!{ioP%S=qx=3a^ogFTLkj42M4ByJrwHB=I>!cfvu{pLrL7e`%h?e=SFb@EUh zU!zwLE9Z?xH;E$jLJ;85K=(+05*Id%(bn1T5JC$xVDQ+RA-c$@m^^R@dOt2+5&7m&7D714b%0)J) zS&LWMw9K9@2!`adeVYEZK)<%i%MSrY$&J)%1D&ok^FLbY$^=a#OJfP|j0}ta+Ah+o z^sTixy)z;mNRhUHm8)h!I8*c3mx^SP==F^xb0a=S%5NU-wxolf4f|rPf?!YdLi3Y? zfUY$_r9pQ0zB?xWw(moD&)P2)`9IuDCkk^t1z3qqhlN`;vj_}2% z2nRin31_Q(0hUhY84K-?+_;o;6lfRMfHHS|`qQeu#+P zGYi`<@c0<@34KOjIg|mOLAF`z_Kbx&xAk?m`2-6!nf>kchQx(!D0ge&&H2rG5)+|s zoaaGpFhUlbwoCMG2dW4~%CGg{|OMx5}f2@Y;!*lr5Z zhn*q>&O46}a^1Giij=1_f}4J|*4z8o|+ii2n>6}H@Z z6kPfRlLQ(dEcPV7o2MY)mW?%lK@49*vqkBjb{vG(Ysns1}% zs2qEDVvaSqjQAYlk@xp>oXDibw7p43b2VP;r3}1R)r(Q20Cr4=YgNbc#t{mdhL%_- z(KALonD+?6W^SE@j0ck+xlI=H7{~5c&`7@m|srq&rP0()t4R(@|7-y@|A2g zUID4AbsC)f8<(N$i^=Ov1KLLAT$#!8O*2~yQsrc86yLZh*{>i=Xj!i^jzD$L8oa~m zN0YHyGTxn7{umVG?=$+T2hJS}{}8+Q>%PrfND_{FFQ*zU+*7_5{KAxiGEgqsA>i^r zA|7tMSJ<{=^Z7>$Ab;gsmwA|+`r?D!PML;B-X(n#Y;|eg22i1G4(U9=_Dlk-y#|=nAl<#Pr`(Q;RVtXZ&_INk;Kq2M*-&ugSRi)A^2z7-ekfS~g;CJIiasrtUU<*7@%C{osGw|~Eu6jD2Hav12_e)9I;*y2 zH8BXc{ljO2hQWq0mj2lv=O8fb5#D%3RUS9Qin_cXa zr(+Iye%_?{KF_=~Z?q}8dfQXn=#UMotNy;YW8kWH2a=v4U+B0aJDTPz{D{`33|B+_np(4P6#0e1W_)njxdNqKP z?^z!R%&7WB;O$2Pn**Le9OgbP5B=T`JkwfNCYo1ko$oK+ypew?0^vts{LQi`aRj|1 zEoS<$AMU5Jqb6rOXrzt-L?kcN>nBOL`?UJZ(SH4>%N}r>iYme%n@yI2*3sa4f0K-b zoK;T9RTxX-snIBiH1qs9ojE@Vy&jaY%X6Y=jw1XA@-c?xU+Me8f+F!i)AetLOu6_F zA-mo|udBjz@}h^1e#WdVc##XwR z{Oa2!hWea+Tu;Vi<4|x+Z8<`gQ1Dw0S@d(Md}pw6EEne zN+PO5(Wc8La0ehXcmXh|VQd<0S=iQ9t;XN~SQ)`1R7Q>fFcYD&S`j9}ds94`h4BC_xiN!lv(8zHckJ_W=J`(xxIl^=I6_pN%Dd9IfI=pNcDgS7|V zPhpUqf6PaEU4)f}ljEKfKX)um!~54Lpm_M*)0RRNjE>K_r4I%?dN?t!Re^Cmy$ZTB~j4ClvV|i zs(tSJN4|(Xzl8+`;7Qy|edw1QbsiB;pqjVrl;N$XwC)ZK- zOcm8PYlDZVxfT8GG{-GknjzP$O(OfmmZ0@+T!iygT`*J;y?p|H>Z&VwFi+hGyhBBMQXvu6WYGxYnhO2zT=l)tCn~+(v|(OQf=-J@nTM) zo{04Ez3;lUYzRd`MAh$Wy0chyblZ{Mb-Htxofm0ZR43x4xcIr=q9q@>xi0RB8xRlG zBn_{q!Zn&g*ytzW5dGwQ{HQj zQR(#%n{N}hdzNcmL3iJZne+i5F0_YkjSg6dj?yk7*3>cxtxBf^t#y(4!^li)=-E6X zQM|&S<&8|+*97)HTcztJkABtY^);p0UB0jN`*rRr=r)W@ZK=ggqWjSd^wV6+QIJGQ zY1{x_?;2i+QA$!qjVDpGgDHli=r1J@e8x0{|3ail^9!V^rt=JI?jZ2Lv8Wc@uMYLC zr@v$+rc!>=i2x*}l9d$4lAZD)Ic3#{E7M9^WjNw?d>MCR!R>-mZMGJs^hd3~L!49~R{s%f4BFb<^q~!yzEDX~rQ$+Z{zbPcFYc)14EQQ?7 ziEp4ndFxr9qJHF6odi0YO5# zy98;@T%f-1_nmW{>)Jnjd|YeJHDlyG?s3Xz#T>Rsg$?~M56Mzu&*TWk zFn%Lk9)@IQ=ahFUUZm1MLHd~tZtnKQjdMxcbydh%Vf=9tfxf|jJtuFrrTod9lg{j{ z1oI1&Hiis?Vj&%$ZbuW3;%r%oV>!*~u}a3|CqSo*c4ig+lZ)u<)Je?FzdgU*&w}oX zRrNJ{Svt1G{CCy4yI5Een?J6t2%8=ZqBn|oW4)VxIv>A7iSY-PW1c-nt z*dG&8XSM^?A#c9OJ6SS*-28zZlX&W{p%g`B-OKRtmm$vWbC#&u-IU~1@4u=5d^;8x zdkvXJs3MzF>e2$TGgIw|FAfe;5Xj`e-na5TnZ3GsB3nD{m%PP#Bzd+_=f5%}3fK(x z_GIyojr=M{IUY8ZCvaVv1|m#}K38heQ;H21FB20Xc{kLp6h!KG{UZhWhee_intxA= zXC+Qy`T7Jf_3w4`1jXIWeg;ia8nuJazrux>ocWz8Q)!g{4#rXZ+koISV1e?j> zmK!*xNd5mL!Tr!vCw8e7 zWqqzp2jC{+dU{aXrp^@^G{WX5%yZ%W%NRBU$R}|1gU{Z^^7t~ssy9&d#yz=xpZ^Cv@!p(a^%gy8#4zahu@+I?i z{!{l9Fa=r={UdqPl@K~%z38D-n#}OLNtB`!&cI6nIB~dpdFF0P-zV=~1DWPeZpSOx zLlJHB3kxqn#Rsd%M=nceetW*-G}UYZ+5Smv;z#UcFp?KTCqQjqnKTqI zJDibfJ&ZRx&bP!&hDTI<=KT?0;R138fK^946yN$ zQdTc$?k`^zPKB1j^`g;fNIjc&qq@fFWgY{+`defz#t#?Cyuvo5j=nx|Sy@@yS0$kA z1;BiztZKdhd@WR=@KVt+LkJM=JajvCFdZ)slDv2C-ZqJ}E+<-47mEEL-?W8?rJ#hm z?-NVztX#RISx{Kz87{EHqIS3&;O~DrhTpErFFbG8NtZh?Fc4}=iyZkC=2<53PMY69Tj68%(=p4P7-VBf{6u5T!n7a42SlDIH`mD%FeOYZOD&V}NCLjws- z|E8Xj%nl|8tzm?5vCNA3-XhZ|4}9X$$D-?=EokX8KZ}SkNVJ7nZYhP_Vk3?ERA^Tm zq<#7{)Xr(A@}=nP*y*ArM?6-$&LxuwS9n^F3>U3NCM$HfshpP_P{TYp(E8C`heW6El#+AeEoKI3LE zGSWi}BAf`gDP?HHCm*4W;}_pN-+n8!6VY4^mB&GkK*XvfDP_nmGA|9JJ(a4X6CMM>NQ+i|+On zm<|)s9)&HZ7lR9f@dyEdYCzop&hob;#)xZ!v+bf)cu> zgJWZ?9(%1o-1$|y4f0()z3IN?sI#)K_7^>B^DYm_?AM5_f{ql)nNt4Ex(~RoFKr^$cwA z6^g?(ENqLpPsU;eUWg;fYv}jZ^c}j~?$j6x@Kf{NrOwv;kIoULP=t+Xa03wH77b*p z0Gawoef(HLGbSLHRh4>eA~96mO;$6)xA@?e!kcGne$l}Epjv>c7?X%$Qdf!1<;m3Q z@?jNj2?ppD&y83<+L{K23z5lxufO5nyXiT*Yu&MPl9DTu;^$sFXnrI)M6GujbOn|` zsK?`<7#x{H*WO~1dgF~HB<0!8O%f|o#6sqP=paSM-`pu!Xi>V*MXBbOJy`7g&&%>j zMwvoI7ehO%=&LtCdbrl-H2`T}d6}T<#xQcC`!u~xAur_d6Ah1BPPnba_ZeX4ATzMj zCsq_pK|u=zs=<$f6J0O;_3ZMnILT6qk=@|;2O6sBOu!txKmLmiK;#hcY|11WFnTnO zp=JSd@0!zHOd~gmuWQ<`(n}d|J<%aX%4?te|HUr+5S8%m;i{8Fe|AhB_W%4J%}F1>voJi@ZHnTSdQTTaF``WETP zHUiHc(Tx1SdRyA^sRo{c8&6qtR`hpw#Uqv3Gdcd!GV|H8IF4Wz@SXh&_l>ARN#S}v z(DI2&ym%J!^3Zrr4JplZv;-x@?d;w=SB{&!M7)qdVp(y-FpsyT&Oe;LZr#&FXj_jS zz|FdthQYj6$`RbzdK$DSq<{%dl!AtoQ>z#F=4bM%WPc7SHVsmSephdMtBC8}CdM=E z#+Za&4r3v!S-i@*KKmElIIk=31ZWzs)&EO$@%bZYEFYkB{0` z|DddRKuG%NIhAw(8W_$!_9%tloUZ`nvYkjYN>%Kad- zBWvv=vG9+odfF3%wq-I&uL17p`(fPy?no$S7H*gPomTMA#c%Mv=AJQ|My}1a#wFEt zZi(+wj8bE!S;0IuWU?f=gx*%$HWA>?a!xjcWkB1 zYQT-&$Yes)glC0B38c+*{WT*lW1su*j|?zbYT%cm(4su6Het>enl}yf_LZi))0YZM&a6M1FrzV4c#-Q$K#R zJdpV`Ig7+WERreyPtk4fRdsg)D+G8syjyY`B{CABU|Ii znCM6H$@2xXn)=zZUB)D%jr8dHmvvtjXYzC=n=lFzJwCI)i+ylbv7+D4w-CS63#zGO zFCNBWRJd80+|F2fr_LQ+dhc!%feLHRC#$6M;whc(WtkB#WqG)wH#lqfMusteBb=Xc z9gf3Cr%npK}Qjf0Fpx(yz%_YJ=H&^ zD;WDG(iV^l!{&ywHhy$S9a5ZNKNa&@UjNN+L4bR3CckBVRDgTYQJ~QnDjygq-} zw;p>O3-Sk`m};V~SoZJ40N!OxqXHEnC94gyDwf8Sh;PWz_~%d^;u)%B-0mG5uG+Cc zHwsk*XCqbFx@+Vb93O<*fw&9Rg%=N$e9O=xzsYBb4d(C9S=SxJ4@R-FfZe~;WLeUP z@&Lp-hK=Djq$PVna>3YN9$gFmwXkdjxMDoCzgySX{>n#1AB3zvrtF3#!?EqMFJFwU zV#|7i9fKHr7J>r(kGYNDKpKi@e|aS7)jETU4494^SQ(^KFNM^9Dq|MUP(H^~eaY%^ zHJ&_Ut?DcZ%?$`24OYHxXfBGi(SrOF`Z|7w$2pCD0q)1VWznJyuf5!!Gv7QT2HdE6JBR5N(5 zdsI%CGd(M82z2>gphNC@{OeI1msz3B%D{XIbpZ4fRGP(tvn`S&CVNA;$R9e>p3AuC zqe!D=CWN4pK|Z6GTzGmAR0f_Nj9c^%Ne@6zUH){Xl7LQ)9*)Y6=rG5Tu!X(kr6>b5 zpI@2z`APWg)*o0w48<=1o$5yPBKl-#2J`34nQa ze*5jGM@xw!#SwO_fM`HzGB`lcd85SfEgF6&Ed>XvpHwFrs}`$Cu)VfB*$zXP3Yrt^acE>H-su1zUnx(N6_`EskWh#^?!bZ z7JoDubEr2&&y%soOQ%!m3rvA#=Il!>E;ffJpq-eV)pe+UuLCG`fun20P`jKQFirC0 zxyyYa@||e2nVzoAav84uy18(ZKZ^{U@S8XIF?o4;p+#N?nRSWsflWaA=iE7N752d_ zu_uUx8*@~9EPlJOZ;2zq6jUF^kZGx~DFrq(AfwHCZ4%ze2{E;$d2(S?`sF}S`p_Ka z)^XOtT{UpFD0rLti1g8YP+ikk9bo^;qC?xXd&&>Bj5zwVu9%N&-H*Kd?8N|q`E$Rw zv1EGr&Ac2P=3d>U-Io5@SDATH3O%&13vWK_)Vn!=+8G%!aDG|}>d*ZFk6oNIL~DEX zgW+Yeygq!?48W*PG5duXhaoE&o}_Q%14-uzmq@~@{p~(KQuRsErFtw-+MVSPc1QQ& zYsd!yoFU*66uz5j_DumbxJ&WYm=Mi1#7giyx|aj0*MNQi7sygc#dVZ=Kp#_fx6k#0 zv>Yg6yC>!1bQvN}<~1z4*Y^e-N2So!VA2~RIq`f~rfWo((DKCwkaeps&li6S zr^_bzL#)N(02e0G9Y*{|WB|0153SE#`p;&y<&-K;$~h?v3l~aV!kz(r7BSX0ex95& zGBLvm6S%X7&{5J*pp5yH`8h%SyOtA?SaPq0FEbX`lTnsaGr_S01?%9J70FB6jz}Pq zuS|?4I^f6!$K2g-+0sc;w`2c#ur&UyR`Pe!!k13*r}={GV^T+LcX0;A18P0@11Khh$(13Lmf>!T@{T$)8;Ld25 zyIXG4_zvZ8Y1Tb9Q#OciW=%#X&ScGU*x6ua-N@k8a^PpW+>s*Kl<7IDT6YZ$d6LM3 zx4y5axJi?MTIXy><@tHXLi%Z|APLd!H%WUlZ@xTc$+%QJ*qG3Sh< znAKcNQeAT7z&iFjb--PW>KZZ>CB5SavSk_&Sf#iL$#ai%s=xAF8m=+FjE4RpOYn67 zI!_4VbfV()DjRVE2K~0vLh7hh5WB z`D-oUp&K4Y;AuPpNt_@!DT4;4pS_`X>)%*_2+0%Ut1tBPn1KI6_O`=|bOG;m2Xj13 zNv_nRrf|NxwWrvIp9X)*)1bv8&36&E#q|(O$+@Eq)|%1G(v&)_46(2GU(+LVd$r8sqQ{$n;@9cl9N$O zT)2Lu)z|icUg$lcoGXqmr*QXtHE=zq^VlbwmW6}3ehZw|{+?=d&}NSxUwB?4xNRnI z7L}pESW5u-ZqW^qs<5ypzyf>?L@@ABJbat=2W{s?|E*Z|=`Yg(yto6?>(7?!b1ni* zglbXe>PUU}sy_L$1XWWo3f?e~<0mo7=ddyVPISiitGP;RjiH0*^@Y-d`7=s~r6_xZ zL8@Z1`AsBd1os^qum^s~o~1nBvlze?R($7iQ-%}P>~ypF6}`Ya-(vyqsu zE-}*Rsid9(RXX1MA$54Z&4f^i2oM}OI<@#PE5cS2@ahBWyy3Y8|?PKqO_|KMD)388!Hr4?~`PkZ3HG<86w z=ywjy$^`TzZv_a|p#NsAA^+j##5{SjFNin!?BHGh;t;t`i#Ve&+mA_K68(u6=3i2V znr_|bDYNC-*cj|KR~0e1*>an`;6Xp6_E?UVac^EYRDN0VyfL;FYfs236J2H(DM@~~ ziO3z-a`a{TK5jsJvV5G?PkG-Q&KT-MtAA*k@C4=Uo{>?dwr;1v-Gn_Xbw z)x}{Kkz!_1V{Ck}a340+Ng7F4(vCKlK0cwKY*Ct*E_xsr30PC4~$gV9^bI=#lVZdLXJ!{wVDt3e;vT#dGGN7 z1BycG?We|phy5Yu1*%)j>{q8!G47hX#{+g|_87``F7VZGXyT8ErHucGVFV3aW3eS+97tWJF}BSS`uP`|+wI0K&qm=5AG?EDzke<78z?iC??^k<9;Y z=cQVNYBFqu04o@^?FYpU1cJ*CVF+}CcPr!RPewNs^EylrPoI8#j}w&V;|qRNyR`8d z!r&ZdonbvxX`&RbF_hmR+|G{-0!evsp<4SM?y109=ikRDd!390NuUJ$6I2CXf27E) z2r4_#JAZPyA9d^lxeJ>J=(lHN6#>j@H`HmcAO?xD@21?(h=Z~dTtQUl{PzGpO^JhYud*x%44I4z;? z$F_#uMbkUlT`>Hfi6hIu!SOvu4GU1SH3KFPh3C(0m(s6_LwOcE>12EepI?`Dz+Jv@ zZ+I`RiWx?1l(8;htKe4Wvr){I7JC#L=`}^{oI8U$QTV zx$Sd`k^6DSk&%(_e!4L=7u)#|n*}H7cB&@I)b=rr3woKSBvXaT!!?GF<`#4x-)DIZ z1`m%!5dX0FwK+jz3((8O%PzpRrW!mg4lC!XYeH$}2+N)uHm0$zGe(3ALS zwm-OI+tQ836IGmC=0BGo##xl{GUtc|#M<{xkKuGF%w$StqebPss~t9Qzy8ym@WD}9 zcHG{F+ZsOK!Qka9X2{3360f3KCg@ zEbx7mGIH*n0sW~M=&@8_33Wjj?@oIfMGXHrll?S`MPJXm7aidLf!~|z3M$SPyOA?2 zm_fy-FPYsPi`!n5+Y6=?^62RW)sf14J>Ms2z4V z67t~8c^?mU0KOos?otLm3aH&nN@LbDkiSEzn0gH#go-0?-g(eqI@&dLGfO3h-~&Dw zVx->l#p4IXE_-n5C`XsBKkbr087PR$Q>>VVKLV%jyu3IbM`<)IwHl)2lu1(R7Hz`J=OQNWvMc)m z!BaXhQlo%%zq0Ua(9N`DLdw6$Oi&mvI+ncTK$TDiS||Sd8(&h)pLX2x723bbik0ks zl|_hxiN>Peo3MjvT)YHG3&^%jhK%);nUEFa!yB};4V||ef-1ZVB80yL2E1F}E>o0* zh5&4|8*629JPB!*rs$af8Ryv!>6SnphcsX9oAB$mNRWCoyy>ITptF%$d|&4>%A@Fk zsA41oVjgyj84p~o*~b(xG#Zv;I`K3$t?S?Mo61V*zDQ%Km3KlGI=Bsn3K=MD18j<4 zHLjwkMbM&^*Qmsyi~4$`LLo0H#G0^a3*!vfyZZp}C&9#zU?i!q2HZGIL|K;@9LsB- ztLZwt2*ImT9}I|mhAD0WmWhy|Q#S~9dUkSr&a@mLeqm=`T1=<6Q_ zjAjysFhwCr=<8mK)E&bf{F0td$ZE*f>dzaM9qk`dz6>cf^utTfoBMmH7r-0BJ;2sI zrnAW|1RFZmdJPB=$uH*~1L!HBc!blOAqe9-HCnUdXueMW$s1XjfZ zBt8m^+&bmUxPvzZSm(Pv%BrZO<7jv69EZl-bsSF*ycm-5tE~aF>TsmZna6^{O z=0Sulm`X475X;6iYHKho_(XWRD(>3W%(>V?3iXM-=-~x;u1=NV(k#KjEv)7F;m(mY z@%3++WGWvx(L1Y1{Pr+zEo7Swq@NCqp^@63CHDvr>P9WLmEwSyA?L&8!2rxZmd6nQ zB~clvCea~GFkVq7JfGr_{8dWo2Z?5`qMOd(5O;5)4HzL@8{ zz4W_lYpVv!@Y@3y*Z*2RP}j4fHpCfndGaW#zU?Bw8%oYj)`@<&O4kQy6<|>d*D36S3YE z_=3gyAw>&>18yW@modLTWZvSHI;hm0hCd#UmKoFr3x{-}RA6BzFK#8Iv^z=}nId`13C;Q)6K%t?~_V7pleF}?u z%sFpS5pq!LEFydbT1Lb9hVJ*4SR@;KNh;h^)DoeXOc@yV+{I1G-I{3sZ9;KMelGmd zwlxJ|5_4GIh2Jfcp-a3pL{>ro7?89UdaPPFuerxR7&`{cCSz4npWdQN+{TeGhsC-@ z{M=w%gKoWK(&_sjG5)k=s%qL;hc_;M6TVomXsC4ewy67`Lf4W8NnEb}4b4NSe2oGY z1`5q^d7GD|4mYCO2|lZ31SJ&b~H8G{UdPk^GHEYtseNiPabTH zD}JB)HJHXa6h_gmJ5QT>K;ZC8Xu1ZeAxI4wlqFd$3eFW&cesCfp$mk$^jYU+;T{Ge zNi2cj+i?io@Lm=;MWG+z*;a_~0d0djL)n~#mY>|U7TqyQ&F6%fqn`l|6{Y%Ju-|~A z1^ewg0~JlmKBM5)e;-w6EZGfP*N*X=XiO+Qk^WTCph0^bBS=i*OZdVkqi(~3@D6R*H1!QMV@M)36d>bDnt{G( z68qCm=4{(5FwMs$6~e`0`Dt4liM_3W3Y_eAdXUSt#1Mz>$nDeVIK{g9^w}j&X698L z*Dx2e>|Ag5_)jz`x(N97TB%)IUSB46U+yxw; z5%wR0=syDidBp()kakbO)Bnusa(d1{Y8OQnqylLS7e{=7F8<~3|4LB<0?Es?uP#JD zVCt9y9Q^_2Zw^7072GD1@go4ZW^$H0DQNc21uJB6CIf8FLk>-*Ic zsBj*HS_IWJDQo~xApD)w|Nel?OG03o{P=91$Epw|4- zB_MQd0%Y=hZ?M)pFdil#B%Di&(q?1p1EAEO zfOl`C%p^+u{J#*f)8t;j_jelT?CjkBX$_cVk{$tA=j>Z7p$3o%z1DdO^_Ua$wGDpP zQ-8X915oD#0f^i*XxG^cdR_`teG3NU(YOYm9O!q*{sHbvP=*iTFrLTjY*Z&F;p062`B`3=|5*m=4ai?IT3)b z?ya*9xr)EbcHuBRUoYwFo=P8-6DH%Hbf5+lhcgP)tgKkTHRqiA9i`*un8u-h3??g0 zTu<(3;j=2luKG#7573V{0w#MAW`YOxWOgOR2{1&H}I|H5wr;{>{ zyyQM{NHQSL(N4gNLv)jd8opv+ViE;3;oIPqx}6{I8xE%50w`c3IZl8LuCStt9tOPY za>N%DJ2Sa}>;x3Zembpz_yi$FlD&q$J~V?0i( z;>z9Jlh;Zt*yLx^ewN8fRsl8re2a$FN@o9aM#0Cm0?;!?a~Op?;!T%?lhhNj@>peoWVd177+L?p}X81fHJ7PqoWZ}vxGn#lT80_9Q4gP zN13Njo58s^esb#&@#;FDYPXsBs3iNSK)d!^sgcr6av=d@i+z9r?vBfGRf)m7s095D zx}Kx)$tMC<*gl@8pshdyprr8|%2A73|Ni^GIu*=Wo^82bup2=Q0}glQAkrIa3$pB2 zuNL0_g1QY~at;IDty>~|o}e=iOD$;RTL~HgcQ1DfUmVE+!~o-{b#VCvKB*tZAk{4Z z2ImMar1h1hItj7e+Ip@ck>Tk!){JxUsNm~-D1d`7R zUw9JbZAUiNOM)2Pq=HKR#qp2&*!riS=9gzRGbI!>F&1<_h~9eCIo~c0z}@{Ba^!ou zW-9|}pjV9eU85&^01Dh)YwOoy&!=N!B^t5e{D(9;-APug3anet6tUY>$eo9op^9vDO_@jg+6pEu4)mtmB-Y zEl!!F7hwS;cMroN@AymZi*ppGgB|7E0B<^MZnRWD89J>AI%J+qL2UyjUG`+K+CdX$ zFAE>2B`YAk?+cW2z(sz}q+Se1BeMyWTo`BTsK5 zw#VKWJCJY5D=Nayi)KXb+m4nR;b~Nu_dLbR+ycCe`uU)L<_)3gSdsz}8Pl5Lcdn8d zTNmeB7v1RHfNIS2Zg-w=Cu#P=GG2ZAis5buV?y&PL%_R{OL4V;yKGDknDMlHpwO(l*g| z_1MLBD(vn8=uTYE>LU3y$}s-1v?d7e&GomR@FyfXMs+PnmaypVB=l~X@)5@Owh}t@ z37zDs2#%E7u<*>fjhj`(C^)$pII|so@q0IcPXZ=oe7#5_I<04;@0cj3y3Uge@)v9il;6g#&o-3_7{(b7>bLDY?e1nA5J!ePgNZ&1yJj_p<3C*)Vabkacvb*twLcPD3Kh%Z(>jyO% z*AYqA{`ZMmIb=sfGmAJbcwNHLsx`d_xYGvFN_#xnM~N4wXu{`*)HT9;lT)>)-Dn9)2^=!E@i-fOXG$=wG=CdROuqfhYbwBnXQ}MAVFouptA$n9ndZpo*mXcOj`d$djMWx0YW7Bb0BINy-{3o+@+0A^s z`z237FV8ODD*mmSl7a7{>GwyTdJMAb_kA+6qn$T*bt%NmXhoRa*vuF)++yc)|l)2@9q;dnHS((@BibUNq}H9PCEormdbcGPxu$D8unHIx%c z(MQUjI+cmQjA*AhN^3_^{OM*l-QXF~xfc+ABW@*#-4km|tI7sx3V%mP9#l24R(ARA zi#1mq_Q$q1Qc9nD9<5{~O7EYFw4k^wrpLbBM@ns8JfY~z^U5n@|Ecb0r(rP&dw(-Z zhQjfD_J}KZkjappaHl_PFRGxb(r{c$ORHaEZkgnSBtffl?k!*6kk9IIVS;NBUxKle z^{PRX`!9$X-SQP0i(hUBW}0}^wG*+ByMo1e1owRvpV~s}M)}QN@17G%XIGTc zsd>q{Hj_qayQvNCJ>j_{>|R1i8==Y^N*(EkpBfk5#Bhe3ZqA(nKvm&wkULxe#b8E$q* zywmJK^#+NCBg{lQ^w@-G^H9TX&E+@0bD$3M)2Gey3fpER6-L#7X1!5ZR<-c%>Je=p ztJFD?ErnHZMh1An)PwF$fMERXK+oai27;6Tc%M|_}{HI5K?p*baU&9W8iP*XR87LUUUBH!_U4qN(O2ty;!BAOO-M?|WXfds9P7wYLN6!T>4}I|Cb>?r zrD$j3UC-I|Vt#qoem`>1A%4>B#H_@GZhRJW_03YqC3CH8m7?y(_U+3zs5Q6E-ebpE z9?htFBlVONazzf)Iw@t6XU6e+`xjO7T;vz*Oip31iR}lWnl)CLY4W>Mq2@qL6k9dO4 zBKL$1p6osQ*67xX3g5d<_gEQG#x_l;_cUS-E&FT<;uE`kbr>i4_OMVdqSb#3{P_CL z@$s$F2XSTLjPgVlxN-4%1_nr)gc-`^uDrz{;a3xX!RF|A}KaW zfS|BFI_2)9m7Pn*V1MCQ)P^LaG)!*{ViRFfu42dkE1en;j_E=g>p zo1(f)-yt{NE|1ZiEFm*wuP9xz#<fN!E6YlsvmQkf(`y`>s{Z+mqjIZ5DGv8A{^I00MJnS+oLu*BpwOVRcu*QUTq6rH&o2V1+Na3DqFb>O8)cnMJZb0 z@hSaFirt;?6r%Fe%eWV@CQ^#4Ip2;y%ehR UJE1!U{LM8pBhdD3*H->Vk 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 ryF|Kib{ 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 ugfR;i4~~MzXVa`DfPYXBh9f0Xe58GL)M{> Date: Fri, 2 Jan 2026 12:56:21 -0700 Subject: [PATCH 026/241] Linting/formatting --- src/components/colorscale/attributes.js | 87 +++-- src/plots/geo/layout_attributes.js | 479 ++++++++++++------------ src/plots/map/constants.js | 46 ++- src/plots/mapbox/constants.js | 131 ++++--- 4 files changed, 379 insertions(+), 364 deletions(-) diff --git a/src/components/colorscale/attributes.js b/src/components/colorscale/attributes.js index 6bfaac6be15..2074e8349f4 100644 --- a/src/components/colorscale/attributes.js +++ b/src/components/colorscale/attributes.js @@ -59,26 +59,24 @@ module.exports = function colorScaleAttrs(context, opts) { opts = opts || {}; var cLetter = opts.cLetter || 'c'; - var onlyIfNumerical = ('onlyIfNumerical' in opts) ? opts.onlyIfNumerical : Boolean(context); - var noScale = ('noScale' in opts) ? opts.noScale : context === 'marker.line'; - var showScaleDflt = ('showScaleDflt' in opts) ? opts.showScaleDflt : cLetter === 'z'; + var onlyIfNumerical = 'onlyIfNumerical' in opts ? opts.onlyIfNumerical : Boolean(context); + var noScale = 'noScale' in opts ? opts.noScale : context === 'marker.line'; + var showScaleDflt = 'showScaleDflt' in opts ? opts.showScaleDflt : cLetter === 'z'; var colorscaleDflt = typeof opts.colorscaleDflt === 'string' ? palettes[opts.colorscaleDflt] : null; var editTypeOverride = opts.editTypeOverride || ''; - var contextHead = context ? (context + '.') : ''; + var contextHead = context ? context + '.' : ''; var colorAttr, colorAttrFull; - if('colorAttr' in opts) { + if ('colorAttr' in opts) { colorAttr = opts.colorAttr; colorAttrFull = opts.colorAttr; } else { - colorAttr = {z: 'z', c: 'color'}[cLetter]; + colorAttr = { z: 'z', c: 'color' }[cLetter]; colorAttrFull = 'in ' + code(contextHead + colorAttr); } - var effectDesc = onlyIfNumerical ? - ' Has an effect only if ' + colorAttrFull + ' is set to a numerical array.' : - ''; + var effectDesc = onlyIfNumerical ? ' Has an effect only if ' + colorAttrFull + ' is set to a numerical array.' : ''; var auto = cLetter + 'auto'; var min = cLetter + 'min'; @@ -95,21 +93,24 @@ module.exports = function colorScaleAttrs(context, opts) { var attrs = {}; - if(colorAttr === 'color') { + if (colorAttr === 'color') { attrs.color = { valType: 'color', arrayOk: true, editType: editTypeOverride || 'style', description: [ - 'Sets the', context, 'color.', + 'Sets the', + context, + 'color.', 'It accepts either a specific color', 'or an array of numbers that are mapped to the colorscale', 'relative to the max and min values of the array or relative to', - minmaxFull, 'if set.' + minmaxFull, + 'if set.' ].join(' ') }; - if(opts.anim) { + if (opts.anim) { attrs.color.anim = true; } } @@ -123,7 +124,9 @@ module.exports = function colorScaleAttrs(context, opts) { 'Determines whether or not the color domain is computed', 'with respect to the input data (here ' + colorAttrFull + ') or the bounds set in', minmaxFull + effectDesc, - 'Defaults to `false` when', minmaxFull, 'are set by the user.' + 'Defaults to `false` when', + minmaxFull, + 'are set by the user.' ].join(' ') }; @@ -134,8 +137,11 @@ module.exports = function colorScaleAttrs(context, opts) { impliedEdits: minmaxImpliedEdits, description: [ 'Sets the lower bound of the color domain.' + effectDesc, - 'Value should have the same units as', colorAttrFull, - 'and if set,', maxFull, 'must be set as well.' + 'Value should have the same units as', + colorAttrFull, + 'and if set,', + maxFull, + 'must be set as well.' ].join(' ') }; @@ -146,8 +152,11 @@ module.exports = function colorScaleAttrs(context, opts) { impliedEdits: minmaxImpliedEdits, description: [ 'Sets the upper bound of the color domain.' + effectDesc, - 'Value should have the same units as', colorAttrFull, - 'and if set,', minFull, 'must be set as well.' + 'Value should have the same units as', + colorAttrFull, + 'and if set,', + minFull, + 'must be set as well.' ].join(' ') }; @@ -157,10 +166,16 @@ module.exports = function colorScaleAttrs(context, opts) { editType: 'calc', impliedEdits: autoImpliedEdits, description: [ - 'Sets the mid-point of the color domain by scaling', minFull, - 'and/or', maxFull, 'to be equidistant to this point.' + effectDesc, - 'Value should have the same units as', colorAttrFull + '.', - 'Has no effect when', autoFull, 'is `false`.' + 'Sets the mid-point of the color domain by scaling', + minFull, + 'and/or', + maxFull, + 'to be equidistant to this point.' + effectDesc, + 'Value should have the same units as', + colorAttrFull + '.', + 'Has no effect when', + autoFull, + 'is `false`.' ].join(' ') }; @@ -168,7 +183,7 @@ module.exports = function colorScaleAttrs(context, opts) { valType: 'colorscale', editType: 'calc', dflt: colorscaleDflt, - impliedEdits: {autocolorscale: false}, + impliedEdits: { autocolorscale: false }, description: [ 'Sets the colorscale.' + effectDesc, 'The colorscale must be an array containing', @@ -176,9 +191,10 @@ module.exports = function colorScaleAttrs(context, opts) { 'rgb, rgba, hex, hsl, hsv, or named color string.', 'At minimum, a mapping for the lowest (0) and highest (1)', 'values are required. For example,', - '`[[0, \'rgb(0,0,255)\'], [1, \'rgb(255,0,0)\']]`.', + "`[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`.", 'To control the bounds of the colorscale in color space,', - 'use', minmaxFull + '.', + 'use', + minmaxFull + '.', 'Alternatively, `colorscale` may be a palette name string', 'of the following list: ' + paletteStr + '.' ].join(' ') @@ -189,10 +205,11 @@ module.exports = function colorScaleAttrs(context, opts) { // gets overrode in 'heatmap' & 'surface' for backwards comp. dflt: opts.autoColorDflt === false ? false : true, editType: 'calc', - impliedEdits: {colorscale: undefined}, + impliedEdits: { colorscale: undefined }, description: [ 'Determines whether the colorscale is a default palette (`autocolorscale: true`)', - 'or the palette determined by', code(contextHead + 'colorscale') + '.' + effectDesc, + 'or the palette determined by', + code(contextHead + 'colorscale') + '.' + effectDesc, 'In case `colorscale` is unspecified or `autocolorscale` is true, the default', 'palette will be chosen according to whether numbers in the `color` array are', 'all positive, all negative or mixed.' @@ -205,25 +222,27 @@ module.exports = function colorScaleAttrs(context, opts) { editType: 'plot', description: [ 'Reverses the color mapping if true.' + effectDesc, - 'If true,', minFull, 'will correspond to the last color', - 'in the array and', maxFull, 'will correspond to the first color.' + 'If true,', + minFull, + 'will correspond to the last color', + 'in the array and', + maxFull, + 'will correspond to the first color.' ].join(' ') }; - if(!noScale) { + if (!noScale) { attrs.showscale = { valType: 'boolean', dflt: showScaleDflt, editType: 'calc', - description: [ - 'Determines whether or not a colorbar is displayed for this trace.' + effectDesc - ].join(' ') + description: ['Determines whether or not a colorbar is displayed for this trace.' + effectDesc].join(' ') }; attrs.colorbar = colorbarAttrs; } - if(!opts.noColorAxis) { + if (!opts.noColorAxis) { attrs.coloraxis = { valType: 'subplotid', regex: counterRegex('coloraxis'), diff --git a/src/plots/geo/layout_attributes.js b/src/plots/geo/layout_attributes.js index b94cca3bec5..a6666178c37 100644 --- a/src/plots/geo/layout_attributes.js +++ b/src/plots/geo/layout_attributes.js @@ -10,14 +10,8 @@ var sortObjectKeys = require('../../lib/sort_object_keys'); var geoAxesAttrs = { range: { valType: 'info_array', - items: [ - {valType: 'number'}, - {valType: 'number'} - ], - description: [ - 'Sets the range of this axis (in degrees),', - 'sets the map\'s clipped coordinates.' - ].join(' ') + items: [{ valType: 'number' }, { valType: 'number' }], + description: ['Sets the range of this axis (in degrees),', "sets the map's clipped coordinates."].join(' ') }, showgrid: { valType: 'boolean', @@ -27,297 +21,290 @@ var geoAxesAttrs = { tick0: { valType: 'number', dflt: 0, - description: [ - 'Sets the graticule\'s starting tick longitude/latitude.' - ].join(' ') + description: ["Sets the graticule's starting tick longitude/latitude."].join(' ') }, dtick: { valType: 'number', - description: [ - 'Sets the graticule\'s longitude/latitude tick step.' - ].join(' ') + description: ["Sets the graticule's longitude/latitude tick step."].join(' ') }, gridcolor: { valType: 'color', dflt: colorAttrs.lightLine, - description: [ - 'Sets the graticule\'s stroke color.' - ].join(' ') + description: ["Sets the graticule's stroke color."].join(' ') }, gridwidth: { valType: 'number', min: 0, dflt: 1, - description: [ - 'Sets the graticule\'s stroke width (in px).' - ].join(' ') + description: ["Sets the graticule's stroke width (in px)."].join(' ') }, griddash: dash }; -var attrs = module.exports = overrideAll({ - domain: domainAttrs({name: 'geo'}, { - description: [ - 'Note that geo subplots are constrained by domain.', - 'In general, when `projection.scale` is set to 1.', - 'a map will fit either its x or y domain, but not both.' - ].join(' ') - }), +var attrs = (module.exports = overrideAll( + { + domain: domainAttrs( + { name: 'geo' }, + { + description: [ + 'Note that geo subplots are constrained by domain.', + 'In general, when `projection.scale` is set to 1.', + 'a map will fit either its x or y domain, but not both.' + ].join(' ') + } + ), - fitbounds: { - valType: 'enumerated', - values: [false, 'locations', 'geojson'], - dflt: false, - editType: 'plot', - description: [ - 'Determines if this subplot\'s view settings are auto-computed to fit trace data.', + fitbounds: { + valType: 'enumerated', + values: [false, 'locations', 'geojson'], + dflt: false, + editType: 'plot', + description: [ + "Determines if this subplot's view settings are auto-computed to fit trace data.", - 'On scoped maps, setting `fitbounds` leads to `center.lon` and `center.lat` getting auto-filled.', + 'On scoped maps, setting `fitbounds` leads to `center.lon` and `center.lat` getting auto-filled.', - 'On maps with a non-clipped projection, setting `fitbounds` leads to `center.lon`, `center.lat`,', - 'and `projection.rotation.lon` getting auto-filled.', + 'On maps with a non-clipped projection, setting `fitbounds` leads to `center.lon`, `center.lat`,', + 'and `projection.rotation.lon` getting auto-filled.', - 'On maps with a clipped projection, setting `fitbounds` leads to `center.lon`, `center.lat`,', - '`projection.rotation.lon`, `projection.rotation.lat`, `lonaxis.range` and `lataxis.range`', - 'getting auto-filled.', + 'On maps with a clipped projection, setting `fitbounds` leads to `center.lon`, `center.lat`,', + '`projection.rotation.lon`, `projection.rotation.lat`, `lonaxis.range` and `lataxis.range`', + 'getting auto-filled.', - // TODO we should auto-fill `projection.parallels` for maps - // with conic projection, but how? + // TODO we should auto-fill `projection.parallels` for maps + // with conic projection, but how? - 'If *locations*, only the trace\'s visible locations are considered in the `fitbounds` computations.', - 'If *geojson*, the entire trace input `geojson` (if provided) is considered in the `fitbounds` computations,', - 'Defaults to *false*.' - ].join(' ') - }, + "If *locations*, only the trace's visible locations are considered in the `fitbounds` computations.", + 'If *geojson*, the entire trace input `geojson` (if provided) is considered in the `fitbounds` computations,', + 'Defaults to *false*.' + ].join(' ') + }, - resolution: { - valType: 'enumerated', - values: [110, 50], - dflt: 110, - coerceNumber: true, - description: [ - 'Sets the resolution of the base layers.', - 'The values have units of km/mm', - 'e.g. 110 corresponds to a scale ratio of 1:110,000,000.' - ].join(' ') - }, - scope: { - valType: 'enumerated', - values: sortObjectKeys(constants.scopeDefaults), - dflt: 'world', - description: 'Set the scope of the map.' - }, - projection: { - type: { + resolution: { + valType: 'enumerated', + values: [110, 50], + dflt: 110, + coerceNumber: true, + description: [ + 'Sets the resolution of the base layers.', + 'The values have units of km/mm', + 'e.g. 110 corresponds to a scale ratio of 1:110,000,000.' + ].join(' ') + }, + scope: { valType: 'enumerated', - values: sortObjectKeys(constants.projNames), - description: 'Sets the projection type.' + values: sortObjectKeys(constants.scopeDefaults), + dflt: 'world', + description: 'Set the scope of the map.' }, - rotation: { - lon: { + projection: { + type: { + valType: 'enumerated', + values: sortObjectKeys(constants.projNames), + description: 'Sets the projection type.' + }, + rotation: { + lon: { + valType: 'number', + description: [ + 'Rotates the map along parallels', + '(in degrees East).', + 'Defaults to the center of the `lonaxis.range` values.' + ].join(' ') + }, + lat: { + valType: 'number', + description: ['Rotates the map along meridians', '(in degrees North).'].join(' ') + }, + roll: { + valType: 'number', + description: [ + 'Roll the map (in degrees)', + 'For example, a roll of *180* makes the map appear upside down.' + ].join(' ') + } + }, + tilt: { valType: 'number', + dflt: 0, description: [ - 'Rotates the map along parallels', - '(in degrees East).', - 'Defaults to the center of the `lonaxis.range` values.' + 'For satellite projection type only.', + 'Sets the tilt angle of perspective projection.' ].join(' ') }, - lat: { + distance: { + valType: 'number', + min: 1.001, + dflt: 2, + description: [ + 'For satellite projection type only.', + 'Sets the distance from the center of the sphere to the point of view', + 'as a proportion of the sphere’s radius.' + ].join(' ') + }, + parallels: { + valType: 'info_array', + items: [{ valType: 'number' }, { valType: 'number' }], + description: [ + 'For conic projection types only.', + 'Sets the parallels (tangent, secant)', + 'where the cone intersects the sphere.' + ].join(' ') + }, + scale: { + valType: 'number', + min: 0, + dflt: 1, + description: [ + 'Zooms in or out on the map view.', + 'A scale of *1* corresponds to the largest zoom level', + "that fits the map's lon and lat ranges. " + ].join(' ') + } + }, + center: { + lon: { valType: 'number', description: [ - 'Rotates the map along meridians', - '(in degrees North).' + "Sets the longitude of the map's center.", + "By default, the map's longitude center lies at the middle of the longitude range", + 'for scoped projection and above `projection.rotation.lon` otherwise.' ].join(' ') }, - roll: { + lat: { valType: 'number', description: [ - 'Roll the map (in degrees)', - 'For example, a roll of *180* makes the map appear upside down.' + "Sets the latitude of the map's center.", + "For all projection types, the map's latitude center lies", + 'at the middle of the latitude range by default.' ].join(' ') } }, - tilt: { + visible: { + valType: 'boolean', + dflt: true, + description: 'Sets the default visibility of the base layers.' + }, + showcoastlines: { + valType: 'boolean', + description: 'Sets whether or not the coastlines are drawn.' + }, + coastlinecolor: { + valType: 'color', + dflt: colorAttrs.defaultLine, + description: 'Sets the coastline color.' + }, + coastlinewidth: { valType: 'number', - dflt: 0, - description: [ - 'For satellite projection type only.', - 'Sets the tilt angle of perspective projection.' - ].join(' ') + min: 0, + dflt: 1, + description: 'Sets the coastline stroke width (in px).' + }, + showland: { + valType: 'boolean', + dflt: false, + description: 'Sets whether or not land masses are filled in color.' }, - distance: { + landcolor: { + valType: 'color', + dflt: constants.landColor, + description: 'Sets the land mass color.' + }, + showocean: { + valType: 'boolean', + dflt: false, + description: 'Sets whether or not oceans are filled in color.' + }, + oceancolor: { + valType: 'color', + dflt: constants.waterColor, + description: 'Sets the ocean color' + }, + showlakes: { + valType: 'boolean', + dflt: false, + description: 'Sets whether or not lakes are drawn.' + }, + lakecolor: { + valType: 'color', + dflt: constants.waterColor, + description: 'Sets the color of the lakes.' + }, + showrivers: { + valType: 'boolean', + dflt: false, + description: 'Sets whether or not rivers are drawn.' + }, + rivercolor: { + valType: 'color', + dflt: constants.waterColor, + description: 'Sets color of the rivers.' + }, + riverwidth: { valType: 'number', - min: 1.001, - dflt: 2, - description: [ - 'For satellite projection type only.', - 'Sets the distance from the center of the sphere to the point of view', - 'as a proportion of the sphere’s radius.' - ].join(' ') + min: 0, + dflt: 1, + description: 'Sets the stroke width (in px) of the rivers.' }, - parallels: { - valType: 'info_array', - items: [ - {valType: 'number'}, - {valType: 'number'} - ], - description: [ - 'For conic projection types only.', - 'Sets the parallels (tangent, secant)', - 'where the cone intersects the sphere.' - ].join(' ') + showcountries: { + valType: 'boolean', + description: 'Sets whether or not country boundaries are drawn.' + }, + countrycolor: { + valType: 'color', + dflt: colorAttrs.defaultLine, + description: 'Sets line color of the country boundaries.' }, - scale: { + countrywidth: { valType: 'number', min: 0, dflt: 1, + description: 'Sets line width (in px) of the country boundaries.' + }, + showsubunits: { + valType: 'boolean', description: [ - 'Zooms in or out on the map view.', - 'A scale of *1* corresponds to the largest zoom level', - 'that fits the map\'s lon and lat ranges. ' + 'Sets whether or not boundaries of subunits within countries', + '(e.g. states, provinces) are drawn.' ].join(' ') }, - }, - center: { - lon: { + subunitcolor: { + valType: 'color', + dflt: colorAttrs.defaultLine, + description: 'Sets the color of the subunits boundaries.' + }, + subunitwidth: { valType: 'number', - description: [ - 'Sets the longitude of the map\'s center.', - 'By default, the map\'s longitude center lies at the middle of the longitude range', - 'for scoped projection and above `projection.rotation.lon` otherwise.' - ].join(' ') + min: 0, + dflt: 1, + description: 'Sets the stroke width (in px) of the subunits boundaries.' + }, + showframe: { + valType: 'boolean', + description: 'Sets whether or not a frame is drawn around the map.' }, - lat: { + framecolor: { + valType: 'color', + dflt: colorAttrs.defaultLine, + description: 'Sets the color the frame.' + }, + framewidth: { valType: 'number', - description: [ - 'Sets the latitude of the map\'s center.', - 'For all projection types, the map\'s latitude center lies', - 'at the middle of the latitude range by default.' - ].join(' ') - } - }, - visible: { - valType: 'boolean', - dflt: true, - description: 'Sets the default visibility of the base layers.' - }, - showcoastlines: { - valType: 'boolean', - description: 'Sets whether or not the coastlines are drawn.' - }, - coastlinecolor: { - valType: 'color', - dflt: colorAttrs.defaultLine, - description: 'Sets the coastline color.' - }, - coastlinewidth: { - valType: 'number', - min: 0, - dflt: 1, - description: 'Sets the coastline stroke width (in px).' - }, - showland: { - valType: 'boolean', - dflt: false, - description: 'Sets whether or not land masses are filled in color.' - }, - landcolor: { - valType: 'color', - dflt: constants.landColor, - description: 'Sets the land mass color.' - }, - showocean: { - valType: 'boolean', - dflt: false, - description: 'Sets whether or not oceans are filled in color.' - }, - oceancolor: { - valType: 'color', - dflt: constants.waterColor, - description: 'Sets the ocean color' - }, - showlakes: { - valType: 'boolean', - dflt: false, - description: 'Sets whether or not lakes are drawn.' - }, - lakecolor: { - valType: 'color', - dflt: constants.waterColor, - description: 'Sets the color of the lakes.' - }, - showrivers: { - valType: 'boolean', - dflt: false, - description: 'Sets whether or not rivers are drawn.' - }, - rivercolor: { - valType: 'color', - dflt: constants.waterColor, - description: 'Sets color of the rivers.' - }, - riverwidth: { - valType: 'number', - min: 0, - dflt: 1, - description: 'Sets the stroke width (in px) of the rivers.' - }, - showcountries: { - valType: 'boolean', - description: 'Sets whether or not country boundaries are drawn.' - }, - countrycolor: { - valType: 'color', - dflt: colorAttrs.defaultLine, - description: 'Sets line color of the country boundaries.' - }, - countrywidth: { - valType: 'number', - min: 0, - dflt: 1, - description: 'Sets line width (in px) of the country boundaries.' - }, - showsubunits: { - valType: 'boolean', - description: [ - 'Sets whether or not boundaries of subunits within countries', - '(e.g. states, provinces) are drawn.' - ].join(' ') - }, - subunitcolor: { - valType: 'color', - dflt: colorAttrs.defaultLine, - description: 'Sets the color of the subunits boundaries.' - }, - subunitwidth: { - valType: 'number', - min: 0, - dflt: 1, - description: 'Sets the stroke width (in px) of the subunits boundaries.' - }, - showframe: { - valType: 'boolean', - description: 'Sets whether or not a frame is drawn around the map.' - }, - framecolor: { - valType: 'color', - dflt: colorAttrs.defaultLine, - description: 'Sets the color the frame.' - }, - framewidth: { - valType: 'number', - min: 0, - dflt: 1, - description: 'Sets the stroke width (in px) of the frame.' - }, - bgcolor: { - valType: 'color', - dflt: colorAttrs.background, - description: 'Set the background color of the map' + min: 0, + dflt: 1, + description: 'Sets the stroke width (in px) of the frame.' + }, + bgcolor: { + valType: 'color', + dflt: colorAttrs.background, + description: 'Set the background color of the map' + }, + lonaxis: geoAxesAttrs, + lataxis: geoAxesAttrs }, - lonaxis: geoAxesAttrs, - lataxis: geoAxesAttrs -}, 'plot', 'from-root'); + 'plot', + 'from-root' +)); // set uirevision outside of overrideAll so it can be `editType: 'none'` attrs.uirevision = { diff --git a/src/plots/map/constants.js b/src/plots/map/constants.js index 7d48768d8d7..2a867418477 100644 --- a/src/plots/map/constants.js +++ b/src/plots/map/constants.js @@ -4,7 +4,6 @@ var sortObjectKeys = require('../../lib/sort_object_keys'); var arcgisSatHybrid = require('./styles/arcgis-sat-hybrid'); // https://raw.githubusercontent.com/go2garret/maps/v1.0.0/LICENSE var arcgisSat = require('./styles/arcgis-sat'); - var OSM = '© OpenStreetMap contributors'; var cartoPositron = 'https://basemaps.cartocdn.com/gl/positron-gl-style/style.json'; @@ -14,7 +13,6 @@ var cartoPositronNoLabels = 'https://basemaps.cartocdn.com/gl/positron-nolabels- var cartoDarkmatterNoLabels = 'https://basemaps.cartocdn.com/gl/dark-matter-nolabels-gl-style/style.json'; var cartoVoyagerNoLabels = 'https://basemaps.cartocdn.com/gl/voyager-nolabels-gl-style/style.json'; - var stylesMap = { basic: cartoVoyager, streets: cartoVoyager, @@ -30,32 +28,34 @@ var stylesMap = { 'plotly-osm-tiles': { type: 'raster', attribution: OSM, - tiles: [ - 'https://tile.openstreetmap.org/{z}/{x}/{y}.png' - ], + tiles: ['https://tile.openstreetmap.org/{z}/{x}/{y}.png'], tileSize: 256 } }, - layers: [{ - id: 'plotly-osm-tiles', - type: 'raster', - source: 'plotly-osm-tiles', - minzoom: 0, - maxzoom: 22 - }], + layers: [ + { + id: 'plotly-osm-tiles', + type: 'raster', + source: 'plotly-osm-tiles', + minzoom: 0, + maxzoom: 22 + } + ], glyphs: 'https://fonts.openmaptiles.org/{fontstack}/{range}.pbf' }, 'white-bg': { id: 'white-bg', version: 8, sources: {}, - layers: [{ - id: 'white-bg', - type: 'background', - paint: {'background-color': '#FFFFFF'}, - minzoom: 0, - maxzoom: 22 - }], + layers: [ + { + id: 'white-bg', + type: 'background', + paint: { 'background-color': '#FFFFFF' }, + minzoom: 0, + maxzoom: 22 + } + ], glyphs: 'https://fonts.openmaptiles.org/{fontstack}/{range}.pbf' }, 'carto-positron': cartoPositron, @@ -63,7 +63,7 @@ var stylesMap = { 'carto-voyager': cartoVoyager, 'carto-positron-nolabels': cartoPositronNoLabels, 'carto-darkmatter-nolabels': cartoDarkmatterNoLabels, - 'carto-voyager-nolabels': cartoVoyagerNoLabels, + 'carto-voyager-nolabels': cartoVoyagerNoLabels }; var styleValuesMap = sortObjectKeys(stylesMap); @@ -76,15 +76,11 @@ module.exports = { traceLayerPrefix: 'plotly-trace-layer-', layoutLayerPrefix: 'plotly-layout-layer-', - missingStyleErrorMsg: [ 'No valid maplibre style found, please set `map.style` to one of:', styleValuesMap.join(', '), 'or use a tile service.' ].join('\n'), - - mapOnErrorMsg: 'Map error.', - - + mapOnErrorMsg: 'Map error.' }; diff --git a/src/plots/mapbox/constants.js b/src/plots/mapbox/constants.js index 86e955cb4cd..37f79ddc569 100644 --- a/src/plots/mapbox/constants.js +++ b/src/plots/mapbox/constants.js @@ -5,10 +5,7 @@ var sortObjectKeys = require('../../lib/sort_object_keys'); var requiredVersion = '1.13.4'; var OSM = '© OpenStreetMap contributors'; -var carto = [ - '© Carto', - OSM -].join(' '); +var carto = ['© Carto', OSM].join(' '); var stamenTerrainOrToner = [ 'Map tiles by Stamen Design', @@ -41,26 +38,30 @@ var stylesNonMapbox = { tileSize: 256 } }, - layers: [{ - id: 'plotly-osm-tiles', - type: 'raster', - source: 'plotly-osm-tiles', - minzoom: 0, - maxzoom: 22 - }], + layers: [ + { + id: 'plotly-osm-tiles', + type: 'raster', + source: 'plotly-osm-tiles', + minzoom: 0, + maxzoom: 22 + } + ], glyphs: 'https://fonts.openmaptiles.org/{fontstack}/{range}.pbf' }, 'white-bg': { id: 'white-bg', version: 8, sources: {}, - layers: [{ - id: 'white-bg', - type: 'background', - paint: {'background-color': '#FFFFFF'}, - minzoom: 0, - maxzoom: 22 - }], + layers: [ + { + id: 'white-bg', + type: 'background', + paint: { 'background-color': '#FFFFFF' }, + minzoom: 0, + maxzoom: 22 + } + ], glyphs: 'https://fonts.openmaptiles.org/{fontstack}/{range}.pbf' }, 'carto-positron': { @@ -74,13 +75,15 @@ var stylesNonMapbox = { tileSize: 256 } }, - layers: [{ - id: 'plotly-carto-positron', - type: 'raster', - source: 'plotly-carto-positron', - minzoom: 0, - maxzoom: 22 - }], + layers: [ + { + id: 'plotly-carto-positron', + type: 'raster', + source: 'plotly-carto-positron', + minzoom: 0, + maxzoom: 22 + } + ], glyphs: 'https://fonts.openmaptiles.org/{fontstack}/{range}.pbf' }, 'carto-darkmatter': { @@ -94,13 +97,15 @@ var stylesNonMapbox = { tileSize: 256 } }, - layers: [{ - id: 'plotly-carto-darkmatter', - type: 'raster', - source: 'plotly-carto-darkmatter', - minzoom: 0, - maxzoom: 22 - }], + layers: [ + { + id: 'plotly-carto-darkmatter', + type: 'raster', + source: 'plotly-carto-darkmatter', + minzoom: 0, + maxzoom: 22 + } + ], glyphs: 'https://fonts.openmaptiles.org/{fontstack}/{range}.pbf' }, 'stamen-terrain': { @@ -114,13 +119,15 @@ var stylesNonMapbox = { tileSize: 256 } }, - layers: [{ - id: 'plotly-stamen-terrain', - type: 'raster', - source: 'plotly-stamen-terrain', - minzoom: 0, - maxzoom: 22 - }], + layers: [ + { + id: 'plotly-stamen-terrain', + type: 'raster', + source: 'plotly-stamen-terrain', + minzoom: 0, + maxzoom: 22 + } + ], glyphs: 'https://fonts.openmaptiles.org/{fontstack}/{range}.pbf' }, 'stamen-toner': { @@ -134,13 +141,15 @@ var stylesNonMapbox = { tileSize: 256 } }, - layers: [{ - id: 'plotly-stamen-toner', - type: 'raster', - source: 'plotly-stamen-toner', - minzoom: 0, - maxzoom: 22 - }], + layers: [ + { + id: 'plotly-stamen-toner', + type: 'raster', + source: 'plotly-stamen-toner', + minzoom: 0, + maxzoom: 22 + } + ], glyphs: 'https://fonts.openmaptiles.org/{fontstack}/{range}.pbf' }, 'stamen-watercolor': { @@ -154,13 +163,15 @@ var stylesNonMapbox = { tileSize: 256 } }, - layers: [{ - id: 'plotly-stamen-watercolor', - type: 'raster', - source: 'plotly-stamen-watercolor', - minzoom: 0, - maxzoom: 22 - }], + layers: [ + { + id: 'plotly-stamen-watercolor', + type: 'raster', + source: 'plotly-stamen-watercolor', + minzoom: 0, + maxzoom: 22 + } + ], glyphs: 'https://fonts.openmaptiles.org/{fontstack}/{range}.pbf' } }; @@ -190,7 +201,7 @@ module.exports = { 'Missing Mapbox access token.', 'Mapbox trace type require a Mapbox access token to be registered.', 'For example:', - ' Plotly.newPlot(gd, data, layout, { mapboxAccessToken: \'my-access-token\' });', + " Plotly.newPlot(gd, data, layout, { mapboxAccessToken: 'my-access-token' });", 'More info here: https://www.mapbox.com/help/define-access-token/' ].join('\n'), @@ -202,8 +213,7 @@ module.exports = { multipleTokensErrorMsg: [ 'Set multiple mapbox access token across different mapbox subplot,', - 'using first token found as mapbox-gl does not allow multiple' + - 'access tokens on the same page.' + 'using first token found as mapbox-gl does not allow multiple' + 'access tokens on the same page.' ].join('\n'), mapOnErrorMsg: 'Mapbox error.', @@ -231,8 +241,10 @@ module.exports = { 'ctrl-attrib.mapboxgl-compact .mapboxgl-ctrl-attrib-inner': 'display: none;', 'ctrl-attrib.mapboxgl-compact:hover .mapboxgl-ctrl-attrib-inner': 'display: block; margin-top:2px', 'ctrl-attrib.mapboxgl-compact:hover': 'padding: 2px 24px 2px 4px; visibility: visible; margin-top: 6px;', - 'ctrl-attrib.mapboxgl-compact::after': 'content: ""; cursor: pointer; position: absolute; background-image: url(\'data:image/svg+xml;charset=utf-8,%3Csvg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"%3E %3Cpath fill="%23333333" fill-rule="evenodd" d="M4,10a6,6 0 1,0 12,0a6,6 0 1,0 -12,0 M9,7a1,1 0 1,0 2,0a1,1 0 1,0 -2,0 M9,10a1,1 0 1,1 2,0l0,3a1,1 0 1,1 -2,0"/%3E %3C/svg%3E\'); background-color: rgba(255, 255, 255, 0.5); width: 24px; height: 24px; box-sizing: border-box; border-radius: 12px;', - 'ctrl-attrib.mapboxgl-compact': 'min-height: 20px; padding: 0; margin: 10px; position: relative; background-color: #fff; border-radius: 3px 12px 12px 3px;', + 'ctrl-attrib.mapboxgl-compact::after': + 'content: ""; cursor: pointer; position: absolute; background-image: url(\'data:image/svg+xml;charset=utf-8,%3Csvg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"%3E %3Cpath fill="%23333333" fill-rule="evenodd" d="M4,10a6,6 0 1,0 12,0a6,6 0 1,0 -12,0 M9,7a1,1 0 1,0 2,0a1,1 0 1,0 -2,0 M9,10a1,1 0 1,1 2,0l0,3a1,1 0 1,1 -2,0"/%3E %3C/svg%3E\'); background-color: rgba(255, 255, 255, 0.5); width: 24px; height: 24px; box-sizing: border-box; border-radius: 12px;', + 'ctrl-attrib.mapboxgl-compact': + 'min-height: 20px; padding: 0; margin: 10px; position: relative; background-color: #fff; border-radius: 3px 12px 12px 3px;', 'ctrl-bottom-right > .mapboxgl-ctrl-attrib.mapboxgl-compact::after': 'bottom: 0; right: 0', 'ctrl-bottom-left > .mapboxgl-ctrl-attrib.mapboxgl-compact::after': 'bottom: 0; left: 0', @@ -247,7 +259,8 @@ module.exports = { 'attrib-empty': 'display: none;', // Compact Mapbox logo without text - 'ctrl-logo': 'display:block; width: 21px; height: 21px; background-image: url(\'data:image/svg+xml;charset=utf-8,%3C?xml version="1.0" encoding="utf-8"?%3E %3Csvg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 21 21" style="enable-background:new 0 0 21 21;" xml:space="preserve"%3E%3Cg transform="translate(0,0.01)"%3E%3Cpath d="m 10.5,1.24 c -5.11,0 -9.25,4.15 -9.25,9.25 0,5.1 4.15,9.25 9.25,9.25 5.1,0 9.25,-4.15 9.25,-9.25 0,-5.11 -4.14,-9.25 -9.25,-9.25 z m 4.39,11.53 c -1.93,1.93 -4.78,2.31 -6.7,2.31 -0.7,0 -1.41,-0.05 -2.1,-0.16 0,0 -1.02,-5.64 2.14,-8.81 0.83,-0.83 1.95,-1.28 3.13,-1.28 1.27,0 2.49,0.51 3.39,1.42 1.84,1.84 1.89,4.75 0.14,6.52 z" style="opacity:0.9;fill:%23ffffff;enable-background:new" class="st0"/%3E%3Cpath d="M 10.5,-0.01 C 4.7,-0.01 0,4.7 0,10.49 c 0,5.79 4.7,10.5 10.5,10.5 5.8,0 10.5,-4.7 10.5,-10.5 C 20.99,4.7 16.3,-0.01 10.5,-0.01 Z m 0,19.75 c -5.11,0 -9.25,-4.15 -9.25,-9.25 0,-5.1 4.14,-9.26 9.25,-9.26 5.11,0 9.25,4.15 9.25,9.25 0,5.13 -4.14,9.26 -9.25,9.26 z" style="opacity:0.35;enable-background:new" class="st1"/%3E%3Cpath d="M 14.74,6.25 C 12.9,4.41 9.98,4.35 8.23,6.1 5.07,9.27 6.09,14.91 6.09,14.91 c 0,0 5.64,1.02 8.81,-2.14 C 16.64,11 16.59,8.09 14.74,6.25 Z m -2.27,4.09 -0.91,1.87 -0.9,-1.87 -1.86,-0.91 1.86,-0.9 0.9,-1.87 0.91,1.87 1.86,0.9 z" style="opacity:0.35;enable-background:new" class="st1"/%3E%3Cpolygon points="11.56,12.21 10.66,10.34 8.8,9.43 10.66,8.53 11.56,6.66 12.47,8.53 14.33,9.43 12.47,10.34 " style="opacity:0.9;fill:%23ffffff;enable-background:new" class="st0"/%3E%3C/g%3E%3C/svg%3E\')' + 'ctrl-logo': + 'display:block; width: 21px; height: 21px; background-image: url(\'data:image/svg+xml;charset=utf-8,%3C?xml version="1.0" encoding="utf-8"?%3E %3Csvg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 21 21" style="enable-background:new 0 0 21 21;" xml:space="preserve"%3E%3Cg transform="translate(0,0.01)"%3E%3Cpath d="m 10.5,1.24 c -5.11,0 -9.25,4.15 -9.25,9.25 0,5.1 4.15,9.25 9.25,9.25 5.1,0 9.25,-4.15 9.25,-9.25 0,-5.11 -4.14,-9.25 -9.25,-9.25 z m 4.39,11.53 c -1.93,1.93 -4.78,2.31 -6.7,2.31 -0.7,0 -1.41,-0.05 -2.1,-0.16 0,0 -1.02,-5.64 2.14,-8.81 0.83,-0.83 1.95,-1.28 3.13,-1.28 1.27,0 2.49,0.51 3.39,1.42 1.84,1.84 1.89,4.75 0.14,6.52 z" style="opacity:0.9;fill:%23ffffff;enable-background:new" class="st0"/%3E%3Cpath d="M 10.5,-0.01 C 4.7,-0.01 0,4.7 0,10.49 c 0,5.79 4.7,10.5 10.5,10.5 5.8,0 10.5,-4.7 10.5,-10.5 C 20.99,4.7 16.3,-0.01 10.5,-0.01 Z m 0,19.75 c -5.11,0 -9.25,-4.15 -9.25,-9.25 0,-5.1 4.14,-9.26 9.25,-9.26 5.11,0 9.25,4.15 9.25,9.25 0,5.13 -4.14,9.26 -9.25,9.26 z" style="opacity:0.35;enable-background:new" class="st1"/%3E%3Cpath d="M 14.74,6.25 C 12.9,4.41 9.98,4.35 8.23,6.1 5.07,9.27 6.09,14.91 6.09,14.91 c 0,0 5.64,1.02 8.81,-2.14 C 16.64,11 16.59,8.09 14.74,6.25 Z m -2.27,4.09 -0.91,1.87 -0.9,-1.87 -1.86,-0.91 1.86,-0.9 0.9,-1.87 0.91,1.87 1.86,0.9 z" style="opacity:0.35;enable-background:new" class="st1"/%3E%3Cpolygon points="11.56,12.21 10.66,10.34 8.8,9.43 10.66,8.53 11.56,6.66 12.47,8.53 14.33,9.43 12.47,10.34 " style="opacity:0.9;fill:%23ffffff;enable-background:new" class="st0"/%3E%3C/g%3E%3C/svg%3E\')' // Mapbox logo WITH text below (commented out for now) // 'ctrl-logo': 'width: 85px; height: 21px; margin: 0 0 -3px -3px; display: block; background-repeat: no-repeat; cursor: pointer; background-image: url(\'data:image/svg+xml;charset=utf-8,%3C?xml version="1.0" encoding="utf-8"?%3E%3Csvg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 84.49 21" style="enable-background:new 0 0 84.49 21;" xml:space="preserve"%3E%3Cg%3E %3Cpath class="st0" style="opacity:0.9; fill: %23FFFFFF; enable-background: new;" d="M83.25,14.26c0,0.12-0.09,0.21-0.21,0.21h-1.61c-0.13,0-0.24-0.06-0.3-0.17l-1.44-2.39l-1.44,2.39 c-0.06,0.11-0.18,0.17-0.3,0.17h-1.61c-0.04,0-0.08-0.01-0.12-0.03c-0.09-0.06-0.13-0.19-0.06-0.28l0,0l2.43-3.68L76.2,6.84 c-0.02-0.03-0.03-0.07-0.03-0.12c0-0.12,0.09-0.21,0.21-0.21h1.61c0.13,0,0.24,0.06,0.3,0.17l1.41,2.36l1.4-2.35 c0.06-0.11,0.18-0.17,0.3-0.17H83c0.04,0,0.08,0.01,0.12,0.03c0.09,0.06,0.13,0.19,0.06,0.28l0,0l-2.37,3.63l2.43,3.67 C83.24,14.18,83.25,14.22,83.25,14.26z"/%3E %3Cpath class="st0" style="opacity:0.9; fill: %23FFFFFF; enable-background: new;" d="M66.24,9.59c-0.39-1.88-1.96-3.28-3.84-3.28c-1.03,0-2.03,0.42-2.73,1.18V3.51c0-0.13-0.1-0.23-0.23-0.23h-1.4 c-0.13,0-0.23,0.11-0.23,0.23v10.72c0,0.13,0.1,0.23,0.23,0.23h1.4c0.13,0,0.23-0.11,0.23-0.23V13.5c0.71,0.75,1.7,1.18,2.73,1.18 c1.88,0,3.45-1.41,3.84-3.29C66.37,10.79,66.37,10.18,66.24,9.59L66.24,9.59z M62.08,13c-1.32,0-2.39-1.11-2.41-2.48v-0.06 c0.02-1.38,1.09-2.48,2.41-2.48s2.42,1.12,2.42,2.51S63.41,13,62.08,13z"/%3E %3Cpath class="st0" style="opacity:0.9; fill: %23FFFFFF; enable-background: new;" d="M71.67,6.32c-1.98-0.01-3.72,1.35-4.16,3.29c-0.13,0.59-0.13,1.19,0,1.77c0.44,1.94,2.17,3.32,4.17,3.3 c2.35,0,4.26-1.87,4.26-4.19S74.04,6.32,71.67,6.32z M71.65,13.01c-1.33,0-2.42-1.12-2.42-2.51s1.08-2.52,2.42-2.52 c1.33,0,2.42,1.12,2.42,2.51S72.99,13,71.65,13.01L71.65,13.01z"/%3E %3Cpath class="st1" style="opacity:0.35; enable-background:new;" d="M62.08,7.98c-1.32,0-2.39,1.11-2.41,2.48v0.06C59.68,11.9,60.75,13,62.08,13s2.42-1.12,2.42-2.51 S63.41,7.98,62.08,7.98z M62.08,11.76c-0.63,0-1.14-0.56-1.17-1.25v-0.04c0.01-0.69,0.54-1.25,1.17-1.25 c0.63,0,1.17,0.57,1.17,1.27C63.24,11.2,62.73,11.76,62.08,11.76z"/%3E %3Cpath class="st1" style="opacity:0.35; enable-background:new;" d="M71.65,7.98c-1.33,0-2.42,1.12-2.42,2.51S70.32,13,71.65,13s2.42-1.12,2.42-2.51S72.99,7.98,71.65,7.98z M71.65,11.76c-0.64,0-1.17-0.57-1.17-1.27c0-0.7,0.53-1.26,1.17-1.26s1.17,0.57,1.17,1.27C72.82,11.21,72.29,11.76,71.65,11.76z"/%3E %3Cpath class="st0" style="opacity:0.9; fill: %23FFFFFF; enable-background: new;" d="M45.74,6.53h-1.4c-0.13,0-0.23,0.11-0.23,0.23v0.73c-0.71-0.75-1.7-1.18-2.73-1.18 c-2.17,0-3.94,1.87-3.94,4.19s1.77,4.19,3.94,4.19c1.04,0,2.03-0.43,2.73-1.19v0.73c0,0.13,0.1,0.23,0.23,0.23h1.4 c0.13,0,0.23-0.11,0.23-0.23V6.74c0-0.12-0.09-0.22-0.22-0.22C45.75,6.53,45.75,6.53,45.74,6.53z M44.12,10.53 C44.11,11.9,43.03,13,41.71,13s-2.42-1.12-2.42-2.51s1.08-2.52,2.4-2.52c1.33,0,2.39,1.11,2.41,2.48L44.12,10.53z"/%3E %3Cpath class="st1" style="opacity:0.35; enable-background:new;" d="M41.71,7.98c-1.33,0-2.42,1.12-2.42,2.51S40.37,13,41.71,13s2.39-1.11,2.41-2.48v-0.06 C44.1,9.09,43.03,7.98,41.71,7.98z M40.55,10.49c0-0.7,0.52-1.27,1.17-1.27c0.64,0,1.14,0.56,1.17,1.25v0.04 c-0.01,0.68-0.53,1.24-1.17,1.24C41.08,11.75,40.55,11.19,40.55,10.49z"/%3E %3Cpath class="st0" style="opacity:0.9; fill: %23FFFFFF; enable-background: new;" d="M52.41,6.32c-1.03,0-2.03,0.42-2.73,1.18V6.75c0-0.13-0.1-0.23-0.23-0.23h-1.4c-0.13,0-0.23,0.11-0.23,0.23 v10.72c0,0.13,0.1,0.23,0.23,0.23h1.4c0.13,0,0.23-0.1,0.23-0.23V13.5c0.71,0.75,1.7,1.18,2.74,1.18c2.17,0,3.94-1.87,3.94-4.19 S54.58,6.32,52.41,6.32z M52.08,13.01c-1.32,0-2.39-1.11-2.42-2.48v-0.07c0.02-1.38,1.09-2.49,2.4-2.49c1.32,0,2.41,1.12,2.41,2.51 S53.4,13,52.08,13.01L52.08,13.01z"/%3E %3Cpath class="st1" style="opacity:0.35; enable-background:new;" d="M52.08,7.98c-1.32,0-2.39,1.11-2.42,2.48v0.06c0.03,1.38,1.1,2.48,2.42,2.48s2.41-1.12,2.41-2.51 S53.4,7.98,52.08,7.98z M52.08,11.76c-0.63,0-1.14-0.56-1.17-1.25v-0.04c0.01-0.69,0.54-1.25,1.17-1.25c0.63,0,1.17,0.58,1.17,1.27 S52.72,11.76,52.08,11.76z"/%3E %3Cpath class="st0" style="opacity:0.9; fill: %23FFFFFF; enable-background: new;" d="M36.08,14.24c0,0.13-0.1,0.23-0.23,0.23h-1.41c-0.13,0-0.23-0.11-0.23-0.23V9.68c0-0.98-0.74-1.71-1.62-1.71 c-0.8,0-1.46,0.7-1.59,1.62l0.01,4.66c0,0.13-0.11,0.23-0.23,0.23h-1.41c-0.13,0-0.23-0.11-0.23-0.23V9.68 c0-0.98-0.74-1.71-1.62-1.71c-0.85,0-1.54,0.79-1.6,1.8v4.48c0,0.13-0.1,0.23-0.23,0.23h-1.4c-0.13,0-0.23-0.11-0.23-0.23V6.74 c0.01-0.13,0.1-0.22,0.23-0.22h1.4c0.13,0,0.22,0.11,0.23,0.22V7.4c0.5-0.68,1.3-1.09,2.16-1.1h0.03c1.09,0,2.09,0.6,2.6,1.55 c0.45-0.95,1.4-1.55,2.44-1.56c1.62,0,2.93,1.25,2.9,2.78L36.08,14.24z"/%3E %3Cpath class="st1" style="opacity:0.35; enable-background:new;" d="M84.34,13.59l-0.07-0.13l-1.96-2.99l1.94-2.95c0.44-0.67,0.26-1.56-0.41-2.02c-0.02,0-0.03,0-0.04-0.01 c-0.23-0.15-0.5-0.22-0.78-0.22h-1.61c-0.56,0-1.08,0.29-1.37,0.78L79.72,6.6l-0.34-0.56C79.09,5.56,78.57,5.27,78,5.27h-1.6 c-0.6,0-1.13,0.37-1.35,0.92c-2.19-1.66-5.28-1.47-7.26,0.45c-0.35,0.34-0.65,0.72-0.89,1.14c-0.9-1.62-2.58-2.72-4.5-2.72 c-0.5,0-1.01,0.07-1.48,0.23V3.51c0-0.82-0.66-1.48-1.47-1.48h-1.4c-0.81,0-1.47,0.66-1.47,1.47v3.75 c-0.95-1.36-2.5-2.18-4.17-2.19c-0.74,0-1.46,0.16-2.12,0.47c-0.24-0.17-0.54-0.26-0.84-0.26h-1.4c-0.45,0-0.87,0.21-1.15,0.56 c-0.02-0.03-0.04-0.05-0.07-0.08c-0.28-0.3-0.68-0.47-1.09-0.47h-1.39c-0.3,0-0.6,0.09-0.84,0.26c-0.67-0.3-1.39-0.46-2.12-0.46 c-1.83,0-3.43,1-4.37,2.5c-0.2-0.46-0.48-0.89-0.83-1.25c-0.8-0.81-1.89-1.25-3.02-1.25h-0.01c-0.89,0.01-1.75,0.33-2.46,0.88 c-0.74-0.57-1.64-0.88-2.57-0.88H28.1c-0.29,0-0.58,0.03-0.86,0.11c-0.28,0.06-0.56,0.16-0.82,0.28c-0.21-0.12-0.45-0.18-0.7-0.18 h-1.4c-0.82,0-1.47,0.66-1.47,1.47v7.5c0,0.82,0.66,1.47,1.47,1.47h1.4c0.82,0,1.48-0.66,1.48-1.48l0,0V9.79 c0.03-0.36,0.23-0.59,0.36-0.59c0.18,0,0.38,0.18,0.38,0.47v4.57c0,0.82,0.66,1.47,1.47,1.47h1.41c0.82,0,1.47-0.66,1.47-1.47 l-0.01-4.57c0.06-0.32,0.25-0.47,0.35-0.47c0.18,0,0.38,0.18,0.38,0.47v4.57c0,0.82,0.66,1.47,1.47,1.47h1.41 c0.82,0,1.47-0.66,1.47-1.47v-0.38c0.96,1.29,2.46,2.06,4.06,2.06c0.74,0,1.46-0.16,2.12-0.47c0.24,0.17,0.54,0.26,0.84,0.26h1.39 c0.3,0,0.6-0.09,0.84-0.26v2.01c0,0.82,0.66,1.47,1.47,1.47h1.4c0.82,0,1.47-0.66,1.47-1.47v-1.77c0.48,0.15,0.99,0.23,1.49,0.22 c1.7,0,3.22-0.87,4.17-2.2v0.52c0,0.82,0.66,1.47,1.47,1.47h1.4c0.3,0,0.6-0.09,0.84-0.26c0.66,0.31,1.39,0.47,2.12,0.47 c1.92,0,3.6-1.1,4.49-2.73c1.54,2.65,4.95,3.53,7.58,1.98c0.18-0.11,0.36-0.22,0.53-0.36c0.22,0.55,0.76,0.91,1.35,0.9H78 c0.56,0,1.08-0.29,1.37-0.78l0.37-0.61l0.37,0.61c0.29,0.48,0.81,0.78,1.38,0.78h1.6c0.81,0,1.46-0.66,1.45-1.46 C84.49,14.02,84.44,13.8,84.34,13.59L84.34,13.59z M35.86,14.47h-1.41c-0.13,0-0.23-0.11-0.23-0.23V9.68 c0-0.98-0.74-1.71-1.62-1.71c-0.8,0-1.46,0.7-1.59,1.62l0.01,4.66c0,0.13-0.1,0.23-0.23,0.23h-1.41c-0.13,0-0.23-0.11-0.23-0.23 V9.68c0-0.98-0.74-1.71-1.62-1.71c-0.85,0-1.54,0.79-1.6,1.8v4.48c0,0.13-0.1,0.23-0.23,0.23h-1.4c-0.13,0-0.23-0.11-0.23-0.23 V6.74c0.01-0.13,0.11-0.22,0.23-0.22h1.4c0.13,0,0.22,0.11,0.23,0.22V7.4c0.5-0.68,1.3-1.09,2.16-1.1h0.03 c1.09,0,2.09,0.6,2.6,1.55c0.45-0.95,1.4-1.55,2.44-1.56c1.62,0,2.93,1.25,2.9,2.78l0.01,5.16C36.09,14.36,35.98,14.46,35.86,14.47 L35.86,14.47z M45.97,14.24c0,0.13-0.1,0.23-0.23,0.23h-1.4c-0.13,0-0.23-0.11-0.23-0.23V13.5c-0.7,0.76-1.69,1.18-2.72,1.18 c-2.17,0-3.94-1.87-3.94-4.19s1.77-4.19,3.94-4.19c1.03,0,2.02,0.43,2.73,1.18V6.74c0-0.13,0.1-0.23,0.23-0.23h1.4 c0.12-0.01,0.22,0.08,0.23,0.21c0,0.01,0,0.01,0,0.02v7.51h-0.01V14.24z M52.41,14.67c-1.03,0-2.02-0.43-2.73-1.18v3.97 c0,0.13-0.1,0.23-0.23,0.23h-1.4c-0.13,0-0.23-0.1-0.23-0.23V6.75c0-0.13,0.1-0.22,0.23-0.22h1.4c0.13,0,0.23,0.11,0.23,0.23v0.73 c0.71-0.76,1.7-1.18,2.73-1.18c2.17,0,3.94,1.86,3.94,4.18S54.58,14.67,52.41,14.67z M66.24,11.39c-0.39,1.87-1.96,3.29-3.84,3.29 c-1.03,0-2.02-0.43-2.73-1.18v0.73c0,0.13-0.1,0.23-0.23,0.23h-1.4c-0.13,0-0.23-0.11-0.23-0.23V3.51c0-0.13,0.1-0.23,0.23-0.23 h1.4c0.13,0,0.23,0.11,0.23,0.23v3.97c0.71-0.75,1.7-1.18,2.73-1.17c1.88,0,3.45,1.4,3.84,3.28C66.37,10.19,66.37,10.8,66.24,11.39 L66.24,11.39L66.24,11.39z M71.67,14.68c-2,0.01-3.73-1.35-4.17-3.3c-0.13-0.59-0.13-1.19,0-1.77c0.44-1.94,2.17-3.31,4.17-3.3 c2.36,0,4.26,1.87,4.26,4.19S74.03,14.68,71.67,14.68L71.67,14.68z M83.04,14.47h-1.61c-0.13,0-0.24-0.06-0.3-0.17l-1.44-2.39 l-1.44,2.39c-0.06,0.11-0.18,0.17-0.3,0.17h-1.61c-0.04,0-0.08-0.01-0.12-0.03c-0.09-0.06-0.13-0.19-0.06-0.28l0,0l2.43-3.68 L76.2,6.84c-0.02-0.03-0.03-0.07-0.03-0.12c0-0.12,0.09-0.21,0.21-0.21h1.61c0.13,0,0.24,0.06,0.3,0.17l1.41,2.36l1.41-2.36 c0.06-0.11,0.18-0.17,0.3-0.17h1.61c0.04,0,0.08,0.01,0.12,0.03c0.09,0.06,0.13,0.19,0.06,0.28l0,0l-2.38,3.64l2.43,3.67 c0.02,0.03,0.03,0.07,0.03,0.12C83.25,14.38,83.16,14.47,83.04,14.47L83.04,14.47L83.04,14.47z"/%3E %3Cpath class="st0" style="opacity:0.9; fill: %23FFFFFF; enable-background: new;" d="M10.5,1.24c-5.11,0-9.25,4.15-9.25,9.25s4.15,9.25,9.25,9.25s9.25-4.15,9.25-9.25 C19.75,5.38,15.61,1.24,10.5,1.24z M14.89,12.77c-1.93,1.93-4.78,2.31-6.7,2.31c-0.7,0-1.41-0.05-2.1-0.16c0,0-1.02-5.64,2.14-8.81 c0.83-0.83,1.95-1.28,3.13-1.28c1.27,0,2.49,0.51,3.39,1.42C16.59,8.09,16.64,11,14.89,12.77z"/%3E %3Cpath class="st1" style="opacity:0.35; enable-background:new;" d="M10.5-0.01C4.7-0.01,0,4.7,0,10.49s4.7,10.5,10.5,10.5S21,16.29,21,10.49C20.99,4.7,16.3-0.01,10.5-0.01z M10.5,19.74c-5.11,0-9.25-4.15-9.25-9.25s4.14-9.26,9.25-9.26s9.25,4.15,9.25,9.25C19.75,15.61,15.61,19.74,10.5,19.74z"/%3E %3Cpath class="st1" style="opacity:0.35; enable-background:new;" d="M14.74,6.25C12.9,4.41,9.98,4.35,8.23,6.1c-3.16,3.17-2.14,8.81-2.14,8.81s5.64,1.02,8.81-2.14 C16.64,11,16.59,8.09,14.74,6.25z M12.47,10.34l-0.91,1.87l-0.9-1.87L8.8,9.43l1.86-0.9l0.9-1.87l0.91,1.87l1.86,0.9L12.47,10.34z"/%3E %3Cpolygon class="st0" style="opacity:0.9; fill: %23FFFFFF; enable-background: new;" points="14.33,9.43 12.47,10.34 11.56,12.21 10.66,10.34 8.8,9.43 10.66,8.53 11.56,6.66 12.47,8.53 "/%3E%3C/g%3E%3C/svg%3E\');' From cef04d2918a75c19cf723121aed414a0980247d3 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Tue, 30 Dec 2025 16:07:35 -0700 Subject: [PATCH 027/241] Initial TS set up --- package-lock.json | 1567 ++++++++++-------------------- package.json | 5 + src/types/README.md | 63 ++ src/types/components/common.d.ts | 41 + src/types/core/config.d.ts | 177 ++++ src/types/core/data.d.ts | 227 +++++ src/types/core/events.d.ts | 136 +++ src/types/core/graph-div.d.ts | 120 +++ src/types/core/layout.d.ts | 230 +++++ src/types/index.d.ts | 20 + src/types/lib/common.d.ts | 108 ++ src/types/plots/common.d.ts | 37 + src/types/traces/common.d.ts | 73 ++ tsconfig.json | 69 ++ 14 files changed, 1806 insertions(+), 1067 deletions(-) create mode 100644 src/types/README.md create mode 100644 src/types/components/common.d.ts create mode 100644 src/types/core/config.d.ts create mode 100644 src/types/core/data.d.ts create mode 100644 src/types/core/events.d.ts create mode 100644 src/types/core/graph-div.d.ts create mode 100644 src/types/core/layout.d.ts create mode 100644 src/types/index.d.ts create mode 100644 src/types/lib/common.d.ts create mode 100644 src/types/plots/common.d.ts create mode 100644 src/types/traces/common.d.ts create mode 100644 tsconfig.json diff --git a/package-lock.json b/package-lock.json index 8c59c40810b..f1f6839a408 100644 --- a/package-lock.json +++ b/package-lock.json @@ -57,6 +57,8 @@ "@biomejs/biome": "2.2.0", "@plotly/mathjax-v2": "npm:mathjax@2.7.5", "@plotly/mathjax-v3": "npm:mathjax@^3.2.2", + "@types/d3": "3.5.34", + "@types/node": "^24.10.0", "amdefine": "^1.0.1", "assert": "^2.1.0", "browserify-transform-tools": "^1.7.0", @@ -107,6 +109,7 @@ "through2": "^4.0.2", "transform-loader": "^0.2.4", "true-case-path": "^2.2.1", + "typescript": "^5.9.3", "virtual-webgl": "^1.0.7" }, "engines": { @@ -201,74 +204,6 @@ "@biomejs/cli-win32-x64": "2.2.0" } }, - "node_modules/@biomejs/cli-darwin-arm64": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-2.2.0.tgz", - "integrity": "sha512-zKbwUUh+9uFmWfS8IFxmVD6XwqFcENjZvEyfOxHs1epjdH3wyyMQG80FGDsmauPwS2r5kXdEM0v/+dTIA9FXAg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT OR Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=14.21.3" - } - }, - "node_modules/@biomejs/cli-darwin-x64": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-2.2.0.tgz", - "integrity": "sha512-+OmT4dsX2eTfhD5crUOPw3RPhaR+SKVspvGVmSdZ9y9O/AgL8pla6T4hOn1q+VAFBHuHhsdxDRJgFCSC7RaMOw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT OR Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=14.21.3" - } - }, - "node_modules/@biomejs/cli-linux-arm64": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-2.2.0.tgz", - "integrity": "sha512-6eoRdF2yW5FnW9Lpeivh7Mayhq0KDdaDMYOJnH9aT02KuSIX5V1HmWJCQQPwIQbhDh68Zrcpl8inRlTEan0SXw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT OR Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=14.21.3" - } - }, - "node_modules/@biomejs/cli-linux-arm64-musl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.2.0.tgz", - "integrity": "sha512-egKpOa+4FL9YO+SMUMLUvf543cprjevNc3CAgDNFLcjknuNMcZ0GLJYa3EGTCR2xIkIUJDVneBV3O9OcIlCEZQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT OR Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=14.21.3" - } - }, "node_modules/@biomejs/cli-linux-x64": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-2.2.0.tgz", @@ -303,40 +238,6 @@ "node": ">=14.21.3" } }, - "node_modules/@biomejs/cli-win32-arm64": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-2.2.0.tgz", - "integrity": "sha512-n9a1/f2CwIDmNMNkFs+JI0ZjFnMO0jdOyGNtihgUNFnlmd84yIYY2KMTBmMV58ZlVHjgmY5Y6E1hVTnSRieggA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT OR Apache-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=14.21.3" - } - }, - "node_modules/@biomejs/cli-win32-x64": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-2.2.0.tgz", - "integrity": "sha512-Nawu5nHjP/zPKTIryh2AavzTc/KEg4um/MxWdXW0A6P/RZOyIpa7+QSjeXwAwX/utJGaCoXRPWtF3m5U/bB3Ww==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT OR Apache-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=14.21.3" - } - }, "node_modules/@choojs/findup": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/@choojs/findup/-/findup-0.2.1.tgz", @@ -357,6 +258,30 @@ "node": ">=0.1.90" } }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "node_modules/@csstools/color-helpers": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.0.2.tgz", @@ -485,262 +410,6 @@ "node": ">=18" } }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz", - "integrity": "sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.5.tgz", - "integrity": "sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.5.tgz", - "integrity": "sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.5.tgz", - "integrity": "sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.5.tgz", - "integrity": "sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.5.tgz", - "integrity": "sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.5.tgz", - "integrity": "sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.5.tgz", - "integrity": "sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.5.tgz", - "integrity": "sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.5.tgz", - "integrity": "sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.5.tgz", - "integrity": "sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.5.tgz", - "integrity": "sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.5.tgz", - "integrity": "sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.5.tgz", - "integrity": "sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.5.tgz", - "integrity": "sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.5.tgz", - "integrity": "sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, "node_modules/@esbuild/linux-x64": { "version": "0.25.5", "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.5.tgz", @@ -757,134 +426,6 @@ "node": ">=18" } }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.5.tgz", - "integrity": "sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.5.tgz", - "integrity": "sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.5.tgz", - "integrity": "sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.5.tgz", - "integrity": "sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.5.tgz", - "integrity": "sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.5.tgz", - "integrity": "sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.5.tgz", - "integrity": "sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.5.tgz", - "integrity": "sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -953,20 +494,33 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dev": true, "peer": true, "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, "peer": true, "engines": { @@ -974,14 +528,14 @@ } }, "node_modules/@jridgewell/source-map": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", - "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", "dev": true, "peer": true, "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" } }, "node_modules/@jridgewell/sourcemap-codec": { @@ -991,9 +545,9 @@ "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, "peer": true, "dependencies": { @@ -1326,6 +880,34 @@ "node": ">=18" } }, + "node_modules/@tsconfig/node10": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz", + "integrity": "sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true, + "license": "MIT" + }, "node_modules/@turf/area": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/@turf/area/-/area-7.1.0.tgz", @@ -1416,36 +998,18 @@ "@types/node": "*" } }, - "node_modules/@types/eslint": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", - "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "node_modules/@types/d3": { + "version": "3.5.34", + "resolved": "https://registry.npmjs.org/@types/d3/-/d3-3.5.34.tgz", + "integrity": "sha512-2Ub7NdmaSLviC8lwRGt/7use4LBdLQi7iPEkM97yGKrbmCUqepOgOrGJLi1jPdR0/IIwBDpIbtOgdAOJWWXC+Q==", "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } + "license": "MIT" }, "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/@types/geojson": { @@ -1462,11 +1026,10 @@ } }, "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true, - "license": "MIT" + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true }, "node_modules/@types/karma": { "version": "1.7.8", @@ -1494,10 +1057,14 @@ } }, "node_modules/@types/node": { - "version": "14.11.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.11.2.tgz", - "integrity": "sha512-jiE3QIxJ8JLNcb1Ps6rDbysDhN4xa8DJJvuC9prr6w+1tIh+QAbYyNF3tyiZNLDBIuBCf4KEcV2UvQm/V60xfA==", - "dev": true + "version": "24.10.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.0.tgz", + "integrity": "sha512-qzQZRBqkFsYyaSWXuEHc2WR9c0a0CXwiE5FWUvn7ZM+vdy1uZLfCunD38UzhuB7YN/J11ndbDBcTmOdxJo9Q7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~7.16.0" + } }, "node_modules/@types/pbf": { "version": "3.0.5", @@ -1554,9 +1121,9 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", - "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1564,12 +1131,12 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "dependencies": { - "brace-expansion": "^2.0.2" + "brace-expansion": "^2.0.1" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -1673,178 +1240,163 @@ "dev": true }, "node_modules/@webassemblyjs/ast": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", - "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { - "@webassemblyjs/helper-numbers": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2" + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" } }, "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", - "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", - "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", - "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", - "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.13.2", - "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", - "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", - "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/wasm-gen": "1.14.1" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.12.1" } }, "node_modules/@webassemblyjs/ieee754": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", - "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, "node_modules/@webassemblyjs/leb128": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", - "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", "dev": true, - "license": "Apache-2.0", "peer": true, "dependencies": { "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/utf8": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", - "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", - "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/helper-wasm-section": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-opt": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1", - "@webassemblyjs/wast-printer": "1.14.1" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", - "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", - "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", - "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-api-error": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", - "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/ast": "1.12.1", "@xtuc/long": "4.2.2" } }, @@ -1853,7 +1405,6 @@ "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", "dev": true, - "license": "BSD-3-Clause", "peer": true }, "node_modules/@xtuc/long": { @@ -1861,7 +1412,6 @@ "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true, - "license": "Apache-2.0", "peer": true }, "node_modules/abs-svg-path": { @@ -1913,6 +1463,32 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, + "node_modules/acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk/node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/agent-base": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", @@ -1924,11 +1500,10 @@ } }, "node_modules/ajv": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", - "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -1940,48 +1515,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "peer": true, - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "peer": true - }, "node_modules/ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", @@ -2046,6 +1579,13 @@ "integrity": "sha512-gkco+qxENJV+8vFcDiiFhuoSvRXb2a/QPqpSoWhVz829VNJfOTnELbBmPmNKFxf3xdNnw4DWCkzkDaavcX/1YQ==", "dev": true }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true, + "license": "MIT" + }, "node_modules/arr-union": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", @@ -2172,24 +1712,10 @@ "node_modules/base64id": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", - "dev": true, - "engines": { - "node": "^4.5.0 || >= 5.9" - } - }, - "node_modules/baseline-browser-mapping": { - "version": "2.10.13", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.13.tgz", - "integrity": "sha512-BL2sTuHOdy0YT1lYieUxTw/QMtPBC3pmlJC6xk8BBYVv6vcw3SGdKemQ+Xsx9ik2F/lYDO9tqsFQH1r9PFuHKw==", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", "dev": true, - "license": "Apache-2.0", - "peer": true, - "bin": { - "baseline-browser-mapping": "dist/cli.cjs" - }, "engines": { - "node": ">=6.0.0" + "node": "^4.5.0 || >= 5.9" } }, "node_modules/big.js": { @@ -2327,9 +1853,9 @@ } }, "node_modules/brace-expansion": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", - "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { @@ -2360,9 +1886,9 @@ } }, "node_modules/browserslist": { - "version": "4.28.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", - "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", + "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", "dev": true, "funding": [ { @@ -2378,14 +1904,12 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "peer": true, "dependencies": { - "baseline-browser-mapping": "^2.10.12", - "caniuse-lite": "^1.0.30001782", - "electron-to-chromium": "^1.5.328", - "node-releases": "^2.0.36", - "update-browserslist-db": "^1.2.3" + "caniuse-lite": "^1.0.30001646", + "electron-to-chromium": "^1.5.4", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" }, "bin": { "browserslist": "cli.js" @@ -2531,9 +2055,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001784", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001784.tgz", - "integrity": "sha512-WU346nBTklUV9YfUl60fqRbU5ZqyXlqvo1SgigE1OAXK5bFL8LL9q1K7aap3N739l4BvNqnkm3YrGHiY9sfUQw==", + "version": "1.0.30001651", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz", + "integrity": "sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==", "dev": true, "funding": [ { @@ -2549,7 +2073,6 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "CC-BY-4.0", "peer": true }, "node_modules/canvas": { @@ -3060,6 +2583,13 @@ "resolved": "https://registry.npmjs.org/country-regex/-/country-regex-1.1.0.tgz", "integrity": "sha1-UcMz3N8Sknt+XuucEKyBEqYSCJY=" }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true, + "license": "MIT" + }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -3737,6 +3267,16 @@ "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", "dev": true }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -3928,11 +3468,10 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.5.330", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.330.tgz", - "integrity": "sha512-jFNydB5kFtYUobh4IkWUnXeyDbjf/r9gcUEXe1xcrcUxIGfTdzPXA+ld6zBRbwvgIGVzDll/LTIiDztEtckSnA==", + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.6.tgz", + "integrity": "sha512-jwXWsM5RPf6j9dPYzaorcBSUg6AiqocPEyMpkchkvntaH9HGfOOMZwxMJjDY/XEs3T5dM7uyH1VhRMkqUU9qVw==", "dev": true, - "license": "ISC", "peer": true }, "node_modules/elementary-circuits-directed-graph": { @@ -4006,14 +3545,13 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.20.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.1.tgz", - "integrity": "sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==", + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", - "tapable": "^2.3.0" + "tapable": "^2.2.0" }, "engines": { "node": ">=10.13.0" @@ -4083,11 +3621,10 @@ "dev": true }, "node_modules/es-module-lexer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", - "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.1.tgz", + "integrity": "sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/es-object-atoms": { @@ -4239,11 +3776,10 @@ } }, "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } @@ -4511,23 +4047,6 @@ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" }, - "node_modules/fast-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", - "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "peer": true - }, "node_modules/fastq": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", @@ -4651,9 +4170,9 @@ } }, "node_modules/flatted": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", - "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz", + "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==", "dev": true }, "node_modules/flatten-vertex-data": { @@ -4665,9 +4184,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", - "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "dev": true, "funding": [ { @@ -4675,7 +4194,6 @@ "url": "https://github.com/sponsors/RubenVerborgh" } ], - "license": "MIT", "engines": { "node": ">=4.0" }, @@ -4824,20 +4342,6 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -5053,13 +4557,12 @@ "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "dev": true, - "license": "BSD-2-Clause", "peer": true }, "node_modules/glob/node_modules/brace-expansion": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", - "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5067,12 +4570,12 @@ } }, "node_modules/glob/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "dependencies": { - "brace-expansion": "^2.0.2" + "brace-expansion": "^2.0.1" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -5708,9 +5211,9 @@ } }, "node_modules/immutable": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.8.tgz", - "integrity": "sha512-d/Ld9aLbKpNwyl0KiM2CT1WYvkitQ1TSvmRtkcV8FKStiDoA7Slzgjmb/1G2yhKM1p0XeNOieaTbFZmU1d3Xuw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz", + "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==", "dev": true }, "node_modules/inflight": { @@ -6703,18 +6206,13 @@ } }, "node_modules/loader-runner": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz", - "integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=6.11.5" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" } }, "node_modules/loader-utils": { @@ -6732,9 +6230,9 @@ } }, "node_modules/lodash": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", - "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, "node_modules/lodash.merge": { @@ -6965,6 +6463,13 @@ "sourcemap-codec": "^1.4.4" } }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true, + "license": "ISC" + }, "node_modules/map-limit": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/map-limit/-/map-limit-0.0.1.tgz", @@ -7288,9 +6793,9 @@ } }, "node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { "brace-expansion": "^1.1.7" @@ -7414,9 +6919,9 @@ } }, "node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", "dev": true, "funding": [ { @@ -7424,7 +6929,6 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -7523,11 +7027,10 @@ "license": "MIT" }, "node_modules/node-releases": { - "version": "2.0.36", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.36.tgz", - "integrity": "sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==", + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/node-source-walk": { @@ -7590,9 +7093,9 @@ } }, "node_modules/npm-link-check/node_modules/brace-expansion": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", - "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "license": "MIT", "dependencies": { @@ -7619,9 +7122,9 @@ } }, "node_modules/npm-link-check/node_modules/minimatch": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", - "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -8094,18 +7597,16 @@ "integrity": "sha1-X3yysfIabh6ISgyHhVqko3NhEHs=" }, "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true, - "license": "ISC" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "dev": true }, "node_modules/picomatch": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", - "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, - "license": "MIT", "engines": { "node": ">=8.6" }, @@ -8114,9 +7615,9 @@ } }, "node_modules/pixelmatch": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-7.1.0.tgz", - "integrity": "sha512-1wrVzJ2STrpmONHKBy228LM1b84msXDUoAzVEl0R8Mz4Ce6EPr+IVtxm8+yvrqLYMHswREkjYFaMxnyGnaY3Ng==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-7.2.0.tgz", + "integrity": "sha512-xhcb4yHu9sM/G7foGzoLtXYcC0zHEaOXXjRKhGup0fw78Nf2Tkiapv4EQyMzrbcmQPsllAI7DbFY2UT7PlI9Pg==", "dev": true, "license": "ISC", "dependencies": { @@ -8156,9 +7657,9 @@ "integrity": "sha512-ziHW/02J0XuNuUtmidBc6GXE8YohYydp3DWPWXYsd7O721TjcmN+k6ezjdwkDqep+gnWnFY+yqZHvzElra2oCg==" }, "node_modules/postcss": { - "version": "8.5.12", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.12.tgz", - "integrity": "sha512-W62t/Se6rA0Az3DfCL0AqJwXuKwBeYg6nOaIgzP+xZ7N5BFCI7DYi1qs6ygUYT6rvfi6t9k65UMLJC+PHZpDAA==", + "version": "8.4.41", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz", + "integrity": "sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==", "dev": true, "funding": [ { @@ -8174,11 +7675,10 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "dependencies": { - "nanoid": "^3.3.11", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" + "nanoid": "^3.3.7", + "picocolors": "^1.0.1", + "source-map-js": "^1.2.0" }, "engines": { "node": "^10 || ^12 || >=14" @@ -8403,9 +7903,9 @@ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "node_modules/protocol-buffers-schema": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.6.1.tgz", - "integrity": "sha512-VG2K63Igkiv9p76tk1lilczEK1cT+kCjKtkdhw1dQZV3k3IXJbd3o6Ho8b9zJZaHSnT2hKe4I+ObmX9w6m5SmQ==" + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.4.0.tgz", + "integrity": "sha512-G/2kcamPF2S49W5yaMGdIpkG6+5wZF0fzBteLKgEHjbNzqjZQ85aAs1iJGto31EJaSTkNvHs5IXuHSaTLWBAiA==" }, "node_modules/pump": { "version": "3.0.2", @@ -8437,9 +7937,9 @@ } }, "node_modules/qs": { - "version": "6.14.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", - "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", + "version": "6.14.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", + "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -8471,6 +7971,16 @@ "performance-now": "^2.1.0" } }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "peer": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -8804,16 +8314,6 @@ "node": ">=0.10.0" } }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/requirejs": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/requirejs/-/requirejs-2.3.7.tgz", @@ -9091,6 +8591,16 @@ "semver": "bin/semver.js" } }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "peer": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", @@ -9346,44 +8856,18 @@ } }, "node_modules/socket.io-parser": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.6.tgz", - "integrity": "sha512-asJqbVBDsBCJx0pTqw3WfesSY0iRX+2xzWEWzrpcH7L6fLzrhyF8WPI8UaeM4YCuDfpwA/cgsdugMsmtz8EJeg==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", "dev": true, - "license": "MIT", "dependencies": { "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.4.1" + "debug": "~4.3.1" }, "engines": { "node": ">=10.0.0" } }, - "node_modules/socket.io-parser/node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/socket.io-parser/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, "node_modules/sort-asc": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/sort-asc/-/sort-asc-0.2.0.tgz", @@ -9426,11 +8910,10 @@ } }, "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -9845,17 +9328,12 @@ "dev": true }, "node_modules/tapable": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.2.tgz", - "integrity": "sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" } }, "node_modules/tar-fs": { @@ -9968,16 +9446,17 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.4.0.tgz", - "integrity": "sha512-Bn5vxm48flOIfkdl5CaD2+1CiUVbonWQ3KQPyP7/EuIl9Gbzq/gQFOzaMFUEgVjB1396tcK0SG8XcNJ/2kDH8g==", + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", "dev": true, "peer": true, "dependencies": { - "@jridgewell/trace-mapping": "^0.3.25", + "@jridgewell/trace-mapping": "^0.3.20", "jest-worker": "^27.4.5", - "schema-utils": "^4.3.0", - "terser": "^5.31.1" + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" }, "engines": { "node": ">= 10.13.0" @@ -10002,10 +9481,11 @@ } }, "node_modules/terser-webpack-plugin/node_modules/acorn": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", - "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, + "license": "MIT", "peer": true, "bin": { "acorn": "bin/acorn" @@ -10014,72 +9494,15 @@ "node": ">=0.4.0" } }, - "node_modules/terser-webpack-plugin/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "peer": true - }, - "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", - "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", - "dev": true, - "peer": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/terser-webpack-plugin/node_modules/terser": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.1.tgz", - "integrity": "sha512-vzCjQO/rgUuK9sf8VJZvjqiqiHFaZLnOiimmUuOKODxWL8mm/xua7viT7aqX7dgPY60otQjUotzFMmCB4VdmqQ==", + "version": "5.27.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.27.0.tgz", + "integrity": "sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A==", "dev": true, "peer": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.15.0", + "acorn": "^8.8.2", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, @@ -10326,6 +9749,63 @@ "node": ">=18" } }, + "node_modules/ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/ts-node/node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/tsconfig-paths": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", @@ -10414,9 +9894,9 @@ } }, "node_modules/typescript": { - "version": "5.5.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", - "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -10458,6 +9938,13 @@ "node": "*" } }, + "node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "dev": true, + "license": "MIT" + }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", @@ -10536,9 +10023,9 @@ "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=" }, "node_modules/update-browserslist-db": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", - "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", "dev": true, "funding": [ { @@ -10554,11 +10041,10 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "peer": true, "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.1" + "escalade": "^3.1.2", + "picocolors": "^1.0.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -10614,6 +10100,13 @@ "node": ">= 0.4.0" } }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true, + "license": "MIT" + }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -10681,11 +10174,10 @@ } }, "node_modules/watchpack": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz", - "integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", + "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "glob-to-regexp": "^0.4.1", @@ -10727,38 +10219,35 @@ } }, "node_modules/webpack": { - "version": "5.105.4", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.105.4.tgz", - "integrity": "sha512-jTywjboN9aHxFlToqb0K0Zs9SbBoW4zRUlGzI2tYNxVYcEi/IPpn+Xi4ye5jTLvX2YeLuic/IvxNot+Q1jMoOw==", + "version": "5.94.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz", + "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { - "@types/eslint-scope": "^3.7.7", - "@types/estree": "^1.0.8", - "@types/json-schema": "^7.0.15", - "@webassemblyjs/ast": "^1.14.1", - "@webassemblyjs/wasm-edit": "^1.14.1", - "@webassemblyjs/wasm-parser": "^1.14.1", - "acorn": "^8.16.0", - "acorn-import-phases": "^1.0.3", - "browserslist": "^4.28.1", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", + "acorn": "^8.7.1", + "acorn-import-attributes": "^1.9.5", + "browserslist": "^4.21.10", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.20.0", - "es-module-lexer": "^2.0.0", + "enhanced-resolve": "^5.17.1", + "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.2.11", "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.3.1", + "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^4.3.3", - "tapable": "^2.3.0", - "terser-webpack-plugin": "^5.3.17", - "watchpack": "^2.5.1", - "webpack-sources": "^3.3.4" + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" }, "bin": { "webpack": "bin/webpack.js" @@ -10777,20 +10266,19 @@ } }, "node_modules/webpack-sources": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.4.tgz", - "integrity": "sha512-7tP1PdV4vF+lYPnkMR0jMY5/la2ub5Fc/8VQrrU+lXkiM6C4TjVfGw7iKfyhnTQOsD+6Q/iKw0eFciziRgD58Q==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=10.13.0" } }, "node_modules/webpack/node_modules/acorn": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", - "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", "peer": true, @@ -10801,50 +10289,14 @@ "node": ">=0.4.0" } }, - "node_modules/webpack/node_modules/acorn-import-phases": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", - "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=10.13.0" - }, - "peerDependencies": { - "acorn": "^8.14.0" - } - }, - "node_modules/webpack/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/webpack/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "node_modules/webpack/node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", "dev": true, - "license": "MIT", "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, "peerDependencies": { - "ajv": "^8.8.2" + "acorn": "^8" } }, "node_modules/webpack/node_modules/eslint-scope": { @@ -10861,35 +10313,6 @@ "node": ">=8.0.0" } }, - "node_modules/webpack/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", - "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/whatwg-encoding": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", @@ -11224,6 +10647,16 @@ "engines": { "node": ">=10" } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } } } } diff --git a/package.json b/package.json index fb04c203ba6..106d2217cb4 100644 --- a/package.json +++ b/package.json @@ -40,6 +40,8 @@ "cibuild": "npm run empty-dist && npm run preprocess && node tasks/cibundle.mjs", "lint": "npx @biomejs/biome lint", "lint-fix": "npx @biomejs/biome format ./test/image/mocks --write; npx @biomejs/biome lint --write || true", + "typecheck": "tsc --noEmit", + "typecheck:watch": "tsc --noEmit --watch", "pretest": "node tasks/pretest.js", "test-jasmine": "karma start test/jasmine/karma.conf.js", "test-mock": "node tasks/test_mock.mjs", @@ -115,6 +117,8 @@ "@biomejs/biome": "2.2.0", "@plotly/mathjax-v2": "npm:mathjax@2.7.5", "@plotly/mathjax-v3": "npm:mathjax@^3.2.2", + "@types/d3": "3.5.34", + "@types/node": "^24.10.0", "amdefine": "^1.0.1", "assert": "^2.1.0", "browserify-transform-tools": "^1.7.0", @@ -165,6 +169,7 @@ "through2": "^4.0.2", "transform-loader": "^0.2.4", "true-case-path": "^2.2.1", + "typescript": "^5.9.3", "virtual-webgl": "^1.0.7" }, "overrides": { diff --git a/src/types/README.md b/src/types/README.md new file mode 100644 index 00000000000..a4071c340e2 --- /dev/null +++ b/src/types/README.md @@ -0,0 +1,63 @@ +# Types Directory + +Centralized TypeScript type definitions for plotly.js. + +## Quick Import + +```typescript +// Import from main index (recommended) +import type { GraphDiv, Layout, PlotData } from '../types'; + +// Or use path alias +import type { GraphDiv } from '@types'; +``` + +## Directory Structure + +``` +types/ +├── index.d.ts # Main export - import from here +├── core/ # Core Plotly types (GraphDiv, Layout, Data, Config, Events) +├── traces/ # Trace-specific types +├── components/ # Component-specific types +├── plots/ # Plot-specific types +└── lib/ # Utility types +``` + +## Most Common Types + +### GraphDiv +```typescript +import type { GraphDiv } from '../types'; + +function draw(gd: GraphDiv): void { + const layout = gd._fullLayout; + const data = gd._fullData; +} +``` + +### Layout +```typescript +import type { Layout } from '../types'; + +function updateLayout(layout: Partial): void { + layout.title = 'New Title'; +} +``` + +### PlotData (Traces) +```typescript +import type { PlotData, ScatterTrace } from '../types'; + +function processTrace(trace: PlotData): void { + if (trace.type === 'scatter') { + const scatter = trace as ScatterTrace; + } +} +``` + +## Adding New Types + +1. Create file in appropriate subdirectory +2. Export from `index.d.ts` +3. Use in your TypeScript files diff --git a/src/types/components/common.d.ts b/src/types/components/common.d.ts new file mode 100644 index 00000000000..6d5d7aed844 --- /dev/null +++ b/src/types/components/common.d.ts @@ -0,0 +1,41 @@ +/** + * Common component-related types + * + * Types shared across different component modules + */ + +/** + * Component module interface + */ +export interface ComponentModule { + includeBasePlot?: (basePlotModule: string) => void; + layoutAttributes?: any; + name: string; + supplyLayoutDefaults?: (layoutIn: any, layoutOut: any, fullData: any) => void; +} + +/** + * Drawing options (used by many components) + */ +export interface DrawingOptions { + duration?: number; + ease?: string; + redraw?: boolean; +} + +/** + * SVG text utilities return type + */ +export interface TextBBox { + bottom: number; + height: number; + left: number; + right: number; + top: number; + width: number; +} + +/** + * Color with alpha + */ +export type ColorString = string; diff --git a/src/types/core/config.d.ts b/src/types/core/config.d.ts new file mode 100644 index 00000000000..a3a9b5e48ae --- /dev/null +++ b/src/types/core/config.d.ts @@ -0,0 +1,177 @@ +/** + * Config types + * + * Defines the structure of Plotly config options. + */ + +/** + * User-provided configuration for Plotly + */ +export interface Config { + /** + * Whether the plot should resize on window resize + */ + autosizable?: boolean; + + /** + * Display Plotly logo on mode bar + */ + displaylogo?: boolean; + + /** + * Display the mode bar + */ + displayModeBar?: boolean | 'hover'; + + /** + * What happens on double click + */ + doubleClick?: 'reset' | 'autosize' | 'reset+autosize' | false; + + /** + * Allow plot to be edited + */ + editable?: boolean; + + /** + * What can be edited + */ + edits?: Partial; + + /** + * Whether to fill the parent container + */ + fillFrame?: boolean; + + /** + * Margin around the plot when fillFrame is true + */ + frameMargins?: number; + + /** + * Text for the "Edit in Chart Studio" link + */ + linkText?: string; + + /** + * Locale for formatting + */ + locale?: string; + + /** + * Custom locale definitions + */ + locales?: { [locale: string]: any }; + + /** + * Mapbox access token + */ + mapboxAccessToken?: string; + + /** + * Custom mode bar buttons configuration + */ + modeBarButtons?: any; + + /** + * Mode bar buttons to add + */ + modeBarButtonsToAdd?: any[]; + + /** + * Mode bar buttons to remove + */ + modeBarButtonsToRemove?: string[]; + + /** + * Pixel ratio for WebGL plots + */ + plotGlPixelRatio?: number; + + /** + * Base URL for plotly server + */ + plotlyServerURL?: string; + + /** + * Number of operations that can be queued + */ + queueLength?: number; + + /** + * Whether to resize on window resize (alternative) + */ + responsive?: boolean; + + /** + * Enable scroll zoom + */ + scrollZoom?: boolean; + + /** + * Send data to Chart Studio + */ + sendData?: boolean; + + /** + * Background color setting function + */ + setBackground?: string | ((gd: any) => void); + + /** + * Show "Edit in Chart Studio" link + */ + showLink?: boolean; + + /** + * Show tips on first hover + */ + showTips?: boolean; + + /** + * Make the chart static - no interactivity + */ + staticPlot?: boolean; + + /** + * Options for the "Download plot as PNG" button + */ + toImageButtonOptions?: Partial; + + /** + * URL for topojson files + */ + topojsonURL?: string; + + /** + * Add watermark to images + */ + watermark?: boolean; +} + +/** + * Configuration for what can be edited + */ +export interface ConfigEdits { + annotationPosition?: boolean; + annotationTail?: boolean; + annotationText?: boolean; + axisTitleText?: boolean; + colorbarPosition?: boolean; + colorbarTitleText?: boolean; + legendPosition?: boolean; + legendText?: boolean; + shapePosition?: boolean; + titleText?: boolean; +} + +/** + * Options for the "Download plot" button + */ +export interface ToImageButtonOptions { + format?: 'png' | 'svg' | 'jpeg' | 'webp'; + filename?: string; + height?: number; + width?: number; + scale?: number; +} diff --git a/src/types/core/data.d.ts b/src/types/core/data.d.ts new file mode 100644 index 00000000000..9eab5917a16 --- /dev/null +++ b/src/types/core/data.d.ts @@ -0,0 +1,227 @@ +/** + * Data/Trace types + * + * Defines the structure of Plotly data traces. + * This is a union of all possible trace types. + */ + +import type { Dash, ColorScale } from '../lib/common'; + +/** + * All supported plot/trace types in plotly.js + */ +export type PlotType = + | "bar" + | "barpolar" + | "box" + | "candlestick" + | "carpet" + | "choropleth" + | "choroplethmap" + | "choroplethmapbox" + | "cone" + | "contour" + | "contourcarpet" + | "densitymap" + | "densitymapbox" + | "funnel" + | "funnelarea" + | "heatmap" + | "histogram" + | "histogram2d" + | "histogram2dcontour" + | "icicle" + | "image" + | "indicator" + | "isosurface" + | "mesh3d" + | "ohlc" + | "parcats" + | "parcoords" + | "pie" + | "sankey" + | "scatter" + | "scatter3d" + | "scattercarpet" + | "scattergeo" + | "scattergl" + | "scattermap" + | "scattermapbox" + | "scatterpolar" + | "scatterpolargl" + | "scattersmith" + | "scatterternary" + | "splom" + | "streamtube" + | "sunburst" + | "surface" + | "table" + | "treemap" + | "violin" + | "volume" + | "waterfall"; + +/** + * Common properties shared by all trace types + */ +export interface TraceBase { + customdata?: any[]; + hoverinfo?: string; + hoverlabel?: Partial; + hovertemplate?: string | string[]; + ids?: string[]; + legendgroup?: string; + legendgrouptitle?: any; + meta?: any; + name?: string; + opacity?: number; + selectedpoints?: any; + showlegend?: boolean; + type?: PlotType; + uid?: string; + visible?: boolean | 'legendonly'; + xaxis?: string; + yaxis?: string; + [key: string]: any; +} + +/** + * User-provided plot data (trace) + * This will be a union of all specific trace types + */ +export type PlotData = TraceBase & ( + | BarTrace + | LineTrace + | ScatterTrace + // Add more trace types as you convert them + | GenericTrace +); + +/** + * Fully processed plot data with defaults applied (internal use) + */ +export interface FullData extends PlotData { + _expandedIndex?: number; + _fullInput?: any; + _indexToPoints?: { [key: number]: number[] }; + _input?: any; + _length?: number; + _module?: any; + index?: number; +} + +/** + * Generic trace for gradual migration + * Use specific trace types when available + */ +export interface GenericTrace extends TraceBase { + x?: any[]; + y?: any[]; + z?: any[]; + [key: string]: any; +} + +/** + * Scatter trace + */ +export interface ScatterTrace extends TraceBase { + connectgaps?: boolean; + fill?: 'none' | 'tozeroy' | 'tozerox' | 'tonexty' | 'tonextx' | 'toself' | 'tonext'; + fillcolor?: string; + line?: Partial; + marker?: Partial; + mode?: 'lines' | 'markers' | 'lines+markers' | 'none' | 'text' | 'lines+text' | 'markers+text' | 'lines+markers+text'; + text?: string | string[]; + textfont?: any; + textposition?: string | string[]; + type: 'scatter'; + x?: number[] | string[]; + y?: number[] | string[]; +} + +/** + * Bar trace + */ +export interface BarTrace extends TraceBase { + base?: number | number[]; + marker?: Partial; + offset?: number | number[]; + orientation?: 'v' | 'h'; + text?: string | string[]; + textangle?: number; + textposition?: string; + type: 'bar'; + width?: number | number[]; + x?: number[] | string[]; + y?: number[] | string[]; +} + +/** + * Line-only trace (simplified scatter) + */ +export interface LineTrace extends TraceBase { + line?: Partial; + mode: 'lines'; + type: 'scatter'; + x?: number[] | string[]; + y?: number[] | string[]; +} + +/** + * Marker configuration (used by many traces) + */ +export interface Marker { + autocolorscale?: boolean; + cauto?: boolean; + cmax?: number; + cmid?: number; + cmin?: number; + color?: string | string[] | number[]; + coloraxis?: string; + colorbar?: any; + colorscale?: string | any[][]; + line?: Partial; + opacity?: number | number[]; + reversescale?: boolean; + showscale?: boolean; + size?: number | number[]; + symbol?: string | string[]; +} + +/** + * Marker line (outline) + */ +export interface MarkerLine { + autocolorscale?: boolean; + cauto?: boolean; + cmax?: number; + cmid?: number; + cmin?: number; + color?: string | string[]; + colorscale?: string | any[][]; + reversescale?: boolean; + width?: number | number[]; +} + +/** + * Line configuration (used by many traces) + */ +export interface Line { + color?: string; + dash?: Dash; + shape?: 'linear' | 'spline' | 'hv' | 'vh' | 'hvh' | 'vhv'; + simplify?: boolean; + smoothing?: number; + width?: number; +} + +/** + * Hover label configuration + */ +export interface HoverLabel { + align?: 'left' | 'right' | 'auto'; + bgcolor?: string | string[]; + bordercolor?: string | string[]; + font?: any; + namelength?: number | number[]; +} diff --git a/src/types/core/events.d.ts b/src/types/core/events.d.ts new file mode 100644 index 00000000000..a270e91efdd --- /dev/null +++ b/src/types/core/events.d.ts @@ -0,0 +1,136 @@ +/** + * Event types + * + * Defines the structure of Plotly events and event data. + */ + +/** + * Common point data structure returned in events + */ +export interface PlotlyEventPoint { + /** + * Curve number (trace index) + */ + curveNumber: number; + + /** + * Point number within the trace + */ + pointNumber: number; + + /** + * Point index (for calculated data) + */ + pointIndex?: number; + + /** + * X value + */ + x?: any; + + /** + * Y value + */ + y?: any; + + /** + * Z value (for 3D plots) + */ + z?: any; + + /** + * Custom data + */ + customdata?: any; + + /** + * Full data for this trace + */ + data?: any; + + /** + * Full data for all traces + */ + fullData?: any; + + /** + * Additional properties + */ + [key: string]: any; +} + +/** + * Hover event data + */ +export interface PlotlyHoverEvent { + points: PlotlyEventPoint[]; + event: MouseEvent; +} + +/** + * Click event data + */ +export interface PlotlyClickEvent { + points: PlotlyEventPoint[]; + event: MouseEvent; +} + +/** + * Selection event data + */ +export interface PlotlySelectionEvent { + points: PlotlyEventPoint[]; + range?: any; + lassoPoints?: any; +} + +/** + * Relayout event data (when layout changes) + */ +export interface PlotlyRelayoutEvent { + [key: string]: any; +} + +/** + * Restyle event data (when trace style changes) + */ +export interface PlotlyRestyleEvent { + data: any[]; + traces: number[]; +} + +/** + * All Plotly event names + */ +export type PlotlyEventName = + | 'plotly_afterexport' + | 'plotly_afterplot' + | 'plotly_animated' + | 'plotly_animatingframe' + | 'plotly_animationinterrupted' + | 'plotly_autosize' + | 'plotly_beforeexport' + | 'plotly_beforehover' + | 'plotly_buttonclicked' + | 'plotly_click' + | 'plotly_clickannotation' + | 'plotly_deselect' + | 'plotly_doubleclick' + | 'plotly_framework' + | 'plotly_hover' + | 'plotly_legendclick' + | 'plotly_legenddoubleclick' + | 'plotly_redraw' + | 'plotly_relayout' + | 'plotly_restyle' + | 'plotly_selected' + | 'plotly_selecting' + | 'plotly_sliderchange' + | 'plotly_sliderend' + | 'plotly_sliderstart' + | 'plotly_sunburstclick' + | 'plotly_transitioning' + | 'plotly_transitioninterrupted' + | 'plotly_treemapclick' + | 'plotly_unhover' + | 'plotly_webglcontextlost'; diff --git a/src/types/core/graph-div.d.ts b/src/types/core/graph-div.d.ts new file mode 100644 index 00000000000..7bdf1d81f29 --- /dev/null +++ b/src/types/core/graph-div.d.ts @@ -0,0 +1,120 @@ +/** + * Core GraphDiv types + * + * The `gd` parameter appears throughout the codebase and represents + * the graph div element with plotly-specific properties attached. + */ + +import type { Config } from './config'; +import type { FullData, PlotData } from './data'; +import type { FullLayout, Layout } from './layout'; + +/** + * The main graph div element that Plotly operates on. + * This is an HTMLDivElement with additional Plotly-specific properties. + * + * Commonly referred to as `gd` in the codebase. + */ +export interface GraphDiv extends HTMLDivElement { + /** + * Graph dimensions and margins + */ + _context?: GraphContext; + + /** + * Is the plot currently being edited? + */ + _editing?: boolean; + + /** + * Fully processed data traces (internal use) + */ + _fullData?: FullData[]; + + /** + * Fully processed layout (internal use) + */ + _fullLayout?: FullLayout; + + /** + * Has the plot been initialized? + */ + _initialized?: boolean; + + /** + * Plotly framework metadata + */ + _promises?: Promise[]; + + /** + * Current transaction ID for queuing operations + */ + _transitionData?: any; + + /** + * Is the plot transitioning? + */ + _transitioning?: boolean; + + /** + * Calculated data (internal use) + */ + calcdata?: any[]; + + /** + * User-provided configuration options + */ + config?: Partial; + + /** + * User-provided data traces + */ + data?: PlotData[]; + + /** + * Plotly-specific event emitter + */ + emit?: (event: string, ...args: any[]) => void; + + /** + * User-provided layout configuration + */ + layout?: Partial; + + // Add more as you discover them during migration + [key: string]: any; +} + +/** + * Graph context containing environment info + */ +export interface GraphContext { + autosizable?: boolean; + displaylogo?: boolean; + displayModeBar?: boolean | 'hover'; + doubleClick?: string | false; + editable?: boolean; + edits?: any; + fillFrame?: boolean; + frameMargins?: number; + linkText?: string; + locale?: string; + locales?: any; + mapboxAccessToken?: string; + modeBarButtons?: any; + modeBarButtonsToAdd?: any[]; + modeBarButtonsToRemove?: string[]; + plotGlPixelRatio?: number; + plotlyServerURL?: string; + queueLength?: number; + responsive?: boolean; + scrollZoom?: boolean; + sendData?: boolean; + setBackground?: string | Function; + showLink?: boolean; + showTips?: boolean; + staticPlot?: boolean; + toImageButtonOptions?: any; + topojsonURL?: string; + watermark?: boolean; +} diff --git a/src/types/core/layout.d.ts b/src/types/core/layout.d.ts new file mode 100644 index 00000000000..bc8b245e35e --- /dev/null +++ b/src/types/core/layout.d.ts @@ -0,0 +1,230 @@ +/** + * Layout types + * + * Defines the structure of Plotly layout objects. + * Start with common properties and expand as needed. + */ + +import type { Selection } from '@types/d3' +import type { AxisType, Dash } from '../lib/common'; + +/** + * User-provided layout configuration + */ +export interface Layout { + autosize?: boolean; + dragmode?: 'zoom' | 'pan' | 'select' | 'lasso' | 'orbit' | 'turntable' | false; + font?: Partial; + height?: number; + hovermode?: 'closest' | 'x' | 'y' | 'x unified' | 'y unified' | false; + legend?: Partial; + margin?: Partial; + paper_bgcolor?: string; + plot_bgcolor?: string; + showlegend?: boolean; + template?: any; + title?: string | Partial; + width?: number; + xaxis?: Partial; + yaxis?: Partial; + + // Multiple axes support (xaxis2, yaxis3, etc.) + [key: string]: any; +} + +/** + * Fully processed layout with all defaults applied (internal use) + */ +export interface FullLayout extends Layout { + _modules?: any[]; + _basePlotModules?: any[]; + _plots?: { [key: string]: any }; + _subplot?: any[]; + _subplots?: SubplotInfo; + _size?: LayoutSize; + _legends?: string[]; + _infolayer?: Selection; + _zoomlayer?: Selection; + _paperdiv?: Selection; + _glcontainer?: Selection; + _calcInverseTransform?: (gd: any) => void; + _invTransform?: any; + _uid?: string; + _initialAutoSizeIsDone?: boolean; + + // Hover state + _hoverlayer?: any; + _hoverdata?: any[]; + + // Modebar + _modeBar?: any; + + // Grid + grid?: any; + + // Computed properties + _pushmargin?: { [key: string]: any }; + _basePlotModules?: any[]; + + [key: string]: any; +} + +/** + * Layout title configuration + */ +export interface LayoutTitle { + text: string; + font?: Partial; + xref?: 'container' | 'paper'; + yref?: 'container' | 'paper'; + x?: number; + y?: number; + xanchor?: 'auto' | 'left' | 'center' | 'right'; + yanchor?: 'auto' | 'top' | 'middle' | 'bottom'; + pad?: Partial; +} + +/** + * Layout margin configuration + */ +export interface LayoutMargin { + l: number; + r: number; + t: number; + b: number; + pad: number; + autoexpand?: boolean; +} + +/** + * Font configuration (used throughout) + */ +export interface Font { + color: string; + family: string; + size: number; + style?: 'normal' | 'italic'; + variant?: string; + weight?: number | string; +} + +/** + * Legend configuration + */ +export interface Legend { + bgcolor?: string; + bordercolor?: string; + borderwidth?: number; + font?: Partial; + itemclick?: 'toggle' | 'toggleothers' | false; + itemdoubleclick?: 'toggle' | 'toggleothers' | false; + itemsizing?: 'trace' | 'constant'; + itemwidth?: number; + orientation?: 'v' | 'h'; + title?: Partial; + tracegroupgap?: number; + traceorder?: string; + valign?: 'top' | 'middle' | 'bottom'; + x?: number; + xanchor?: 'auto' | 'left' | 'center' | 'right'; + y?: number; + yanchor?: 'auto' | 'top' | 'middle' | 'bottom'; +} + +/** + * Legend title configuration + */ +export interface LegendTitle { + font?: Partial; + side?: 'top' | 'left' | 'top left'; + text: string; +} + +/** + * Layout axis configuration + */ +export interface LayoutAxis { + title?: string | Partial; + type?: AxisType; + autorange?: boolean | 'reversed'; + range?: [number | string, number | string]; + fixedrange?: boolean; + showgrid?: boolean; + showline?: boolean; + showticklabels?: boolean; + ticks?: '' | 'outside' | 'inside'; + tickmode?: 'auto' | 'linear' | 'array'; + tickvals?: any[]; + ticktext?: string[]; + tickangle?: number; + tickfont?: Partial; + zeroline?: boolean; + zerolinecolor?: string; + zerolinewidth?: number; + gridcolor?: string; + gridwidth?: number; + linecolor?: string; + linewidth?: number; + mirror?: boolean | 'ticks' | 'all' | 'allticks'; + anchor?: string; + side?: 'top' | 'bottom' | 'left' | 'right'; + overlaying?: string; + domain?: [number, number]; + position?: number; + + // Internal properties + _id?: string; + _name?: string; + _mainAxis?: boolean; + _anchorAxis?: any; + + [key: string]: any; +} + +/** + * Axis title configuration + */ +export interface AxisTitle { + font?: Partial; + standoff?: number; + text: string; +} + +/** + * Padding configuration + */ +export interface Padding { + b: number; + l: number; + r: number; + t: number; +} + +/** + * Layout size information (internal) + */ +export interface LayoutSize { + b: number; + h: number; + l: number; + p: number; + r: number; + t: number; + w: number; +} + +/** + * Subplot information (internal) + */ +export interface SubplotInfo { + [key: string]: string[] | undefined; + cartesian?: string[]; + geo?: string[]; + gl2d?: string[]; + map?: string[]; + mapbox?: string[]; + pie?: string[]; + polar?: string[]; + sankey?: string[]; + ternary?: string[]; +} diff --git a/src/types/index.d.ts b/src/types/index.d.ts new file mode 100644 index 00000000000..74a2d0da521 --- /dev/null +++ b/src/types/index.d.ts @@ -0,0 +1,20 @@ +/** + * Central type definitions for plotly.js + * + * This file exports all shared types from subdirectories. + * Import from here for convenience: + * + * @example + * import type { GraphDiv, Layout, PlotData } from '../types'; + */ + +// Core types +export * from './components/common'; +export * from './core/config'; +export * from './core/data'; +export * from './core/events'; +export * from './core/graph-div'; +export * from './core/layout'; +export * from './lib/common'; +export * from './plots/common'; +export * from './traces/common'; diff --git a/src/types/lib/common.d.ts b/src/types/lib/common.d.ts new file mode 100644 index 00000000000..7d1da324dad --- /dev/null +++ b/src/types/lib/common.d.ts @@ -0,0 +1,108 @@ +/** + * Common library utility types + * + * Types for Lib utilities and helpers + */ + +/** + * Coercion function signature + */ +export type CoerceFn = (attr: string, dflt?: any) => any; + +/** + * Nested property path + */ +export type PropertyPath = string | string[]; + +/** + * Color scale + */ +export type ColorScale = string | string[] | Array<[number, string]>; + +/** + * Date format string + */ +export type DateFormat = string; + +/** + * Single data value + */ +export type Datum = string | number | Date | null; + +/** + * Line dash styles + */ +export type Dash = 'solid' | 'dot' | 'dash' | 'longdash' | 'dashdot' | 'longdashdot'; + +/** + * Supported calendar systems + */ +export type Calendar = + | 'chinese' + | 'coptic' + | 'discworld' + | 'ethiopian' + | 'gregorian' + | 'hebrew' + | 'islamic' + | 'jalali' + | 'julian' + | 'mayan' + | 'nanakshahi' + | 'nepali' + | 'persian' + | 'taiwan' + | 'thai' + | 'ummalqura'; + +/** + * Axis type + */ +export type AxisType = '-' | 'category' | 'date' | 'linear' | 'log' | 'multicategory'; + +/** + * Numeric array + */ +export type NumericArray = number[] | Float32Array | Float64Array; + +/** + * Type that can be a single value or an array + */ +export type Arrayable = T | T[]; + +/** + * Rectangle bounds + */ +export interface Rect { + left: number; + right: number; + top: number; + bottom: number; + width?: number; + height?: number; +} + +/** + * Point in 2D space + */ +export interface Point2D { + x: number; + y: number; +} + +/** + * Point in 3D space + */ +export interface Point3D extends Point2D { + z: number; +} + +/** + * RGBA color + */ +export interface RGBAColor { + r: number; + g: number; + b: number; + a: number; +} diff --git a/src/types/plots/common.d.ts b/src/types/plots/common.d.ts new file mode 100644 index 00000000000..2b14e936922 --- /dev/null +++ b/src/types/plots/common.d.ts @@ -0,0 +1,37 @@ +/** + * Common plot-related types + * + * Types shared across different plot modules + */ + +/** + * Plot info structure (internal) + */ +export interface PlotInfo { + id: string; + xaxis: any; + yaxis: any; + domain?: { x: [number, number]; y: [number, number] }; + _module?: any; + [key: string]: any; +} + +/** + * Subplot structure + */ +export interface Subplot { + id: string; + type: string; + domain?: { x: [number, number]; y: [number, number] }; + [key: string]: any; +} + +/** + * Axis range + */ +export type AxisRange = [number, number]; + +/** + * Domain range (normalized 0-1) + */ +export type DomainRange = [number, number]; diff --git a/src/types/traces/common.d.ts b/src/types/traces/common.d.ts new file mode 100644 index 00000000000..f3cec6513c4 --- /dev/null +++ b/src/types/traces/common.d.ts @@ -0,0 +1,73 @@ +/** + * Common trace-related types + * + * Types shared across different trace modules + */ + +/** + * Calculated trace data (internal) + */ +export interface CalcData { + x?: any; + y?: any; + z?: any; + trace?: any; + t?: any; + [key: string]: any; +} + +/** + * Trace module interface + */ +export interface TraceModule { + name: string; + categories: string[]; + animatable?: boolean; + meta?: any; + + // Lifecycle methods + calc?: (gd: any, trace: any) => CalcData[]; + plot?: (gd: any, subplot: any, cdata: any, transitionOpts?: any) => void; + style?: (gd: any, cd?: any) => void; + hoverPoints?: (pointData: any, xval: any, yval: any, hovermode: any) => any; + selectPoints?: (searchInfo: any, selectionTester: any) => any; + eventData?: (out: any, pt: any, trace: any, cd: any, pointNumber: any) => any; + + // Other methods + crossTraceCalc?: (gd: any, plotinfo: any, traces: any[]) => void; + arraysToCalcdata?: (cd: any, trace: any) => void; +} + +/** + * Trace defaults function signature + */ +export type TraceDefaultsFn = ( + traceIn: any, + traceOut: any, + defaultColor: string, + layout: any +) => void; + +/** + * Trace attributes structure + */ +export interface TraceAttributes { + [key: string]: AttributeDefinition; +} + +/** + * Attribute definition + */ +export interface AttributeDefinition { + arrayOk?: boolean; + description?: string; + dflt?: any; + editType?: string; + flags?: string[]; + max?: number; + min?: number; + role?: string; + valType?: string; + values?: any[]; + [key: string]: any; +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000000..328648fd1c0 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,69 @@ +{ + "compilerOptions": { + // Target and module - optimized for CommonJS codebase + "target": "ES2016", + "module": "CommonJS", + "lib": ["ES2016", "DOM"], + + // Module resolution + "moduleResolution": "node", + "resolveJsonModule": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + + // Paths + "baseUrl": ".", + "paths": { + "stream": ["node_modules/stream-browserify"], + "@types": ["src/types"], + "@types/*": ["src/types/*"] + }, + + // Emit + "declaration": false, + "declarationMap": false, + "sourceMap": true, + "outDir": "./dist", + "noEmit": true, + + // Type checking - start loose, tighten gradually + "strict": false, + "noImplicitAny": false, + "strictNullChecks": false, + "strictFunctionTypes": false, + "strictBindCallApply": false, + "strictPropertyInitialization": false, + "noImplicitThis": false, + "alwaysStrict": false, + + // Linting + "noUnusedLocals": false, + "noUnusedParameters": false, + "noImplicitReturns": false, + "noFallthroughCasesInSwitch": true, + + // Advanced options + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "allowJs": true, + "checkJs": false, + "maxNodeModuleJsDepth": 1, + "isolatedModules": true + }, + "include": [ + "src/**/*", + "lib/**/*", + "tasks/**/*" + ], + "exclude": [ + "node_modules", + "dist", + "build", + "test", + "stackgl_modules", + "topojson", + "devtools", + "**/*.spec.js", + "**/*.test.js" + ] +} From 412d4b1629d1197fb84aed298eda02e2258179aa Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Fri, 2 Jan 2026 12:54:54 -0700 Subject: [PATCH 028/241] Convert a few small files to TS --- src/lib/clean_number.js | 22 ---------------------- src/lib/clean_number.ts | 20 ++++++++++++++++++++ src/lib/{mod.js => mod.ts} | 15 ++++----------- src/lib/regex.js | 20 -------------------- src/lib/regex.ts | 21 +++++++++++++++++++++ src/lib/sort_object_keys.js | 5 ----- src/lib/sort_object_keys.ts | 7 +++++++ 7 files changed, 52 insertions(+), 58 deletions(-) delete mode 100644 src/lib/clean_number.js create mode 100644 src/lib/clean_number.ts rename src/lib/{mod.js => mod.ts} (58%) delete mode 100644 src/lib/regex.js create mode 100644 src/lib/regex.ts delete mode 100644 src/lib/sort_object_keys.js create mode 100644 src/lib/sort_object_keys.ts diff --git a/src/lib/clean_number.js b/src/lib/clean_number.js deleted file mode 100644 index 7a265b48df1..00000000000 --- a/src/lib/clean_number.js +++ /dev/null @@ -1,22 +0,0 @@ -'use strict'; - -var isNumeric = require('fast-isnumeric'); - -var BADNUM = require('../constants/numerical').BADNUM; - -// precompile for speed -var JUNK = /^['"%,$#\s']+|[, ]|['"%,$#\s']+$/g; - -/** - * cleanNumber: remove common leading and trailing cruft - * Always returns either a number or BADNUM. - */ -module.exports = function cleanNumber(v) { - if(typeof v === 'string') { - v = v.replace(JUNK, ''); - } - - if(isNumeric(v)) return Number(v); - - return BADNUM; -}; diff --git a/src/lib/clean_number.ts b/src/lib/clean_number.ts new file mode 100644 index 00000000000..55ca8d8287b --- /dev/null +++ b/src/lib/clean_number.ts @@ -0,0 +1,20 @@ +'use strict'; + +import isNumeric from 'fast-isnumeric'; +import { BADNUM } from '../constants/numerical'; + +// precompile for speed +const JUNK = /^['"%,$#\s']+|[, ]|['"%,$#\s']+$/g; + +/** + * cleanNumber: remove common leading and trailing cruft + * Always returns either a number or BADNUM. + */ +function cleanNumber(v: any): number | undefined { + if (typeof v === 'string') v = v.replace(JUNK, ''); + if (isNumeric(v)) return Number(v); + + return BADNUM; +} + +export default cleanNumber; diff --git a/src/lib/mod.js b/src/lib/mod.ts similarity index 58% rename from src/lib/mod.js rename to src/lib/mod.ts index 04d24056bd3..422ce6dfdf0 100644 --- a/src/lib/mod.js +++ b/src/lib/mod.ts @@ -4,8 +4,8 @@ * sanitized modulus function that always returns in the range [0, d) * rather than (-d, 0] if v is negative */ -function mod(v, d) { - var out = v % d; +export function mod(v: number, d: number) { + const out = v % d; return out < 0 ? out + d : out; } @@ -13,13 +13,6 @@ function mod(v, d) { * sanitized modulus function that always returns in the range [-d/2, d/2] * rather than (-d, 0] if v is negative */ -function modHalf(v, d) { - return Math.abs(v) > (d / 2) ? - v - Math.round(v / d) * d : - v; +export function modHalf(v: number, d: number) { + return Math.abs(v) > d / 2 ? v - Math.round(v / d) * d : v; } - -module.exports = { - mod: mod, - modHalf: modHalf -}; diff --git a/src/lib/regex.js b/src/lib/regex.js deleted file mode 100644 index 15eef630477..00000000000 --- a/src/lib/regex.js +++ /dev/null @@ -1,20 +0,0 @@ -'use strict'; - -/* - * make a regex for matching counter ids/names ie xaxis, xaxis2, xaxis10... - * - * @param {string} head: the head of the pattern, eg 'x' matches 'x', 'x2', 'x10' etc. - * 'xy' is a special case for cartesian subplots: it matches 'x2y3' etc - * @param {Optional(string)} tail: a fixed piece after the id - * eg counterRegex('scene', '.annotations') for scene2.annotations etc. - * @param {boolean} openEnded: if true, the string may continue past the match. - * @param {boolean} matchBeginning: if false, the string may start before the match. - */ -exports.counter = function(head, tail, openEnded, matchBeginning) { - var fullTail = (tail || '') + (openEnded ? '' : '$'); - var startWithPrefix = matchBeginning === false ? '' : '^'; - if(head === 'xy') { - return new RegExp(startWithPrefix + 'x([2-9]|[1-9][0-9]+)?y([2-9]|[1-9][0-9]+)?' + fullTail); - } - return new RegExp(startWithPrefix + head + '([2-9]|[1-9][0-9]+)?' + fullTail); -}; diff --git a/src/lib/regex.ts b/src/lib/regex.ts new file mode 100644 index 00000000000..f66e0205dce --- /dev/null +++ b/src/lib/regex.ts @@ -0,0 +1,21 @@ +'use strict'; + +const NUMBER_REGEX = '([2-9]|[1-9][0-9]+)?'; + +/** + * make a regex for matching counter ids/names ie xaxis, xaxis2, xaxis10... + * + * @param head: the head of the pattern, eg 'x' matches 'x', 'x2', 'x10' etc. + * 'xy' is a special case for cartesian subplots: it matches 'x2y3' etc + * @param tail: a fixed piece after the id + * eg counterRegex('scene', '.annotations') for scene2.annotations etc. + * @param openEnded: if true, the string may continue past the match. + * @param matchBeginning: if false, the string may start before the match. + */ +export function counter(head: string, tail: string = '', openEnded: boolean, matchBeginning: boolean) { + const fullTail = tail + (openEnded ? '' : '$'); + const startWithPrefix = matchBeginning === false ? '' : '^'; + return head === 'xy' + ? new RegExp(startWithPrefix + 'x' + NUMBER_REGEX + 'y' + NUMBER_REGEX + fullTail) + : new RegExp(startWithPrefix + head + NUMBER_REGEX + fullTail); +} diff --git a/src/lib/sort_object_keys.js b/src/lib/sort_object_keys.js deleted file mode 100644 index f995399cc52..00000000000 --- a/src/lib/sort_object_keys.js +++ /dev/null @@ -1,5 +0,0 @@ -'use strict'; - -module.exports = function sortObjectKeys(obj) { - return Object.keys(obj).sort(); -}; diff --git a/src/lib/sort_object_keys.ts b/src/lib/sort_object_keys.ts new file mode 100644 index 00000000000..1be0aba0d3c --- /dev/null +++ b/src/lib/sort_object_keys.ts @@ -0,0 +1,7 @@ +'use strict'; + +function sortObjectKeys(obj: Record) { + return Object.keys(obj).sort(); +} + +export default sortObjectKeys; From f7045425cd4344ead5850939de6c4df6d358d4f3 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Fri, 2 Jan 2026 13:05:04 -0700 Subject: [PATCH 029/241] Update requires to handle esbuild ESM/CJS interoperability --- src/components/colorscale/attributes.js | 2 +- src/lib/index.js | 4 ++-- src/plots/geo/layout_attributes.js | 2 +- src/plots/map/constants.js | 2 +- src/plots/mapbox/constants.js | 2 +- src/traces/scatter3d/attributes.js | 2 +- src/traces/scattergl/attributes.js | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/components/colorscale/attributes.js b/src/components/colorscale/attributes.js index 2074e8349f4..bee2eb008aa 100644 --- a/src/components/colorscale/attributes.js +++ b/src/components/colorscale/attributes.js @@ -2,7 +2,7 @@ var colorbarAttrs = require('../colorbar/attributes'); var counterRegex = require('../../lib/regex').counter; -var sortObjectKeys = require('../../lib/sort_object_keys'); +var sortObjectKeys = require('../../lib/sort_object_keys').default; var palettes = require('./scales.js').scales; var paletteStr = sortObjectKeys(palettes); diff --git a/src/lib/index.js b/src/lib/index.js index d898a526140..8124c9ec9a5 100644 --- a/src/lib/index.js +++ b/src/lib/index.js @@ -105,7 +105,7 @@ lib.roundUp = searchModule.roundUp; lib.sort = searchModule.sort; lib.findIndexOfMin = searchModule.findIndexOfMin; -lib.sortObjectKeys = require('./sort_object_keys'); +lib.sortObjectKeys = require('./sort_object_keys').default; var statsModule = require('./stats'); lib.aggNums = statsModule.aggNums; @@ -206,7 +206,7 @@ lib.pushUnique = require('./push_unique'); lib.increment = require('./increment'); -lib.cleanNumber = require('./clean_number'); +lib.cleanNumber = require('./clean_number').default; lib.ensureNumber = function ensureNumber(v) { if (!isNumeric(v)) return BADNUM; diff --git a/src/plots/geo/layout_attributes.js b/src/plots/geo/layout_attributes.js index a6666178c37..450db363233 100644 --- a/src/plots/geo/layout_attributes.js +++ b/src/plots/geo/layout_attributes.js @@ -5,7 +5,7 @@ var domainAttrs = require('../domain').attributes; var dash = require('../../components/drawing/attributes').dash; var constants = require('./constants'); var overrideAll = require('../../plot_api/edit_types').overrideAll; -var sortObjectKeys = require('../../lib/sort_object_keys'); +var sortObjectKeys = require('../../lib/sort_object_keys').default; var geoAxesAttrs = { range: { diff --git a/src/plots/map/constants.js b/src/plots/map/constants.js index 2a867418477..52117231fae 100644 --- a/src/plots/map/constants.js +++ b/src/plots/map/constants.js @@ -1,6 +1,6 @@ 'use strict'; -var sortObjectKeys = require('../../lib/sort_object_keys'); +var sortObjectKeys = require('../../lib/sort_object_keys').default; var arcgisSatHybrid = require('./styles/arcgis-sat-hybrid'); // https://raw.githubusercontent.com/go2garret/maps/v1.0.0/LICENSE var arcgisSat = require('./styles/arcgis-sat'); diff --git a/src/plots/mapbox/constants.js b/src/plots/mapbox/constants.js index 37f79ddc569..d349438ecd1 100644 --- a/src/plots/mapbox/constants.js +++ b/src/plots/mapbox/constants.js @@ -1,6 +1,6 @@ 'use strict'; -var sortObjectKeys = require('../../lib/sort_object_keys'); +var sortObjectKeys = require('../../lib/sort_object_keys').default; var requiredVersion = '1.13.4'; diff --git a/src/traces/scatter3d/attributes.js b/src/traces/scatter3d/attributes.js index 17023178d28..12998d8cfd2 100644 --- a/src/traces/scatter3d/attributes.js +++ b/src/traces/scatter3d/attributes.js @@ -11,7 +11,7 @@ var DASHES = require('../../constants/gl3d_dashes'); var MARKER_SYMBOLS = require('../../constants/gl3d_markers'); var extendFlat = require('../../lib/extend').extendFlat; var overrideAll = require('../../plot_api/edit_types').overrideAll; -var sortObjectKeys = require('../../lib/sort_object_keys'); +var sortObjectKeys = require('../../lib/sort_object_keys').default; var scatterLineAttrs = scatterAttrs.line; var scatterMarkerAttrs = scatterAttrs.marker; diff --git a/src/traces/scattergl/attributes.js b/src/traces/scattergl/attributes.js index 8f05e9f5cc4..59188554c52 100644 --- a/src/traces/scattergl/attributes.js +++ b/src/traces/scattergl/attributes.js @@ -7,7 +7,7 @@ var scatterAttrs = require('../scatter/attributes'); var axisHoverFormat = require('../../plots/cartesian/axis_format_attributes').axisHoverFormat; var colorScaleAttrs = require('../../components/colorscale/attributes'); -var sortObjectKeys = require('../../lib/sort_object_keys'); +var sortObjectKeys = require('../../lib/sort_object_keys').default; var extendFlat = require('../../lib/extend').extendFlat; var overrideAll = require('../../plot_api/edit_types').overrideAll; var DASHES = require('./constants').DASHES; From 5f72cf8276bdc29b2886a4a772c0de293388fde6 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Fri, 2 Jan 2026 13:28:39 -0700 Subject: [PATCH 030/241] Use ts-node for scripts using TS that run outside of esbuild --- package-lock.json | 15 +++++++++++++++ package.json | 3 ++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index f1f6839a408..6e816360891 100644 --- a/package-lock.json +++ b/package-lock.json @@ -109,6 +109,7 @@ "through2": "^4.0.2", "transform-loader": "^0.2.4", "true-case-path": "^2.2.1", + "ts-node": "^10.9.2", "typescript": "^5.9.3", "virtual-webgl": "^1.0.7" }, @@ -6470,6 +6471,13 @@ "dev": true, "license": "ISC" }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true, + "license": "ISC" + }, "node_modules/map-limit": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/map-limit/-/map-limit-0.0.1.tgz", @@ -10107,6 +10115,13 @@ "dev": true, "license": "MIT" }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true, + "license": "MIT" + }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", diff --git a/package.json b/package.json index 106d2217cb4..d87dfc646a6 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "schema": "node tasks/schema.mjs", "stats": "node tasks/stats.js", "find-strings": "node tasks/find_locale_strings.js", - "preprocess": "node tasks/preprocess.js", + "preprocess": "ts-node tasks/preprocess.js", "use-draftlogs": "node tasks/use_draftlogs.js", "empty-draftlogs": "node tasks/empty_draftlogs.js", "empty-dist": "node tasks/empty_dist.js", @@ -169,6 +169,7 @@ "through2": "^4.0.2", "transform-loader": "^0.2.4", "true-case-path": "^2.2.1", + "ts-node": "^10.9.2", "typescript": "^5.9.3", "virtual-webgl": "^1.0.7" }, From 5ed7da0614a33094dbc001319609163a8d6f3e5a Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Fri, 2 Jan 2026 16:31:51 -0700 Subject: [PATCH 031/241] Run test script with ts-node --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d87dfc646a6..306a8528631 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "test-mock": "node tasks/test_mock.mjs", "test-image": "node test/image/compare_pixels_test.mjs", "test-export": "node test/image/export_test.js", - "test-syntax": "node tasks/test_syntax.js && npm run find-strings -- --no-output", + "test-syntax": "ts-node tasks/test_syntax.js && npm run find-strings -- --no-output", "test-bundle": "node tasks/test_bundle.js", "test-plain-obj": "node tasks/test_plain_obj.mjs", "test": "npm run test-jasmine -- --nowatch && npm run test-bundle && npm run test-image && npm run test-export && npm run test-syntax && npm run lint", From f2622c5723306d1bb46475e983d19fbcc34eb3c3 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Wed, 6 May 2026 16:00:10 -0600 Subject: [PATCH 032/241] Add additional types and type generation script --- src/types/components/colorbar.d.ts | 115 ++ src/types/components/rangeselector.d.ts | 43 + src/types/components/slider.d.ts | 65 ++ src/types/components/updatemenu.d.ts | 55 + src/types/core/animation.d.ts | 149 +++ src/types/core/api.d.ts | 185 ++++ src/types/core/config.d.ts | 345 ++++-- src/types/core/data.d.ts | 563 +++++++--- src/types/core/events.d.ts | 289 +++-- src/types/core/graph-div.d.ts | 99 +- src/types/core/layout.d.ts | 1088 ++++++++++++++++--- src/types/core/template.d.ts | 47 + src/types/generated/components/modebar.d.ts | 16 + src/types/generated/index.d.ts | 6 + src/types/index.d.ts | 26 +- src/types/lib/attributes.d.ts | 224 ++++ src/types/lib/common.d.ts | 137 ++- src/types/traces/box.d.ts | 42 + src/types/traces/candlestick.d.ts | 51 + src/types/traces/common.d.ts | 7 +- src/types/traces/ohlc.d.ts | 95 ++ src/types/traces/pie.d.ts | 126 +++ src/types/traces/sankey.d.ts | 108 ++ src/types/traces/violin.d.ts | 61 ++ tasks/generate_types.mjs | 307 ++++++ 25 files changed, 3558 insertions(+), 691 deletions(-) create mode 100644 src/types/components/colorbar.d.ts create mode 100644 src/types/components/rangeselector.d.ts create mode 100644 src/types/components/slider.d.ts create mode 100644 src/types/components/updatemenu.d.ts create mode 100644 src/types/core/animation.d.ts create mode 100644 src/types/core/api.d.ts create mode 100644 src/types/core/template.d.ts create mode 100644 src/types/generated/components/modebar.d.ts create mode 100644 src/types/generated/index.d.ts create mode 100644 src/types/lib/attributes.d.ts create mode 100644 src/types/traces/box.d.ts create mode 100644 src/types/traces/candlestick.d.ts create mode 100644 src/types/traces/ohlc.d.ts create mode 100644 src/types/traces/pie.d.ts create mode 100644 src/types/traces/sankey.d.ts create mode 100644 src/types/traces/violin.d.ts create mode 100644 tasks/generate_types.mjs diff --git a/src/types/components/colorbar.d.ts b/src/types/components/colorbar.d.ts new file mode 100644 index 00000000000..504984ba045 --- /dev/null +++ b/src/types/components/colorbar.d.ts @@ -0,0 +1,115 @@ +/** + * ColorBar types + * + * Defines the structure of ColorBar configuration. + */ + +import type { Font } from '../core/layout'; +import type { Color, Datum, DTickValue, XAnchor, XRef, YAnchor, YRef } from '../lib/common'; + +/** + * Exponent format type + */ +export type ExponentFormat = 'none' | 'e' | 'E' | 'power' | 'SI' | 'B'; + +/** + * Show prefix/suffix type + */ +export type ShowTickLabel = 'all' | 'first' | 'last' | 'none'; + +/** + * Tick label position type + */ +export type TickLabelPosition = + | 'outside' + | 'inside' + | 'outside top' + | 'inside top' + | 'outside left' + | 'inside left' + | 'outside right' + | 'inside right' + | 'outside bottom' + | 'inside bottom'; + +/** + * Tick label overflow type + */ +export type TickLabelOverflow = 'allow' | 'hide past div' | 'hide past domain'; + +/** + * Length mode type + */ +export type LengthMode = 'fraction' | 'pixels'; + +/** + * ColorBar title configuration + */ +export interface ColorBarTitle { + text?: string; + font?: Partial; + side?: 'right' | 'top' | 'bottom'; +} + +/** + * Tick format stop configuration + */ +export interface TickFormatStop { + enabled?: boolean; + dtickrange?: [DTickValue | null, DTickValue | null]; + value?: string; + name?: string; + templateitemname?: string; +} + +/** + * ColorBar configuration + */ +export interface ColorBar { + orientation?: 'h' | 'v'; + thicknessmode?: LengthMode; + thickness?: number; + lenmode?: LengthMode; + len?: number; + x?: number; + xref?: XRef; + xanchor?: XAnchor; + xpad?: number; + y?: number; + yref?: YRef; + yanchor?: YAnchor; + ypad?: number; + outlinecolor?: Color; + outlinewidth?: number; + bordercolor?: Color; + borderwidth?: number; + bgcolor?: Color; + tickmode?: 'auto' | 'linear' | 'array'; + nticks?: number; + tick0?: number | string; + dtick?: DTickValue; + tickvals?: Datum[] | Datum[][]; + ticktext?: Datum[] | Datum[][]; + ticks?: 'outside' | 'inside' | ''; + ticklabeloverflow?: TickLabelOverflow; + ticklabelposition?: TickLabelPosition; + ticklen?: number; + tickwidth?: number; + tickcolor?: Color; + ticklabelstep?: number; + showticklabels?: boolean; + labelalias?: DTickValue; + tickfont?: Partial; + tickangle?: 'auto' | number; + tickformat?: string; + tickformatstops?: Array>; + tickprefix?: string; + showtickprefix?: ShowTickLabel; + ticksuffix?: string; + showticksuffix?: ShowTickLabel; + separatethousands?: boolean; + exponentformat?: ExponentFormat; + minexponent?: number; + showexponent?: ShowTickLabel; + title?: Partial; +} diff --git a/src/types/components/rangeselector.d.ts b/src/types/components/rangeselector.d.ts new file mode 100644 index 00000000000..23746053929 --- /dev/null +++ b/src/types/components/rangeselector.d.ts @@ -0,0 +1,43 @@ +/** + * RangeSelector types + * + * Defines the structure of RangeSelector configuration. + */ + +import type { Font } from '../core/layout'; +import type { Color, XAnchor, YAnchor } from '../lib/common'; + +/** + * RangeSelector step type + */ +export type RangeSelectorStep = 'month' | 'year' | 'day' | 'hour' | 'minute' | 'second' | 'all'; + +/** + * RangeSelector button configuration + */ +export interface RangeSelectorButton { + visible?: boolean; + step?: RangeSelectorStep; + stepmode?: 'backward' | 'todate'; + count?: number; + label?: string; + name?: string; + templateitemname?: string; +} + +/** + * RangeSelector configuration + */ +export interface RangeSelector { + buttons?: Array>; + visible?: boolean; + x?: number; + xanchor?: XAnchor; + y?: number; + yanchor?: YAnchor; + activecolor?: Color; + bgcolor?: Color; + bordercolor?: Color; + borderwidth?: number; + font?: Partial; +} diff --git a/src/types/components/slider.d.ts b/src/types/components/slider.d.ts new file mode 100644 index 00000000000..08abed3d76a --- /dev/null +++ b/src/types/components/slider.d.ts @@ -0,0 +1,65 @@ +/** + * Slider types + * + * Defines the structure of Slider configuration. + */ + +import type { Transition } from '../core/animation'; +import type { Font, Padding } from '../core/layout'; +import type { Color, XAnchor, YAnchor } from '../lib/common'; +import type { LengthMode } from './colorbar'; + +/** + * Slider step configuration + */ +export interface SliderStep { + visible?: boolean; + method?: 'restyle' | 'relayout' | 'animate' | 'update' | 'skip'; + args?: any[]; + label?: string; + value?: string; + execute?: boolean; + name?: string; + templateitemname?: string; +} + +/** + * Slider current value configuration + */ +export interface CurrentValue { + visible?: boolean; + xanchor?: XAnchor; + offset?: number; + prefix?: string; + suffix?: string; + font?: Partial; +} + +/** + * Slider configuration + */ +export interface Slider { + visible?: boolean; + active?: number; + steps?: Array>; + lenmode?: LengthMode; + len?: number; + x?: number; + y?: number; + pad?: Partial; + xanchor?: XAnchor; + yanchor?: YAnchor; + transition?: Partial; + currentvalue?: Partial; + font?: Partial; + activebgcolor?: Color; + bgcolor?: Color; + bordercolor?: Color; + borderwidth?: number; + ticklen?: number; + tickcolor?: Color; + tickwidth?: number; + minorticklen?: number; + name?: string; + templateitemname?: string; +} diff --git a/src/types/components/updatemenu.d.ts b/src/types/components/updatemenu.d.ts new file mode 100644 index 00000000000..6ae2a2dd1ab --- /dev/null +++ b/src/types/components/updatemenu.d.ts @@ -0,0 +1,55 @@ +/** + * UpdateMenu types + * + * Defines the structure of UpdateMenu configuration. + */ + +import type { Color, XAnchor, YAnchor } from '../lib/common'; +import type { Font, Padding } from '../core/layout'; + +/** + * UpdateMenu button configuration + */ +export interface UpdateMenuButton { + visible?: boolean; + method?: 'restyle' | 'relayout' | 'animate' | 'update' | 'skip'; + args?: any[]; + args2?: any[]; + label?: string; + execute?: boolean; + name?: string; + templateitemname?: string; +} + +/** + * UpdateMenu direction type + */ +export type UpdateMenuDirection = 'left' | 'up' | 'right' | 'down'; + +/** + * UpdateMenu type + */ +export type UpdateMenuType = 'dropdown' | 'buttons'; + +/** + * UpdateMenu configuration + */ +export interface UpdateMenu { + active?: number; + bgcolor?: Color; + bordercolor?: Color; + borderwidth?: number; + buttons?: Array>; + direction?: UpdateMenuDirection; + font?: Partial; + name?: string; + pad?: Partial; + showactive?: boolean; + templateitemname?: string; + type?: UpdateMenuType; + visible?: boolean; + x?: number; + xanchor?: XAnchor; + y?: number; + yanchor?: YAnchor; +} diff --git a/src/types/core/animation.d.ts b/src/types/core/animation.d.ts new file mode 100644 index 00000000000..2ce98033962 --- /dev/null +++ b/src/types/core/animation.d.ts @@ -0,0 +1,149 @@ +/** + * Animation types + * + * Defines animation and transition types for Plotly. + */ + +import type { PlotData } from './data'; +import type { Layout } from './layout'; + +/** + * Transition easing type + */ +export type TransitionEasing = + | 'linear' + | 'quad' + | 'cubic' + | 'sin' + | 'exp' + | 'circle' + | 'elastic' + | 'back' + | 'bounce' + | 'linear-in' + | 'quad-in' + | 'cubic-in' + | 'sin-in' + | 'exp-in' + | 'circle-in' + | 'elastic-in' + | 'back-in' + | 'bounce-in' + | 'linear-out' + | 'quad-out' + | 'cubic-out' + | 'sin-out' + | 'exp-out' + | 'circle-out' + | 'elastic-out' + | 'back-out' + | 'bounce-out' + | 'linear-in-out' + | 'quad-in-out' + | 'cubic-in-out' + | 'sin-in-out' + | 'exp-in-out' + | 'circle-in-out' + | 'elastic-in-out' + | 'back-in-out' + | 'bounce-in-out'; + +/** + * Transition configuration + */ +export interface Transition { + /** + * Duration of the transition in milliseconds + */ + duration?: number; + + /** + * Easing function for the transition + */ + easing?: TransitionEasing; + + /** + * Ordering of the transition + */ + ordering?: 'layout first' | 'traces first'; +} + +/** + * Animation frame options + */ +export interface AnimationFrameOpts { + /** + * Duration of the frame in milliseconds + */ + duration?: number; + + /** + * Whether to redraw the plot + */ + redraw?: boolean; +} + +/** + * Animation options + */ +export interface AnimationOpts { + /** + * Animation mode + */ + mode?: 'immediate' | 'next' | 'afterall'; + + /** + * Animation direction + */ + direction?: 'forward' | 'reverse'; + + /** + * Start from current state + */ + fromcurrent?: boolean; + + /** + * Transition configuration + */ + transition?: Partial; + + /** + * Frame configuration + */ + frame?: Partial; +} + +/** + * Animation frame + */ +export interface Frame { + /** + * Frame group + */ + group?: string; + + /** + * Frame name + */ + name: string; + + /** + * Trace indices this frame applies to + */ + traces?: number[]; + + /** + * Base frame to inherit from + */ + baseframe?: string; + + /** + * Data updates for this frame + */ + data?: Partial[]; + + /** + * Layout updates for this frame + */ + layout?: Partial; +} diff --git a/src/types/core/api.d.ts b/src/types/core/api.d.ts new file mode 100644 index 00000000000..a0bb44b6f3a --- /dev/null +++ b/src/types/core/api.d.ts @@ -0,0 +1,185 @@ +/** + * Public API function types for Plotly.js + */ + +import type { AnimationOpts, Frame } from './animation'; +import type { Config, DownloadImgopts, ToImgopts } from './config'; +import type { Data } from './data'; +import type { PlotlyHTMLElement } from './events'; +import type { Icon, Layout, Template } from './layout'; + +// --------------------------------------------------------------------------- +// Roots and request shapes +// --------------------------------------------------------------------------- + +export type Root = string | HTMLElement; + +export interface PlotlyDataLayoutConfig { + data: Data[]; + layout?: Partial; + config?: Partial; +} + +export type RootOrData = Root | PlotlyDataLayoutConfig; + +// --------------------------------------------------------------------------- +// Static plots / icons +// --------------------------------------------------------------------------- + +export interface StaticPlots { + resize(root: Root): void; +} + +export type DefaultIcons = + | 'undo' + | 'home' + | 'camera-retro' + | 'zoombox' + | 'pan' + | 'zoom_plus' + | 'zoom_minus' + | 'autoscale' + | 'tooltip_basic' + | 'tooltip_compare' + | 'plotlylogo' + | 'z-axis' + | '3d_rotate' + | 'camera' + | 'movie' + | 'question' + | 'disk' + | 'drawopenpath' + | 'drawclosedpath' + | 'lasso' + | 'selectbox' + | 'drawline' + | 'drawrect' + | 'drawcircle' + | 'eraseshape' + | 'spikeline' + | 'pencil' + | 'newplotlylogo'; + +export type IconsMap = { [K in DefaultIcons]: Icon }; + +// --------------------------------------------------------------------------- +// Module registration +// --------------------------------------------------------------------------- + +export interface RegisterTraceModule { + moduleType: 'trace'; + name: string; + categories: string[]; + meta: { + description: string; + }; +} + +export interface LocaleModule { + moduleType: 'locale'; + name: string; + dictionary: Record; + format: Record; +} + +export interface RegisterComponentModule { + moduleType: 'component'; + name: string; +} + +export interface ApiMethodModule { + moduleType: 'apiMethod'; + name: string; + fn: any; +} + +export type PlotlyModule = RegisterTraceModule | LocaleModule | RegisterComponentModule | ApiMethodModule; + +// --------------------------------------------------------------------------- +// Validation +// --------------------------------------------------------------------------- + +export interface ValidateResult { + code: string; + container: 'data' | 'layout'; + trace: number | null; + path: string | (string | number)[]; + astr: string; + msg: string; +} + +// --------------------------------------------------------------------------- +// Function declarations +// --------------------------------------------------------------------------- + +export function newPlot( + root: Root, + data: Data[], + layout?: Partial, + config?: Partial +): Promise; + +export function relayout(root: Root, layout: Partial): Promise; +export function redraw(root: Root): Promise; +export function purge(root: Root): void; +export function restyle(root: Root, aobj: Data, traces?: number[] | number): Promise; + +export function update( + root: Root, + traceUpdate: Data, + layoutUpdate: Partial, + traces?: number[] | number +): Promise; + +export function addTraces( + root: Root, + traces: Data | Data[], + newIndices?: number[] | number +): Promise; + +export function deleteTraces(root: Root, indices: number[] | number): Promise; + +export function moveTraces( + root: Root, + currentIndices: number[] | number, + newIndices?: number[] | number +): Promise; + +export function extendTraces( + root: Root, + update: Data | Data[], + indices: number | number[], + maxPoints?: number +): Promise; + +export function prependTraces( + root: Root, + update: Data | Data[], + indices: number | number[] +): Promise; + +export function toImage(root: RootOrData, opts?: ToImgopts): Promise; +export function downloadImage(root: RootOrData, opts: DownloadImgopts): Promise; + +export function react( + root: Root, + data: Data[], + layout?: Partial, + config?: Partial +): Promise; + +export function addFrames(root: Root, frames: Array>): Promise; +export function deleteFrames(root: Root, frames: number[]): Promise; +export function register(modules: PlotlyModule | PlotlyModule[]): void; + +export function animate( + root: Root, + frameOrGroupNameOrFrameList?: string | string[] | Partial | Array>, + opts?: Partial +): Promise; + +export function validate(data: Data[], layout: Partial): ValidateResult[]; +export function setPlotConfig(config: Partial): void; + +export type FigureOrRoot = Root | { data: Data[]; layout: Partial }; +export function makeTemplate(figure: FigureOrRoot): Template; diff --git a/src/types/core/config.d.ts b/src/types/core/config.d.ts index a3a9b5e48ae..62b0b70cbf4 100644 --- a/src/types/core/config.d.ts +++ b/src/types/core/config.d.ts @@ -1,177 +1,294 @@ /** * Config types * - * Defines the structure of Plotly config options. + * Plotly configuration options and edit settings. */ -/** - * User-provided configuration for Plotly - */ -export interface Config { +import type { ModeBarButtonAny, ModeBarDefaultButtons } from './layout'; + +// --------------------------------------------------------------------------- +// Edits +// --------------------------------------------------------------------------- + +export interface Edits { /** - * Whether the plot should resize on window resize + * Determines if the main anchor of the annotation is editable. + * @default false */ - autosizable?: boolean; - + annotationPosition: boolean; /** - * Display Plotly logo on mode bar + * Has only an effect for annotations with arrows. + * @default false */ - displaylogo?: boolean; - + annotationTail: boolean; /** - * Display the mode bar + * Enables editing annotation text. + * @default false */ - displayModeBar?: boolean | 'hover'; - + annotationText: boolean; /** - * What happens on double click + * Enables editing axis title text. + * @default false */ - doubleClick?: 'reset' | 'autosize' | 'reset+autosize' | false; - + axisTitleText: boolean; /** - * Allow plot to be edited + * Enables moving colorbars. + * @default false */ - editable?: boolean; - + colorbarPosition: boolean; /** - * What can be edited + * Enables editing colorbar title text. + * @default false */ - edits?: Partial; - + colorbarTitleText: boolean; /** - * Whether to fill the parent container + * Enables moving the legend. + * @default false */ - fillFrame?: boolean; - + legendPosition: boolean; /** - * Margin around the plot when fillFrame is true + * Enables editing trace name fields from the legend. + * @default false */ - frameMargins?: number; - + legendText: boolean; /** - * Text for the "Edit in Chart Studio" link + * Enables moving shapes. + * @default false */ - linkText?: string; - + shapePosition: boolean; /** - * Locale for formatting + * Enables editing the global layout title. + * @default false */ - locale?: string; + titleText: boolean; +} + +// Backwards-compatible alias +export type ConfigEdits = Edits; + +// --------------------------------------------------------------------------- +// Image export options +// --------------------------------------------------------------------------- + +export interface ToImgopts { + format: 'jpeg' | 'png' | 'webp' | 'svg'; + /** If null, uses current graph width */ + width: number | null; + /** If null, uses current graph height */ + height: number | null; + scale?: number | undefined; +} + +export interface DownloadImgopts { + format: 'jpeg' | 'png' | 'webp' | 'svg'; + width: number | null; + height: number | null; + filename: string; +} + +export interface ToImageButtonOptions { + format?: 'png' | 'svg' | 'jpeg' | 'webp'; + filename?: string; + height?: number; + width?: number; + scale?: number; +} +// --------------------------------------------------------------------------- +// Config +// --------------------------------------------------------------------------- + +export interface Config { /** - * Custom locale definitions + * No interactivity, for export or image generation. + * @default false */ - locales?: { [locale: string]: any }; - + staticPlot: boolean; /** - * Mapbox access token + * Determines whether math should be typeset when MathJax is present. + * @default true */ - mapboxAccessToken?: string; - + typesetMath: boolean; /** - * Custom mode bar buttons configuration + * Base URL for the 'Edit in Chart Studio' button. + * @default '' */ - modeBarButtons?: any; - + plotlyServerURL: string; /** - * Mode bar buttons to add + * Sets all pieces of `edits` unless overridden. + * @default false */ - modeBarButtonsToAdd?: any[]; - + editable: boolean; + edits: Partial; /** - * Mode bar buttons to remove + * Enables moving selections. + * @default true */ - modeBarButtonsToRemove?: string[]; - + editSelection: boolean; /** - * Pixel ratio for WebGL plots + * Plot with respect to layout.autosize:true and infer container size. + * @default false */ - plotGlPixelRatio?: number; - + autosizable: boolean; /** - * Base URL for plotly server + * Change the layout size when window is resized. + * @default false */ - plotlyServerURL?: string; - + responsive: boolean; /** - * Number of operations that can be queued + * Whether the graph fills the container or the screen. + * @default false */ - queueLength?: number; - + fillFrame: boolean; /** - * Whether to resize on window resize (alternative) + * Frame margins in fraction of the graph size. + * @default 0 */ - responsive?: boolean; - + frameMargins: number; /** - * Enable scroll zoom + * Mouse wheel / two-finger scroll zoom. + * @default 'gl3d+geo+map' */ - scrollZoom?: boolean; - + scrollZoom: string | boolean; /** - * Send data to Chart Studio + * Double click interaction mode. + * @default 'reset+autosize' */ - sendData?: boolean; - + doubleClick: 'reset+autosize' | 'reset' | 'autosize' | false; /** - * Background color setting function + * Delay for registering a double-click in ms. + * @default 300 */ - setBackground?: string | ((gd: any) => void); - + doubleClickDelay: number; /** - * Show "Edit in Chart Studio" link + * Show cartesian axis pan/zoom drag handles. + * @default true */ - showLink?: boolean; - + showAxisDragHandles: boolean; /** - * Show tips on first hover + * Show direct range entry at the pan/zoom drag points. + * @default true */ - showTips?: boolean; - + showAxisRangeEntryBoxes: boolean; /** - * Make the chart static - no interactivity + * Show tips while interacting with the resulting graphs. + * @default true */ - staticPlot?: boolean; - + showTips: boolean; /** - * Options for the "Download plot as PNG" button + * Display a link to Chart Studio Cloud at the bottom right. + * @default false */ - toImageButtonOptions?: Partial; - + showLink: boolean; /** - * URL for topojson files + * Sets the text appearing in the `showLink` link. + * @default 'Edit chart' */ - topojsonURL?: string; - + linkText: string; /** - * Add watermark to images + * If `showLink` is true, send data when linking to Chart Studio Cloud. + * @default true */ - watermark?: boolean; -} - -/** - * Configuration for what can be edited - */ -export interface ConfigEdits { - annotationPosition?: boolean; - annotationTail?: boolean; - annotationText?: boolean; - axisTitleText?: boolean; - colorbarPosition?: boolean; - colorbarTitleText?: boolean; - legendPosition?: boolean; - legendText?: boolean; - shapePosition?: boolean; - titleText?: boolean; -} - -/** - * Options for the "Download plot" button - */ -export interface ToImageButtonOptions { - format?: 'png' | 'svg' | 'jpeg' | 'webp'; - filename?: string; - height?: number; - width?: number; - scale?: number; + sendData: boolean; + /** + * Adds a source-displaying function to show sources on the resulting graphs. + * @default false + */ + showSources: false | ((gd: HTMLElement) => void | Promise); + /** + * Mode bar display mode. + * @default 'hover' + */ + displayModeBar: 'hover' | boolean; + /** + * Show "Edit in Chart Studio" mode bar button. + * @default false + */ + showSendToCloud: boolean; + /** + * Same as `showSendToCloud`, but use a pencil icon instead of a floppy-disk. + * @default false + */ + showEditInChartStudio: boolean; + /** + * Remove mode bar buttons by name. + * @default [] + */ + modeBarButtonsToRemove: ModeBarDefaultButtons[]; + /** + * Add mode bar button using config objects or default button strings. + * @default [] + */ + modeBarButtonsToAdd: ModeBarButtonAny[]; + /** + * Define fully custom mode bar buttons as nested array of button groups. + * @default false + */ + modeBarButtons: ModeBarButtonAny[][] | false; + /** + * Statically override options for toImage modebar button. + * @default {} + */ + toImageButtonOptions: Partial<{ + filename: string; + scale: number; + format: 'png' | 'svg' | 'jpeg' | 'webp'; + height: number; + width: number; + }>; + /** + * Display the plotly logo on the mode bar. + * @default true + */ + displaylogo: boolean; + /** + * Watermark images with the company's logo. + * @default false + */ + watermark: boolean; + /** + * Pixel ratio during WebGL image export. + * @default 2 + */ + plotGlPixelRatio: number; + /** + * Set background color function or behavior. + * @default 'transparent' + */ + setBackground: ((gd: HTMLElement, bgColor: string) => void) | 'opaque' | 'transparent'; + /** + * URL to topojson used in geo charts. + * @default 'https://cdn.plot.ly/' + */ + topojsonURL: string; + /** + * Mapbox access token (required for mapbox trace types). + * @default null + */ + mapboxAccessToken: string | null; + /** + * Console logging level (0-2). Set via Plotly.setPlotConfig. + * @default 1 + */ + logging: 0 | 1 | 2; + /** + * On-graph logging (notifier) level (0-2). Set via Plotly.setPlotConfig. + * @default 0 + */ + notifyOnLogging: 0 | 1 | 2; + /** + * Length of the undo/redo queue. + * @default 0 + */ + queueLength: number; + /** + * Localization to use (e.g. 'en' or 'en-US'). + * @default 'en-US' + */ + locale: string; + /** + * Localization definitions. + * @default {} + */ + locales: Record; format?: Record }>; } diff --git a/src/types/core/data.d.ts b/src/types/core/data.d.ts index 9eab5917a16..982961a8542 100644 --- a/src/types/core/data.d.ts +++ b/src/types/core/data.d.ts @@ -1,68 +1,386 @@ /** * Data/Trace types * - * Defines the structure of Plotly data traces. - * This is a union of all possible trace types. + * Comprehensive trace data types covering all plot types, markers, lines, + * and the Data union. */ -import type { Dash, ColorScale } from '../lib/common'; +import type { Color, ColorScale, Dash, Datum, ErrorBar, MarkerSymbol, Pattern, TypedArray } from '../lib/common'; +import type { ColorBar, DataTitle, Delta, Font, Gauge, HoverLabel, Padding, PlotNumber } from './layout'; + +// --------------------------------------------------------------------------- +// PlotType +// --------------------------------------------------------------------------- -/** - * All supported plot/trace types in plotly.js - */ export type PlotType = - | "bar" - | "barpolar" - | "box" - | "candlestick" - | "carpet" - | "choropleth" - | "choroplethmap" - | "choroplethmapbox" - | "cone" - | "contour" - | "contourcarpet" - | "densitymap" - | "densitymapbox" - | "funnel" - | "funnelarea" - | "heatmap" - | "histogram" - | "histogram2d" - | "histogram2dcontour" - | "icicle" - | "image" - | "indicator" - | "isosurface" - | "mesh3d" - | "ohlc" - | "parcats" - | "parcoords" - | "pie" - | "sankey" - | "scatter" - | "scatter3d" - | "scattercarpet" - | "scattergeo" - | "scattergl" - | "scattermap" - | "scattermapbox" - | "scatterpolar" - | "scatterpolargl" - | "scattersmith" - | "scatterternary" - | "splom" - | "streamtube" - | "sunburst" - | "surface" - | "table" - | "treemap" - | "violin" - | "volume" - | "waterfall"; + | 'bar' + | 'barpolar' + | 'box' + | 'candlestick' + | 'carpet' + | 'choropleth' + | 'choroplethmap' + | 'choroplethmapbox' + | 'cone' + | 'contour' + | 'contourcarpet' + | 'densitymap' + | 'densitymapbox' + | 'funnel' + | 'funnelarea' + | 'heatmap' + | 'histogram' + | 'histogram2d' + | 'histogram2dcontour' + | 'icicle' + | 'image' + | 'indicator' + | 'isosurface' + | 'mesh3d' + | 'ohlc' + | 'parcats' + | 'parcoords' + | 'pie' + | 'sankey' + | 'scatter' + | 'scatter3d' + | 'scattercarpet' + | 'scattergeo' + | 'scattergl' + | 'scattermap' + | 'scattermapbox' + | 'scatterpolar' + | 'scatterpolargl' + | 'scattersmith' + | 'scatterternary' + | 'splom' + | 'streamtube' + | 'sunburst' + | 'surface' + | 'table' + | 'treemap' + | 'violin' + | 'volume' + | 'waterfall'; + +// --------------------------------------------------------------------------- +// Marker / Line types +// --------------------------------------------------------------------------- + +export interface ScatterMarkerLine { + width: number | number[]; + color: Color; + cauto?: boolean | undefined; + cmax?: number | undefined; + cmin?: number | undefined; + cmid?: number | undefined; + colorscale?: ColorScale | undefined; + autocolorscale?: boolean | undefined; + reversescale?: boolean | undefined; + coloraxis?: string | undefined; +} + +export interface PlotMarker { + symbol: MarkerSymbol; + color?: Color | Color[] | undefined; + colors?: Color[] | undefined; + colorscale?: ColorScale | undefined; + cauto?: boolean | undefined; + cmax?: number | undefined; + cmin?: number | undefined; + autocolorscale?: boolean | undefined; + reversescale?: boolean | undefined; + opacity: number | number[]; + size: number | number[]; + maxdisplayed?: number | undefined; + sizeref?: number | undefined; + sizemax?: number | undefined; + sizemin?: number | undefined; + sizemode?: 'diameter' | 'area' | undefined; + showscale?: boolean | undefined; + line: Partial; + pad?: Partial | undefined; + width?: number | undefined; + colorbar?: Partial | undefined; + gradient?: + | { + type: 'radial' | 'horizontal' | 'vertical' | 'none'; + color: Color; + typesrc: any; + colorsrc: any; + } + | undefined; + pattern?: Partial; +} + +export type ScatterMarker = PlotMarker; + +export interface ScatterLine { + color: Color; + width: number; + dash: Dash; + shape: 'linear' | 'spline' | 'hv' | 'vh' | 'hvh' | 'vhv'; + smoothing: number; + simplify: boolean; +} + +// --------------------------------------------------------------------------- +// PlotData +// --------------------------------------------------------------------------- + +export interface PlotData { + type: PlotType; + x: Datum[] | Datum[][] | TypedArray; + y: Datum[] | Datum[][] | TypedArray; + z: Datum[] | Datum[][] | Datum[][][] | TypedArray; + i: TypedArray; + j: TypedArray; + k: TypedArray; + xy: Float32Array; + error_x: ErrorBar; + error_y: ErrorBar; + xaxis: string; + yaxis: string; + text: string | string[]; + lat: Datum[]; + lon: Datum[]; + line: Partial; + 'line.color': Color; + 'line.width': number; + 'line.dash': Dash; + 'line.shape': 'linear' | 'spline' | 'hv' | 'vh' | 'hvh' | 'vhv'; + 'line.smoothing': number; + 'line.simplify': boolean; + marker: Partial; + 'marker.symbol': MarkerSymbol | MarkerSymbol[]; + 'marker.color': Color; + 'marker.colorscale': ColorScale | ColorScale[]; + 'marker.opacity': number | number[]; + 'marker.size': number | number[] | number[][]; + 'marker.maxdisplayed': number; + 'marker.sizeref': number; + 'marker.sizemax': number; + 'marker.sizemin': number; + 'marker.sizemode': 'diameter' | 'area'; + 'marker.showscale': boolean; + 'marker.line': Partial; + 'marker.line.color': Color; + 'marker.line.colorscale': ColorScale | ColorScale[]; + 'marker.colorbar': {}; + 'marker.pad.t': number; + 'marker.pad.b': number; + 'marker.pad.l': number; + 'marker.pad.r': number; + mode: + | 'lines' + | 'markers' + | 'text' + | 'lines+markers' + | 'text+markers' + | 'text+lines' + | 'text+lines+markers' + | 'none' + | 'gauge' + | 'number' + | 'delta' + | 'number+delta' + | 'gauge+number' + | 'gauge+number+delta' + | 'gauge+delta'; + histfunc: 'count' | 'sum' | 'avg' | 'min' | 'max'; + histnorm: '' | 'percent' | 'probability' | 'density' | 'probability density'; + hoveron: 'points' | 'fills'; + hoverinfo: + | 'all' + | 'name' + | 'none' + | 'skip' + | 'text' + | 'x' + | 'x+text' + | 'x+name' + | 'x+y' + | 'x+y+text' + | 'x+y+name' + | 'x+y+z' + | 'x+y+z+text' + | 'x+y+z+name' + | 'y' + | 'y+name' + | 'y+x' + | 'y+text' + | 'y+x+text' + | 'y+x+name' + | 'y+z' + | 'y+z+text' + | 'y+z+name' + | 'y+x+z' + | 'y+x+z+text' + | 'y+x+z+name' + | 'z' + | 'z+x' + | 'z+x+text' + | 'z+x+name' + | 'z+y+x' + | 'z+y+x+text' + | 'z+y+x+name' + | 'z+x+y' + | 'z+x+y+text' + | 'z+x+y+name'; + hoverlabel: Partial; + hovertemplate: string | string[]; + hovertext: string | string[]; + hoverongaps: boolean; + xhoverformat: string; + yhoverformat: string; + zhoverformat: string; + texttemplate: string | string[]; + textinfo: + | 'label' + | 'label+text' + | 'label+value' + | 'label+percent' + | 'label+text+value' + | 'label+text+percent' + | 'label+value+percent' + | 'text' + | 'text+value' + | 'text+percent' + | 'text+value+percent' + | 'value' + | 'value+percent' + | 'percent' + | 'none'; + textposition: + | 'top left' + | 'top center' + | 'top right' + | 'middle left' + | 'middle center' + | 'middle right' + | 'bottom left' + | 'bottom center' + | 'bottom right' + | 'inside' + | 'outside' + | 'auto' + | 'none'; + textfont: Partial; + textangle: 'auto' | number; + insidetextanchor: 'end' | 'middle' | 'start'; + constraintext: 'inside' | 'outside' | 'both' | 'none'; + fill: 'none' | 'tozeroy' | 'tozerox' | 'tonexty' | 'tonextx' | 'toself' | 'tonext'; + fillcolor: string; + fillpattern: Partial; + showlegend: boolean; + legendgroup: string; + legendgrouptitle: { + text: string; + font?: Partial; + }; + legendrank: number; + parents: string[]; + name: string; + stackgroup: string; + groupnorm: '' | 'fraction' | 'percent'; + stackgaps: 'infer zero' | 'interpolate'; + connectgaps: boolean; + visible: boolean | 'legendonly'; + delta: Partial; + gauge: Partial; + number: Partial; + orientation: 'v' | 'h'; + width: number | number[]; + boxmean: boolean | 'sd'; + boxpoints: 'all' | 'outliers' | 'suspectedoutliers' | false; + jitter: number; + pointpos: number; + opacity: number; + showscale: boolean; + colorscale: ColorScale; + zsmooth: 'fast' | 'best' | false; + zmin: number; + zmax: number; + zorder: number; + ygap: number; + xgap: number; + transpose: boolean; + autobinx: boolean; + xbins: { + start: number | string; + end: number | string; + size: number | string; + }; + value: number; + values: Datum[]; + labels: Datum[]; + direction: 'clockwise' | 'counterclockwise'; + hole: number; + rotation: number; + theta: Datum[]; + r: Datum[]; + customdata: Datum[] | Datum[][]; + selectedpoints: Datum[]; + domain: Partial<{ + row: number; + column: number; + x: number[]; + y: number[]; + }>; + title: Partial; + branchvalues: 'total' | 'remainder'; + ids: string[]; + level: string; + cliponaxis: boolean; + automargin: boolean; + locationmode: 'ISO-3' | 'USA-states' | 'country names' | 'geojson-id'; + locations: Datum[]; + reversescale: boolean; + colorbar: Partial; + offset: number | number[]; + contours: Partial<{ + coloring: 'fill' | 'heatmap' | 'lines' | 'none'; + end: number; + labelfont: Partial; + labelformat: string; + operation: '=' | '<' | '>=' | '>' | '<=' | '[]' | '()' | '[)' | '(]' | '][' | ')(' | '](' | ')['; + showlabels: boolean; + showlines: boolean; + size: number; + start: number; + type: 'levels' | 'constraint'; + value: number | [lowerBound: number, upperBound: number]; + }>; + autocontour: boolean; + ncontours: number; + maxdepth: number; + uirevision: string | number; + uid: string; +} + +export type ScatterData = PlotData; + +// --------------------------------------------------------------------------- +// Data union — re-exports specialized trace types from traces/ +// Forward declarations so the union compiles without circular imports. +// --------------------------------------------------------------------------- + +export type Data = + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial; + +// --------------------------------------------------------------------------- +// Internal types (not in public API) +// --------------------------------------------------------------------------- /** - * Common properties shared by all trace types + * Common properties shared by all trace types — convenience interface for + * gradual migration of internal code that doesn't need the full PlotData shape. */ export interface TraceBase { customdata?: any[]; @@ -86,21 +404,19 @@ export interface TraceBase { } /** - * User-provided plot data (trace) - * This will be a union of all specific trace types + * Generic trace for gradual migration. Use specific trace types when available. */ -export type PlotData = TraceBase & ( - | BarTrace - | LineTrace - | ScatterTrace - // Add more trace types as you convert them - | GenericTrace -); +export interface GenericTrace extends TraceBase { + x?: any[]; + y?: any[]; + z?: any[]; + [key: string]: any; +} /** * Fully processed plot data with defaults applied (internal use) */ -export interface FullData extends PlotData { +export interface FullData extends Partial { _expandedIndex?: number; _fullInput?: any; _indexToPoints?: { [key: number]: number[] }; @@ -108,120 +424,5 @@ export interface FullData extends PlotData { _length?: number; _module?: any; index?: number; -} - -/** - * Generic trace for gradual migration - * Use specific trace types when available - */ -export interface GenericTrace extends TraceBase { - x?: any[]; - y?: any[]; - z?: any[]; [key: string]: any; } - -/** - * Scatter trace - */ -export interface ScatterTrace extends TraceBase { - connectgaps?: boolean; - fill?: 'none' | 'tozeroy' | 'tozerox' | 'tonexty' | 'tonextx' | 'toself' | 'tonext'; - fillcolor?: string; - line?: Partial; - marker?: Partial; - mode?: 'lines' | 'markers' | 'lines+markers' | 'none' | 'text' | 'lines+text' | 'markers+text' | 'lines+markers+text'; - text?: string | string[]; - textfont?: any; - textposition?: string | string[]; - type: 'scatter'; - x?: number[] | string[]; - y?: number[] | string[]; -} - -/** - * Bar trace - */ -export interface BarTrace extends TraceBase { - base?: number | number[]; - marker?: Partial; - offset?: number | number[]; - orientation?: 'v' | 'h'; - text?: string | string[]; - textangle?: number; - textposition?: string; - type: 'bar'; - width?: number | number[]; - x?: number[] | string[]; - y?: number[] | string[]; -} - -/** - * Line-only trace (simplified scatter) - */ -export interface LineTrace extends TraceBase { - line?: Partial; - mode: 'lines'; - type: 'scatter'; - x?: number[] | string[]; - y?: number[] | string[]; -} - -/** - * Marker configuration (used by many traces) - */ -export interface Marker { - autocolorscale?: boolean; - cauto?: boolean; - cmax?: number; - cmid?: number; - cmin?: number; - color?: string | string[] | number[]; - coloraxis?: string; - colorbar?: any; - colorscale?: string | any[][]; - line?: Partial; - opacity?: number | number[]; - reversescale?: boolean; - showscale?: boolean; - size?: number | number[]; - symbol?: string | string[]; -} - -/** - * Marker line (outline) - */ -export interface MarkerLine { - autocolorscale?: boolean; - cauto?: boolean; - cmax?: number; - cmid?: number; - cmin?: number; - color?: string | string[]; - colorscale?: string | any[][]; - reversescale?: boolean; - width?: number | number[]; -} - -/** - * Line configuration (used by many traces) - */ -export interface Line { - color?: string; - dash?: Dash; - shape?: 'linear' | 'spline' | 'hv' | 'vh' | 'hvh' | 'vhv'; - simplify?: boolean; - smoothing?: number; - width?: number; -} - -/** - * Hover label configuration - */ -export interface HoverLabel { - align?: 'left' | 'right' | 'auto'; - bgcolor?: string | string[]; - bordercolor?: string | string[]; - font?: any; - namelength?: number | number[]; -} diff --git a/src/types/core/events.d.ts b/src/types/core/events.d.ts index a270e91efdd..521cbbed47b 100644 --- a/src/types/core/events.d.ts +++ b/src/types/core/events.d.ts @@ -1,107 +1,234 @@ /** * Event types * - * Defines the structure of Plotly events and event data. + * Plotly event payloads, the typed `on()` overloads on PlotlyHTMLElement, + * and event-related supporting types. */ -/** - * Common point data structure returned in events - */ -export interface PlotlyEventPoint { - /** - * Curve number (trace index) - */ +import type { Slider, SliderStep } from '../components/slider'; +import type { Datum } from '../lib/common'; +import type { AnimationFrameOpts, Frame, Transition } from './animation'; +import type { Config } from './config'; +import type { Data, PlotData } from './data'; +import type { Annotations, Layout, LayoutAxis, Point } from './layout'; + +// --------------------------------------------------------------------------- +// Point / datum types in events +// --------------------------------------------------------------------------- + +export interface PlotScatterDataPoint { curveNumber: number; + data: PlotData; + pointIndex: number; + pointNumber: number; + x: number; + xaxis: LayoutAxis; + y: number; + yaxis: LayoutAxis; +} - /** - * Point number within the trace - */ +export interface PlotDatum { + curveNumber: number; + data: PlotData; + customdata: Datum; + pointIndex: number; pointNumber: number; + x: Datum; + xaxis: LayoutAxis; + y: Datum; + yaxis: LayoutAxis; + text: string; +} + +export interface PlotCoordinate { + x: number; + y: number; + pointNumber: number; +} + +export interface SelectionRange { + x: number[]; + y: number[]; +} + +export type PlotSelectedData = Partial; + +// --------------------------------------------------------------------------- +// Mouse / hover / selection events +// --------------------------------------------------------------------------- - /** - * Point index (for calculated data) - */ - pointIndex?: number; - - /** - * X value - */ - x?: any; - - /** - * Y value - */ - y?: any; - - /** - * Z value (for 3D plots) - */ - z?: any; - - /** - * Custom data - */ - customdata?: any; - - /** - * Full data for this trace - */ - data?: any; - - /** - * Full data for all traces - */ - fullData?: any; - - /** - * Additional properties - */ +export interface PlotMouseEvent { + points: PlotDatum[]; + event: MouseEvent; +} + +export interface PlotHoverEvent extends PlotMouseEvent { + xvals: Datum[]; + yvals: Datum[]; +} + +export interface PlotSelectionEvent { + points: PlotDatum[]; + range?: SelectionRange | undefined; + lassoPoints?: SelectionRange | undefined; +} + +// --------------------------------------------------------------------------- +// Restyle / Relayout events +// --------------------------------------------------------------------------- + +export interface PlotRestyleEventUpdate { [key: string]: any; } -/** - * Hover event data - */ -export interface PlotlyHoverEvent { - points: PlotlyEventPoint[]; +export type PlotRestyleEvent = [PlotRestyleEventUpdate, number[]]; + +export interface PlotRelayoutEvent extends Partial { + 'xaxis.range[0]'?: number; + 'xaxis.range[1]'?: number; + 'yaxis.range[0]'?: number; + 'yaxis.range[1]'?: number; + 'xaxis.autorange'?: boolean; + 'yaxis.autorange'?: boolean; +} + +// --------------------------------------------------------------------------- +// 3D scene / annotation / animation / legend events +// --------------------------------------------------------------------------- + +export interface PlotScene { + center: Point; + eye: Point; + up: Point; +} + +export interface ClickAnnotationEvent { + index: number; + annotation: Annotations; + fullAnnotation: Annotations; event: MouseEvent; } -/** - * Click event data - */ -export interface PlotlyClickEvent { - points: PlotlyEventPoint[]; +export interface FrameAnimationEvent { + name: string; + frame: Frame; + animation: { + frame: AnimationFrameOpts; + transition: Transition; + }; +} + +export interface LegendClickEvent { event: MouseEvent; + node: PlotlyHTMLElement; + curveNumber: number; + expandedIndex: number; + data: Data[]; + layout: Partial; + frames: Frame[]; + config: Partial; + fullData: Data[]; + fullLayout: Partial; } -/** - * Selection event data - */ -export interface PlotlySelectionEvent { - points: PlotlyEventPoint[]; - range?: any; - lassoPoints?: any; +// --------------------------------------------------------------------------- +// Slider events +// --------------------------------------------------------------------------- + +export interface SliderChangeEvent { + slider: Slider; + step: SliderStep; + interaction: boolean; + previousActive: number; } -/** - * Relayout event data (when layout changes) - */ -export interface PlotlyRelayoutEvent { - [key: string]: any; +export interface SliderStartEvent { + slider: Slider; } -/** - * Restyle event data (when trace style changes) - */ -export interface PlotlyRestyleEvent { - data: any[]; - traces: number[]; +export interface SliderEndEvent { + slider: Slider; + step: SliderStep; } -/** - * All Plotly event names - */ +// --------------------------------------------------------------------------- +// Sunburst / before-plot +// --------------------------------------------------------------------------- + +export interface SunburstPlotDatum { + color: number; + curveNumber: number; + data: Data; + entry: string; + fullData: Data; + hovertext: string; + id: string; + label: string; + parent: string; + percentEntry: number; + percentParent: number; + percentRoot: number; + pointNumber: number; + root: string; + value: number; +} + +export interface SunburstClickEvent { + event: MouseEvent; + nextLevel: string; + points: SunburstPlotDatum[]; +} + +export interface BeforePlotEvent { + data: Data[]; + layout: Partial; + config: Partial; +} + +// --------------------------------------------------------------------------- +// PlotlyHTMLElement +// --------------------------------------------------------------------------- + +export interface PlotlyHTMLElement extends HTMLElement { + on(event: 'plotly_click' | 'plotly_unhover', callback: (event: PlotMouseEvent) => void): void; + on(event: 'plotly_hover', callback: (event: PlotHoverEvent) => void): void; + on(event: 'plotly_selecting' | 'plotly_selected', callback: (event: PlotSelectionEvent) => void): void; + on(event: 'plotly_restyle', callback: (data: PlotRestyleEvent) => void): void; + on(event: 'plotly_relayout' | 'plotly_relayouting', callback: (event: PlotRelayoutEvent) => void): void; + on(event: 'plotly_clickannotation', callback: (event: ClickAnnotationEvent) => void): void; + on(event: 'plotly_animatingframe', callback: (event: FrameAnimationEvent) => void): void; + on(event: 'plotly_legendclick' | 'plotly_legenddoubleclick', callback: (event: LegendClickEvent) => boolean): void; + on(event: 'plotly_sliderchange', callback: (event: SliderChangeEvent) => void): void; + on(event: 'plotly_sliderend', callback: (event: SliderEndEvent) => void): void; + on(event: 'plotly_sliderstart', callback: (event: SliderStartEvent) => void): void; + on(event: 'plotly_sunburstclick', callback: (event: SunburstClickEvent) => void): void; + on(event: 'plotly_event', callback: (data: any) => void): void; + on(event: 'plotly_beforeplot', callback: (event: BeforePlotEvent) => boolean): void; + on( + event: + | 'plotly_afterexport' + | 'plotly_afterplot' + | 'plotly_animated' + | 'plotly_animationinterrupted' + | 'plotly_autosize' + | 'plotly_beforeexport' + | 'plotly_deselect' + | 'plotly_doubleclick' + | 'plotly_framework' + | 'plotly_redraw' + | 'plotly_transitioning' + | 'plotly_transitioninterrupted', + callback: () => void + ): void; + removeAllListeners: (handler: string) => void; + data: Data[]; + layout: Layout; +} + +// --------------------------------------------------------------------------- +// Event name union (kept for convenience) +// --------------------------------------------------------------------------- + export type PlotlyEventName = | 'plotly_afterexport' | 'plotly_afterplot' @@ -111,6 +238,7 @@ export type PlotlyEventName = | 'plotly_autosize' | 'plotly_beforeexport' | 'plotly_beforehover' + | 'plotly_beforeplot' | 'plotly_buttonclicked' | 'plotly_click' | 'plotly_clickannotation' @@ -122,6 +250,7 @@ export type PlotlyEventName = | 'plotly_legenddoubleclick' | 'plotly_redraw' | 'plotly_relayout' + | 'plotly_relayouting' | 'plotly_restyle' | 'plotly_selected' | 'plotly_selecting' diff --git a/src/types/core/graph-div.d.ts b/src/types/core/graph-div.d.ts index 7bdf1d81f29..2353c62bf10 100644 --- a/src/types/core/graph-div.d.ts +++ b/src/types/core/graph-div.d.ts @@ -3,118 +3,37 @@ * * The `gd` parameter appears throughout the codebase and represents * the graph div element with plotly-specific properties attached. + * Commonly referred to as `gd` in the codebase. */ import type { Config } from './config'; import type { FullData, PlotData } from './data'; import type { FullLayout, Layout } from './layout'; +/** + * Graph context containing environment info (mirrors Config for internal storage) + */ +export interface GraphContext extends Partial { + [key: string]: any; +} + /** * The main graph div element that Plotly operates on. * This is an HTMLDivElement with additional Plotly-specific properties. - * - * Commonly referred to as `gd` in the codebase. */ export interface GraphDiv extends HTMLDivElement { - /** - * Graph dimensions and margins - */ _context?: GraphContext; - - /** - * Is the plot currently being edited? - */ _editing?: boolean; - - /** - * Fully processed data traces (internal use) - */ _fullData?: FullData[]; - - /** - * Fully processed layout (internal use) - */ _fullLayout?: FullLayout; - - /** - * Has the plot been initialized? - */ _initialized?: boolean; - - /** - * Plotly framework metadata - */ _promises?: Promise[]; - - /** - * Current transaction ID for queuing operations - */ _transitionData?: any; - - /** - * Is the plot transitioning? - */ _transitioning?: boolean; - - /** - * Calculated data (internal use) - */ calcdata?: any[]; - - /** - * User-provided configuration options - */ config?: Partial; - - /** - * User-provided data traces - */ - data?: PlotData[]; - - /** - * Plotly-specific event emitter - */ + data?: Array>; emit?: (event: string, ...args: any[]) => void; - - /** - * User-provided layout configuration - */ layout?: Partial; - - // Add more as you discover them during migration [key: string]: any; } - -/** - * Graph context containing environment info - */ -export interface GraphContext { - autosizable?: boolean; - displaylogo?: boolean; - displayModeBar?: boolean | 'hover'; - doubleClick?: string | false; - editable?: boolean; - edits?: any; - fillFrame?: boolean; - frameMargins?: number; - linkText?: string; - locale?: string; - locales?: any; - mapboxAccessToken?: string; - modeBarButtons?: any; - modeBarButtonsToAdd?: any[]; - modeBarButtonsToRemove?: string[]; - plotGlPixelRatio?: number; - plotlyServerURL?: string; - queueLength?: number; - responsive?: boolean; - scrollZoom?: boolean; - sendData?: boolean; - setBackground?: string | Function; - showLink?: boolean; - showTips?: boolean; - staticPlot?: boolean; - toImageButtonOptions?: any; - topojsonURL?: string; - watermark?: boolean; -} diff --git a/src/types/core/layout.d.ts b/src/types/core/layout.d.ts index bc8b245e35e..fbbf14a7f70 100644 --- a/src/types/core/layout.d.ts +++ b/src/types/core/layout.d.ts @@ -1,203 +1,963 @@ /** * Layout types * - * Defines the structure of Plotly layout objects. - * Start with common properties and expand as needed. + * Comprehensive layout, axis, annotation, shape, scene, and supporting types. */ -import type { Selection } from '@types/d3' -import type { AxisType, Dash } from '../lib/common'; +import type { Selection } from '@types/d3'; +import type { TickFormatStop } from '../components/colorbar'; +import type { RangeSelector } from '../components/rangeselector'; +import type { Slider } from '../components/slider'; +import type { UpdateMenu } from '../components/updatemenu'; +import type { AxisType, Calendar, Color, Dash, Datum, DTickValue } from '../lib/common'; +import type { Transition } from './animation'; +import type { PlotType } from './data'; -/** - * User-provided layout configuration - */ -export interface Layout { - autosize?: boolean; - dragmode?: 'zoom' | 'pan' | 'select' | 'lasso' | 'orbit' | 'turntable' | false; - font?: Partial; - height?: number; - hovermode?: 'closest' | 'x' | 'y' | 'x unified' | 'y unified' | false; - legend?: Partial; - margin?: Partial; - paper_bgcolor?: string; - plot_bgcolor?: string; - showlegend?: boolean; - template?: any; - title?: string | Partial; - width?: number; - xaxis?: Partial; - yaxis?: Partial; - - // Multiple axes support (xaxis2, yaxis3, etc.) - [key: string]: any; +// --------------------------------------------------------------------------- +// Font +// --------------------------------------------------------------------------- + +export interface Font { + color: Color; + /** + * HTML font family - the typeface that will be applied by the web browser. + * Provide multiple font families, separated by commas, to indicate preference. + * @default "Arial, sans-serif" + */ + family: string; + /** + * Sets the shape and color of the shadow behind text. + * "auto" places minimal shadow and applies contrast text font color. + * @default "none" + */ + shadow: string; + /** + * @default 13 + */ + size: number; + /** + * Sets the weight (or boldness) of the font. + * @default "normal" + */ + weight: number | 'normal' | 'bold'; + /** + * Sets whether a font should be styled with a normal or italic face from its family. + * @default "normal" + */ + style: 'normal' | 'italic'; + /** + * Sets capitalization of text. + * @default "normal" + */ + textcase: 'normal' | 'word caps' | 'upper' | 'lower'; + /** + * Sets the variant of the font. + * @default "normal" + */ + variant: 'normal' | 'small-caps' | 'all-small-caps' | 'all-petite-caps' | 'petite-caps' | 'unicase'; + /** + * Sets the kind of decoration line(s) with text. + * @default "none" + */ + lineposition: + | 'none' + | 'under' + | 'over' + | 'through' + | 'under+over' + | 'over+under' + | 'over+through' + | 'through+over' + | 'through+under' + | 'under+through' + | 'under+over+through' + | 'under+through+over' + | 'over+under+through' + | 'over+through+under' + | 'through+under+over' + | 'through+over+under'; } -/** - * Fully processed layout with all defaults applied (internal use) - */ -export interface FullLayout extends Layout { - _modules?: any[]; - _basePlotModules?: any[]; - _plots?: { [key: string]: any }; - _subplot?: any[]; - _subplots?: SubplotInfo; - _size?: LayoutSize; - _legends?: string[]; - _infolayer?: Selection; - _zoomlayer?: Selection; - _paperdiv?: Selection; - _glcontainer?: Selection; - _calcInverseTransform?: (gd: any) => void; - _invTransform?: any; - _uid?: string; - _initialAutoSizeIsDone?: boolean; +// --------------------------------------------------------------------------- +// Padding / Margin / Domain +// --------------------------------------------------------------------------- - // Hover state - _hoverlayer?: any; - _hoverdata?: any[]; +export interface Padding { + t: number; + r: number; + b: number; + l: number; + editType: 'arraydraw'; +} - // Modebar - _modeBar?: any; +export interface Margin { + t: number; + b: number; + l: number; + r: number; + pad: number; +} - // Grid - grid?: any; +export interface Domain { + x: number[]; + y: number[]; + row: number; + column: number; +} - // Computed properties - _pushmargin?: { [key: string]: any }; - _basePlotModules?: any[]; +// --------------------------------------------------------------------------- +// Label / HoverLabel / Legend +// --------------------------------------------------------------------------- - [key: string]: any; +export interface Label { + bgcolor: string; + bordercolor: string; + font: Partial; } -/** - * Layout title configuration - */ -export interface LayoutTitle { +export interface HoverLabel extends Label { + /** + * Sets the horizontal alignment of the text content within hover label box. + * @default "auto" + */ + align: 'left' | 'right' | 'auto'; + /** + * Sets the default length (in number of characters) of the trace name + * in the hover labels for all traces. -1 shows the whole name. + * @default 15 + */ + namelength: number; +} + +export interface LegendTitle { + font: Partial; + side: 'top' | 'left' | 'top left' | 'top center' | 'top right'; text: string; - font?: Partial; - xref?: 'container' | 'paper'; - yref?: 'container' | 'paper'; - x?: number; - y?: number; - xanchor?: 'auto' | 'left' | 'center' | 'right'; - yanchor?: 'auto' | 'top' | 'middle' | 'bottom'; - pad?: Partial; } -/** - * Layout margin configuration - */ -export interface LayoutMargin { - l: number; - r: number; - t: number; - b: number; - pad: number; - autoexpand?: boolean; +export interface Legend extends Label { + borderwidth: number; + groupclick: 'toggleitem' | 'togglegroup'; + grouptitlefont: Partial; + itemclick: 'toggle' | 'toggleothers' | false; + itemdoubleclick: 'toggle' | 'toggleothers' | false; + itemsizing: 'trace' | 'constant'; + itemwidth: number; + orientation: 'v' | 'h'; + title: Partial; + tracegroupgap: number; + traceorder: 'grouped' | 'normal' | 'reversed' | 'reversed+grouped'; + uirevision: number | string; + uid: string; + valign: 'top' | 'middle' | 'bottom'; + x: number; + xanchor: 'auto' | 'left' | 'center' | 'right'; + xref: 'container' | 'paper'; + y: number; + yanchor: 'auto' | 'top' | 'middle' | 'bottom'; + yref: 'container' | 'paper'; } -/** - * Font configuration (used throughout) - */ -export interface Font { +// --------------------------------------------------------------------------- +// DataTitle / PlotNumber +// --------------------------------------------------------------------------- + +export interface DataTitle { + text: string; + font: Partial; + standoff: number; + position: + | 'top left' + | 'top center' + | 'top right' + | 'middle center' + | 'bottom left' + | 'bottom center' + | 'bottom right'; +} + +export interface PlotNumber { + valueformat: string; + font: Partial; + prefix: string; + suffix: string; +} + +// --------------------------------------------------------------------------- +// Axis name types +// --------------------------------------------------------------------------- + +type xYAxisNames = `${ + | '' + | `${2 | 3 | 4 | 5 | 6 | 7 | 8 | 9}` + | `${1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9}${0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9}`}${''}`; + +export type XAxisName = `x${xYAxisNames}`; +export type YAxisName = `y${xYAxisNames}`; +export type AxisName = XAxisName | YAxisName; + +// --------------------------------------------------------------------------- +// Axis support types +// --------------------------------------------------------------------------- + +export interface AutoRangeOptions { + clipmax: DTickValue; + clipmin: DTickValue; + include: DTickValue; + maxallowed: DTickValue; + minallowed: DTickValue; +} + +export interface MinorAxisLayout { + dtick: DTickValue; + gridcolor: Color; + griddash: Dash; + gridwidth: number; + nticks: number; + showgrid: boolean; + tick0: DTickValue; + tickcolor: Color; + ticklen: number; + tickmode: 'auto' | 'linear' | 'array'; + ticks: 'outside' | 'inside' | ''; + tickvals: any[]; + tickwidth: number; +} + +export interface RangeBreak { + bounds: any[]; + dvalue: number; + enabled: boolean; + name: string; + pattern: 'day of week' | 'hour' | ''; + templateitemname: string; + values: any[]; +} + +export interface RangeSlider { + visible: boolean; + thickness: number; + range: [Datum, Datum]; + borderwidth: number; + bordercolor: string; + bgcolor: string; +} + +// --------------------------------------------------------------------------- +// Axis (base) +// --------------------------------------------------------------------------- + +export interface Axis { + visible: boolean; + color: Color; + title: Partial; + type: AxisType; + autorange: true | false | 'reversed' | 'min reversed' | 'max reversed' | 'min' | 'max'; + autorangeoptions: Partial; + rangemode: 'normal' | 'tozero' | 'nonnegative'; + range: any[]; + fixedrange: boolean; + + // Ticks + tickmode: 'auto' | 'linear' | 'array' | 'sync'; + nticks: number; + tick0: number | string; + dtick: DTickValue; + tickvals: any[]; + ticktext: string[]; + ticks: 'outside' | 'inside' | ''; + mirror: true | 'ticks' | false | 'all' | 'allticks'; + ticklen: number; + tickwidth: number; + tickcolor: Color; + showticklabels: boolean; + showspikes: boolean; + spikecolor: Color; + spikethickness: number; + categoryorder: + | 'trace' + | 'category ascending' + | 'category descending' + | 'array' + | 'total ascending' + | 'total descending' + | 'min ascending' + | 'min descending' + | 'max ascending' + | 'max descending' + | 'sum ascending' + | 'sum descending' + | 'mean ascending' + | 'mean descending' + | 'median ascending' + | 'median descending'; + categoryarray: any[]; + tickfont: Partial; + tickangle: 'auto' | number; + tickprefix: string; + showtickprefix: 'all' | 'first' | 'last' | 'none'; + ticksuffix: string; + showticksuffix: 'all' | 'first' | 'last' | 'none'; + showexponent: 'all' | 'first' | 'last' | 'none'; + exponentformat: 'none' | 'e' | 'E' | 'power' | 'SI' | 'B'; + minexponent: number; + separatethousands: boolean; + tickformat: string; + hoverformat: string; + calendar: Calendar; + tickformatstops: Array>; + spikedash: string; + spikemode: + | 'toaxis' + | 'across' + | 'marker' + | 'toaxis+across' + | 'toaxis+across+marker' + | 'across+marker' + | 'toaxis+marker'; + spikesnap: 'data' | 'cursor' | 'hovered data'; + + // Lines and Grids + showline: boolean; + linecolor: Color; + linewidth: number; + showgrid: boolean; + gridcolor: Color; + gridwidth: number; + zeroline: boolean; + zerolinecolor: Color; + zerolinewidth: number; + showdividers: boolean; + dividercolor: Color; + dividerwidth: number; + + autotypenumbers: 'convert types' | 'strict'; + labelalias: DTickValue; + maxallowed: DTickValue; + minallowed: DTickValue; +} + +// --------------------------------------------------------------------------- +// LayoutAxis (extends Axis for cartesian subplots) +// --------------------------------------------------------------------------- + +export interface LayoutAxis extends Axis { + fixedrange: boolean; + scaleanchor: AxisName; + scaleratio: number; + constrain: 'range' | 'domain'; + constraintoward: 'left' | 'center' | 'right' | 'top' | 'middle' | 'bottom'; + anchor: 'free' | AxisName; + side: 'top' | 'bottom' | 'left' | 'right' | 'clockwise' | 'counterclockwise'; + overlaying: 'free' | AxisName; + layer: 'above traces' | 'below traces'; + domain: number[]; + position: number; + rotation: number; + direction: 'counterclockwise' | 'clockwise'; + rangeslider: Partial; + rangeselector: Partial; + automargin: boolean; + angle: any; + griddash: Dash; + l2p: (v: Datum) => number; + + autotickangles: number[]; + insiderange: any[]; + matches: AxisName; + minor: Partial; + rangebreaks: Array>; + ticklabelmode: 'instant' | 'period'; + ticklabeloverflow: 'allow' | 'hide past div' | 'hide past domain'; + ticklabelposition: + | 'outside' + | 'inside' + | 'outside top' + | 'inside top' + | 'outside left' + | 'inside left' + | 'outside right' + | 'inside right' + | 'outside bottom' + | 'inside bottom'; + ticklabelstep: number; + tickson: 'labels' | 'boundaries'; + uirevision: DTickValue; +} + +// --------------------------------------------------------------------------- +// SceneAxis (extends Axis for 3D scenes) +// --------------------------------------------------------------------------- + +export interface SceneAxis extends Axis { + spikesides: boolean; + showbackground: boolean; + backgroundcolor: Color; + showaxeslabels: boolean; +} + +// --------------------------------------------------------------------------- +// Camera / Scene +// --------------------------------------------------------------------------- + +export interface Point { + x: number; + y: number; + z: number; +} + +export interface Camera { + up: Partial; + center: Partial; + eye: Partial; +} + +export interface Scene { + bgcolor: string; + camera: Partial; + domain: Partial; + aspectmode: 'auto' | 'cube' | 'data' | 'manual'; + aspectratio: Partial; + xaxis: Partial; + yaxis: Partial; + zaxis: Partial; + dragmode: 'orbit' | 'turntable' | 'zoom' | 'pan' | false; + hovermode: 'closest' | false; + annotations: Partial | Array>; + captureevents: boolean; +} + +// --------------------------------------------------------------------------- +// Shape / ShapeLine / ShapeLabel +// --------------------------------------------------------------------------- + +export interface ShapeLine { color: string; - family: string; - size: number; - style?: 'normal' | 'italic'; - variant?: string; - weight?: number | string; + width: number; + dash: Dash; } -/** - * Legend configuration - */ -export interface Legend { - bgcolor?: string; - bordercolor?: string; - borderwidth?: number; - font?: Partial; - itemclick?: 'toggle' | 'toggleothers' | false; - itemdoubleclick?: 'toggle' | 'toggleothers' | false; - itemsizing?: 'trace' | 'constant'; - itemwidth?: number; - orientation?: 'v' | 'h'; - title?: Partial; - tracegroupgap?: number; - traceorder?: string; - valign?: 'top' | 'middle' | 'bottom'; - x?: number; - xanchor?: 'auto' | 'left' | 'center' | 'right'; - y?: number; - yanchor?: 'auto' | 'top' | 'middle' | 'bottom'; +export interface ShapeLabel { + font: Partial; + padding: number; + text: string; + textangle: 'auto' | number; + textposition: + | 'top left' + | 'top center' + | 'top right' + | 'middle left' + | 'middle center' + | 'middle right' + | 'bottom left' + | 'bottom center' + | 'bottom right' + | 'start' + | 'middle' + | 'end'; + texttemplate: string; + xanchor: 'auto' | 'left' | 'center' | 'right'; + yanchor: 'top' | 'middle' | 'bottom'; } -/** - * Legend title configuration - */ -export interface LegendTitle { - font?: Partial; - side?: 'top' | 'left' | 'top left'; +export interface Shape { + visible: boolean | 'legendonly'; + layer: 'below' | 'above'; + type: 'rect' | 'circle' | 'line' | 'path'; + path: string; + xref: 'paper' | XAxisName; + xsizemode: 'scaled' | 'pixel'; + xanchor: number | string; + yref: 'paper' | YAxisName; + ysizemode: 'scaled' | 'pixel'; + yanchor: number | string; + x0: Datum; + y0: Datum; + x1: Datum; + y1: Datum; + fillcolor: string; + name: string; + templateitemname: string; + opacity: number; + line: Partial; + label: Partial; + showlegend: boolean; + legendgroup: string; + legendgrouptitle: { + text: string; + font?: Partial; + }; + legendrank: number; +} + +// --------------------------------------------------------------------------- +// Annotations +// --------------------------------------------------------------------------- + +export interface Annotations extends Label { + visible: boolean; text: string; + textangle: string; + width: number; + height: number; + opacity: number; + align: 'left' | 'center' | 'right'; + valign: 'top' | 'middle' | 'bottom'; + borderpad: number; + borderwidth: number; + showarrow: boolean; + arrowcolor: string; + arrowhead: number; + startarrowhead: number; + arrowside: 'end' | 'start'; + arrowsize: number; + startarrowsize: number; + arrowwidth: number; + standoff: number; + startstandoff: number; + ax: number; + ay: number; + axref: 'pixel' | XAxisName; + ayref: 'pixel' | YAxisName; + xref: 'paper' | XAxisName; + x: number | string; + xanchor: 'auto' | 'left' | 'center' | 'right'; + xshift: number; + yref: 'paper' | YAxisName; + y: number | string; + yanchor: 'auto' | 'top' | 'middle' | 'bottom'; + yshift: number; + clicktoshow: false | 'onoff' | 'onout'; + xclick: any; + yclick: any; + hovertext: string; + hoverlabel: Partial; + captureevents: boolean; } -/** - * Layout axis configuration - */ -export interface LayoutAxis { - title?: string | Partial; - type?: AxisType; - autorange?: boolean | 'reversed'; - range?: [number | string, number | string]; - fixedrange?: boolean; - showgrid?: boolean; - showline?: boolean; - showticklabels?: boolean; - ticks?: '' | 'outside' | 'inside'; - tickmode?: 'auto' | 'linear' | 'array'; - tickvals?: any[]; - ticktext?: string[]; - tickangle?: number; - tickfont?: Partial; - zeroline?: boolean; - zerolinecolor?: string; - zerolinewidth?: number; - gridcolor?: string; - gridwidth?: number; - linecolor?: string; - linewidth?: number; - mirror?: boolean | 'ticks' | 'all' | 'allticks'; - anchor?: string; - side?: 'top' | 'bottom' | 'left' | 'right'; - overlaying?: string; - domain?: [number, number]; - position?: number; - - // Internal properties - _id?: string; - _name?: string; - _mainAxis?: boolean; - _anchorAxis?: any; +// --------------------------------------------------------------------------- +// Image +// --------------------------------------------------------------------------- - [key: string]: any; +export interface Image { + visible: boolean; + source: string; + layer: 'above' | 'below'; + sizex: number; + sizey: number; + sizing: 'fill' | 'contain' | 'stretch'; + opacity: number; + x: number | string; + y: number | string; + xanchor: 'left' | 'center' | 'right'; + yanchor: 'top' | 'middle' | 'bottom'; + xref: 'paper' | XAxisName; + yref: 'paper' | YAxisName; } -/** - * Axis title configuration - */ -export interface AxisTitle { - font?: Partial; - standoff?: number; +// --------------------------------------------------------------------------- +// ModeBar / Icon +// --------------------------------------------------------------------------- + +export type ModeBarDefaultButtons = + | 'lasso2d' + | 'select2d' + | 'sendDataToCloud' + | 'zoom2d' + | 'pan2d' + | 'zoomIn2d' + | 'zoomOut2d' + | 'autoScale2d' + | 'resetScale2d' + | 'hoverClosestCartesian' + | 'hoverCompareCartesian' + | 'zoom3d' + | 'pan3d' + | 'orbitRotation' + | 'tableRotation' + | 'handleDrag3d' + | 'resetCameraDefault3d' + | 'resetCameraLastSave3d' + | 'hoverClosest3d' + | 'zoomInGeo' + | 'zoomOutGeo' + | 'resetGeo' + | 'hoverClosestGeo' + | 'hoverClosestGl2d' + | 'hoverClosestPie' + | 'toggleHover' + | 'toImage' + | 'resetViews' + | 'toggleSpikelines' + | 'zoomInMap' + | 'zoomInMapbox' + | 'zoomOutMap' + | 'zoomOutMapbox' + | 'resetViewMap' + | 'resetViewMapbox' + | 'togglespikelines' + | 'togglehover' + | 'hovercompare' + | 'hoverclosest' + | 'v1hovermode'; + +export type ButtonClickEvent = (gd: HTMLElement, ev: MouseEvent) => void; + +export interface Icon { + height?: number | undefined; + width?: number | undefined; + ascent?: number | undefined; + descent?: number | undefined; + name?: string | undefined; + path?: string | undefined; + svg?: string | undefined; + transform?: string | undefined; +} + +export interface ModeBarButton { + name: string; + title: string; + icon: string | Icon; + gravity?: string | undefined; + click: ButtonClickEvent; + attr?: string | undefined; + val?: any; + toggle?: boolean | undefined; +} + +export type ModeBarButtonAny = ModeBarDefaultButtons | ModeBarButton; + +// `ModeBar` is generated from src/components/modebar/attributes.ts. +// See src/types/generated/components/modebar.d.ts. +export type { ModeBar } from '../generated/components/modebar'; + +// --------------------------------------------------------------------------- +// Gauge / Delta / Indicator types +// --------------------------------------------------------------------------- + +export interface GaugeLine { + color: Color; + width: number; +} + +export interface Threshold { + line: Partial; + value: number; + thickness: number; +} + +export interface GaugeBar { + color: Color; + line: Partial; + thickness: number; +} + +export interface Gauge { + shape: 'angular' | 'bullet'; + bar: Partial; + bgcolor: Color; + bordercolor: Color; + borderwidth: number; + axis: Partial; + steps: Array<{ range: number[]; color: Color }>; + threshold: Partial; +} + +export interface Delta { + reference: number; + position: 'top' | 'bottom' | 'left' | 'right'; + relative: boolean; + valueformat: string; + increasing: { + symbol: string; + color: Color; + }; + decreasing: { + symbol: string; + color: Color; + }; +} + +// --------------------------------------------------------------------------- +// Mapbox types +// --------------------------------------------------------------------------- + +export interface MapboxCenter { + lon: number; + lat: number; +} + +export interface MapboxSymbol { + icon: string; + iconsize: number; text: string; + placement: 'point' | 'line' | 'line-center'; + textfont: Partial; + textposition: + | 'top left' + | 'top center' + | 'top right' + | 'middle center' + | 'bottom left' + | 'bottom center' + | 'bottom right'; } +export interface MapboxLayers { + visible: boolean; + sourcetype: 'geojson' | 'vecotr' | 'raster' | 'image'; + source: any; + sourcelayer: string; + sourceattribution: string; + type: 'circle' | 'line' | 'fill' | 'symbol' | 'raster'; + coordinates: number | string; + below: string; + color: Color; + opacity: number; + minzoom: number; + maxzoom: number; + circle: { + radius: number; + }; + line: Partial; + fill: { + outlinecolor: Color; + }; + symbol: Partial; + name: string; + templateitemname: string; +} + +export interface MapboxBounds { + east: number; + north: number; + south: number; + west: number; +} + +export interface Mapbox { + domain: Partial; + accesstoken: string; + style: number | string; + center: Partial; + zoom: number; + bearing: number; + bounds: MapboxBounds; + pitch: number; + layers: Array>; + uirevision: number | string; + uid: string; +} + +// --------------------------------------------------------------------------- +// PolarLayout +// --------------------------------------------------------------------------- + +export interface PolarLayout { + domain: Partial; + sector: number[]; + hole: number; + bgcolor: Color; + radialaxis: Partial; + angularaxis: Partial; + gridshape: 'circular' | 'linear'; + uirevision: string | number; + uid: string; +} + +// --------------------------------------------------------------------------- +// Template +// --------------------------------------------------------------------------- + +export interface Template { + data?: { [type in PlotType]?: Array> } | undefined; + layout?: Partial | undefined; +} + +// --------------------------------------------------------------------------- +// Layout +// --------------------------------------------------------------------------- + +export interface Layout { + colorway: string[]; + title: Partial<{ + text: string; + font: Partial; + xref: 'container' | 'paper'; + yref: 'container' | 'paper'; + x: number; + y: number; + xanchor: 'auto' | 'left' | 'center' | 'right'; + yanchor: 'auto' | 'top' | 'middle' | 'bottom'; + pad: Partial; + subtitle: + | string + | Partial<{ + text: string; + font: Partial; + }>; + }>; + autosize: boolean; + showlegend: boolean; + paper_bgcolor: Color; + plot_bgcolor: Color; + separators: string; + hidesources: boolean; + xaxis: Partial; + xaxis2: Partial; + xaxis3: Partial; + xaxis4: Partial; + xaxis5: Partial; + xaxis6: Partial; + xaxis7: Partial; + xaxis8: Partial; + xaxis9: Partial; + yaxis: Partial; + yaxis2: Partial; + yaxis3: Partial; + yaxis4: Partial; + yaxis5: Partial; + yaxis6: Partial; + yaxis7: Partial; + yaxis8: Partial; + yaxis9: Partial; + margin: Partial; + height: number; + width: number; + hovermode: 'closest' | 'x' | 'y' | 'x unified' | 'y unified' | false; + hoverdistance: number; + hoverlabel: Partial; + /** + * Determines expansion of hover effects to other subplots. + * @default "overlaying" + */ + hoversubplots: 'single' | 'overlaying' | 'axis'; + calendar: Calendar; + + // Dotted property paths for Plotly.relayout convenience + 'xaxis.range': [Datum, Datum]; + 'xaxis.range[0]': Datum; + 'xaxis.range[1]': Datum; + 'yaxis.range': [Datum, Datum]; + 'yaxis.range[0]': Datum; + 'yaxis.range[1]': Datum; + 'yaxis.type': AxisType; + 'xaxis.type': AxisType; + 'xaxis.autorange': boolean; + 'yaxis.autorange': boolean; + 'xaxis.title': Partial; + 'yaxis.title': Partial; + + ternary: {}; + geo: {}; + map: Partial; + mapbox: Partial; + subplot: string; + radialaxis: Partial; + angularaxis: {}; + dragmode: + | 'zoom' + | 'pan' + | 'select' + | 'lasso' + | 'drawclosedpath' + | 'drawopenpath' + | 'drawline' + | 'drawrect' + | 'drawcircle' + | 'orbit' + | 'turntable' + | false; + orientation: number; + annotations: Array>; + shapes: Array>; + images: Array>; + updatemenus: Array>; + sliders: Array>; + legend: Partial; + font: Partial; + scene: Partial; + scene2: Partial; + scene3: Partial; + scene4: Partial; + scene5: Partial; + scene6: Partial; + scene7: Partial; + scene8: Partial; + scene9: Partial; + barmode: 'stack' | 'group' | 'overlay' | 'relative'; + barnorm: '' | 'fraction' | 'percent'; + bargap: number; + bargroupgap: number; + boxmode: 'group' | 'overlay'; + selectdirection: 'h' | 'v' | 'd' | 'any'; + hiddenlabels: string[]; + grid: Partial<{ + rows: number; + roworder: 'top to bottom' | 'bottom to top'; + columns: number; + subplots: string[]; + xaxes: string[]; + yaxes: string[]; + pattern: 'independent' | 'coupled'; + xgap: number; + ygap: number; + domain: Partial<{ + x: number[]; + y: number[]; + }>; + xside: 'bottom' | 'bottom plot' | 'top plot' | 'top'; + yside: 'left' | 'left plot' | 'right plot' | 'right'; + }>; + polar: Partial; + polar2: Partial; + polar3: Partial; + polar4: Partial; + polar5: Partial; + polar6: Partial; + polar7: Partial; + polar8: Partial; + polar9: Partial; + transition: Transition; + template: Template; + clickmode: 'event' | 'select' | 'event+select' | 'none'; + uirevision: number | string; + uid: string; + datarevision: number | string; + editrevision: number | string; + selectionrevision: number | string; + modebar: Partial; +} + +// --------------------------------------------------------------------------- +// Internal types (not in public API types) +// --------------------------------------------------------------------------- + /** - * Padding configuration + * Fully processed layout with all defaults applied (internal use) */ -export interface Padding { - b: number; - l: number; - r: number; - t: number; +export interface FullLayout extends Layout { + _modules?: any[]; + _basePlotModules?: any[]; + _plots?: { [key: string]: any }; + _subplot?: any[]; + _subplots?: SubplotInfo; + _size?: LayoutSize; + _legends?: string[]; + _infolayer?: Selection; + _zoomlayer?: Selection; + _paperdiv?: Selection; + _glcontainer?: Selection; + _calcInverseTransform?: (gd: any) => void; + _invTransform?: any; + _uid?: string; + _initialAutoSizeIsDone?: boolean; + _hoverlayer?: any; + _hoverdata?: any[]; + _modeBar?: any; + _pushmargin?: { [key: string]: any }; + + [key: string]: any; } /** diff --git a/src/types/core/template.d.ts b/src/types/core/template.d.ts new file mode 100644 index 00000000000..a686728c3a3 --- /dev/null +++ b/src/types/core/template.d.ts @@ -0,0 +1,47 @@ +/** + * Template types + * + * Defines the structure of Plotly templates. + */ + +import type { PlotData, PlotType } from './data'; +import type { Layout } from './layout'; + +/** + * Template configuration + */ +export interface Template { + /** + * Default trace configurations by type + */ + data?: { + [K in PlotType]?: Array>; + }; + + /** + * Default layout configuration + */ + layout?: Partial; +} + +/** + * Template figure type + */ +export interface TemplateFigure { + data?: PlotData[]; + layout?: Partial; +} + +/** + * Template validation result + */ +export interface ValidateTemplateResult { + code: string; + index?: number; + traceType?: string; + templateCount?: number; + dataCount?: number; + path?: string; + templateitemname?: string; + msg: string; +} diff --git a/src/types/generated/components/modebar.d.ts b/src/types/generated/components/modebar.d.ts new file mode 100644 index 00000000000..03d75a687c1 --- /dev/null +++ b/src/types/generated/components/modebar.d.ts @@ -0,0 +1,16 @@ +/** + * Generated from src/components/modebar/attributes.ts. + * Do not edit by hand — run `npm run gen:types`. + */ + +import type { Color } from '../../lib/common'; + +export interface ModeBar { + orientation?: 'v' | 'h'; + bgcolor?: Color; + color?: Color; + activecolor?: Color; + uirevision?: any; + add?: string | string[]; + remove?: string | string[]; +} diff --git a/src/types/generated/index.d.ts b/src/types/generated/index.d.ts new file mode 100644 index 00000000000..7ff397dc612 --- /dev/null +++ b/src/types/generated/index.d.ts @@ -0,0 +1,6 @@ +/** + * Generated type aggregator — do not edit by hand. + * Run `npm run gen:types` to regenerate. + */ + +export type { ModeBar } from './components/modebar'; diff --git a/src/types/index.d.ts b/src/types/index.d.ts index 74a2d0da521..e96301ceb0f 100644 --- a/src/types/index.d.ts +++ b/src/types/index.d.ts @@ -1,20 +1,36 @@ /** * Central type definitions for plotly.js * - * This file exports all shared types from subdirectories. - * Import from here for convenience: - * * @example * import type { GraphDiv, Layout, PlotData } from '../types'; */ +// Library utilities +export * from './lib/common'; + // Core types -export * from './components/common'; +export * from './core/animation'; +export * from './core/api'; export * from './core/config'; export * from './core/data'; export * from './core/events'; export * from './core/graph-div'; export * from './core/layout'; -export * from './lib/common'; +export * from './core/template'; + +// Components +export * from './components/colorbar'; +export * from './components/common'; +export * from './components/rangeselector'; +export * from './components/slider'; +export * from './components/updatemenu'; + +// Plot/trace types export * from './plots/common'; +export * from './traces/box'; +export * from './traces/candlestick'; export * from './traces/common'; +export * from './traces/ohlc'; +export * from './traces/pie'; +export * from './traces/sankey'; +export * from './traces/violin'; diff --git a/src/types/lib/attributes.d.ts b/src/types/lib/attributes.d.ts new file mode 100644 index 00000000000..312a8f61ecf --- /dev/null +++ b/src/types/lib/attributes.d.ts @@ -0,0 +1,224 @@ +/** + * Attribute schema → TypeScript type extraction + * + * Plotly's attribute files describe both the runtime metadata (valType, dflt, + * editType, description, ...) AND the public-facing type. This file provides: + * + * - AttrInfo / AttributeMap: structural shape that attribute objects must + * satisfy (compile-time validation of attribute authoring) + * - AttrsToType: a mapped type that walks an attribute object and + * produces the corresponding TypeScript interface + * + * Author attribute files like: + * + * export const attributes = { + * orientation: { + * valType: 'enumerated', + * values: ['v', 'h'] as const, + * dflt: 'h', + * editType: 'modebar', + * }, + * bgcolor: { valType: 'color', editType: 'modebar' }, + * } as const satisfies AttributeMap; + * + * export type ModeBarAttributes = AttrsToType; + */ + +import type { Color, ColorScale, Datum, TypedArray } from './common'; + +// --------------------------------------------------------------------------- +// Attribute info — discriminated union by valType +// --------------------------------------------------------------------------- + +interface BaseAttrInfo { + description?: string; + editType?: string; + role?: 'object' | 'info' | 'style' | 'data'; + arrayOk?: boolean; + anim?: boolean; + dflt?: unknown; + /** Names a reusable item slot in template processing */ + _isLinkedToArray?: string; + /** Marker for axis/subplot id-style attributes */ + _isSubplotObj?: boolean; +} + +export interface DataArrayAttr extends BaseAttrInfo { + valType: 'data_array'; + dflt?: Datum[] | TypedArray; +} + +export interface NumberAttr extends BaseAttrInfo { + valType: 'number'; + dflt?: number; + min?: number; + max?: number; +} + +export interface IntegerAttr extends BaseAttrInfo { + valType: 'integer'; + dflt?: number; + min?: number; + max?: number; +} + +export interface StringAttr extends BaseAttrInfo { + valType: 'string'; + dflt?: string; + /** Allow whitespace-only strings */ + noBlank?: boolean; + strict?: boolean; + values?: readonly string[]; +} + +export interface BooleanAttr extends BaseAttrInfo { + valType: 'boolean'; + dflt?: boolean; +} + +export interface ColorAttr extends BaseAttrInfo { + valType: 'color'; + dflt?: string; +} + +export interface ColorScaleAttr extends BaseAttrInfo { + valType: 'colorscale'; + dflt?: ColorScale; +} + +export interface ColorListAttr extends BaseAttrInfo { + valType: 'colorlist'; + dflt?: string[]; +} + +export interface AngleAttr extends BaseAttrInfo { + valType: 'angle'; + dflt?: number | 'auto'; +} + +export interface SubplotIdAttr extends BaseAttrInfo { + valType: 'subplotid'; + dflt?: string; + regex?: string; +} + +export interface EnumeratedAttr extends BaseAttrInfo { + valType: 'enumerated'; + values: V; + dflt?: V[number]; + coerceNumber?: boolean; +} + +export interface FlagListAttr extends BaseAttrInfo { + valType: 'flaglist'; + flags: F; + extras?: readonly string[]; + dflt?: string; +} + +export interface InfoArrayAttr extends BaseAttrInfo { + valType: 'info_array'; + items?: AttrInfo | readonly AttrInfo[]; + freeLength?: boolean; + dimensions?: 1 | 2 | '1-2'; + dflt?: unknown[]; +} + +export interface AnyAttr extends BaseAttrInfo { + valType: 'any'; +} + +/** + * Union of all leaf attribute shapes (anything with a `valType`). + */ +export type AttrInfo = + | DataArrayAttr + | NumberAttr + | IntegerAttr + | StringAttr + | BooleanAttr + | ColorAttr + | ColorScaleAttr + | ColorListAttr + | AngleAttr + | SubplotIdAttr + | EnumeratedAttr + | FlagListAttr + | InfoArrayAttr + | AnyAttr; + +/** + * A nested map of attribute info. Properties may be leaf attributes + * (with a `valType`) or further-nested maps. A few special meta-keys + * (editType, role, _isLinkedToArray, etc.) live alongside attributes. + */ +export interface AttributeMap { + [key: string]: AttrInfo | AttributeMap | string | boolean | undefined; +} + +// --------------------------------------------------------------------------- +// Type-level conversion +// --------------------------------------------------------------------------- + +/** + * Wrap a type with `T | T[]` if `arrayOk: true` is set on the attribute. + */ +type ApplyArrayOk = A extends { arrayOk: true } ? V | V[] : V; + +/** + * Map a single leaf attribute (object with `valType`) to its TS value type. + */ +export type ValTypeToTS = A extends DataArrayAttr + ? Datum[] | TypedArray + : A extends NumberAttr + ? ApplyArrayOk + : A extends IntegerAttr + ? ApplyArrayOk + : A extends StringAttr + ? ApplyArrayOk + : A extends BooleanAttr + ? ApplyArrayOk + : A extends ColorAttr + ? ApplyArrayOk + : A extends ColorScaleAttr + ? ColorScale + : A extends ColorListAttr + ? Color[] + : A extends AngleAttr + ? ApplyArrayOk + : A extends SubplotIdAttr + ? string + : A extends EnumeratedAttr + ? ApplyArrayOk + : A extends FlagListAttr + ? ApplyArrayOk + : A extends InfoArrayAttr + ? unknown[] + : A extends AnyAttr + ? any + : never; + +/** + * Keys that are metadata about the container itself (not nested attributes). + * They are stripped during type extraction. + */ +type ReservedKey = 'editType' | 'role' | '_isLinkedToArray' | '_isSubplotObj' | '_arrayAttrRegexps' | '_deprecated'; + +/** + * Walk an AttributeMap and produce the corresponding TS interface shape. + * - Leaf entries (with `valType`) → their TS value type + * - Nested entries → recurse + * - Reserved meta-keys → omitted + * + * The `-readonly` modifier strips the readonly that `as const` introduces + * on the source attributes object. The attributes definition is genuinely + * static, but the derived user-facing type represents user-supplied input + * which should be mutable. + */ +export type AttrsToType = { + -readonly [K in keyof T as K extends ReservedKey ? never : K]?: T[K] extends AttrInfo + ? ValTypeToTS + : T[K] extends Record + ? AttrsToType + : never; +}; diff --git a/src/types/lib/common.d.ts b/src/types/lib/common.d.ts index 7d1da324dad..8f19b23a47f 100644 --- a/src/types/lib/common.d.ts +++ b/src/types/lib/common.d.ts @@ -1,78 +1,122 @@ /** * Common library utility types * - * Types for Lib utilities and helpers + * Utility types, scalars, and helpers used throughout plotly.js */ -/** - * Coercion function signature - */ -export type CoerceFn = (attr: string, dflt?: any) => any; +// --------------------------------------------------------------------------- +// Scalar / union types +// --------------------------------------------------------------------------- -/** - * Nested property path - */ -export type PropertyPath = string | string[]; +export type Datum = string | number | Date | null; -/** - * Color scale - */ -export type ColorScale = string | string[] | Array<[number, string]>; +export type TypedArray = + | Int8Array + | Uint8Array + | Int16Array + | Uint16Array + | Int32Array + | Uint32Array + | Uint8ClampedArray + | Float32Array + | Float64Array; -/** - * Date format string - */ -export type DateFormat = string; +export type Color = + | string + | number + | Array + | Array>; -/** - * Single data value - */ -export type Datum = string | number | Date | null; +export type ColorScale = string | string[] | Array<[number, string]>; -/** - * Line dash styles - */ export type Dash = 'solid' | 'dot' | 'dash' | 'longdash' | 'dashdot' | 'longdashdot'; -/** - * Supported calendar systems - */ export type Calendar = + | 'gregorian' | 'chinese' | 'coptic' | 'discworld' | 'ethiopian' - | 'gregorian' | 'hebrew' | 'islamic' - | 'jalali' | 'julian' | 'mayan' | 'nanakshahi' | 'nepali' | 'persian' + | 'jalali' | 'taiwan' | 'thai' | 'ummalqura'; -/** - * Axis type - */ -export type AxisType = '-' | 'category' | 'date' | 'linear' | 'log' | 'multicategory'; +export type AxisType = '-' | 'linear' | 'log' | 'date' | 'category' | 'multicategory'; + +export type DTickValue = number | string; + +export type MarkerSymbol = string | number | Array; + +export type XAnchor = 'auto' | 'left' | 'center' | 'right'; +export type YAnchor = 'auto' | 'top' | 'middle' | 'bottom'; +export type XRef = 'container' | 'paper'; +export type YRef = 'container' | 'paper'; + +// --------------------------------------------------------------------------- +// Error bars +// --------------------------------------------------------------------------- + +export interface ErrorOptions { + visible: boolean; + symmetric: boolean; + color: Color; + thickness: number; + width: number; +} + +export type ErrorBar = Partial & + ( + | { + type: 'constant' | 'percent'; + value: number; + valueminus?: number | undefined; + } + | { + type: 'data'; + array: Datum[]; + arrayminus?: Datum[] | undefined; + } + ); + +// --------------------------------------------------------------------------- +// Pattern +// --------------------------------------------------------------------------- + +export type PatternShape = '' | '/' | '\\' | 'x' | '-' | '|' | '+' | '.'; + +export interface Pattern { + shape?: PatternShape | PatternShape[] | undefined; + path?: string | undefined; + fillmode?: 'replace' | 'overlay' | undefined; + bgcolor?: string | string[] | undefined; + fgcolor?: string | string[] | undefined; + fgopacity?: number | undefined; + size?: number | number[] | undefined; + solidity?: number | number[] | undefined; +} + +// --------------------------------------------------------------------------- +// Internal / lib utility types +// --------------------------------------------------------------------------- + +export type CoerceFn = (attr: string, dflt?: any) => any; + +export type PropertyPath = string | string[]; + +export type DateFormat = string; -/** - * Numeric array - */ export type NumericArray = number[] | Float32Array | Float64Array; -/** - * Type that can be a single value or an array - */ export type Arrayable = T | T[]; -/** - * Rectangle bounds - */ export interface Rect { left: number; right: number; @@ -82,24 +126,15 @@ export interface Rect { height?: number; } -/** - * Point in 2D space - */ export interface Point2D { x: number; y: number; } -/** - * Point in 3D space - */ export interface Point3D extends Point2D { z: number; } -/** - * RGBA color - */ export interface RGBAColor { r: number; g: number; diff --git a/src/types/traces/box.d.ts b/src/types/traces/box.d.ts new file mode 100644 index 00000000000..d11e3e7584f --- /dev/null +++ b/src/types/traces/box.d.ts @@ -0,0 +1,42 @@ +/** + * Box plot trace type + */ + +import type { PlotData } from '../core/data'; +import type { Color, MarkerSymbol } from '../lib/common'; + +export interface BoxPlotMarker { + outliercolor: Color; + symbol: MarkerSymbol; + opacity: number; + size: number; + color: Color; + line: Partial<{ + color: Color; + width: number; + outliercolor: Color; + outlierwidth: number; + }>; +} + +export interface ScatterSelectedMarker { + opacity?: number; + color?: Color; + size?: number; +} + +export interface BoxPlotData extends PlotData { + type: 'box'; + x0: any; + y0: any; + width: number; + quartilemethod: 'linear' | 'exclusive' | 'inclusive'; + boxpoints: 'all' | 'outliers' | 'suspectedoutliers' | false; + jitter: number; + pointpos: number; + marker: Partial; + offsetgroup: string; + alignmentgroup: string; + selected: ScatterSelectedMarker; + unselected: ScatterSelectedMarker; +} diff --git a/src/types/traces/candlestick.d.ts b/src/types/traces/candlestick.d.ts new file mode 100644 index 00000000000..910818417fc --- /dev/null +++ b/src/types/traces/candlestick.d.ts @@ -0,0 +1,51 @@ +/** + * Candlestick trace type + */ + +import type { OhlcData } from './ohlc'; + +export interface CandlestickData { + type: 'candlestick'; + name: OhlcData['name']; + visible: OhlcData['visible']; + showlegend: OhlcData['showlegend']; + opacity: OhlcData['opacity']; + ids: OhlcData['ids']; + xperiod: OhlcData['xperiod']; + xperiod0: OhlcData['xperiod0']; + xperiodalignment: OhlcData['xperiodalignment']; + x: OhlcData['x']; + open: OhlcData['open']; + high: OhlcData['high']; + close: OhlcData['close']; + low: OhlcData['low']; + text: OhlcData['text']; + hovertext: OhlcData['hovertext']; + hoverinfo: OhlcData['hoverinfo']; + meta: OhlcData['meta']; + xaxis: OhlcData['xaxis']; + line: { width?: number | undefined }; + increasing: { + line?: + | { + color?: string | undefined; + width?: number | undefined; + } + | undefined; + }; + decreasing: { + line?: + | { + color?: string | undefined; + width?: number | undefined; + } + | undefined; + }; + hoverlabel: OhlcData['hoverlabel']; + /** + * Number between 0 and 1. + * Selects the width of the whiskers relative to the box's width. + * @default 0 + */ + whiskerwidth: number; +} diff --git a/src/types/traces/common.d.ts b/src/types/traces/common.d.ts index f3cec6513c4..95c1bdc855b 100644 --- a/src/types/traces/common.d.ts +++ b/src/types/traces/common.d.ts @@ -41,12 +41,7 @@ export interface TraceModule { /** * Trace defaults function signature */ -export type TraceDefaultsFn = ( - traceIn: any, - traceOut: any, - defaultColor: string, - layout: any -) => void; +export type TraceDefaultsFn = (traceIn: any, traceOut: any, defaultColor: string, layout: any) => void; /** * Trace attributes structure diff --git a/src/types/traces/ohlc.d.ts b/src/types/traces/ohlc.d.ts new file mode 100644 index 00000000000..6bf4b18e97a --- /dev/null +++ b/src/types/traces/ohlc.d.ts @@ -0,0 +1,95 @@ +/** + * OHLC trace type + */ + +import type { Calendar, Dash } from '../lib/common'; + +export type OhlcHoverInfo = + | 'x' + | 'y' + | 'z' + | 'text' + | 'name' + | 'x+y' + | 'x+z' + | 'x+text' + | 'x+name' + | 'y+z' + | 'y+text' + | 'y+name' + | 'z+text' + | 'z+name' + | 'x+y+z' + | 'x+y+text' + | 'x+y+name' + | 'y+z+text' + | 'y+z+name' + | 'z+text+name' + | 'all' + | 'none' + | 'skip'; + +export interface OhlcData { + type: 'ohlc'; + name: string; + visible: boolean | 'legendonly'; + showlegend: boolean; + legendgroup: string; + opacity: number; + ids: string[]; + x: string[]; + close: number[]; + open: number[]; + high: number[]; + low: number[]; + text: string | string[]; + hovertext: string | string[]; + hoverinfo: OhlcHoverInfo; + meta: any; + customdata: any[]; + xaxis: string; + yaxis: string; + xperiod: any; + xperiodalignment: 'start' | 'middle' | 'end'; + xperiod0: any; + line: { + width: number; + dash: Dash; + }; + selectedpoints: any; + increasing: { + line?: + | { + color?: string | undefined; + width?: number | undefined; + dash?: Dash | undefined; + } + | undefined; + }; + decreasing: { + line?: + | { + color?: string | undefined; + width?: number | undefined; + dash?: Dash | undefined; + } + | undefined; + }; + hoverlabel: { + bgcolor?: string | string[] | undefined; + bordercolor?: string | string[] | undefined; + font?: + | { + family?: string | string[] | undefined; + size?: number | undefined; + color?: string | string[] | undefined; + } + | undefined; + align?: 'left' | 'right' | 'auto' | undefined; + namelength?: number | number[] | undefined; + split?: boolean | undefined; + }; + tickwidth: number; + xcalendar: Calendar; + uirevision: any; +} diff --git a/src/types/traces/pie.d.ts b/src/types/traces/pie.d.ts new file mode 100644 index 00000000000..d49adf954e5 --- /dev/null +++ b/src/types/traces/pie.d.ts @@ -0,0 +1,126 @@ +/** + * Pie chart trace type + */ + +import type { PlotData } from '../core/data'; +import type { DataTitle, HoverLabel } from '../core/layout'; +import type { Datum } from '../lib/common'; + +export type PieColor = string | number; +export type PieColors = Array; + +export interface PieFont { + family: string | string[]; + size: number | number[]; + color: PieColor | PieColors; +} + +export interface PieDataTitle extends Pick { + font: Partial; +} + +export type PieTextPosition = 'inside' | 'outside' | 'auto' | 'none'; + +export type PieHoverInfo = + | 'all' + | 'none' + | 'skip' + | 'label' + | 'text' + | 'value' + | 'percent' + | 'name' + | 'label+text' + | 'label+value' + | 'label+percent' + | 'label+name' + | 'text+value' + | 'text+percent' + | 'text+name' + | 'value+percent' + | 'value+name' + | 'percent+name' + | 'label+text+value' + | 'label+text+percent' + | 'label+text+name' + | 'label+value+percent' + | 'label+value+name' + | 'label+percent+name' + | 'text+value+percent' + | 'text+value+name' + | 'text+percent+name' + | 'value+percent+name' + | 'label+text+value+percent' + | 'label+text+value+name' + | 'label+text+percent+name' + | 'label+value+percent+name' + | 'text+value+percent+name'; + +export interface PieDomain { + x: number[]; + y: number[]; + row: number; + column: number; +} + +export interface PieLine { + color: PieColor | PieColors; + width: number | number[]; +} + +export interface PieMarker { + colors: PieColors; + line: Partial; +} + +export interface PieHoverLabel { + bgcolor: PieColor | PieColors; + bordercolor: PieColor | PieColors; + font: PieFont; + align: HoverLabel['align'] | Array; + namelength: number | number[]; +} + +export type PieInsideTextOrientation = 'horizontal' | 'radial' | 'tangential' | 'auto'; + +export interface PieData + extends Pick< + PlotData, + | 'name' + | 'visible' + | 'showlegend' + | 'legendgroup' + | 'opacity' + | 'ids' + | 'labels' + | 'hovertext' + | 'automargin' + | 'textinfo' + | 'direction' + | 'hole' + | 'rotation' + > { + type: 'pie'; + title: Partial; + values: Array; + dlabel: number; + label0: number; + pull: number | number[]; + text: Datum | Datum[]; + textposition: PieTextPosition | PieTextPosition[]; + texttemplate: string | string[]; + hoverinfo: PieHoverInfo; + hovertemplate: string | string[]; + meta: number | string; + customdata: Datum[]; + domain: Partial; + marker: Partial; + textfont: PieFont; + hoverlabel: Partial; + insidetextfont: PieFont; + insidetextorientation: PieInsideTextOrientation; + outsidetextfont: PieFont; + scalegroup: string; + sort: boolean; + uirevision: number | string; +} diff --git a/src/types/traces/sankey.d.ts b/src/types/traces/sankey.d.ts new file mode 100644 index 00000000000..2972494d9de --- /dev/null +++ b/src/types/traces/sankey.d.ts @@ -0,0 +1,108 @@ +/** + * Sankey trace type + */ + +import type { HoverLabel } from '../core/layout'; +import type { Datum } from '../lib/common'; + +export type SankeyColor = string | number; +export type SankeyColors = Array; + +export interface SankeyFont { + family: string | string[]; + size: number | number[]; + color: SankeyColor | SankeyColors; +} + +export interface SankeyDataTitle { + font: Partial; + title: string; +} + +export type SankeyOrientation = 'v' | 'h'; + +export interface SankeyHoverLabel { + bgcolor: SankeyColor | SankeyColors; + bordercolor: SankeyColor | SankeyColors; + font: SankeyFont; + align: HoverLabel['align'] | Array; + namelength: number | number[]; +} + +export interface SankeyDomain { + row: number; + column: number; + x: number[]; + y: number[]; +} + +export interface SankeyNode { + color: SankeyColor[]; + customdata: Datum[]; + groups: SankeyNode[]; + hoverinfo: 'all' | 'none' | 'skip'; + hoverlabel: Partial; + hovertemplate: string | string[]; + label: Datum[]; + line: Partial<{ + color: SankeyColor; + width: number; + }>; + pad: number; + thickness: number; + x: number[]; + y: number[]; +} + +export interface SankeyColorscale { + cmax: number; + cmin: number; + colorscale: Array<[number, string]>; + label: string; + name: string; + templateitemname: string; +} + +export interface SankeyLink { + arrowlen: number; + color: SankeyColor | SankeyColor[]; + colorscale: Partial; + customdata: Datum[]; + hoverinfo: 'all' | 'none' | 'skip'; + hoverlabel: Partial; + hovertemplate: string | string[]; + hovercolor: SankeyColor | SankeyColor[]; + label: Datum[]; + line: Partial<{ + color: SankeyColor; + width: number; + }>; + source: number[]; + target: number[]; + value: number[]; +} + +export interface SankeyData { + type: 'sankey'; + name: string; + orientation: SankeyOrientation; + visible: boolean | 'legendonly'; + legend: string; + legendrank: number; + legendgrouptitle: Partial; + legendwidth: number; + ids: string[]; + hoverinfo: string; + meta: number | string; + customdata: Datum[]; + domain: Partial; + node: Partial; + link: Partial; + textfont: Partial; + selectpoints: string | number; + arrangement: 'snap' | 'perpendicular' | 'freeform' | 'fixed'; + hoverlabel: Partial; + valueformat: string; + valuesuffix: string; + uirevision: string | number; +} diff --git a/src/types/traces/violin.d.ts b/src/types/traces/violin.d.ts new file mode 100644 index 00000000000..dd2838fff79 --- /dev/null +++ b/src/types/traces/violin.d.ts @@ -0,0 +1,61 @@ +/** + * Violin trace type + */ + +import type { Color } from '../lib/common'; +import type { BoxPlotData } from './box'; + +export interface ViolinData { + type: 'violin'; + + x: BoxPlotData['x']; + y: BoxPlotData['y']; + x0: BoxPlotData['x0']; + y0: BoxPlotData['y0']; + name: BoxPlotData['name']; + + opacity: number; + + orientation: BoxPlotData['orientation']; + bandwidth: number; + scalegroup: string; + scalemode: 'width' | 'count'; + spanmode: 'soft' | 'hard' | 'manual'; + span: any[]; + line: Partial<{ + color: Color; + width: number; + }>; + fillcolor: Color; + points: BoxPlotData['boxpoints']; + jitter: BoxPlotData['jitter']; + pointpos: BoxPlotData['pointpos']; + width: BoxPlotData['width']; + marker: BoxPlotData['marker']; + text: BoxPlotData['text']; + hovertext: BoxPlotData['hovertext']; + hovertemplate: BoxPlotData['hovertemplate']; + box: Partial<{ + visible: boolean; + width: number; + fillcolor: Color; + line: Partial<{ + color: Color; + width: number; + }>; + }>; + meanline: Partial<{ + visible: boolean; + color: Color; + width: number; + }>; + side: 'both' | 'positive' | 'negative'; + + offsetgroup: BoxPlotData['offsetgroup']; + alignmentgroup: BoxPlotData['alignmentgroup']; + + selected: BoxPlotData['selected']; + unselected: BoxPlotData['unselected']; + + hoveron: 'violins' | 'points' | 'kde' | 'all' | string; +} diff --git a/tasks/generate_types.mjs b/tasks/generate_types.mjs new file mode 100644 index 00000000000..31e64346f1b --- /dev/null +++ b/tasks/generate_types.mjs @@ -0,0 +1,307 @@ +#!/usr/bin/env node +/** + * Generate flat .d.ts files from attribute schemas. + * + * Walks src/** /attributes.ts, finds each `export type XAttributes = AttrsToType<...>`, + * resolves the mapped type to its concrete shape via the TypeScript Compiler API, + * and emits flat declaration files into src/types/generated/. + * + * Each attribute file declares the canonical public type name via a JSDoc marker: + * + * @generates ModeBar + * + * That tells the generator to emit `export type ModeBar = { ... }` in the + * generated index, replacing any hand-written definition. + */ + +import * as fs from 'fs'; +import * as path from 'path'; +import * as ts from 'typescript'; +import { fileURLToPath } from 'url'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); +const repoRoot = path.resolve(__dirname, '..'); + +const tsconfigPath = path.join(repoRoot, 'tsconfig.json'); +const generatedDir = path.join(repoRoot, 'src/types/generated'); + +// --------------------------------------------------------------------------- +// 1. Discover attribute files +// --------------------------------------------------------------------------- + +function findAttributeFiles(dir, results = []) { + const entries = fs.readdirSync(dir, { withFileTypes: true }); + for (const entry of entries) { + const full = path.join(dir, entry.name); + if (entry.isDirectory()) { + if (entry.name === 'node_modules' || entry.name === 'generated') continue; + findAttributeFiles(full, results); + } else if (entry.isFile() && entry.name === 'attributes.ts') { + results.push(full); + } + } + return results; +} + +const attributeFiles = findAttributeFiles(path.join(repoRoot, 'src')); +console.log(`Found ${attributeFiles.length} attribute file(s):`); +for (const f of attributeFiles) console.log(` ${path.relative(repoRoot, f)}`); + +if (attributeFiles.length === 0) { + console.log('No attribute files to process. Exiting.'); + process.exit(0); +} + +// --------------------------------------------------------------------------- +// 2. Build a TypeScript program over those files +// --------------------------------------------------------------------------- + +const tsconfigJson = ts.readConfigFile(tsconfigPath, ts.sys.readFile); +if (tsconfigJson.error) { + console.error('Failed to read tsconfig:', tsconfigJson.error); + process.exit(1); +} + +const parsed = ts.parseJsonConfigFileContent(tsconfigJson.config, ts.sys, repoRoot); + +const program = ts.createProgram(attributeFiles, { + ...parsed.options, + noEmit: true +}); + +const checker = program.getTypeChecker(); + +// --------------------------------------------------------------------------- +// 3. For each file, find @generates marker + extracted type, emit flat .d.ts +// --------------------------------------------------------------------------- + +/** + * Extract the "@generates X" name from the leading JSDoc of the const + * declaration (or any leading comment in the file). + */ +function findGeneratesMarker(sourceFile) { + const text = sourceFile.getFullText(); + const m = text.match(/@generates\s+([A-Za-z_][A-Za-z0-9_]*)/); + return m ? m[1] : null; +} + +/** + * Find the exported type alias whose name ends in `Attributes`. + * Returns the type alias declaration node. + */ +function findExtractedTypeAlias(sourceFile) { + let result = null; + ts.forEachChild(sourceFile, (node) => { + if ( + ts.isTypeAliasDeclaration(node) && + node.modifiers && + node.modifiers.some((m) => m.kind === ts.SyntaxKind.ExportKeyword) && + node.name.text.endsWith('Attributes') + ) { + result = node; + } + }); + return result; +} + +/** + * Convert a resolved Type to a TypeNode using the checker, then print it + * using the TS printer. This produces real multi-line output and we + * post-process import("...") paths into relative references. + */ +const nodeBuilderFlags = + ts.NodeBuilderFlags.NoTruncation | + ts.NodeBuilderFlags.MultilineObjectLiterals | + ts.NodeBuilderFlags.WriteClassExpressionAsTypeLiteral | + ts.NodeBuilderFlags.UseFullyQualifiedType | + ts.NodeBuilderFlags.InTypeAlias; + +const printer = ts.createPrinter({ newLine: ts.NewLineKind.LineFeed, removeComments: false }); + +/** + * Rewrite absolute `import("/abs/path")` references in printed output to + * paths relative to the destination directory. + */ +function rewriteImports(text, outputDir) { + return text.replace(/import\("([^"]+)"\)/g, (_, absPath) => { + let rel = path.relative(outputDir, absPath); + if (!rel.startsWith('.')) rel = './' + rel; + rel = rel.replace(/\.d\.ts$|\.ts$/, ''); + return `import("${rel}")`; + }); +} + +/** + * Replace inline `import("path").Name` references with bare `Name` and + * return the list of `import type` statements needed at the top of the + * generated file. + * + * Inline import types are valid TS but noisier than a hoisted import, + * which is what a human-author would write. + */ +function hoistImportTypes(text, selfName) { + const matches = [...text.matchAll(/import\("([^"]+)"\)\.(\w+)/g)]; + if (matches.length === 0) return { text, importStatements: [] }; + + // Group { path → set of names } + const byPath = new Map(); + for (const [, importPath, name] of matches) { + // Don't import the type we're declaring — it would collide. + if (name === selfName) continue; + if (!byPath.has(importPath)) byPath.set(importPath, new Set()); + byPath.get(importPath).add(name); + } + + // Replace inline references with bare names. + const replaced = text.replace(/import\("([^"]+)"\)\.(\w+)/g, (_, importPath, name) => { + if (name === selfName) return `import("${importPath}").${name}`; + return name; + }); + + // Sort by path, names within each import sorted alphabetically. + const importStatements = [...byPath.entries()] + .sort(([a], [b]) => a.localeCompare(b)) + .map(([importPath, names]) => { + const sorted = [...names].sort(); + return `import type { ${sorted.join(', ')} } from '${importPath}';`; + }); + + return { text: replaced, importStatements }; +} + +const dummyFile = ts.createSourceFile('__d.ts', '', ts.ScriptTarget.Latest, false, ts.ScriptKind.TS); + +/** + * Convert a resolved Type into a printable declaration. If the type + * resolves to an object literal, emit it as an `interface` (so the + * canonical name appears in error messages and consumers can extend it + * via declaration merging). Otherwise — for unions, intersections, + * tuples, primitives — emit a `type` alias. + * + * Returns `{ kind: 'interface' | 'type', text }`. `text` is the body of + * the interface (without name/braces) or the RHS of the type alias. + */ +function formatDeclaration(type, enclosingDecl, outputDir) { + const typeNode = checker.typeToTypeNode(type, enclosingDecl, nodeBuilderFlags); + if (!typeNode) return { kind: 'type', text: 'unknown' }; + + if (ts.isTypeLiteralNode(typeNode)) { + // Emit each member separately so we can build an interface body. + const memberLines = typeNode.members.map((m) => + rewriteImports(printer.printNode(ts.EmitHint.Unspecified, m, dummyFile), outputDir) + ); + return { kind: 'interface', text: memberLines.join('\n') }; + } + + const text = rewriteImports(printer.printNode(ts.EmitHint.Unspecified, typeNode, dummyFile), outputDir); + return { kind: 'type', text }; +} + +/** + * Convert "ScatterAttributes" → "Scatter" or use the @generates marker. + */ +function deriveCanonicalName(typeName, marker) { + if (marker) return marker; + if (typeName.endsWith('Attributes')) return typeName.slice(0, -'Attributes'.length); + return typeName; +} + +const generated = []; // { canonicalName, typeName, sourceRel, body } + +for (const file of attributeFiles) { + const sourceFile = program.getSourceFile(file); + if (!sourceFile) { + console.warn(`Skipping ${file}: not in program`); + continue; + } + + const alias = findExtractedTypeAlias(sourceFile); + if (!alias) { + console.warn(` ⚠ ${path.relative(repoRoot, file)}: no exported "*Attributes" type alias`); + continue; + } + + const marker = findGeneratesMarker(sourceFile); + const canonical = deriveCanonicalName(alias.name.text, marker); + + const sym = checker.getSymbolAtLocation(alias.name); + if (!sym) { + console.warn(` ⚠ ${path.relative(repoRoot, file)}: could not resolve symbol`); + continue; + } + + // Determine where the .d.ts will land so we can compute relative imports. + const sourceRel = path.relative(repoRoot, file); + const outRel = sourceRel.replace(/^src\//, '').replace(/\/attributes\.ts$/, '.d.ts'); + const outPath = path.join(generatedDir, outRel); + const outputDir = path.dirname(outPath); + + const type = checker.getDeclaredTypeOfSymbol(sym); + const declaration = formatDeclaration(type, alias, outputDir); + + generated.push({ + canonicalName: canonical, + typeName: alias.name.text, + sourceRel, + outPath, + kind: declaration.kind, + body: declaration.text + }); + + console.log(` ✓ ${sourceRel} → ${canonical}`); +} + +// --------------------------------------------------------------------------- +// 4. Emit individual .d.ts files + aggregating index +// --------------------------------------------------------------------------- + +if (!fs.existsSync(generatedDir)) { + fs.mkdirSync(generatedDir, { recursive: true }); +} + +// Per-file generated declarations +for (const g of generated) { + fs.mkdirSync(path.dirname(g.outPath), { recursive: true }); + + const header = `/**\n * Generated from ${g.sourceRel}.\n * Do not edit by hand — run \`npm run gen:types\`.\n */\n\n`; + + const { text: hoistedBody, importStatements } = hoistImportTypes(g.body, g.canonicalName); + const importBlock = importStatements.length ? importStatements.join('\n') + '\n\n' : ''; + + let declaration; + if (g.kind === 'interface') { + const indented = hoistedBody + .split('\n') + .map((line) => (line.length ? ' ' + line : line)) + .join('\n'); + declaration = `export interface ${g.canonicalName} {\n${indented}\n}\n`; + } else { + declaration = `export type ${g.canonicalName} = ${hoistedBody};\n`; + } + + fs.writeFileSync(g.outPath, header + importBlock + declaration); +} + +// Aggregating index that re-exports each canonical type +const indexPath = path.join(generatedDir, 'index.d.ts'); +const indexLines = [ + '/**', + ' * Generated type aggregator — do not edit by hand.', + ' * Run `npm run gen:types` to regenerate.', + ' */', + '' +]; + +for (const g of generated.sort((a, b) => a.canonicalName.localeCompare(b.canonicalName))) { + const rel = g.sourceRel.replace(/^src\//, './').replace(/\/attributes\.ts$/, ''); + // Use `export type` re-export form — works for both interface and type alias, + // and signals to consumers that these are type-only re-exports. + indexLines.push(`export type { ${g.canonicalName} } from '${rel}';`); +} +indexLines.push(''); + +fs.writeFileSync(indexPath, indexLines.join('\n')); + +console.log(`\nWrote ${generated.length} generated type(s) to ${path.relative(repoRoot, generatedDir)}/`); +console.log(`Aggregator: ${path.relative(repoRoot, indexPath)}`); From a131cfe00fcae511aded6a21848f654d4c75efa1 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Wed, 6 May 2026 16:04:21 -0600 Subject: [PATCH 033/241] Convert modebar attributes to TS --- .../modebar/{attributes.js => attributes.ts} | 39 ++++++++++++------- src/components/modebar/defaults.js | 2 +- src/components/modebar/index.js | 2 +- 3 files changed, 26 insertions(+), 17 deletions(-) rename src/components/modebar/{attributes.js => attributes.ts} (75%) diff --git a/src/components/modebar/attributes.js b/src/components/modebar/attributes.ts similarity index 75% rename from src/components/modebar/attributes.js rename to src/components/modebar/attributes.ts index 06435784c42..4b35d183613 100644 --- a/src/components/modebar/attributes.js +++ b/src/components/modebar/attributes.ts @@ -1,31 +1,36 @@ 'use strict'; -var constants = require('./constants'); +import type { AttributeMap, AttrsToType } from '../../types/lib/attributes'; -module.exports = { +const constants = require('./constants'); + +/** + * @generates ModeBar + */ +const attributes = { editType: 'modebar', orientation: { valType: 'enumerated', - values: ['v', 'h'], + values: ['v', 'h'] as const, dflt: 'h', editType: 'modebar', - description: 'Sets the orientation of the modebar.' + description: 'Sets the orientation of the modebar.', }, bgcolor: { valType: 'color', editType: 'modebar', - description: 'Sets the background color of the modebar.' + description: 'Sets the background color of the modebar.', }, color: { valType: 'color', editType: 'modebar', - description: 'Sets the color of the icons in the modebar.' + description: 'Sets the color of the icons in the modebar.', }, activecolor: { valType: 'color', editType: 'modebar', - description: 'Sets the color of the active or hovered on icons in the modebar.' + description: 'Sets the color of the active or hovered on icons in the modebar.', }, uirevision: { valType: 'any', @@ -33,8 +38,8 @@ module.exports = { description: [ 'Controls persistence of user-driven changes related to the modebar,', 'including `hovermode`, `dragmode`, and `showspikes` at both the', - 'root level and inside subplots. Defaults to `layout.uirevision`.' - ].join(' ') + 'root level and inside subplots. Defaults to `layout.uirevision`.', + ].join(' '), }, add: { valType: 'string', @@ -46,8 +51,8 @@ module.exports = { 'Please note that these buttons will only be shown if they are', 'compatible with all trace types used in a graph.', 'Similar to `config.modeBarButtonsToAdd` option.', - 'This may include *' + constants.backButtons.join('*, *') + '*.' - ].join(' ') + 'This may include *' + constants.backButtons.join('*, *') + '*.', + ].join(' '), }, remove: { valType: 'string', @@ -57,7 +62,11 @@ module.exports = { description: [ 'Determines which predefined modebar buttons to remove.', 'Similar to `config.modeBarButtonsToRemove` option.', - 'This may include *' + constants.foreButtons.join('*, *') + '*.' - ].join(' ') - } -}; + 'This may include *' + constants.foreButtons.join('*, *') + '*.', + ].join(' '), + }, +} as const satisfies AttributeMap; + +export type ModeBarAttributes = AttrsToType; + +export default attributes; diff --git a/src/components/modebar/defaults.js b/src/components/modebar/defaults.js index a9930fa3fb6..36a80b73749 100644 --- a/src/components/modebar/defaults.js +++ b/src/components/modebar/defaults.js @@ -3,7 +3,7 @@ var Lib = require('../../lib'); var Color = require('../color'); var Template = require('../../plot_api/plot_template'); -var attributes = require('./attributes'); +var attributes = require('./attributes').default; module.exports = function supplyLayoutDefaults(layoutIn, layoutOut) { var containerIn = layoutIn.modebar || {}; diff --git a/src/components/modebar/index.js b/src/components/modebar/index.js index 1bae66bdf3b..d003c57f673 100644 --- a/src/components/modebar/index.js +++ b/src/components/modebar/index.js @@ -4,7 +4,7 @@ module.exports = { moduleType: 'component', name: 'modebar', - layoutAttributes: require('./attributes'), + layoutAttributes: require('./attributes').default, supplyLayoutDefaults: require('./defaults'), manage: require('./manage') From de168cae0ca8aa606d5939a066152fe1b85c4319 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Wed, 6 May 2026 16:06:38 -0600 Subject: [PATCH 034/241] Add type generation npm scripts --- package.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/package.json b/package.json index 306a8528631..d961f928bc6 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,8 @@ "lint-fix": "npx @biomejs/biome format ./test/image/mocks --write; npx @biomejs/biome lint --write || true", "typecheck": "tsc --noEmit", "typecheck:watch": "tsc --noEmit --watch", + "gen:types": "node tasks/generate_types.mjs && npx @biomejs/biome format --write src/types/generated", + "gen:types:check": "npm run gen:types && git diff --exit-code src/types/generated/", "pretest": "node tasks/pretest.js", "test-jasmine": "karma start test/jasmine/karma.conf.js", "test-mock": "node tasks/test_mock.mjs", From 5f8654c50a2228f01f2063e3421e99caea9507ad Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Wed, 6 May 2026 16:13:42 -0600 Subject: [PATCH 035/241] Add type check steps to CI --- .github/workflows/ci.yml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 79a69597525..aeedff98cf4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -572,6 +572,26 @@ jobs: - name: Run syntax tests on source files run: .github/scripts/test.sh source-syntax + typecheck: + needs: install-and-cibuild + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + - uses: ./.github/actions/setup-workspace + + - name: Type-check TypeScript sources + run: npm run typecheck + + generated-types-drift: + needs: install-and-cibuild + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + - uses: ./.github/actions/setup-workspace + + - name: Verify generated types are in sync with attribute sources + run: npm run gen:types:check + # ============================================================ # Standalone jobs (no dependencies on install-and-cibuild) # ============================================================ From eebf71e451488d463e20794c7082421807a01c00 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Wed, 6 May 2026 16:54:57 -0600 Subject: [PATCH 036/241] Update TS docs --- src/types/ARCHITECTURE.md | 194 +++++++++++++++++++ src/types/CONVERTING_ATTRIBUTES.md | 244 ++++++++++++++++++++++++ src/types/GENERATOR.md | 287 +++++++++++++++++++++++++++++ src/types/README.md | 83 +++------ src/types/SETUP.md | 92 +++++++++ 5 files changed, 846 insertions(+), 54 deletions(-) create mode 100644 src/types/ARCHITECTURE.md create mode 100644 src/types/CONVERTING_ATTRIBUTES.md create mode 100644 src/types/GENERATOR.md create mode 100644 src/types/SETUP.md diff --git a/src/types/ARCHITECTURE.md b/src/types/ARCHITECTURE.md new file mode 100644 index 00000000000..1f4d8ec9317 --- /dev/null +++ b/src/types/ARCHITECTURE.md @@ -0,0 +1,194 @@ +# Type System Architecture + +How TypeScript types are organized in plotly.js. + +## Three layers + +``` +┌──────────────────────────────────────────────────────────────┐ +│ Consumer surface (what `npm install plotly.js` exposes) │ +│ lib/index.d.ts — wired via package.json#types │ +│ Curated re-exports of public types + 'export as namespace │ +│ Plotly' for namespace and global usage. │ +└──────────────────────────────────────────────────────────────┘ + │ + ▼ +┌──────────────────────────────────────────────────────────────┐ +│ Internal authoring surface │ +│ src/types/index.d.ts — re-exports everything (internal) │ +└──────────────────────────────────────────────────────────────┘ + │ │ + ▼ ▼ +┌──────────────────────────┐ ┌────────────────────────────────┐ +│ Hand-written types │ │ Generated types │ +│ src/types/core/*.d.ts │ │ src/types/generated/... │ +│ src/types/lib/*.d.ts │ │ │ +│ src/types/components/ │ │ Derived from attributes.ts │ +│ src/types/traces/ │ │ via AttrsToType │ +│ src/types/plots/ │ │ │ +└──────────────────────────┘ └────────────────────────────────┘ +``` + +`lib/index.d.ts` deliberately omits internal types (`FullLayout`, +`GraphDiv`, the `AttributeMap`/`AttrsToType` machinery, `*Internal` shapes, +the `TraceModule` lifecycle interface, etc.) so consumers see a clean +public API. The internal types remain accessible to plotly.js's own code +through the `src/types/` re-exports. + +The split: + +- **Generated types** are the single source of truth for everything in + Plotly's attribute schema. Layout, traces, components — anything you + configure when calling `Plotly.newPlot`. +- **Hand-written types** cover everything the schema doesn't describe: + events, internal runtime state, public API function signatures, + utility types. + +When an `attributes.ts` file is converted, its generated type **replaces** +the corresponding hand-written one. The hand-written file gets a re-export: + +```ts +// src/types/core/layout.d.ts +// `ModeBar` is generated from src/components/modebar/attributes.ts. +export type { ModeBar } from '../generated/components/modebar'; +``` + +Consumers don't notice — externally they still write +`import { type ModeBar } from 'plotly.js'`. Internal callers still +import from the same path inside `src/types/`. + +## Public vs. private (the underscore convention) + +Plotly's runtime stores two kinds of state on graph elements: + +- **Public** — user-supplied, what `Plotly.newPlot(gd, data, layout)` accepts +- **Private** (`_` prefix) — fully-resolved versions Plotly computes after + applying defaults, defined modules, and so on + +This split is reflected in the types: + +| User-facing | Internal | Where defined | +|---|---|---| +| `Layout` | `FullLayout` | `Layout` is generated; `FullLayout extends Layout` is hand-written | +| `PlotData` | `FullData` | Same pattern | +| (n/a) | `GraphDiv` (the `gd` param) | Hand-written — DOM element with `_fullLayout`, `_fullData`, `calcdata`, etc. | + +Internal types use index signatures (`[key: string]: any`) liberally to +allow incremental migration without blocking. As `_` properties get +discovered during JS→TS conversion, add them to `FullLayout`/`FullData`/etc. + +## Directory layout + +``` +src/types/ +├── index.d.ts # main re-export hub +├── core/ # public + internal types for the core API +│ ├── layout.d.ts # Layout, FullLayout, axis/annotation/shape types +│ ├── data.d.ts # PlotData, FullData, marker/line types +│ ├── config.d.ts # Config, Edits, ToImgopts +│ ├── events.d.ts # PlotMouseEvent, PlotlyHTMLElement, etc. +│ ├── api.d.ts # public API function signatures (newPlot, etc.) +│ ├── animation.d.ts # Frame, Transition, AnimationOpts +│ ├── template.d.ts # Template, ValidateTemplateResult +│ └── graph-div.d.ts # GraphDiv (gd parameter), GraphContext +│ +├── components/ # public types for layout components +│ ├── colorbar.d.ts +│ ├── slider.d.ts +│ ├── updatemenu.d.ts +│ ├── rangeselector.d.ts +│ └── common.d.ts +│ +├── traces/ # per-trace public types +│ ├── box.d.ts # BoxPlotData, BoxPlotMarker +│ ├── pie.d.ts # PieData, PieMarker, ... +│ ├── sankey.d.ts +│ ├── violin.d.ts +│ ├── ohlc.d.ts +│ ├── candlestick.d.ts +│ └── common.d.ts # internal TraceModule lifecycle +│ +├── plots/ # internal subplot types (PlotInfo, etc.) +│ └── common.d.ts +│ +├── lib/ # primitives + the schema-extraction machinery +│ ├── common.d.ts # Color, Datum, TypedArray, MarkerSymbol, ... +│ └── attributes.d.ts # AttributeMap, AttrsToType, ValTypeToTS +│ +└── generated/ # output of `npm run gen:types` + ├── index.d.ts # auto-generated re-export aggregator + ├── components/ + │ └── modebar.d.ts # one .d.ts per converted attributes.ts + └── (more as conversion proceeds) +``` + +## How the generation works + +``` +src/components/modebar/attributes.ts + │ + │ const attributes = { ... } as const satisfies AttributeMap; + │ export type ModeBarAttributes = AttrsToType; + │ export default attributes; + │ + ▼ +[ tasks/generate_types.mjs walks attributes.ts files ] + │ + │ Uses TS Compiler API: checker.typeToTypeNode(checker.getDeclaredTypeOfSymbol(...)) + │ Then ts.createPrinter().printNode() flattens the mapped type + │ + ▼ +src/types/generated/components/modebar.d.ts + │ import type { Color } from '../../lib/common'; + │ + │ export interface ModeBar { + │ orientation?: 'v' | 'h'; + │ bgcolor?: Color; + │ ... + │ } + │ + ▼ +src/types/core/layout.d.ts re-exports `ModeBar` from generated/. +src/types/index.d.ts re-exports from layout.d.ts (internal). +lib/index.d.ts re-exports `ModeBar` to consumers (public). +``` + +## What's hand-written and stays that way + +The schema doesn't describe: + +- **Events** — `PlotMouseEvent`, `PlotHoverEvent`, `LegendClickEvent`, + `PlotlyHTMLElement` and its `on()` overloads. These are runtime contracts. +- **Public API function signatures** — `Plotly.newPlot`, `relayout`, + `restyle`, etc. Live in `src/types/core/api.d.ts`. +- **Internal runtime state** — `FullLayout._modules`, `GraphDiv._fullData`, + `_calcInverseTransform`, etc. Live alongside the public types but in + separate `Full*`/`*Internal` interfaces. +- **Utility types the mapped type bottoms out on** — `Color`, `Datum`, + `TypedArray`, `MarkerSymbol`, `Pattern`, `ErrorBar`, etc. Live in + `src/types/lib/common.d.ts`. The generator emits `import("../../lib/common").Color` + references that resolve to these hand-written primitives. + +## Adding internal properties + +When converting a JS file to TS and discovering an internal property like +`fullLayout._someFlag`, add it to the corresponding `Full*` interface: + +```ts +// src/types/core/layout.d.ts +export interface FullLayout extends Layout { + _modules?: any[]; + _someFlag?: boolean; // add new ones here + [key: string]: any; +} +``` + +The `[key: string]: any` index signature is intentional — it absorbs +unknown internal properties so JS code can be migrated piecewise without +type errors. + +## See also + +- [SETUP.md](SETUP.md) — toolchain and npm scripts +- [CONVERTING_ATTRIBUTES.md](CONVERTING_ATTRIBUTES.md) — the conversion recipe +- [GENERATOR.md](GENERATOR.md) — internals of `tasks/generate_types.mjs` diff --git a/src/types/CONVERTING_ATTRIBUTES.md b/src/types/CONVERTING_ATTRIBUTES.md new file mode 100644 index 00000000000..86295e936ed --- /dev/null +++ b/src/types/CONVERTING_ATTRIBUTES.md @@ -0,0 +1,244 @@ +# Converting Attribute Files to TypeScript + +This is the **active workflow** for migrating Plotly's `attributes.js` files +to TypeScript. Each conversion turns one attribute file into the single +source of truth for both the runtime schema and the public TypeScript type. + +## Why + +Today, attribute metadata lives in `src/.../attributes.js` files and the +matching TypeScript types live separately in `src/types/`. They drift. + +After conversion, the `attributes.ts` file IS the schema, and the TypeScript +type is *derived from it* via a mapped type. Both agree by construction. + +## Recipe + +Pick any `attributes.js` file. The recipe is the same for every one. A +small file takes ~10 minutes; a complex trace might take an hour. + +### 1. Rename and stub the imports + +Rename `src//attributes.js` → `src//attributes.ts`. + +At the top of the file, add: + +```ts +'use strict'; + +import type { AttributeMap, AttrsToType } from '../../types/lib/attributes'; +// (adjust the relative path so it points at src/types/lib/attributes) +``` + +### 2. Convert the export + +Replace `module.exports = { ... };` with: + +```ts +/** + * @generates ModeBar + */ +const attributes = { + // ... existing attribute definitions go here +} as const satisfies AttributeMap; + +export type ModeBarAttributes = AttrsToType; + +export default attributes; +``` + +Three things to notice: + +- **`@generates ModeBar`** — declares the canonical public type name. The + `.d.ts` generator uses this to name the output. +- **`as const satisfies AttributeMap`** — `as const` preserves literal types + like `values: ['v', 'h']`; `satisfies AttributeMap` validates structure + without widening. +- **`export default`** — runtime consumers (`require('./attributes').default`) + get the object. Co-existing `export type` exposes the derived TS type. + +### 3. Fix array literals and string literals + +Anywhere an attribute uses a literal-array of options, add `as const`: + +```ts +// Before +values: ['v', 'h'], + +// After +values: ['v', 'h'] as const, +``` + +Without this, TypeScript widens to `string[]` and you lose the union. + +### 4. Update consumers' `require()` calls + +Find every JS file that `require('./attributes')` (relative to the converted +file) and update to `.default`: + +```js +// Before +var attributes = require('./attributes'); + +// After +var attributes = require('./attributes').default; +``` + +ESBuild handles the runtime; this update is just for the JS-level CommonJS +interop pattern the project already uses for converted files. + +### 5. Run the type generator + +```bash +npm run gen:types +``` + +This walks all `attributes.ts` files, resolves their derived types via the +TypeScript Compiler API, writes flattened declaration files into +`src/types/generated/`, and formats the output with biome (so single +quotes, line widths, and other style choices match the rest of the +codebase). + +### 6. Replace the hand-written type in `src/types/` + +Find the corresponding hand-written type (likely in +`src/types/core/layout.d.ts`, `src/types/core/data.d.ts`, or a component +file). Replace its `interface` or `type` definition with a re-export: + +```ts +// Before +export interface ModeBar { + activecolor: Color; + add: ModeBarDefaultButtons | ModeBarDefaultButtons[]; + // ... +} + +// After +// `ModeBar` is generated from src/components/modebar/attributes.ts. +export type { ModeBar } from '../generated/components/modebar'; +``` + +If the hand-written type was richer than the schema (e.g. used a narrowed +union where the schema says `string`), document the gap in a comment or +file an issue. Do not silently lose ergonomics — either improve the schema +(add `values: [...]`) or layer a hand-written refinement on top. + +### 7. Verify + +```bash +npm run typecheck # zero errors +npm run schema # schema regenerates clean +git diff test/plot-schema.json + # the relevant section should be byte-identical + # to before the conversion +``` + +If the schema diff is non-empty, the attribute object's runtime shape +changed somewhere — most often a missed `as const` or a typo. Compare +character-by-character with the original `.js` file. + +### 8. Commit + +```bash +git add src//attributes.ts \ + src//index.js src//defaults.js # (whichever consumers you updated) \ + src/types/core/.d.ts \ + src/types/generated/ +git commit -m "Convert attributes to TypeScript" +``` + +The conversion is a single self-contained commit per file. + +## Worked example: modebar + +See [`src/components/modebar/attributes.ts`](../components/modebar/attributes.ts) +for the canonical example. The full conversion changed: + +- `src/components/modebar/attributes.js` → `src/components/modebar/attributes.ts` + (with `as const satisfies AttributeMap` and `@generates ModeBar`) +- `.default` added to `require('./attributes')` in `index.js` and `defaults.js` +- The hand-written `ModeBar` interface in `src/types/core/layout.d.ts` was + removed and replaced with + `export type { ModeBar } from '../generated/components/modebar';` + +Schema output verified byte-identical (2547 bytes) before and after the +conversion. + +## What stays hand-written + +The schema does not describe these — they remain in `src/types/`: + +- **Events** (`PlotMouseEvent`, `LegendClickEvent`, etc.) +- **Public API function signatures** (`Plotly.newPlot`, `relayout`, ...) +- **Internal types** (`FullLayout._modules`, `GraphDiv._fullData`, ...) +- **Utility types** the mapped type bottoms out on (`Color`, `Datum`, + `TypedArray`, `MarkerSymbol`, ...) + +If you find yourself converting one of these, stop and ask. + +## What if my type doesn't match the hand-written one? + +Almost certainly the hand-written one was wrong, narrowed for ergonomics, or +based on an older schema. Order of operations: + +1. **Compare**. Print both: `npm run gen:types`, then look at the generated + `.d.ts` next to the hand-written one. +2. **If schema is too loose** (e.g. `string` where the hand-written type had + a typed union of valid values), check whether the schema's `values` array + could be expanded. The schema is the authoritative truth — fix it there. +3. **If the hand-written type had additional fields** not in the schema, + they're probably internal/runtime-only and should stay hand-written + (move them to a separate `*Internal.d.ts` file or a parallel interface). +4. **If the schema has fields the hand-written type lacked**, that's a free + coverage win — accept the generated type. + +## Order of conversion (for parallel work) + +Pick from this priority list. Lower-numbered items are smaller / simpler. + +### Tier 1: small components (good first conversions) +- `src/components/modebar/attributes.js` — **DONE** (canonical example) +- `src/components/rangeslider/attributes.js` — small, self-contained +- `src/plots/gl3d/layout/attributes.js` — tiny (one `subplotid`) +- `src/plots/cartesian/attributes.js` — small +- `src/components/fx/attributes.js` — uses helpers (`fontAttrs`, shared sub-objects) + +> Note: `src/components/color/attributes.js` is named like an attribute file +> but actually just exports color constants. It doesn't follow the schema +> pattern and shouldn't be converted with this recipe. + +### Tier 2: small traces +- `src/traces/scatterpolargl/attributes.js` +- `src/traces/histogram2dcontour/attributes.js` +- `src/traces/candlestick/attributes.js` +- `src/traces/funnelarea/attributes.js` +- `src/traces/barpolar/attributes.js` + +### Tier 3: medium components and traces +- Sliders, updatemenus, rangeselector, colorbar attribute files +- `scatter3d`, `scattergl`, `surface`, `mesh3d` + +### Tier 4: large traces +- `scatter` (the big one — many modes and shared subobjects) +- `bar`, `histogram`, `box`, `violin` +- Layout itself + +### Tier 5: shared subobject attributes +- `font_attributes`, `hover_label_attributes`, etc. +- These are imported by many trace files; conversion needs care so the + imported types remain compatible. + +## Working in parallel + +Multiple converters can work on different attribute files in parallel. The +generator is idempotent — every run produces the same output for the same +inputs — so merge conflicts are rare and limited to: + +- `src/types/generated/index.d.ts` (the aggregator) — auto-resolved by + rerunning `npm run gen:types` after merge +- The hand-written type files when removing types — manual conflict if two + converters touch the same file + +Coordinate: claim a file in PR description before starting. Use Tier 1 +files for first-time converters to learn the recipe; reserve Tier 4 for +experienced contributors. diff --git a/src/types/GENERATOR.md b/src/types/GENERATOR.md new file mode 100644 index 00000000000..7e6660168e3 --- /dev/null +++ b/src/types/GENERATOR.md @@ -0,0 +1,287 @@ +# Type Generator Internals + +`tasks/generate_types.mjs` walks `src/**/attributes.ts` files and emits +flat `.d.ts` declarations into `src/types/generated/`. This document +describes how it works for maintainers who want to extend or debug it. + +## Pipeline + +``` +1. Discover find all src/**/attributes.ts files +2. Parse create a TS Program with the project's tsconfig +3. Extract for each file, find `export type *Attributes = ...` +4. Resolve use TypeChecker to compute the concrete type +5. Print use ts.createPrinter to render members +6. Rewrite turn absolute import("...") paths into relative +7. Hoist inline import("...").Name → top-of-file `import type` +8. Decide object-literal type → `interface`, otherwise `type` alias +9. Emit write per-file .d.ts files + an aggregator index +10. Format `biome format --write` (chained from npm script, not the script itself) +``` + +## Key TypeScript Compiler API calls + +The trick to flattening a mapped type like `AttrsToType` +is to convert the resolved `Type` back to a `TypeNode` (an AST node), then +print that node: + +```js +const sym = checker.getSymbolAtLocation(typeAliasDecl.name); +const type = checker.getDeclaredTypeOfSymbol(sym); + +const typeNode = checker.typeToTypeNode(type, typeAliasDecl, nodeBuilderFlags); +const text = printer.printNode(ts.EmitHint.Unspecified, typeNode, dummySourceFile); +``` + +Without `typeToTypeNode`, you'd get `checker.typeToString` output which is +single-line and harder to format. + +## Node builder flags + +```js +ts.NodeBuilderFlags.NoTruncation +| ts.NodeBuilderFlags.MultilineObjectLiterals +| ts.NodeBuilderFlags.WriteClassExpressionAsTypeLiteral +| ts.NodeBuilderFlags.UseFullyQualifiedType +| ts.NodeBuilderFlags.InTypeAlias +``` + +- **NoTruncation** — print full union/intersection without `...` ellipsis +- **MultilineObjectLiterals** — one property per line +- **UseFullyQualifiedType** — emit `import("/abs/path").TypeName` for + external references, which we then rewrite to relative paths +- **InTypeAlias** — render as if writing a type alias body + +## The `@generates` marker + +Each `attributes.ts` declares its canonical public type name via JSDoc: + +```ts +/** + * @generates ModeBar + */ +const attributes = { ... } as const satisfies AttributeMap; +export type ModeBarAttributes = AttrsToType; +``` + +The generator regex-greps each source file for `@generates X` and uses `X` +as the canonical name. This lets the generated type take a different name +from the local `*Attributes` alias, which matters because the public API +type names (`ModeBar`, `Slider`, `Layout`) follow a different convention +than the per-attribute-file naming. + +## Import path rewriting + +`UseFullyQualifiedType` produces output like +`import("/abs/path/src/types/lib/common").Color`. The generator rewrites +these to relative paths from the output file's directory: + +```js +text = text.replace(/import\("([^"]+)"\)/g, (_, absPath) => { + let rel = path.relative(outputDir, absPath); + if (!rel.startsWith('.')) rel = './' + rel; + rel = rel.replace(/\.d\.ts$|\.ts$/, ''); + return `import("${rel}")`; +}); +``` + +Result: `import("../../lib/common").Color` — portable across machines. + +## Import hoisting + +Inline `import("path").Name` references are valid TypeScript but read +poorly. After path rewriting, the generator collects every reference and +emits a single `import type` block at the top of the file: + +```ts +// Before hoisting (TS Compiler default): +export interface ModeBar { + bgcolor?: import("../../lib/common").Color; + color?: import("../../lib/common").Color; +} + +// After hoisting: +import type { Color } from '../../lib/common'; + +export interface ModeBar { + bgcolor?: Color; + color?: Color; +} +``` + +The hoister deduplicates names, groups by path, and sorts alphabetically +within each import statement. A self-reference (where the imported name +matches the type being declared) is left as inline `import("...")` to +avoid colliding with the local declaration. + +## interface vs type alias + +When the resolved type is an object shape (`TypeLiteralNode`), the +generator emits an `interface`: + +```ts +export interface ModeBar { ... } +``` + +For unions, intersections, tuples, or primitives — anything that isn't +an object literal — it falls back to a `type` alias: + +```ts +export type ScatterMode = 'lines' | 'markers' | 'lines+markers'; +``` + +Interfaces give better error messages, support declaration merging, and +match the project's hand-written types. The discrimination happens via +`ts.isTypeLiteralNode(typeNode)` before printing. + +## Why generated types are mutable + +The source attribute objects use `as const` for literal-type preservation, +which makes `typeof attributes` deeply `Readonly<...>`. To prevent that +`readonly` from leaking into the user-facing type, `AttrsToType` uses +the `-readonly` modifier in its mapped type: + +```ts +export type AttrsToType = { + -readonly [K in keyof T as K extends ReservedKey ? never : K]?: ... +}; +``` + +So consumers get plain mutable properties even though the source is +locked-in literal types. This happens at the type level — the generator +itself doesn't manipulate readonly modifiers. + +## Output structure + +``` +src/types/generated/ +├── index.d.ts # aggregator (re-exports each canonical name) +└── components/ + └── modebar.d.ts # one file per converted attribute file +``` + +The output directory mirrors the source: `src/components/modebar/attributes.ts` +becomes `src/types/generated/components/modebar.d.ts`. + +## Aggregator + +The aggregator (`src/types/generated/index.d.ts`) is a one-line-per-type +re-export: + +```ts +export type { ModeBar } from './components/modebar'; +export type { Slider } from './components/sliders'; +// ... one line per canonical name, sorted alphabetically +``` + +It exists so consumers can `import type { ModeBar, Slider } from '../types/generated'` +without knowing the file structure. In practice, the hand-written +`src/types/core/*.d.ts` files re-export from the per-file generated +declarations directly, so the aggregator is mostly for ad-hoc consumers. + +## valType → TypeScript + +The leaf-type mapping lives in `src/types/lib/attributes.d.ts` as the +`ValTypeToTS` mapped type. Summary: + +| valType | TS produced | +|---|---| +| `data_array` | `Datum[] \| TypedArray` | +| `number`, `integer` | `number` (or `number \| number[]` if `arrayOk`) | +| `string` | `string`, narrowed to `values[number]` if `values` provided | +| `boolean` | `boolean` | +| `color` | `Color` | +| `colorscale` | `ColorScale` | +| `colorlist` | `Color[]` | +| `angle` | `number \| 'auto'` | +| `subplotid` | `string` | +| `enumerated` | `values[number]` (literal union) | +| `flaglist` | `string` (combinatorial expansion not yet implemented) | +| `info_array` | `unknown[]` | +| `any` | `any` | + +`arrayOk: true` wraps the result in `T | T[]`. + +Reserved keys stripped from the output: `editType`, `role`, +`_isLinkedToArray`, `_isSubplotObj`, `_arrayAttrRegexps`, `_deprecated`. + +## Extending the generator + +### Adding a new valType + +1. Add an interface to `src/types/lib/attributes.d.ts` (e.g. `interface FooAttr extends BaseAttrInfo { valType: 'foo'; ... }`) +2. Add it to the `AttrInfo` union +3. Add a branch to `ValTypeToTS` mapping it to the desired TS type +4. Run `npm run gen:types` to verify output +5. Run `npm run typecheck` to ensure no regressions + +### Improving flaglist support + +Currently flag lists like `hoverinfo` map to `string`. To produce a +combinatorial union of valid `+`-joined combinations: + +```ts +type Combinations = ... // template literal magic +``` + +This is doable but produces large unions (15+ members for `hoverinfo`). +Consider whether the type-check cost is worth the autocomplete win. + +### Supporting nested attribute objects with metadata + +Some attribute files have shapes like: + +```ts +{ + role: 'object', + editType: 'calc', + foo: { valType: 'number', ... }, + bar: { valType: 'string', ... }, +} +``` + +The mapped type's reserved-key stripping handles `role`/`editType` at the +top level via `ReservedKey`. If a new metadata key gets introduced, +add it to the `ReservedKey` union in `src/types/lib/attributes.d.ts`. + +## Debugging + +If the generator emits `unknown` for a type that should be concrete: + +```bash +node tasks/generate_types.mjs # see the generated output +npm run typecheck # see what tsc thinks the type is +``` + +Inspect with the TS Compiler API directly: + +```js +node -e ' +const ts = require("typescript"); +const program = ts.createProgram(["path/to/attributes.ts"], { /* tsconfig opts */ }); +const checker = program.getTypeChecker(); +// ... probe symbols and types +' +``` + +The `formatDeclaration` function in `tasks/generate_types.mjs` can be +invoked on any `TypeAliasDeclaration` to see what would be emitted. + +## CI integration + +`npm run gen:types:check` runs the generator and then +`git diff --exit-code src/types/generated/`. If the working tree differs, +exit code 1 — meaning a developer changed an attributes.ts file but +didn't commit the regenerated declarations. + +This is wired into `.github/workflows/ci.yml` as the `generated-types-drift` +job, alongside a sibling `typecheck` job. Both gate on the root +`install-and-cibuild` job and run in parallel on every PR. + +A drift failure typically means one of: + +- An `attributes.ts` file was edited without re-running `npm run gen:types` +- Biome's formatter config changed and existing generated files would re-format +- The generator itself changed in a way that affects existing output + +All three are legitimate signals worth investigating. diff --git a/src/types/README.md b/src/types/README.md index a4071c340e2..699aca3cd0c 100644 --- a/src/types/README.md +++ b/src/types/README.md @@ -1,63 +1,38 @@ -# Types Directory +# TypeScript in plotly.js -Centralized TypeScript type definitions for plotly.js. +This directory documents the TypeScript conversion in progress. -## Quick Import +| Doc | Audience | +|---|---| +| [SETUP.md](SETUP.md) | First-time contributor — toolchain overview, npm scripts | +| [ARCHITECTURE.md](ARCHITECTURE.md) | Anyone working with types — directory layout, public/private split | +| [CONVERTING_ATTRIBUTES.md](CONVERTING_ATTRIBUTES.md) | **Contributor doing conversion work** — step-by-step recipe | +| [GENERATOR.md](GENERATOR.md) | Maintainer extending or debugging the type generator | -```typescript -// Import from main index (recommended) -import type { GraphDiv, Layout, PlotData } from '../types'; +## Status -// Or use path alias -import type { GraphDiv } from '@types'; -``` +- TypeScript build infrastructure: ✅ done +- Public type surface in `src/types/`: ✅ done +- `AttributeMap` / `AttrsToType` machinery: ✅ done +- `.d.ts` generator (TS Compiler API + biome format): ✅ done +- Consumer entry point (`lib/index.d.ts`, wired via `package.json#types`): ✅ done +- CI gates (`typecheck` + `generated-types-drift`): ✅ done +- First attribute file converted (modebar): ✅ done +- Conversion of remaining attribute files: 🚧 in progress -## Directory Structure +The published consumer surface lives at [`lib/index.d.ts`](../../lib/index.d.ts). +This `src/types/` directory is the authoring location — internal types live +here, public types are re-exported through `lib/index.d.ts` to consumers. -``` -types/ -├── index.d.ts # Main export - import from here -├── core/ # Core Plotly types (GraphDiv, Layout, Data, Config, Events) -├── traces/ # Trace-specific types -├── components/ # Component-specific types -├── plots/ # Plot-specific types -└── lib/ # Utility types -``` +## How to help -## Most Common Types +If you want to convert an attribute file: -### GraphDiv -```typescript -import type { GraphDiv } from '../types'; +1. Read [CONVERTING_ATTRIBUTES.md](CONVERTING_ATTRIBUTES.md) +2. Pick a file from the priority list at the bottom of that doc +3. Claim it in a PR description +4. Follow the recipe +5. Submit a PR -function draw(gd: GraphDiv): void { - const layout = gd._fullLayout; - const data = gd._fullData; -} -``` - -### Layout -```typescript -import type { Layout } from '../types'; - -function updateLayout(layout: Partial): void { - layout.title = 'New Title'; -} -``` - -### PlotData (Traces) -```typescript -import type { PlotData, ScatterTrace } from '../types'; - -function processTrace(trace: PlotData): void { - if (trace.type === 'scatter') { - const scatter = trace as ScatterTrace; - } -} -``` - -## Adding New Types - -1. Create file in appropriate subdirectory -2. Export from `index.d.ts` -3. Use in your TypeScript files +Each conversion is a single self-contained commit and takes 10-60 minutes +depending on file size. diff --git a/src/types/SETUP.md b/src/types/SETUP.md new file mode 100644 index 00000000000..e2875dc4918 --- /dev/null +++ b/src/types/SETUP.md @@ -0,0 +1,92 @@ +# TypeScript Setup + +Quick reference for the TypeScript toolchain in plotly.js. + +## What's installed + +- **TypeScript** (`typescript ^5.9.3`) — type checker only, never emits JS +- **ts-node** (`^10.9.2`) — runs TS scripts directly (build helpers, generator) +- **@types/node**, **@types/d3** — third-party type definitions +- esbuild handles `.ts` natively for bundling — no plugins needed + +## Two tools, two jobs + +| Tool | Job | +|---|---| +| **esbuild** | Bundle for production. Strips types, transpiles to ES2016, emits `dist/plotly.js`. Fast (~450ms full build). Does **not** check types. | +| **tsc** | Type-check only. Reads `.ts` and `.js` (with `allowJs: true`), reports errors, no output. Slower (~2-5s) but catches bugs. | + +`tsconfig.json` sets `noEmit: true` so tsc never writes files. esbuild is the build system; tsc is the verifier. + +## Configuration + +- [tsconfig.json](../../tsconfig.json) — type checker config +- [esbuild-config.js](../../esbuild-config.js) — bundler config + +Both target ES2016. Strict mode is currently **off** (`strict: false`) for incremental adoption — types tighten over time as files convert. + +## npm scripts + +```bash +npm run typecheck # tsc --noEmit, errors reported, no output +npm run typecheck:watch # incremental rechecking on change + +npm run gen:types # walk attributes.ts files → src/types/generated/, then biome format +npm run gen:types:check # generate then `git diff --exit-code` (CI drift check) + +npm run schema # rebuild test/plot-schema.json from source attributes +npm run bundle # esbuild → dist/plotly.js +npm run build # full production build +``` + +## Workflows + +**Editing during development:** + +```bash +# Terminal 1 +npm run typecheck:watch + +# Terminal 2 — bundle/dev server +npm start +``` + +**Before commit:** + +```bash +npm run typecheck +npm run gen:types # if you converted an attribute file +npm run schema # if attribute files changed +``` + +**CI** runs both checks as separate jobs (see `.github/workflows/ci.yml`): + +```bash +npm run typecheck # validates the type system is internally consistent +npm run gen:types:check # fails if generated types are stale or unformatted +``` + +## How esbuild handles `.ts` + +esbuild has built-in TypeScript support — it strips types and transpiles, no extra config. The catch: when a JS file `require()`s a TS file with a default export, esbuild's CommonJS interop wraps it in `{ default: ... }`. Existing project pattern is to update consumers: + +```js +// Before (JS importing JS) +var attributes = require('./attributes'); + +// After (JS importing TS with `export default`) +var attributes = require('./attributes').default; +``` + +This shows up when converting `attributes.js` → `attributes.ts`. See [CONVERTING_ATTRIBUTES.md](CONVERTING_ATTRIBUTES.md) step 4. + +## Performance + +For a codebase of ~750 source files: + +| Operation | Time | +|---|---| +| `tsc --noEmit` cold | ~2-5s | +| `tsc --noEmit --watch` incremental | ~100ms | +| esbuild full bundle | ~450ms | +| `npm run gen:types` | <1s for current converted set | From c11bca12cd908283e526237cb906a5dd2210e282 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Wed, 6 May 2026 16:55:35 -0600 Subject: [PATCH 037/241] Add entry point to types --- lib/index.d.ts | 284 +++++++++++++++++++++++++++++++++++++++++++++++++ package.json | 1 + 2 files changed, 285 insertions(+) create mode 100644 lib/index.d.ts diff --git a/lib/index.d.ts b/lib/index.d.ts new file mode 100644 index 00000000000..86d7cbd1d6f --- /dev/null +++ b/lib/index.d.ts @@ -0,0 +1,284 @@ +/** + * TypeScript type definitions for plotly.js. + * + * Public API surface for consumers installing plotly.js as a dependency. + * + * Usage: + * + * import Plotly from 'plotly.js'; + * // or + * import * as Plotly from 'plotly.js'; + * // or + * import { newPlot, Layout, Data } from 'plotly.js'; + * + * const data: Data[] = [{ type: 'scatter', x: [1, 2, 3], y: [4, 5, 6] }]; + * const layout: Partial = { title: { text: 'Demo' } }; + * await Plotly.newPlot(div, data, layout); + * + * Internal types (FullLayout, GraphDiv internals, the AttrsToType machinery, + * etc.) live alongside the source under src/types/ but are intentionally not + * re-exported from this entry point. + */ + +export as namespace Plotly; + +// --------------------------------------------------------------------------- +// Primitives & utility types +// --------------------------------------------------------------------------- + +export type { + AxisType, + Calendar, + Color, + ColorScale, + Dash, + Datum, + DTickValue, + ErrorBar, + ErrorOptions, + MarkerSymbol, + Pattern, + PatternShape, + TypedArray, + XAnchor, + XRef, + YAnchor, + YRef, +} from '../src/types/lib/common'; + +// --------------------------------------------------------------------------- +// Layout, axes, components, and supporting shapes +// --------------------------------------------------------------------------- + +export type { + Annotations, + AutoRangeOptions, + Axis, + AxisName, + ButtonClickEvent, + Camera, + DataTitle, + Delta, + Domain, + Font, + Gauge, + GaugeBar, + GaugeLine, + HoverLabel, + Icon, + Image, + Label, + Layout, + LayoutAxis, + Legend, + LegendTitle, + Mapbox, + MapboxBounds, + MapboxCenter, + MapboxLayers, + MapboxSymbol, + Margin, + MinorAxisLayout, + ModeBar, + ModeBarButton, + ModeBarButtonAny, + ModeBarDefaultButtons, + Padding, + PlotNumber, + Point, + PolarLayout, + RangeBreak, + RangeSlider, + Scene, + SceneAxis, + Shape, + ShapeLabel, + ShapeLine, + Template, + Threshold, + XAxisName, + YAxisName, +} from '../src/types/core/layout'; + +// --------------------------------------------------------------------------- +// Trace data +// --------------------------------------------------------------------------- + +export type { + Data, + PlotData, + PlotMarker, + PlotType, + ScatterData, + ScatterLine, + ScatterMarker, + ScatterMarkerLine, +} from '../src/types/core/data'; + +// --------------------------------------------------------------------------- +// Specialized trace types +// --------------------------------------------------------------------------- + +export type { BoxPlotData, BoxPlotMarker } from '../src/types/traces/box'; +export type { CandlestickData } from '../src/types/traces/candlestick'; +export type { OhlcData } from '../src/types/traces/ohlc'; +export type { + PieData, + PieDataTitle, + PieDomain, + PieFont, + PieHoverInfo, + PieHoverLabel, + PieInsideTextOrientation, + PieLine, + PieMarker, + PieTextPosition, +} from '../src/types/traces/pie'; +export type { + SankeyData, + SankeyColorscale, + SankeyDataTitle, + SankeyDomain, + SankeyFont, + SankeyHoverLabel, + SankeyLink, + SankeyNode, + SankeyOrientation, +} from '../src/types/traces/sankey'; +export type { ViolinData } from '../src/types/traces/violin'; + +// --------------------------------------------------------------------------- +// Components +// --------------------------------------------------------------------------- + +export type { + ColorBar, + ColorBarTitle, + ExponentFormat, + LengthMode, + ShowTickLabel, + TickFormatStop, + TickLabelOverflow, + TickLabelPosition, +} from '../src/types/components/colorbar'; + +export type { CurrentValue, Slider, SliderStep } from '../src/types/components/slider'; + +export type { + UpdateMenu, + UpdateMenuButton, + UpdateMenuDirection, + UpdateMenuType, +} from '../src/types/components/updatemenu'; + +export type { + RangeSelector, + RangeSelectorButton, + RangeSelectorStep, +} from '../src/types/components/rangeselector'; + +// --------------------------------------------------------------------------- +// Animation & template +// --------------------------------------------------------------------------- + +export type { + AnimationFrameOpts, + AnimationOpts, + Frame, + Transition, + TransitionEasing, +} from '../src/types/core/animation'; + +export type { + TemplateFigure, + ValidateTemplateResult, +} from '../src/types/core/template'; + +// --------------------------------------------------------------------------- +// Configuration +// --------------------------------------------------------------------------- + +export type { + Config, + ConfigEdits, + DownloadImgopts, + Edits, + ToImageButtonOptions, + ToImgopts, +} from '../src/types/core/config'; + +// --------------------------------------------------------------------------- +// Events & runtime DOM types +// --------------------------------------------------------------------------- + +export type { + BeforePlotEvent, + ClickAnnotationEvent, + FrameAnimationEvent, + LegendClickEvent, + PlotCoordinate, + PlotDatum, + PlotHoverEvent, + PlotlyEventName, + PlotlyHTMLElement, + PlotMouseEvent, + PlotRelayoutEvent, + PlotRestyleEvent, + PlotRestyleEventUpdate, + PlotScatterDataPoint, + PlotScene, + PlotSelectedData, + PlotSelectionEvent, + SelectionRange, + SliderChangeEvent, + SliderEndEvent, + SliderStartEvent, + SunburstClickEvent, + SunburstPlotDatum, +} from '../src/types/core/events'; + +// --------------------------------------------------------------------------- +// Public API functions +// --------------------------------------------------------------------------- + +export { + addFrames, + addTraces, + animate, + deleteFrames, + deleteTraces, + downloadImage, + extendTraces, + makeTemplate, + moveTraces, + newPlot, + prependTraces, + purge, + react, + redraw, + register, + relayout, + restyle, + setPlotConfig, + toImage, + update, + validate, +} from '../src/types/core/api'; + +export type { + DefaultIcons, + PlotlyDataLayoutConfig, + PlotlyModule, + Root, + RootOrData, + StaticPlots, + ValidateResult, +} from '../src/types/core/api'; + +// --------------------------------------------------------------------------- +// Default export — matches the runtime CommonJS shape +// --------------------------------------------------------------------------- + +import * as PlotlyAPI from '../src/types/core/api'; +declare const Plotly: typeof PlotlyAPI; +export default Plotly; diff --git a/package.json b/package.json index d961f928bc6..a11ed3f616e 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,7 @@ "description": "The open source javascript graphing library that powers plotly", "license": "MIT", "main": "./lib/index.js", + "types": "./lib/index.d.ts", "webpack": "./dist/plotly.js", "repository": { "type": "git", From 04261b2266d5fb644ae87151f6c6b0289828b930 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Wed, 6 May 2026 17:00:37 -0600 Subject: [PATCH 038/241] Update file name case check --- tasks/test_syntax.js | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/tasks/test_syntax.js b/tasks/test_syntax.js index dcb4ff5e538..7abe7db9f58 100644 --- a/tasks/test_syntax.js +++ b/tasks/test_syntax.js @@ -193,12 +193,7 @@ function assertFileNames() { var base = path.basename(file); if( - base === 'README.md' || - base === 'CONTRIBUTING.md' || - base === 'CHANGELOG.md' || - base === 'SECURITY.md' || - base === 'BUILDING.md' || - base === 'CUSTOM_BUNDLE.md' || + base.endsWith('.md') || base === 'CITATION.cff' || file.indexOf('mathjax') !== -1 ) return; From e69463a0e28e0b3241a2ee94318efbfed819971b Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Thu, 7 May 2026 09:10:29 -0600 Subject: [PATCH 039/241] Linting/formatting --- src/components/modebar/attributes.ts | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/src/components/modebar/attributes.ts b/src/components/modebar/attributes.ts index 4b35d183613..9a786f7fc4c 100644 --- a/src/components/modebar/attributes.ts +++ b/src/components/modebar/attributes.ts @@ -1,8 +1,7 @@ 'use strict'; import type { AttributeMap, AttrsToType } from '../../types/lib/attributes'; - -const constants = require('./constants'); +import constants from './constants'; /** * @generates ModeBar @@ -15,22 +14,22 @@ const attributes = { values: ['v', 'h'] as const, dflt: 'h', editType: 'modebar', - description: 'Sets the orientation of the modebar.', + description: 'Sets the orientation of the modebar.' }, bgcolor: { valType: 'color', editType: 'modebar', - description: 'Sets the background color of the modebar.', + description: 'Sets the background color of the modebar.' }, color: { valType: 'color', editType: 'modebar', - description: 'Sets the color of the icons in the modebar.', + description: 'Sets the color of the icons in the modebar.' }, activecolor: { valType: 'color', editType: 'modebar', - description: 'Sets the color of the active or hovered on icons in the modebar.', + description: 'Sets the color of the active or hovered on icons in the modebar.' }, uirevision: { valType: 'any', @@ -38,8 +37,8 @@ const attributes = { description: [ 'Controls persistence of user-driven changes related to the modebar,', 'including `hovermode`, `dragmode`, and `showspikes` at both the', - 'root level and inside subplots. Defaults to `layout.uirevision`.', - ].join(' '), + 'root level and inside subplots. Defaults to `layout.uirevision`.' + ].join(' ') }, add: { valType: 'string', @@ -51,8 +50,8 @@ const attributes = { 'Please note that these buttons will only be shown if they are', 'compatible with all trace types used in a graph.', 'Similar to `config.modeBarButtonsToAdd` option.', - 'This may include *' + constants.backButtons.join('*, *') + '*.', - ].join(' '), + 'This may include *' + constants.backButtons.join('*, *') + '*.' + ].join(' ') }, remove: { valType: 'string', @@ -62,9 +61,9 @@ const attributes = { description: [ 'Determines which predefined modebar buttons to remove.', 'Similar to `config.modeBarButtonsToRemove` option.', - 'This may include *' + constants.foreButtons.join('*, *') + '*.', - ].join(' '), - }, + 'This may include *' + constants.foreButtons.join('*, *') + '*.' + ].join(' ') + } } as const satisfies AttributeMap; export type ModeBarAttributes = AttrsToType; From 134e84ff9b7d6dded28c6df8c2a18af31256aeaf Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Fri, 8 May 2026 14:47:05 -0600 Subject: [PATCH 040/241] Remove obsolete types --- src/types/components/common.d.ts | 4 ---- src/types/core/config.d.ts | 3 --- src/types/core/data.d.ts | 35 -------------------------------- 3 files changed, 42 deletions(-) diff --git a/src/types/components/common.d.ts b/src/types/components/common.d.ts index 6d5d7aed844..911d1e0dc42 100644 --- a/src/types/components/common.d.ts +++ b/src/types/components/common.d.ts @@ -35,7 +35,3 @@ export interface TextBBox { width: number; } -/** - * Color with alpha - */ -export type ColorString = string; diff --git a/src/types/core/config.d.ts b/src/types/core/config.d.ts index 62b0b70cbf4..5b81ea70acc 100644 --- a/src/types/core/config.d.ts +++ b/src/types/core/config.d.ts @@ -63,9 +63,6 @@ export interface Edits { titleText: boolean; } -// Backwards-compatible alias -export type ConfigEdits = Edits; - // --------------------------------------------------------------------------- // Image export options // --------------------------------------------------------------------------- diff --git a/src/types/core/data.d.ts b/src/types/core/data.d.ts index 982961a8542..6c683a3b998 100644 --- a/src/types/core/data.d.ts +++ b/src/types/core/data.d.ts @@ -378,41 +378,6 @@ export type Data = // Internal types (not in public API) // --------------------------------------------------------------------------- -/** - * Common properties shared by all trace types — convenience interface for - * gradual migration of internal code that doesn't need the full PlotData shape. - */ -export interface TraceBase { - customdata?: any[]; - hoverinfo?: string; - hoverlabel?: Partial; - hovertemplate?: string | string[]; - ids?: string[]; - legendgroup?: string; - legendgrouptitle?: any; - meta?: any; - name?: string; - opacity?: number; - selectedpoints?: any; - showlegend?: boolean; - type?: PlotType; - uid?: string; - visible?: boolean | 'legendonly'; - xaxis?: string; - yaxis?: string; - [key: string]: any; -} - -/** - * Generic trace for gradual migration. Use specific trace types when available. - */ -export interface GenericTrace extends TraceBase { - x?: any[]; - y?: any[]; - z?: any[]; - [key: string]: any; -} - /** * Fully processed plot data with defaults applied (internal use) */ From 6b2a0969565a80cc9cb4e6e5f12df7e7291a97fc Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Fri, 8 May 2026 14:49:25 -0600 Subject: [PATCH 041/241] Add additional internal props to FullData --- src/types/core/data.d.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/types/core/data.d.ts b/src/types/core/data.d.ts index 6c683a3b998..e8e8a2381f5 100644 --- a/src/types/core/data.d.ts +++ b/src/types/core/data.d.ts @@ -382,12 +382,17 @@ export type Data = * Fully processed plot data with defaults applied (internal use) */ export interface FullData extends Partial { + _arrayAttrs?: string[]; _expandedIndex?: number; + _extremes?: Record; _fullInput?: any; + _hasCalcTransform?: boolean; _indexToPoints?: { [key: number]: number[] }; _input?: any; _length?: number; + _meta?: { meta?: any; layout?: { meta?: any } }; _module?: any; + _template?: any; index?: number; [key: string]: any; } From 402658c32142a844283d66af26fd06965621e403 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Fri, 8 May 2026 14:52:41 -0600 Subject: [PATCH 042/241] Refactor type imports --- src/types/core/data.d.ts | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/types/core/data.d.ts b/src/types/core/data.d.ts index e8e8a2381f5..145a9929927 100644 --- a/src/types/core/data.d.ts +++ b/src/types/core/data.d.ts @@ -6,6 +6,12 @@ */ import type { Color, ColorScale, Dash, Datum, ErrorBar, MarkerSymbol, Pattern, TypedArray } from '../lib/common'; +import type { BoxPlotData } from '../traces/box'; +import type { CandlestickData } from '../traces/candlestick'; +import type { OhlcData } from '../traces/ohlc'; +import type { PieData } from '../traces/pie'; +import type { SankeyData } from '../traces/sankey'; +import type { ViolinData } from '../traces/violin'; import type { ColorBar, DataTitle, Delta, Font, Gauge, HoverLabel, Padding, PlotNumber } from './layout'; // --------------------------------------------------------------------------- @@ -362,17 +368,16 @@ export type ScatterData = PlotData; // --------------------------------------------------------------------------- // Data union — re-exports specialized trace types from traces/ -// Forward declarations so the union compiles without circular imports. // --------------------------------------------------------------------------- export type Data = | Partial - | Partial - | Partial - | Partial - | Partial - | Partial - | Partial; + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial; // --------------------------------------------------------------------------- // Internal types (not in public API) From 7ffdd9abf45356f6eb3b273782adedebec6dad45 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Fri, 8 May 2026 14:52:59 -0600 Subject: [PATCH 043/241] Use better types in CalcData --- src/types/traces/common.d.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/types/traces/common.d.ts b/src/types/traces/common.d.ts index 95c1bdc855b..6662d045236 100644 --- a/src/types/traces/common.d.ts +++ b/src/types/traces/common.d.ts @@ -4,15 +4,18 @@ * Types shared across different trace modules */ +import type { FullData } from '../core/data'; + /** * Calculated trace data (internal) */ export interface CalcData { + i?: number; + t?: any; + trace?: FullData; x?: any; y?: any; z?: any; - trace?: any; - t?: any; [key: string]: any; } From 07a066c0e3e00d10a7df5de95740a6b5e9331154 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Fri, 8 May 2026 15:00:56 -0600 Subject: [PATCH 044/241] Change types to Map*, add aliases for Mapbox*, fix typo --- lib/index.d.ts | 5 +++++ src/types/core/layout.d.ts | 37 ++++++++++++++++++++++++------------- 2 files changed, 29 insertions(+), 13 deletions(-) diff --git a/lib/index.d.ts b/lib/index.d.ts index 86d7cbd1d6f..a8436fb7a19 100644 --- a/lib/index.d.ts +++ b/lib/index.d.ts @@ -72,10 +72,15 @@ export type { LayoutAxis, Legend, LegendTitle, + MapLayout, Mapbox, + MapBounds, MapboxBounds, + MapCenter, MapboxCenter, + MapLayers, MapboxLayers, + MapSymbol, MapboxSymbol, Margin, MinorAxisLayout, diff --git a/src/types/core/layout.d.ts b/src/types/core/layout.d.ts index fbbf14a7f70..6c32833e52f 100644 --- a/src/types/core/layout.d.ts +++ b/src/types/core/layout.d.ts @@ -679,15 +679,15 @@ export interface Delta { } // --------------------------------------------------------------------------- -// Mapbox types +// Map types // --------------------------------------------------------------------------- -export interface MapboxCenter { +export interface MapCenter { lon: number; lat: number; } -export interface MapboxSymbol { +export interface MapSymbol { icon: string; iconsize: number; text: string; @@ -703,9 +703,9 @@ export interface MapboxSymbol { | 'bottom right'; } -export interface MapboxLayers { +export interface MapLayers { visible: boolean; - sourcetype: 'geojson' | 'vecotr' | 'raster' | 'image'; + sourcetype: 'geojson' | 'vector' | 'raster' | 'image'; source: any; sourcelayer: string; sourceattribution: string; @@ -723,32 +723,43 @@ export interface MapboxLayers { fill: { outlinecolor: Color; }; - symbol: Partial; + symbol: Partial; name: string; templateitemname: string; } -export interface MapboxBounds { +export interface MapBounds { east: number; north: number; south: number; west: number; } -export interface Mapbox { +export interface MapLayout { domain: Partial; accesstoken: string; style: number | string; - center: Partial; + center: Partial; zoom: number; bearing: number; - bounds: MapboxBounds; + bounds: MapBounds; pitch: number; - layers: Array>; + layers: Array>; uirevision: number | string; uid: string; } +/** @deprecated Use {@link MapCenter} instead */ +export type MapboxCenter = MapCenter; +/** @deprecated Use {@link MapSymbol} instead */ +export type MapboxSymbol = MapSymbol; +/** @deprecated Use {@link MapLayers} instead */ +export type MapboxLayers = MapLayers; +/** @deprecated Use {@link MapBounds} instead */ +export type MapboxBounds = MapBounds; +/** @deprecated Use {@link MapLayout} instead */ +export type Mapbox = MapLayout; + // --------------------------------------------------------------------------- // PolarLayout // --------------------------------------------------------------------------- @@ -850,8 +861,8 @@ export interface Layout { ternary: {}; geo: {}; - map: Partial; - mapbox: Partial; + map: Partial; + mapbox: Partial; subplot: string; radialaxis: Partial; angularaxis: {}; From ed5b958c6c56f8e99d2bb844f01dd93cd30c31bc Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Fri, 8 May 2026 15:56:40 -0600 Subject: [PATCH 045/241] Update description --- src/types/ARCHITECTURE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/types/ARCHITECTURE.md b/src/types/ARCHITECTURE.md index 1f4d8ec9317..81922868fe9 100644 --- a/src/types/ARCHITECTURE.md +++ b/src/types/ARCHITECTURE.md @@ -69,7 +69,7 @@ This split is reflected in the types: | User-facing | Internal | Where defined | |---|---|---| -| `Layout` | `FullLayout` | `Layout` is generated; `FullLayout extends Layout` is hand-written | +| `Layout` | `FullLayout` | Both hand-written today; `Layout` will be generated once its attributes files are converted | | `PlotData` | `FullData` | Same pattern | | (n/a) | `GraphDiv` (the `gd` param) | Hand-written — DOM element with `_fullLayout`, `_fullData`, `calcdata`, etc. | From 3335828451c53a0cb93fa807b0dfaa61f16a49d4 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Fri, 8 May 2026 16:10:10 -0600 Subject: [PATCH 046/241] Add type# property key patterns, add additional properties to `FullLayout` --- src/types/core/layout.d.ts | 159 ++++++++++++++++++++++++++++--------- 1 file changed, 121 insertions(+), 38 deletions(-) diff --git a/src/types/core/layout.d.ts b/src/types/core/layout.d.ts index 6c32833e52f..95ab5fef822 100644 --- a/src/types/core/layout.d.ts +++ b/src/types/core/layout.d.ts @@ -815,23 +815,9 @@ export interface Layout { separators: string; hidesources: boolean; xaxis: Partial; - xaxis2: Partial; - xaxis3: Partial; - xaxis4: Partial; - xaxis5: Partial; - xaxis6: Partial; - xaxis7: Partial; - xaxis8: Partial; - xaxis9: Partial; + [key: `xaxis${number}`]: Partial; yaxis: Partial; - yaxis2: Partial; - yaxis3: Partial; - yaxis4: Partial; - yaxis5: Partial; - yaxis6: Partial; - yaxis7: Partial; - yaxis8: Partial; - yaxis9: Partial; + [key: `yaxis${number}`]: Partial; margin: Partial; height: number; width: number; @@ -888,14 +874,7 @@ export interface Layout { legend: Partial; font: Partial; scene: Partial; - scene2: Partial; - scene3: Partial; - scene4: Partial; - scene5: Partial; - scene6: Partial; - scene7: Partial; - scene8: Partial; - scene9: Partial; + [key: `scene${number}`]: Partial; barmode: 'stack' | 'group' | 'overlay' | 'relative'; barnorm: '' | 'fraction' | 'percent'; bargap: number; @@ -921,14 +900,7 @@ export interface Layout { yside: 'left' | 'left plot' | 'right plot' | 'right'; }>; polar: Partial; - polar2: Partial; - polar3: Partial; - polar4: Partial; - polar5: Partial; - polar6: Partial; - polar7: Partial; - polar8: Partial; - polar9: Partial; + [key: `polar${number}`]: Partial; transition: Transition; template: Template; clickmode: 'event' | 'select' | 'event+select' | 'none'; @@ -948,25 +920,136 @@ export interface Layout { * Fully processed layout with all defaults applied (internal use) */ export interface FullLayout extends Layout { + // Core internal state _modules?: any[]; _basePlotModules?: any[]; + _meta?: { meta?: any; layout?: { meta?: any } }; _plots?: { [key: string]: any }; _subplot?: any[]; _subplots?: SubplotInfo; _size?: LayoutSize; _legends?: string[]; + _template?: any; + _uid?: string; + _initialAutoSizeIsDone?: boolean; + _calcInverseTransform?: (gd: any) => void; + _invTransform?: any; + _pushmargin?: { [key: string]: any }; + + // SVG layers + paper?: Selection; + toppaper?: Selection; + container?: Selection; + cartesianlayer?: Selection; + polarlayer?: Selection; + ternarylayer?: Selection; + geolayer?: Selection; + smithlayer?: Selection; + pielayer?: Selection; + iciclelayer?: Selection; + sunburstlayer?: Selection; + treemaplayer?: Selection; + funnelarealayer?: Selection; + indicatorlayer?: Selection; + menulayer?: Selection; + selectionLayer?: Selection; + shapeLowerLayer?: Selection; + shapeUpperLayer?: Selection; + imageLowerLayer?: Selection; + imageUpperLayer?: Selection; + bgLayer?: Selection; + draggers?: Selection; + defs?: Selection; + topdefs?: Selection; + clips?: Selection; + topclips?: Selection; + glcanvas?: Selection; + glimages?: Selection; + modebardiv?: Selection; + dragCover?: Selection; _infolayer?: Selection; _zoomlayer?: Selection; _paperdiv?: Selection; _glcontainer?: Selection; - _calcInverseTransform?: (gd: any) => void; - _invTransform?: any; - _uid?: string; - _initialAutoSizeIsDone?: boolean; - _hoverlayer?: any; + _hoverlayer?: Selection; + + // Hover state _hoverdata?: any[]; + lasthover?: Selection | null; + rehover?: (() => void) | null; + + // Modebar _modeBar?: any; - _pushmargin?: { [key: string]: any }; + modeBar?: any; + + // Cross-trace computation state + alignmentOpts?: Record; + axisConstraintGroups?: any[]; + axisMatchGroups?: any[]; + colorAxes?: Record; + dataTemplate?: Record; + extraFormat?: Record; + firstScatter?: Record; + funnelareacolormap?: Record; + histogramBinOpts?: Record; + iciclecolormap?: Record; + numBoxes?: number; + numViolins?: number; + piecolormap?: Record; + rangeSliderData?: any[]; + requestRangeslider?: Record; + roundFnOpts?: Record; + scatterStackOpts?: Record; + splomAxes?: { x: Record; y: Record }; + splomGrid?: any; + splomGridDflt?: Record; + splomScenes?: Record; + splomSubplots?: Record; + sunburstcolormap?: Record; + transformModules?: any[]; + treemapcolormap?: Record; + violinScaleGroupStats?: Record; + visibleModules?: any[]; + + // Scalar flags and values + currentFrame?: string; + dataLength?: number; + dfltTitle?: Record; + guiEditing?: boolean; + has?: (category: string) => boolean; + hasOnlyLargeSploms?: boolean; + insideTickLabelsUpdaterange?: Record; + invScaleX?: number; + invScaleY?: number; + lastBBox?: DOMRect; + mapboxAccessToken?: string; + pushmarginIds?: Record; + redrawFromAutoMarginCount?: number; + replotting?: boolean; + reservedMargin?: Record; + shouldCreateBgLayer?: boolean; + skipDefaults?: boolean; + traceUids?: string[]; + traceWord?: string; + uid?: string; + zindices?: number[]; + + // Interaction state + activeSelectionIndex?: number; + activeShapeIndex?: number; + deactivateSelection?: (gd: any) => void; + deactivateShape?: (gd: any) => void; + deselect?: (() => void) | null; + hColorbarMoveCBTitle?: number; + hColorbarMoveTitle?: number; + lastSelectedSubplot?: string; + noEmitSelectedAtStart?: boolean; + outlining?: boolean; + preGUI?: Record; + previousSelections?: any[]; + redrag?: (() => void) | null; + reselect?: (() => void) | null; + tracePreGUI?: Record>; [key: string]: any; } From a1cd2368480dde8b31f17dce25b61d32b81746ff Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Fri, 8 May 2026 16:10:30 -0600 Subject: [PATCH 047/241] Add reference to CalcData --- src/types/core/graph-div.d.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/types/core/graph-div.d.ts b/src/types/core/graph-div.d.ts index 2353c62bf10..69e3da2e7da 100644 --- a/src/types/core/graph-div.d.ts +++ b/src/types/core/graph-div.d.ts @@ -6,6 +6,7 @@ * Commonly referred to as `gd` in the codebase. */ +import type { CalcData } from '../traces/common'; import type { Config } from './config'; import type { FullData, PlotData } from './data'; import type { FullLayout, Layout } from './layout'; @@ -30,7 +31,7 @@ export interface GraphDiv extends HTMLDivElement { _promises?: Promise[]; _transitionData?: any; _transitioning?: boolean; - calcdata?: any[]; + calcdata?: CalcData[][]; config?: Partial; data?: Array>; emit?: (event: string, ...args: any[]) => void; From 0c771d22068a0639292f92c7424bc30f313d5bda Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Fri, 8 May 2026 16:10:44 -0600 Subject: [PATCH 048/241] Update type documentation --- src/types/CONVERTING_ATTRIBUTES.md | 71 ++++++++++++++++++++++++++---- 1 file changed, 63 insertions(+), 8 deletions(-) diff --git a/src/types/CONVERTING_ATTRIBUTES.md b/src/types/CONVERTING_ATTRIBUTES.md index 86295e936ed..d501ea2f6a5 100644 --- a/src/types/CONVERTING_ATTRIBUTES.md +++ b/src/types/CONVERTING_ATTRIBUTES.md @@ -49,8 +49,19 @@ export default attributes; Three things to notice: -- **`@generates ModeBar`** — declares the canonical public type name. The - `.d.ts` generator uses this to name the output. +- **`@generates ModeBar`** — declares the public type name. The `.d.ts` + generator uses this to name the output. Naming conventions: + + | Category | Convention | Examples | + |---|---|---| + | Components | PascalCase of the concept | `ModeBar`, `ColorBar`, `Slider`, `RangeSelector` | + | Traces | `Data` | `PieData`, `SankeyData`, `CandlestickData` | + | Layout | `Layout` | | + + If the generated type needs hand-written refinements, use a `*Generated` + suffix instead (e.g. `@generates ModeBarGenerated`) so the hand-written + file can extend it under the original public name. See + [Layering hand-written refinements](#layering-hand-written-refinements). - **`as const satisfies AttributeMap`** — `as const` preserves literal types like `values: ['v', 'h']`; `satisfies AttributeMap` validates structure without widening. @@ -118,10 +129,10 @@ export interface ModeBar { export type { ModeBar } from '../generated/components/modebar'; ``` -If the hand-written type was richer than the schema (e.g. used a narrowed -union where the schema says `string`), document the gap in a comment or -file an issue. Do not silently lose ergonomics — either improve the schema -(add `values: [...]`) or layer a hand-written refinement on top. +If the hand-written type was richer than the schema (e.g. a narrowed union +where the schema says `string`, or extra non-schema fields), don't silently +lose those — see +[Layering hand-written refinements](#layering-hand-written-refinements). ### 7. Verify @@ -158,8 +169,7 @@ for the canonical example. The full conversion changed: (with `as const satisfies AttributeMap` and `@generates ModeBar`) - `.default` added to `require('./attributes')` in `index.js` and `defaults.js` - The hand-written `ModeBar` interface in `src/types/core/layout.d.ts` was - removed and replaced with - `export type { ModeBar } from '../generated/components/modebar';` + replaced with a re-export from the generated file Schema output verified byte-identical (2547 bytes) before and after the conversion. @@ -192,6 +202,51 @@ based on an older schema. Order of operations: 4. **If the schema has fields the hand-written type lacked**, that's a free coverage win — accept the generated type. +## Layering hand-written refinements + +When the generated type is complete, a simple re-export is all you need +(see step 6). But when the hand-written type was richer than the schema — +narrower unions, extra non-schema fields, etc. — use the `*Generated` +suffix pattern so the hand-written file can extend the generated type. + +First, change the `@generates` tag to use a `*Generated` suffix: + +```ts +// src/components/modebar/attributes.ts +/** + * @generates ModeBarGenerated + */ +``` + +Then in the hand-written file, extend it under the original public name. +The `extends` brings all schema-derived fields along; the body only +contains what the schema can't express: + +```ts +// src/types/core/layout.d.ts +import type { ModeBarGenerated } from '../generated/components/modebar'; + +export interface ModeBar extends ModeBarGenerated { + // Schema says `string`; narrow to the known button set. + remove: ModeBarDefaultButtons | ModeBarDefaultButtons[]; + + // Not in the schema — runtime-only convenience field. + _buttons?: HTMLElement[]; +} +``` + +Consumers still write `import type { ModeBar } from 'plotly.js'` — the +`*Generated` intermediate is an internal detail. + +**When to refine vs. when to fix the schema:** + +- If a field's type is too wide (e.g. `string` instead of a union), prefer + adding `values: [...]` to the schema so the generated type is correct by + construction and the simple re-export path works. +- If the refinement is about non-schema concerns (runtime-only fields, + narrowing for DX, overloaded method signatures), use the `*Generated` + extend pattern. + ## Order of conversion (for parallel work) Pick from this priority list. Lower-numbered items are smaller / simpler. From 7acbd195d78bc1a399147891b8553a51682b7a77 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Mon, 11 May 2026 16:52:21 -0600 Subject: [PATCH 049/241] Make TS config more strict --- tsconfig.json | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/tsconfig.json b/tsconfig.json index 328648fd1c0..c09f218ef2b 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -26,15 +26,8 @@ "outDir": "./dist", "noEmit": true, - // Type checking - start loose, tighten gradually - "strict": false, - "noImplicitAny": false, - "strictNullChecks": false, - "strictFunctionTypes": false, - "strictBindCallApply": false, - "strictPropertyInitialization": false, - "noImplicitThis": false, - "alwaysStrict": false, + // Type checking - start strict, loosen if necessary + "strict": true, // Linting "noUnusedLocals": false, From 27c6acbd5197336b1565202fb58bfc04b5bb5306 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Mon, 11 May 2026 16:54:40 -0600 Subject: [PATCH 050/241] Move TemplateFigure type --- src/types/core/api.d.ts | 19 +++++++++++++-- src/types/core/template.d.ts | 47 ------------------------------------ 2 files changed, 17 insertions(+), 49 deletions(-) delete mode 100644 src/types/core/template.d.ts diff --git a/src/types/core/api.d.ts b/src/types/core/api.d.ts index a0bb44b6f3a..c328c55fa14 100644 --- a/src/types/core/api.d.ts +++ b/src/types/core/api.d.ts @@ -62,6 +62,9 @@ export type DefaultIcons = export type IconsMap = { [K in DefaultIcons]: Icon }; +export declare const Icons: IconsMap; +export declare const Plots: StaticPlots; + // --------------------------------------------------------------------------- // Module registration // --------------------------------------------------------------------------- @@ -108,6 +111,17 @@ export interface ValidateResult { msg: string; } +export interface ValidateTemplateResult { + code: string; + index?: number; + traceType?: string; + templateCount?: number; + dataCount?: number; + path?: string; + templateitemname?: string; + msg: string; +} + // --------------------------------------------------------------------------- // Function declarations // --------------------------------------------------------------------------- @@ -181,5 +195,6 @@ export function animate( export function validate(data: Data[], layout: Partial): ValidateResult[]; export function setPlotConfig(config: Partial): void; -export type FigureOrRoot = Root | { data: Data[]; layout: Partial }; -export function makeTemplate(figure: FigureOrRoot): Template; +export type TemplateFigure = Root | { data: Data[]; layout: Partial }; +export function makeTemplate(figure: TemplateFigure): Template; +export function validateTemplate(figure: TemplateFigure, template: Template): ValidateTemplateResult[]; diff --git a/src/types/core/template.d.ts b/src/types/core/template.d.ts deleted file mode 100644 index a686728c3a3..00000000000 --- a/src/types/core/template.d.ts +++ /dev/null @@ -1,47 +0,0 @@ -/** - * Template types - * - * Defines the structure of Plotly templates. - */ - -import type { PlotData, PlotType } from './data'; -import type { Layout } from './layout'; - -/** - * Template configuration - */ -export interface Template { - /** - * Default trace configurations by type - */ - data?: { - [K in PlotType]?: Array>; - }; - - /** - * Default layout configuration - */ - layout?: Partial; -} - -/** - * Template figure type - */ -export interface TemplateFigure { - data?: PlotData[]; - layout?: Partial; -} - -/** - * Template validation result - */ -export interface ValidateTemplateResult { - code: string; - index?: number; - traceType?: string; - templateCount?: number; - dataCount?: number; - path?: string; - templateitemname?: string; - msg: string; -} From dadd651ba61b232f60744bc945abd2907ade1f09 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Mon, 11 May 2026 16:55:03 -0600 Subject: [PATCH 051/241] Fix internal property naming --- src/types/core/layout.d.ts | 237 +++++++++++++++++++------------------ 1 file changed, 120 insertions(+), 117 deletions(-) diff --git a/src/types/core/layout.d.ts b/src/types/core/layout.d.ts index 95ab5fef822..f1c3a4edbff 100644 --- a/src/types/core/layout.d.ts +++ b/src/types/core/layout.d.ts @@ -4,14 +4,15 @@ * Comprehensive layout, axis, annotation, shape, scene, and supporting types. */ -import type { Selection } from '@types/d3'; +import type { Locale, Selection } from 'd3'; import type { TickFormatStop } from '../components/colorbar'; import type { RangeSelector } from '../components/rangeselector'; import type { Slider } from '../components/slider'; import type { UpdateMenu } from '../components/updatemenu'; import type { AxisType, Calendar, Color, Dash, Datum, DTickValue } from '../lib/common'; import type { Transition } from './animation'; -import type { PlotType } from './data'; +import type { PlotData, PlotType } from './data'; +import type { PlotlyHTMLElement } from './events'; // --------------------------------------------------------------------------- // Font @@ -190,7 +191,7 @@ export interface PlotNumber { type xYAxisNames = `${ | '' | `${2 | 3 | 4 | 5 | 6 | 7 | 8 | 9}` - | `${1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9}${0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9}`}${''}`; + | `${1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9}${0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9}`}${'' | ' domain'}`; export type XAxisName = `x${xYAxisNames}`; export type YAxisName = `y${xYAxisNames}`; @@ -338,7 +339,7 @@ export interface Axis { } // --------------------------------------------------------------------------- -// LayoutAxis (extends Axis for cartesian subplots) +// LayoutAxis // --------------------------------------------------------------------------- export interface LayoutAxis extends Axis { @@ -601,7 +602,7 @@ export type ModeBarDefaultButtons = | 'hoverclosest' | 'v1hovermode'; -export type ButtonClickEvent = (gd: HTMLElement, ev: MouseEvent) => void; +export type ButtonClickEvent = (gd: PlotlyHTMLElement, ev: MouseEvent) => void; export interface Icon { height?: number | undefined; @@ -629,7 +630,8 @@ export type ModeBarButtonAny = ModeBarDefaultButtons | ModeBarButton; // `ModeBar` is generated from src/components/modebar/attributes.ts. // See src/types/generated/components/modebar.d.ts. -export type { ModeBar } from '../generated/components/modebar'; +import type { ModeBar } from '../generated/components/modebar'; +export type { ModeBar }; // --------------------------------------------------------------------------- // Gauge / Delta / Indicator types @@ -781,7 +783,7 @@ export interface PolarLayout { // --------------------------------------------------------------------------- export interface Template { - data?: { [type in PlotType]?: Array> } | undefined; + data?: { [type in PlotType]?: Array> } | undefined; layout?: Partial | undefined; } @@ -921,135 +923,136 @@ export interface Layout { */ export interface FullLayout extends Layout { // Core internal state - _modules?: any[]; _basePlotModules?: any[]; + _calcInverseTransform?: (gd: any) => void; + _initialAutoSizeIsDone?: boolean; + _invTransform?: any; + _legends?: string[]; _meta?: { meta?: any; layout?: { meta?: any } }; + _modules?: any[]; _plots?: { [key: string]: any }; - _subplot?: any[]; - _subplots?: SubplotInfo; + _pushmargin?: { [key: string]: any }; _size?: LayoutSize; - _legends?: string[]; + _subplots?: SubplotInfo; _template?: any; _uid?: string; - _initialAutoSizeIsDone?: boolean; - _calcInverseTransform?: (gd: any) => void; - _invTransform?: any; - _pushmargin?: { [key: string]: any }; // SVG layers - paper?: Selection; - toppaper?: Selection; - container?: Selection; - cartesianlayer?: Selection; - polarlayer?: Selection; - ternarylayer?: Selection; - geolayer?: Selection; - smithlayer?: Selection; - pielayer?: Selection; - iciclelayer?: Selection; - sunburstlayer?: Selection; - treemaplayer?: Selection; - funnelarealayer?: Selection; - indicatorlayer?: Selection; - menulayer?: Selection; - selectionLayer?: Selection; - shapeLowerLayer?: Selection; - shapeUpperLayer?: Selection; - imageLowerLayer?: Selection; - imageUpperLayer?: Selection; - bgLayer?: Selection; - draggers?: Selection; - defs?: Selection; - topdefs?: Selection; - clips?: Selection; - topclips?: Selection; - glcanvas?: Selection; - glimages?: Selection; - modebardiv?: Selection; - dragCover?: Selection; - _infolayer?: Selection; - _zoomlayer?: Selection; - _paperdiv?: Selection; - _glcontainer?: Selection; - _hoverlayer?: Selection; + _bgLayer?: Selection; + _cartesianlayer?: Selection; + _clips?: Selection; + _container?: Selection; + _defs?: Selection; + _dragCover?: Selection; + _draggers?: Selection; + _funnelarealayer?: Selection; + _geolayer?: Selection; + _glcanvas?: Selection; + _glcontainer?: Selection; + _glimages?: Selection; + _iciclelayer?: Selection; + _imageLowerLayer?: Selection; + _imageUpperLayer?: Selection; + _indicatorlayer?: Selection; + _infolayer?: Selection; + _menulayer?: Selection; + _modebardiv?: Selection; + _paper?: Selection; + _paperdiv?: Selection; + _pielayer?: Selection; + _polarlayer?: Selection; + _selectionLayer?: Selection; + _shapeLowerLayer?: Selection; + _shapeUpperLayer?: Selection; + _smithlayer?: Selection; + _sunburstlayer?: Selection; + _ternarylayer?: Selection; + _topdefs?: Selection; + _topclips?: Selection; + _toppaper?: Selection; + _treemaplayer?: Selection; + _zoomlayer?: Selection; // Hover state - _hoverdata?: any[]; - lasthover?: Selection | null; - rehover?: (() => void) | null; + _hoverlayer?: Selection; + _hoverpaper?: Selection; + _hoversubplot?: string | null; + _lasthover?: Selection | null; + _rehover?: (() => void) | null; // Modebar _modeBar?: any; - modeBar?: any; // Cross-trace computation state - alignmentOpts?: Record; - axisConstraintGroups?: any[]; - axisMatchGroups?: any[]; - colorAxes?: Record; - dataTemplate?: Record; - extraFormat?: Record; - firstScatter?: Record; - funnelareacolormap?: Record; - histogramBinOpts?: Record; - iciclecolormap?: Record; - numBoxes?: number; - numViolins?: number; - piecolormap?: Record; - rangeSliderData?: any[]; - requestRangeslider?: Record; - roundFnOpts?: Record; - scatterStackOpts?: Record; - splomAxes?: { x: Record; y: Record }; - splomGrid?: any; - splomGridDflt?: Record; - splomScenes?: Record; - splomSubplots?: Record; - sunburstcolormap?: Record; - transformModules?: any[]; - treemapcolormap?: Record; - violinScaleGroupStats?: Record; - visibleModules?: any[]; + _alignmentOpts?: Record; + _axisConstraintGroups?: any[]; + _axisMatchGroups?: any[]; + _colorAxes?: Record; + _dataTemplate?: Record; + _extraFormat?: Record; + _firstScatter?: Record; + _funnelareacolormap?: Record; + _histogramBinOpts?: Record; + _iciclecolormap?: Record; + _numBoxes?: number; + _numViolins?: number; + _piecolormap?: Record; + _rangeSliderData?: any[]; + _requestRangeslider?: Record; + _roundFnOpts?: Record; + _scatterStackOpts?: Record; + _splomAxes?: { x: Record; y: Record }; + _splomGrid?: any; + _splomGridDflt?: Record; + _splomScenes?: Record; + _splomSubplots?: Record; + _sunburstcolormap?: Record; + _transformModules?: any[]; + _treemapcolormap?: Record; + _violinScaleGroupStats?: Record; + _visibleModules?: any[]; // Scalar flags and values - currentFrame?: string; - dataLength?: number; - dfltTitle?: Record; - guiEditing?: boolean; - has?: (category: string) => boolean; - hasOnlyLargeSploms?: boolean; - insideTickLabelsUpdaterange?: Record; - invScaleX?: number; - invScaleY?: number; - lastBBox?: DOMRect; - mapboxAccessToken?: string; - pushmarginIds?: Record; - redrawFromAutoMarginCount?: number; - replotting?: boolean; - reservedMargin?: Record; - shouldCreateBgLayer?: boolean; - skipDefaults?: boolean; - traceUids?: string[]; - traceWord?: string; - uid?: string; - zindices?: number[]; + _cartesianSpikesEnabled?: 'on' | 'off'; + _currentFrame?: string; + _d3locale?: Locale; + _dataLength?: number; + _enablescrollzoom?: boolean; + _dfltTitle?: Record; + _guiEditing?: boolean; + _has?: (category: string) => boolean; + _hasOnlyLargeSploms?: boolean; + _insideTickLabelsUpdaterange?: Record; + _invScaleX?: number; + _invScaleY?: number; + _lastBBox?: DOMRect; + _mapboxAccessToken?: string; + _pushmarginIds?: Record; + _redrawFromAutoMarginCount?: number; + _replotting?: boolean; + _reservedMargin?: Record; + _shouldCreateBgLayer?: boolean; + _skipDefaults?: boolean; + _traceUids?: string[]; + _traceWord?: string; + _zindices?: number[]; // Interaction state - activeSelectionIndex?: number; - activeShapeIndex?: number; - deactivateSelection?: (gd: any) => void; - deactivateShape?: (gd: any) => void; - deselect?: (() => void) | null; - hColorbarMoveCBTitle?: number; - hColorbarMoveTitle?: number; - lastSelectedSubplot?: string; - noEmitSelectedAtStart?: boolean; - outlining?: boolean; - preGUI?: Record; - previousSelections?: any[]; - redrag?: (() => void) | null; - reselect?: (() => void) | null; - tracePreGUI?: Record>; + _activeSelectionIndex?: number; + _activeShapeIndex?: number; + _deactivateSelection?: (gd: any) => void; + _deactivateShape?: (gd: any) => void; + _deselect?: any; + _hColorbarMoveCBTitle?: number; + _hColorbarMoveTitle?: number; + _lastSelectedSubplot?: string; + _noEmitSelectedAtStart?: boolean; + _outlining?: boolean; + _preGUI?: Record; + _previousSelections?: any[]; + _redrag?: (() => void) | null; + _reselect?: (() => void) | null; + _tracePreGUI?: Record>; [key: string]: any; } From b9b2d41293ad5450a616178fcdd0208cf906a775 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Mon, 11 May 2026 16:56:05 -0600 Subject: [PATCH 052/241] Update type references --- lib/index.d.ts | 12 ++++++------ src/types/components/rangeselector.d.ts | 7 ++----- src/types/core/animation.d.ts | 8 ++++---- src/types/core/config.d.ts | 5 +++-- src/types/core/data.d.ts | 7 ++++--- src/types/core/graph-div.d.ts | 1 + src/types/index.d.ts | 1 - 7 files changed, 20 insertions(+), 21 deletions(-) diff --git a/lib/index.d.ts b/lib/index.d.ts index a8436fb7a19..60423313a44 100644 --- a/lib/index.d.ts +++ b/lib/index.d.ts @@ -194,18 +194,12 @@ export type { TransitionEasing, } from '../src/types/core/animation'; -export type { - TemplateFigure, - ValidateTemplateResult, -} from '../src/types/core/template'; - // --------------------------------------------------------------------------- // Configuration // --------------------------------------------------------------------------- export type { Config, - ConfigEdits, DownloadImgopts, Edits, ToImageButtonOptions, @@ -254,9 +248,11 @@ export { deleteTraces, downloadImage, extendTraces, + Icons, makeTemplate, moveTraces, newPlot, + Plots, prependTraces, purge, react, @@ -268,16 +264,20 @@ export { toImage, update, validate, + validateTemplate, } from '../src/types/core/api'; export type { DefaultIcons, + IconsMap, PlotlyDataLayoutConfig, PlotlyModule, Root, RootOrData, StaticPlots, + TemplateFigure, ValidateResult, + ValidateTemplateResult, } from '../src/types/core/api'; // --------------------------------------------------------------------------- diff --git a/src/types/components/rangeselector.d.ts b/src/types/components/rangeselector.d.ts index 23746053929..fa9bca16638 100644 --- a/src/types/components/rangeselector.d.ts +++ b/src/types/components/rangeselector.d.ts @@ -4,7 +4,7 @@ * Defines the structure of RangeSelector configuration. */ -import type { Font } from '../core/layout'; +import type { Font, Label } from '../core/layout'; import type { Color, XAnchor, YAnchor } from '../lib/common'; /** @@ -28,7 +28,7 @@ export interface RangeSelectorButton { /** * RangeSelector configuration */ -export interface RangeSelector { +export interface RangeSelector extends Label { buttons?: Array>; visible?: boolean; x?: number; @@ -36,8 +36,5 @@ export interface RangeSelector { y?: number; yanchor?: YAnchor; activecolor?: Color; - bgcolor?: Color; - bordercolor?: Color; borderwidth?: number; - font?: Partial; } diff --git a/src/types/core/animation.d.ts b/src/types/core/animation.d.ts index 2ce98033962..3a93c229212 100644 --- a/src/types/core/animation.d.ts +++ b/src/types/core/animation.d.ts @@ -4,7 +4,7 @@ * Defines animation and transition types for Plotly. */ -import type { PlotData } from './data'; +import type { Data } from './data'; import type { Layout } from './layout'; /** @@ -105,12 +105,12 @@ export interface AnimationOpts { /** * Transition configuration */ - transition?: Partial; + transition?: Partial | Array>; /** * Frame configuration */ - frame?: Partial; + frame?: Partial | Array>; } /** @@ -140,7 +140,7 @@ export interface Frame { /** * Data updates for this frame */ - data?: Partial[]; + data?: Data[]; /** * Layout updates for this frame diff --git a/src/types/core/config.d.ts b/src/types/core/config.d.ts index 5b81ea70acc..55cb9f4891b 100644 --- a/src/types/core/config.d.ts +++ b/src/types/core/config.d.ts @@ -4,6 +4,7 @@ * Plotly configuration options and edit settings. */ +import type { PlotlyHTMLElement } from './events'; import type { ModeBarButtonAny, ModeBarDefaultButtons } from './layout'; // --------------------------------------------------------------------------- @@ -191,7 +192,7 @@ export interface Config { * Adds a source-displaying function to show sources on the resulting graphs. * @default false */ - showSources: false | ((gd: HTMLElement) => void | Promise); + showSources: false | ((gd: PlotlyHTMLElement) => void | Promise); /** * Mode bar display mode. * @default 'hover' @@ -252,7 +253,7 @@ export interface Config { * Set background color function or behavior. * @default 'transparent' */ - setBackground: ((gd: HTMLElement, bgColor: string) => void) | 'opaque' | 'transparent'; + setBackground: ((gd: PlotlyHTMLElement, bgColor: string) => void) | 'opaque' | 'transparent'; /** * URL to topojson used in geo charts. * @default 'https://cdn.plot.ly/' diff --git a/src/types/core/data.d.ts b/src/types/core/data.d.ts index 145a9929927..c56644626b4 100644 --- a/src/types/core/data.d.ts +++ b/src/types/core/data.d.ts @@ -5,14 +5,15 @@ * and the Data union. */ +import type { ColorBar } from '../components/colorbar'; import type { Color, ColorScale, Dash, Datum, ErrorBar, MarkerSymbol, Pattern, TypedArray } from '../lib/common'; -import type { BoxPlotData } from '../traces/box'; +import type { BoxPlotData, BoxPlotMarker } from '../traces/box'; import type { CandlestickData } from '../traces/candlestick'; import type { OhlcData } from '../traces/ohlc'; import type { PieData } from '../traces/pie'; import type { SankeyData } from '../traces/sankey'; import type { ViolinData } from '../traces/violin'; -import type { ColorBar, DataTitle, Delta, Font, Gauge, HoverLabel, Padding, PlotNumber } from './layout'; +import type { DataTitle, Delta, Font, Gauge, HoverLabel, Padding, PlotNumber } from './layout'; // --------------------------------------------------------------------------- // PlotType @@ -157,7 +158,7 @@ export interface PlotData { 'line.shape': 'linear' | 'spline' | 'hv' | 'vh' | 'hvh' | 'vhv'; 'line.smoothing': number; 'line.simplify': boolean; - marker: Partial; + marker: Partial | Partial; 'marker.symbol': MarkerSymbol | MarkerSymbol[]; 'marker.color': Color; 'marker.colorscale': ColorScale | ColorScale[]; diff --git a/src/types/core/graph-div.d.ts b/src/types/core/graph-div.d.ts index 69e3da2e7da..8947a1e01f2 100644 --- a/src/types/core/graph-div.d.ts +++ b/src/types/core/graph-div.d.ts @@ -27,6 +27,7 @@ export interface GraphDiv extends HTMLDivElement { _editing?: boolean; _fullData?: FullData[]; _fullLayout?: FullLayout; + _hoverdata?: any[]; _initialized?: boolean; _promises?: Promise[]; _transitionData?: any; diff --git a/src/types/index.d.ts b/src/types/index.d.ts index e96301ceb0f..1a998b100be 100644 --- a/src/types/index.d.ts +++ b/src/types/index.d.ts @@ -16,7 +16,6 @@ export * from './core/data'; export * from './core/events'; export * from './core/graph-div'; export * from './core/layout'; -export * from './core/template'; // Components export * from './components/colorbar'; From 7bbd3118369bb54e648549faf0ad6c1e4eee429c Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Mon, 11 May 2026 17:06:27 -0600 Subject: [PATCH 053/241] Don't add redundant `| undefined` to generated types --- tasks/generate_types.mjs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tasks/generate_types.mjs b/tasks/generate_types.mjs index 31e64346f1b..f2dd748374c 100644 --- a/tasks/generate_types.mjs +++ b/tasks/generate_types.mjs @@ -67,6 +67,10 @@ const parsed = ts.parseJsonConfigFileContent(tsconfigJson.config, ts.sys, repoRo const program = ts.createProgram(attributeFiles, { ...parsed.options, + // Prevent the checker from adding redundant `| undefined` to optional + // properties when printing type nodes. The `?` modifier already implies + // `undefined`, so the extra union member is just noise in the output. + strictNullChecks: false, noEmit: true }); From 155bf28eea7e65138eaefa230c8a227782fde828 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Mon, 11 May 2026 17:07:11 -0600 Subject: [PATCH 054/241] Convert image trace attributes to TS --- .../image/{attributes.js => attributes.ts} | 35 ++++++++++++------- src/traces/image/defaults.js | 2 +- src/traces/image/index.js | 2 +- src/types/generated/index.d.ts | 1 + src/types/generated/traces/image.d.ts | 25 +++++++++++++ 5 files changed, 50 insertions(+), 15 deletions(-) rename src/traces/image/{attributes.js => attributes.ts} (85%) create mode 100644 src/types/generated/traces/image.d.ts diff --git a/src/traces/image/attributes.js b/src/traces/image/attributes.ts similarity index 85% rename from src/traces/image/attributes.js rename to src/traces/image/attributes.ts index 2d9ce34163c..12e249912df 100644 --- a/src/traces/image/attributes.js +++ b/src/traces/image/attributes.ts @@ -1,21 +1,26 @@ 'use strict'; -var baseAttrs = require('../../plots/attributes'); -var zorder = require('../scatter/attributes').zorder; +import type { AttributeMap, AttrsToType } from '../../types/lib/attributes'; + +const baseAttrs = require('../../plots/attributes'); +const { zorder } = require('../scatter/attributes'); const { hovertemplateAttrs, templatefallbackAttrs } = require('../../plots/template_attributes'); -var extendFlat = require('../../lib/extend').extendFlat; -var colormodel = require('./constants').colormodel; +const extendFlat = require('../../lib/extend').extendFlat; +const { colormodel } = require('./constants'); -var cm = ['rgb', 'rgba', 'rgba256', 'hsl', 'hsla']; -var zminDesc = []; -var zmaxDesc = []; -for (var i = 0; i < cm.length; i++) { - var cr = colormodel[cm[i]]; +const cm = ['rgb', 'rgba', 'rgba256', 'hsl', 'hsla'] as const; +const zminDesc: string[] = []; +const zmaxDesc: string[] = []; +for (let i = 0; i < cm.length; i++) { + const cr = colormodel[cm[i]]; zminDesc.push('For the `' + cm[i] + '` colormodel, it is [' + (cr.zminDflt || cr.min).join(', ') + '].'); zmaxDesc.push('For the `' + cm[i] + '` colormodel, it is [' + (cr.zmaxDflt || cr.max).join(', ') + '].'); } -module.exports = extendFlat({ +/** + * @generates ImageTrace + */ +const attributes = { source: { valType: 'string', editType: 'calc', @@ -43,7 +48,7 @@ module.exports = extendFlat({ }, zsmooth: { valType: 'enumerated', - values: ['fast', false], + values: ['fast', false] as const, dflt: false, editType: 'plot', description: [ @@ -133,5 +138,9 @@ module.exports = extendFlat({ hovertemplate: hovertemplateAttrs({}, { keys: ['z', 'color', 'colormodel'] }), hovertemplatefallback: templatefallbackAttrs(), - zorder: zorder -}); + zorder +} as const satisfies AttributeMap; + +export type ImageTraceAttributes = AttrsToType; + +export default attributes; diff --git a/src/traces/image/defaults.js b/src/traces/image/defaults.js index 9a2efa00528..2d218c65265 100644 --- a/src/traces/image/defaults.js +++ b/src/traces/image/defaults.js @@ -1,7 +1,7 @@ 'use strict'; var Lib = require('../../lib'); -var attributes = require('./attributes'); +var attributes = require('./attributes').default; var constants = require('./constants'); var dataUri = require('../../snapshot/helpers').IMAGE_URL_PREFIX; diff --git a/src/traces/image/index.js b/src/traces/image/index.js index 89c31c77d87..9fab3946222 100644 --- a/src/traces/image/index.js +++ b/src/traces/image/index.js @@ -1,7 +1,7 @@ 'use strict'; module.exports = { - attributes: require('./attributes'), + attributes: require('./attributes').default, supplyDefaults: require('./defaults'), calc: require('./calc'), plot: require('./plot'), diff --git a/src/types/generated/index.d.ts b/src/types/generated/index.d.ts index 7ff397dc612..7394cf84d5a 100644 --- a/src/types/generated/index.d.ts +++ b/src/types/generated/index.d.ts @@ -3,4 +3,5 @@ * Run `npm run gen:types` to regenerate. */ +export type { ImageTrace } from './traces/image'; export type { ModeBar } from './components/modebar'; diff --git a/src/types/generated/traces/image.d.ts b/src/types/generated/traces/image.d.ts new file mode 100644 index 00000000000..eb22a6bea09 --- /dev/null +++ b/src/types/generated/traces/image.d.ts @@ -0,0 +1,25 @@ +/** + * Generated from src/traces/image/attributes.ts. + * Do not edit by hand — run `npm run gen:types`. + */ + +import type { Datum, TypedArray } from '../../lib/common'; + +export interface ImageTrace { + source?: string; + z?: Datum[] | TypedArray; + colormodel?: 'rgb' | 'rgba' | 'rgba256' | 'hsl' | 'hsla'; + zsmooth?: false | 'fast'; + zmin?: unknown[]; + zmax?: unknown[]; + x0?: any; + y0?: any; + dx?: number; + dy?: number; + text?: Datum[] | TypedArray; + hovertext?: Datum[] | TypedArray; + hoverinfo?: any; + hovertemplate?: any; + hovertemplatefallback?: any; + zorder?: any; +} From ed3cb8695c7fa5b920029950a88fc422a87f91aa Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Wed, 13 May 2026 06:54:40 -0600 Subject: [PATCH 055/241] Remove some handwritten types --- src/types/components/colorbar.d.ts | 115 --------------------- src/types/components/common.d.ts | 37 ------- src/types/components/rangeselector.d.ts | 40 -------- src/types/components/slider.d.ts | 65 ------------ src/types/components/updatemenu.d.ts | 55 ----------- src/types/plots/common.d.ts | 37 ------- src/types/traces/box.d.ts | 42 -------- src/types/traces/candlestick.d.ts | 51 ---------- src/types/traces/ohlc.d.ts | 95 ------------------ src/types/traces/pie.d.ts | 126 ------------------------ src/types/traces/sankey.d.ts | 108 -------------------- src/types/traces/violin.d.ts | 61 ------------ 12 files changed, 832 deletions(-) delete mode 100644 src/types/components/colorbar.d.ts delete mode 100644 src/types/components/common.d.ts delete mode 100644 src/types/components/rangeselector.d.ts delete mode 100644 src/types/components/slider.d.ts delete mode 100644 src/types/components/updatemenu.d.ts delete mode 100644 src/types/plots/common.d.ts delete mode 100644 src/types/traces/box.d.ts delete mode 100644 src/types/traces/candlestick.d.ts delete mode 100644 src/types/traces/ohlc.d.ts delete mode 100644 src/types/traces/pie.d.ts delete mode 100644 src/types/traces/sankey.d.ts delete mode 100644 src/types/traces/violin.d.ts diff --git a/src/types/components/colorbar.d.ts b/src/types/components/colorbar.d.ts deleted file mode 100644 index 504984ba045..00000000000 --- a/src/types/components/colorbar.d.ts +++ /dev/null @@ -1,115 +0,0 @@ -/** - * ColorBar types - * - * Defines the structure of ColorBar configuration. - */ - -import type { Font } from '../core/layout'; -import type { Color, Datum, DTickValue, XAnchor, XRef, YAnchor, YRef } from '../lib/common'; - -/** - * Exponent format type - */ -export type ExponentFormat = 'none' | 'e' | 'E' | 'power' | 'SI' | 'B'; - -/** - * Show prefix/suffix type - */ -export type ShowTickLabel = 'all' | 'first' | 'last' | 'none'; - -/** - * Tick label position type - */ -export type TickLabelPosition = - | 'outside' - | 'inside' - | 'outside top' - | 'inside top' - | 'outside left' - | 'inside left' - | 'outside right' - | 'inside right' - | 'outside bottom' - | 'inside bottom'; - -/** - * Tick label overflow type - */ -export type TickLabelOverflow = 'allow' | 'hide past div' | 'hide past domain'; - -/** - * Length mode type - */ -export type LengthMode = 'fraction' | 'pixels'; - -/** - * ColorBar title configuration - */ -export interface ColorBarTitle { - text?: string; - font?: Partial; - side?: 'right' | 'top' | 'bottom'; -} - -/** - * Tick format stop configuration - */ -export interface TickFormatStop { - enabled?: boolean; - dtickrange?: [DTickValue | null, DTickValue | null]; - value?: string; - name?: string; - templateitemname?: string; -} - -/** - * ColorBar configuration - */ -export interface ColorBar { - orientation?: 'h' | 'v'; - thicknessmode?: LengthMode; - thickness?: number; - lenmode?: LengthMode; - len?: number; - x?: number; - xref?: XRef; - xanchor?: XAnchor; - xpad?: number; - y?: number; - yref?: YRef; - yanchor?: YAnchor; - ypad?: number; - outlinecolor?: Color; - outlinewidth?: number; - bordercolor?: Color; - borderwidth?: number; - bgcolor?: Color; - tickmode?: 'auto' | 'linear' | 'array'; - nticks?: number; - tick0?: number | string; - dtick?: DTickValue; - tickvals?: Datum[] | Datum[][]; - ticktext?: Datum[] | Datum[][]; - ticks?: 'outside' | 'inside' | ''; - ticklabeloverflow?: TickLabelOverflow; - ticklabelposition?: TickLabelPosition; - ticklen?: number; - tickwidth?: number; - tickcolor?: Color; - ticklabelstep?: number; - showticklabels?: boolean; - labelalias?: DTickValue; - tickfont?: Partial; - tickangle?: 'auto' | number; - tickformat?: string; - tickformatstops?: Array>; - tickprefix?: string; - showtickprefix?: ShowTickLabel; - ticksuffix?: string; - showticksuffix?: ShowTickLabel; - separatethousands?: boolean; - exponentformat?: ExponentFormat; - minexponent?: number; - showexponent?: ShowTickLabel; - title?: Partial; -} diff --git a/src/types/components/common.d.ts b/src/types/components/common.d.ts deleted file mode 100644 index 911d1e0dc42..00000000000 --- a/src/types/components/common.d.ts +++ /dev/null @@ -1,37 +0,0 @@ -/** - * Common component-related types - * - * Types shared across different component modules - */ - -/** - * Component module interface - */ -export interface ComponentModule { - includeBasePlot?: (basePlotModule: string) => void; - layoutAttributes?: any; - name: string; - supplyLayoutDefaults?: (layoutIn: any, layoutOut: any, fullData: any) => void; -} - -/** - * Drawing options (used by many components) - */ -export interface DrawingOptions { - duration?: number; - ease?: string; - redraw?: boolean; -} - -/** - * SVG text utilities return type - */ -export interface TextBBox { - bottom: number; - height: number; - left: number; - right: number; - top: number; - width: number; -} - diff --git a/src/types/components/rangeselector.d.ts b/src/types/components/rangeselector.d.ts deleted file mode 100644 index fa9bca16638..00000000000 --- a/src/types/components/rangeselector.d.ts +++ /dev/null @@ -1,40 +0,0 @@ -/** - * RangeSelector types - * - * Defines the structure of RangeSelector configuration. - */ - -import type { Font, Label } from '../core/layout'; -import type { Color, XAnchor, YAnchor } from '../lib/common'; - -/** - * RangeSelector step type - */ -export type RangeSelectorStep = 'month' | 'year' | 'day' | 'hour' | 'minute' | 'second' | 'all'; - -/** - * RangeSelector button configuration - */ -export interface RangeSelectorButton { - visible?: boolean; - step?: RangeSelectorStep; - stepmode?: 'backward' | 'todate'; - count?: number; - label?: string; - name?: string; - templateitemname?: string; -} - -/** - * RangeSelector configuration - */ -export interface RangeSelector extends Label { - buttons?: Array>; - visible?: boolean; - x?: number; - xanchor?: XAnchor; - y?: number; - yanchor?: YAnchor; - activecolor?: Color; - borderwidth?: number; -} diff --git a/src/types/components/slider.d.ts b/src/types/components/slider.d.ts deleted file mode 100644 index 08abed3d76a..00000000000 --- a/src/types/components/slider.d.ts +++ /dev/null @@ -1,65 +0,0 @@ -/** - * Slider types - * - * Defines the structure of Slider configuration. - */ - -import type { Transition } from '../core/animation'; -import type { Font, Padding } from '../core/layout'; -import type { Color, XAnchor, YAnchor } from '../lib/common'; -import type { LengthMode } from './colorbar'; - -/** - * Slider step configuration - */ -export interface SliderStep { - visible?: boolean; - method?: 'restyle' | 'relayout' | 'animate' | 'update' | 'skip'; - args?: any[]; - label?: string; - value?: string; - execute?: boolean; - name?: string; - templateitemname?: string; -} - -/** - * Slider current value configuration - */ -export interface CurrentValue { - visible?: boolean; - xanchor?: XAnchor; - offset?: number; - prefix?: string; - suffix?: string; - font?: Partial; -} - -/** - * Slider configuration - */ -export interface Slider { - visible?: boolean; - active?: number; - steps?: Array>; - lenmode?: LengthMode; - len?: number; - x?: number; - y?: number; - pad?: Partial; - xanchor?: XAnchor; - yanchor?: YAnchor; - transition?: Partial; - currentvalue?: Partial; - font?: Partial; - activebgcolor?: Color; - bgcolor?: Color; - bordercolor?: Color; - borderwidth?: number; - ticklen?: number; - tickcolor?: Color; - tickwidth?: number; - minorticklen?: number; - name?: string; - templateitemname?: string; -} diff --git a/src/types/components/updatemenu.d.ts b/src/types/components/updatemenu.d.ts deleted file mode 100644 index 6ae2a2dd1ab..00000000000 --- a/src/types/components/updatemenu.d.ts +++ /dev/null @@ -1,55 +0,0 @@ -/** - * UpdateMenu types - * - * Defines the structure of UpdateMenu configuration. - */ - -import type { Color, XAnchor, YAnchor } from '../lib/common'; -import type { Font, Padding } from '../core/layout'; - -/** - * UpdateMenu button configuration - */ -export interface UpdateMenuButton { - visible?: boolean; - method?: 'restyle' | 'relayout' | 'animate' | 'update' | 'skip'; - args?: any[]; - args2?: any[]; - label?: string; - execute?: boolean; - name?: string; - templateitemname?: string; -} - -/** - * UpdateMenu direction type - */ -export type UpdateMenuDirection = 'left' | 'up' | 'right' | 'down'; - -/** - * UpdateMenu type - */ -export type UpdateMenuType = 'dropdown' | 'buttons'; - -/** - * UpdateMenu configuration - */ -export interface UpdateMenu { - active?: number; - bgcolor?: Color; - bordercolor?: Color; - borderwidth?: number; - buttons?: Array>; - direction?: UpdateMenuDirection; - font?: Partial; - name?: string; - pad?: Partial; - showactive?: boolean; - templateitemname?: string; - type?: UpdateMenuType; - visible?: boolean; - x?: number; - xanchor?: XAnchor; - y?: number; - yanchor?: YAnchor; -} diff --git a/src/types/plots/common.d.ts b/src/types/plots/common.d.ts deleted file mode 100644 index 2b14e936922..00000000000 --- a/src/types/plots/common.d.ts +++ /dev/null @@ -1,37 +0,0 @@ -/** - * Common plot-related types - * - * Types shared across different plot modules - */ - -/** - * Plot info structure (internal) - */ -export interface PlotInfo { - id: string; - xaxis: any; - yaxis: any; - domain?: { x: [number, number]; y: [number, number] }; - _module?: any; - [key: string]: any; -} - -/** - * Subplot structure - */ -export interface Subplot { - id: string; - type: string; - domain?: { x: [number, number]; y: [number, number] }; - [key: string]: any; -} - -/** - * Axis range - */ -export type AxisRange = [number, number]; - -/** - * Domain range (normalized 0-1) - */ -export type DomainRange = [number, number]; diff --git a/src/types/traces/box.d.ts b/src/types/traces/box.d.ts deleted file mode 100644 index d11e3e7584f..00000000000 --- a/src/types/traces/box.d.ts +++ /dev/null @@ -1,42 +0,0 @@ -/** - * Box plot trace type - */ - -import type { PlotData } from '../core/data'; -import type { Color, MarkerSymbol } from '../lib/common'; - -export interface BoxPlotMarker { - outliercolor: Color; - symbol: MarkerSymbol; - opacity: number; - size: number; - color: Color; - line: Partial<{ - color: Color; - width: number; - outliercolor: Color; - outlierwidth: number; - }>; -} - -export interface ScatterSelectedMarker { - opacity?: number; - color?: Color; - size?: number; -} - -export interface BoxPlotData extends PlotData { - type: 'box'; - x0: any; - y0: any; - width: number; - quartilemethod: 'linear' | 'exclusive' | 'inclusive'; - boxpoints: 'all' | 'outliers' | 'suspectedoutliers' | false; - jitter: number; - pointpos: number; - marker: Partial; - offsetgroup: string; - alignmentgroup: string; - selected: ScatterSelectedMarker; - unselected: ScatterSelectedMarker; -} diff --git a/src/types/traces/candlestick.d.ts b/src/types/traces/candlestick.d.ts deleted file mode 100644 index 910818417fc..00000000000 --- a/src/types/traces/candlestick.d.ts +++ /dev/null @@ -1,51 +0,0 @@ -/** - * Candlestick trace type - */ - -import type { OhlcData } from './ohlc'; - -export interface CandlestickData { - type: 'candlestick'; - name: OhlcData['name']; - visible: OhlcData['visible']; - showlegend: OhlcData['showlegend']; - opacity: OhlcData['opacity']; - ids: OhlcData['ids']; - xperiod: OhlcData['xperiod']; - xperiod0: OhlcData['xperiod0']; - xperiodalignment: OhlcData['xperiodalignment']; - x: OhlcData['x']; - open: OhlcData['open']; - high: OhlcData['high']; - close: OhlcData['close']; - low: OhlcData['low']; - text: OhlcData['text']; - hovertext: OhlcData['hovertext']; - hoverinfo: OhlcData['hoverinfo']; - meta: OhlcData['meta']; - xaxis: OhlcData['xaxis']; - line: { width?: number | undefined }; - increasing: { - line?: - | { - color?: string | undefined; - width?: number | undefined; - } - | undefined; - }; - decreasing: { - line?: - | { - color?: string | undefined; - width?: number | undefined; - } - | undefined; - }; - hoverlabel: OhlcData['hoverlabel']; - /** - * Number between 0 and 1. - * Selects the width of the whiskers relative to the box's width. - * @default 0 - */ - whiskerwidth: number; -} diff --git a/src/types/traces/ohlc.d.ts b/src/types/traces/ohlc.d.ts deleted file mode 100644 index 6bf4b18e97a..00000000000 --- a/src/types/traces/ohlc.d.ts +++ /dev/null @@ -1,95 +0,0 @@ -/** - * OHLC trace type - */ - -import type { Calendar, Dash } from '../lib/common'; - -export type OhlcHoverInfo = - | 'x' - | 'y' - | 'z' - | 'text' - | 'name' - | 'x+y' - | 'x+z' - | 'x+text' - | 'x+name' - | 'y+z' - | 'y+text' - | 'y+name' - | 'z+text' - | 'z+name' - | 'x+y+z' - | 'x+y+text' - | 'x+y+name' - | 'y+z+text' - | 'y+z+name' - | 'z+text+name' - | 'all' - | 'none' - | 'skip'; - -export interface OhlcData { - type: 'ohlc'; - name: string; - visible: boolean | 'legendonly'; - showlegend: boolean; - legendgroup: string; - opacity: number; - ids: string[]; - x: string[]; - close: number[]; - open: number[]; - high: number[]; - low: number[]; - text: string | string[]; - hovertext: string | string[]; - hoverinfo: OhlcHoverInfo; - meta: any; - customdata: any[]; - xaxis: string; - yaxis: string; - xperiod: any; - xperiodalignment: 'start' | 'middle' | 'end'; - xperiod0: any; - line: { - width: number; - dash: Dash; - }; - selectedpoints: any; - increasing: { - line?: - | { - color?: string | undefined; - width?: number | undefined; - dash?: Dash | undefined; - } - | undefined; - }; - decreasing: { - line?: - | { - color?: string | undefined; - width?: number | undefined; - dash?: Dash | undefined; - } - | undefined; - }; - hoverlabel: { - bgcolor?: string | string[] | undefined; - bordercolor?: string | string[] | undefined; - font?: - | { - family?: string | string[] | undefined; - size?: number | undefined; - color?: string | string[] | undefined; - } - | undefined; - align?: 'left' | 'right' | 'auto' | undefined; - namelength?: number | number[] | undefined; - split?: boolean | undefined; - }; - tickwidth: number; - xcalendar: Calendar; - uirevision: any; -} diff --git a/src/types/traces/pie.d.ts b/src/types/traces/pie.d.ts deleted file mode 100644 index d49adf954e5..00000000000 --- a/src/types/traces/pie.d.ts +++ /dev/null @@ -1,126 +0,0 @@ -/** - * Pie chart trace type - */ - -import type { PlotData } from '../core/data'; -import type { DataTitle, HoverLabel } from '../core/layout'; -import type { Datum } from '../lib/common'; - -export type PieColor = string | number; -export type PieColors = Array; - -export interface PieFont { - family: string | string[]; - size: number | number[]; - color: PieColor | PieColors; -} - -export interface PieDataTitle extends Pick { - font: Partial; -} - -export type PieTextPosition = 'inside' | 'outside' | 'auto' | 'none'; - -export type PieHoverInfo = - | 'all' - | 'none' - | 'skip' - | 'label' - | 'text' - | 'value' - | 'percent' - | 'name' - | 'label+text' - | 'label+value' - | 'label+percent' - | 'label+name' - | 'text+value' - | 'text+percent' - | 'text+name' - | 'value+percent' - | 'value+name' - | 'percent+name' - | 'label+text+value' - | 'label+text+percent' - | 'label+text+name' - | 'label+value+percent' - | 'label+value+name' - | 'label+percent+name' - | 'text+value+percent' - | 'text+value+name' - | 'text+percent+name' - | 'value+percent+name' - | 'label+text+value+percent' - | 'label+text+value+name' - | 'label+text+percent+name' - | 'label+value+percent+name' - | 'text+value+percent+name'; - -export interface PieDomain { - x: number[]; - y: number[]; - row: number; - column: number; -} - -export interface PieLine { - color: PieColor | PieColors; - width: number | number[]; -} - -export interface PieMarker { - colors: PieColors; - line: Partial; -} - -export interface PieHoverLabel { - bgcolor: PieColor | PieColors; - bordercolor: PieColor | PieColors; - font: PieFont; - align: HoverLabel['align'] | Array; - namelength: number | number[]; -} - -export type PieInsideTextOrientation = 'horizontal' | 'radial' | 'tangential' | 'auto'; - -export interface PieData - extends Pick< - PlotData, - | 'name' - | 'visible' - | 'showlegend' - | 'legendgroup' - | 'opacity' - | 'ids' - | 'labels' - | 'hovertext' - | 'automargin' - | 'textinfo' - | 'direction' - | 'hole' - | 'rotation' - > { - type: 'pie'; - title: Partial; - values: Array; - dlabel: number; - label0: number; - pull: number | number[]; - text: Datum | Datum[]; - textposition: PieTextPosition | PieTextPosition[]; - texttemplate: string | string[]; - hoverinfo: PieHoverInfo; - hovertemplate: string | string[]; - meta: number | string; - customdata: Datum[]; - domain: Partial; - marker: Partial; - textfont: PieFont; - hoverlabel: Partial; - insidetextfont: PieFont; - insidetextorientation: PieInsideTextOrientation; - outsidetextfont: PieFont; - scalegroup: string; - sort: boolean; - uirevision: number | string; -} diff --git a/src/types/traces/sankey.d.ts b/src/types/traces/sankey.d.ts deleted file mode 100644 index 2972494d9de..00000000000 --- a/src/types/traces/sankey.d.ts +++ /dev/null @@ -1,108 +0,0 @@ -/** - * Sankey trace type - */ - -import type { HoverLabel } from '../core/layout'; -import type { Datum } from '../lib/common'; - -export type SankeyColor = string | number; -export type SankeyColors = Array; - -export interface SankeyFont { - family: string | string[]; - size: number | number[]; - color: SankeyColor | SankeyColors; -} - -export interface SankeyDataTitle { - font: Partial; - title: string; -} - -export type SankeyOrientation = 'v' | 'h'; - -export interface SankeyHoverLabel { - bgcolor: SankeyColor | SankeyColors; - bordercolor: SankeyColor | SankeyColors; - font: SankeyFont; - align: HoverLabel['align'] | Array; - namelength: number | number[]; -} - -export interface SankeyDomain { - row: number; - column: number; - x: number[]; - y: number[]; -} - -export interface SankeyNode { - color: SankeyColor[]; - customdata: Datum[]; - groups: SankeyNode[]; - hoverinfo: 'all' | 'none' | 'skip'; - hoverlabel: Partial; - hovertemplate: string | string[]; - label: Datum[]; - line: Partial<{ - color: SankeyColor; - width: number; - }>; - pad: number; - thickness: number; - x: number[]; - y: number[]; -} - -export interface SankeyColorscale { - cmax: number; - cmin: number; - colorscale: Array<[number, string]>; - label: string; - name: string; - templateitemname: string; -} - -export interface SankeyLink { - arrowlen: number; - color: SankeyColor | SankeyColor[]; - colorscale: Partial; - customdata: Datum[]; - hoverinfo: 'all' | 'none' | 'skip'; - hoverlabel: Partial; - hovertemplate: string | string[]; - hovercolor: SankeyColor | SankeyColor[]; - label: Datum[]; - line: Partial<{ - color: SankeyColor; - width: number; - }>; - source: number[]; - target: number[]; - value: number[]; -} - -export interface SankeyData { - type: 'sankey'; - name: string; - orientation: SankeyOrientation; - visible: boolean | 'legendonly'; - legend: string; - legendrank: number; - legendgrouptitle: Partial; - legendwidth: number; - ids: string[]; - hoverinfo: string; - meta: number | string; - customdata: Datum[]; - domain: Partial; - node: Partial; - link: Partial; - textfont: Partial; - selectpoints: string | number; - arrangement: 'snap' | 'perpendicular' | 'freeform' | 'fixed'; - hoverlabel: Partial; - valueformat: string; - valuesuffix: string; - uirevision: string | number; -} diff --git a/src/types/traces/violin.d.ts b/src/types/traces/violin.d.ts deleted file mode 100644 index dd2838fff79..00000000000 --- a/src/types/traces/violin.d.ts +++ /dev/null @@ -1,61 +0,0 @@ -/** - * Violin trace type - */ - -import type { Color } from '../lib/common'; -import type { BoxPlotData } from './box'; - -export interface ViolinData { - type: 'violin'; - - x: BoxPlotData['x']; - y: BoxPlotData['y']; - x0: BoxPlotData['x0']; - y0: BoxPlotData['y0']; - name: BoxPlotData['name']; - - opacity: number; - - orientation: BoxPlotData['orientation']; - bandwidth: number; - scalegroup: string; - scalemode: 'width' | 'count'; - spanmode: 'soft' | 'hard' | 'manual'; - span: any[]; - line: Partial<{ - color: Color; - width: number; - }>; - fillcolor: Color; - points: BoxPlotData['boxpoints']; - jitter: BoxPlotData['jitter']; - pointpos: BoxPlotData['pointpos']; - width: BoxPlotData['width']; - marker: BoxPlotData['marker']; - text: BoxPlotData['text']; - hovertext: BoxPlotData['hovertext']; - hovertemplate: BoxPlotData['hovertemplate']; - box: Partial<{ - visible: boolean; - width: number; - fillcolor: Color; - line: Partial<{ - color: Color; - width: number; - }>; - }>; - meanline: Partial<{ - visible: boolean; - color: Color; - width: number; - }>; - side: 'both' | 'positive' | 'negative'; - - offsetgroup: BoxPlotData['offsetgroup']; - alignmentgroup: BoxPlotData['alignmentgroup']; - - selected: BoxPlotData['selected']; - unselected: BoxPlotData['unselected']; - - hoveron: 'violins' | 'points' | 'kde' | 'all' | string; -} From b3a5d9e604a9ac4add3fd4b6e9462902794f5367 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Wed, 13 May 2026 06:58:07 -0600 Subject: [PATCH 056/241] Remove individual generated types --- src/types/generated/components/modebar.d.ts | 16 - src/types/generated/index.d.ts | 7 - src/types/generated/traces/image.d.ts | 25 -- src/types/lib/attributes.d.ts | 80 +---- tasks/generate_types.mjs | 311 -------------------- 5 files changed, 6 insertions(+), 433 deletions(-) delete mode 100644 src/types/generated/components/modebar.d.ts delete mode 100644 src/types/generated/index.d.ts delete mode 100644 src/types/generated/traces/image.d.ts delete mode 100644 tasks/generate_types.mjs diff --git a/src/types/generated/components/modebar.d.ts b/src/types/generated/components/modebar.d.ts deleted file mode 100644 index 03d75a687c1..00000000000 --- a/src/types/generated/components/modebar.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Generated from src/components/modebar/attributes.ts. - * Do not edit by hand — run `npm run gen:types`. - */ - -import type { Color } from '../../lib/common'; - -export interface ModeBar { - orientation?: 'v' | 'h'; - bgcolor?: Color; - color?: Color; - activecolor?: Color; - uirevision?: any; - add?: string | string[]; - remove?: string | string[]; -} diff --git a/src/types/generated/index.d.ts b/src/types/generated/index.d.ts deleted file mode 100644 index 7394cf84d5a..00000000000 --- a/src/types/generated/index.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Generated type aggregator — do not edit by hand. - * Run `npm run gen:types` to regenerate. - */ - -export type { ImageTrace } from './traces/image'; -export type { ModeBar } from './components/modebar'; diff --git a/src/types/generated/traces/image.d.ts b/src/types/generated/traces/image.d.ts deleted file mode 100644 index eb22a6bea09..00000000000 --- a/src/types/generated/traces/image.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Generated from src/traces/image/attributes.ts. - * Do not edit by hand — run `npm run gen:types`. - */ - -import type { Datum, TypedArray } from '../../lib/common'; - -export interface ImageTrace { - source?: string; - z?: Datum[] | TypedArray; - colormodel?: 'rgb' | 'rgba' | 'rgba256' | 'hsl' | 'hsla'; - zsmooth?: false | 'fast'; - zmin?: unknown[]; - zmax?: unknown[]; - x0?: any; - y0?: any; - dx?: number; - dy?: number; - text?: Datum[] | TypedArray; - hovertext?: Datum[] | TypedArray; - hoverinfo?: any; - hovertemplate?: any; - hovertemplatefallback?: any; - zorder?: any; -} diff --git a/src/types/lib/attributes.d.ts b/src/types/lib/attributes.d.ts index 312a8f61ecf..f95989ede38 100644 --- a/src/types/lib/attributes.d.ts +++ b/src/types/lib/attributes.d.ts @@ -1,17 +1,15 @@ /** - * Attribute schema → TypeScript type extraction + * Attribute schema validation types * - * Plotly's attribute files describe both the runtime metadata (valType, dflt, - * editType, description, ...) AND the public-facing type. This file provides: + * Plotly's attribute files describe runtime metadata (valType, dflt, + * editType, description, ...). This file provides: * * - AttrInfo / AttributeMap: structural shape that attribute objects must * satisfy (compile-time validation of attribute authoring) - * - AttrsToType: a mapped type that walks an attribute object and - * produces the corresponding TypeScript interface * * Author attribute files like: * - * export const attributes = { + * const attributes = { * orientation: { * valType: 'enumerated', * values: ['v', 'h'] as const, @@ -21,10 +19,10 @@ * bgcolor: { valType: 'color', editType: 'modebar' }, * } as const satisfies AttributeMap; * - * export type ModeBarAttributes = AttrsToType; + * export default attributes; */ -import type { Color, ColorScale, Datum, TypedArray } from './common'; +import type { ColorScale, Datum, TypedArray } from './common'; // --------------------------------------------------------------------------- // Attribute info — discriminated union by valType @@ -156,69 +154,3 @@ export interface AttributeMap { [key: string]: AttrInfo | AttributeMap | string | boolean | undefined; } -// --------------------------------------------------------------------------- -// Type-level conversion -// --------------------------------------------------------------------------- - -/** - * Wrap a type with `T | T[]` if `arrayOk: true` is set on the attribute. - */ -type ApplyArrayOk = A extends { arrayOk: true } ? V | V[] : V; - -/** - * Map a single leaf attribute (object with `valType`) to its TS value type. - */ -export type ValTypeToTS = A extends DataArrayAttr - ? Datum[] | TypedArray - : A extends NumberAttr - ? ApplyArrayOk - : A extends IntegerAttr - ? ApplyArrayOk - : A extends StringAttr - ? ApplyArrayOk - : A extends BooleanAttr - ? ApplyArrayOk - : A extends ColorAttr - ? ApplyArrayOk - : A extends ColorScaleAttr - ? ColorScale - : A extends ColorListAttr - ? Color[] - : A extends AngleAttr - ? ApplyArrayOk - : A extends SubplotIdAttr - ? string - : A extends EnumeratedAttr - ? ApplyArrayOk - : A extends FlagListAttr - ? ApplyArrayOk - : A extends InfoArrayAttr - ? unknown[] - : A extends AnyAttr - ? any - : never; - -/** - * Keys that are metadata about the container itself (not nested attributes). - * They are stripped during type extraction. - */ -type ReservedKey = 'editType' | 'role' | '_isLinkedToArray' | '_isSubplotObj' | '_arrayAttrRegexps' | '_deprecated'; - -/** - * Walk an AttributeMap and produce the corresponding TS interface shape. - * - Leaf entries (with `valType`) → their TS value type - * - Nested entries → recurse - * - Reserved meta-keys → omitted - * - * The `-readonly` modifier strips the readonly that `as const` introduces - * on the source attributes object. The attributes definition is genuinely - * static, but the derived user-facing type represents user-supplied input - * which should be mutable. - */ -export type AttrsToType = { - -readonly [K in keyof T as K extends ReservedKey ? never : K]?: T[K] extends AttrInfo - ? ValTypeToTS - : T[K] extends Record - ? AttrsToType - : never; -}; diff --git a/tasks/generate_types.mjs b/tasks/generate_types.mjs deleted file mode 100644 index f2dd748374c..00000000000 --- a/tasks/generate_types.mjs +++ /dev/null @@ -1,311 +0,0 @@ -#!/usr/bin/env node -/** - * Generate flat .d.ts files from attribute schemas. - * - * Walks src/** /attributes.ts, finds each `export type XAttributes = AttrsToType<...>`, - * resolves the mapped type to its concrete shape via the TypeScript Compiler API, - * and emits flat declaration files into src/types/generated/. - * - * Each attribute file declares the canonical public type name via a JSDoc marker: - * - * @generates ModeBar - * - * That tells the generator to emit `export type ModeBar = { ... }` in the - * generated index, replacing any hand-written definition. - */ - -import * as fs from 'fs'; -import * as path from 'path'; -import * as ts from 'typescript'; -import { fileURLToPath } from 'url'; - -const __filename = fileURLToPath(import.meta.url); -const __dirname = path.dirname(__filename); -const repoRoot = path.resolve(__dirname, '..'); - -const tsconfigPath = path.join(repoRoot, 'tsconfig.json'); -const generatedDir = path.join(repoRoot, 'src/types/generated'); - -// --------------------------------------------------------------------------- -// 1. Discover attribute files -// --------------------------------------------------------------------------- - -function findAttributeFiles(dir, results = []) { - const entries = fs.readdirSync(dir, { withFileTypes: true }); - for (const entry of entries) { - const full = path.join(dir, entry.name); - if (entry.isDirectory()) { - if (entry.name === 'node_modules' || entry.name === 'generated') continue; - findAttributeFiles(full, results); - } else if (entry.isFile() && entry.name === 'attributes.ts') { - results.push(full); - } - } - return results; -} - -const attributeFiles = findAttributeFiles(path.join(repoRoot, 'src')); -console.log(`Found ${attributeFiles.length} attribute file(s):`); -for (const f of attributeFiles) console.log(` ${path.relative(repoRoot, f)}`); - -if (attributeFiles.length === 0) { - console.log('No attribute files to process. Exiting.'); - process.exit(0); -} - -// --------------------------------------------------------------------------- -// 2. Build a TypeScript program over those files -// --------------------------------------------------------------------------- - -const tsconfigJson = ts.readConfigFile(tsconfigPath, ts.sys.readFile); -if (tsconfigJson.error) { - console.error('Failed to read tsconfig:', tsconfigJson.error); - process.exit(1); -} - -const parsed = ts.parseJsonConfigFileContent(tsconfigJson.config, ts.sys, repoRoot); - -const program = ts.createProgram(attributeFiles, { - ...parsed.options, - // Prevent the checker from adding redundant `| undefined` to optional - // properties when printing type nodes. The `?` modifier already implies - // `undefined`, so the extra union member is just noise in the output. - strictNullChecks: false, - noEmit: true -}); - -const checker = program.getTypeChecker(); - -// --------------------------------------------------------------------------- -// 3. For each file, find @generates marker + extracted type, emit flat .d.ts -// --------------------------------------------------------------------------- - -/** - * Extract the "@generates X" name from the leading JSDoc of the const - * declaration (or any leading comment in the file). - */ -function findGeneratesMarker(sourceFile) { - const text = sourceFile.getFullText(); - const m = text.match(/@generates\s+([A-Za-z_][A-Za-z0-9_]*)/); - return m ? m[1] : null; -} - -/** - * Find the exported type alias whose name ends in `Attributes`. - * Returns the type alias declaration node. - */ -function findExtractedTypeAlias(sourceFile) { - let result = null; - ts.forEachChild(sourceFile, (node) => { - if ( - ts.isTypeAliasDeclaration(node) && - node.modifiers && - node.modifiers.some((m) => m.kind === ts.SyntaxKind.ExportKeyword) && - node.name.text.endsWith('Attributes') - ) { - result = node; - } - }); - return result; -} - -/** - * Convert a resolved Type to a TypeNode using the checker, then print it - * using the TS printer. This produces real multi-line output and we - * post-process import("...") paths into relative references. - */ -const nodeBuilderFlags = - ts.NodeBuilderFlags.NoTruncation | - ts.NodeBuilderFlags.MultilineObjectLiterals | - ts.NodeBuilderFlags.WriteClassExpressionAsTypeLiteral | - ts.NodeBuilderFlags.UseFullyQualifiedType | - ts.NodeBuilderFlags.InTypeAlias; - -const printer = ts.createPrinter({ newLine: ts.NewLineKind.LineFeed, removeComments: false }); - -/** - * Rewrite absolute `import("/abs/path")` references in printed output to - * paths relative to the destination directory. - */ -function rewriteImports(text, outputDir) { - return text.replace(/import\("([^"]+)"\)/g, (_, absPath) => { - let rel = path.relative(outputDir, absPath); - if (!rel.startsWith('.')) rel = './' + rel; - rel = rel.replace(/\.d\.ts$|\.ts$/, ''); - return `import("${rel}")`; - }); -} - -/** - * Replace inline `import("path").Name` references with bare `Name` and - * return the list of `import type` statements needed at the top of the - * generated file. - * - * Inline import types are valid TS but noisier than a hoisted import, - * which is what a human-author would write. - */ -function hoistImportTypes(text, selfName) { - const matches = [...text.matchAll(/import\("([^"]+)"\)\.(\w+)/g)]; - if (matches.length === 0) return { text, importStatements: [] }; - - // Group { path → set of names } - const byPath = new Map(); - for (const [, importPath, name] of matches) { - // Don't import the type we're declaring — it would collide. - if (name === selfName) continue; - if (!byPath.has(importPath)) byPath.set(importPath, new Set()); - byPath.get(importPath).add(name); - } - - // Replace inline references with bare names. - const replaced = text.replace(/import\("([^"]+)"\)\.(\w+)/g, (_, importPath, name) => { - if (name === selfName) return `import("${importPath}").${name}`; - return name; - }); - - // Sort by path, names within each import sorted alphabetically. - const importStatements = [...byPath.entries()] - .sort(([a], [b]) => a.localeCompare(b)) - .map(([importPath, names]) => { - const sorted = [...names].sort(); - return `import type { ${sorted.join(', ')} } from '${importPath}';`; - }); - - return { text: replaced, importStatements }; -} - -const dummyFile = ts.createSourceFile('__d.ts', '', ts.ScriptTarget.Latest, false, ts.ScriptKind.TS); - -/** - * Convert a resolved Type into a printable declaration. If the type - * resolves to an object literal, emit it as an `interface` (so the - * canonical name appears in error messages and consumers can extend it - * via declaration merging). Otherwise — for unions, intersections, - * tuples, primitives — emit a `type` alias. - * - * Returns `{ kind: 'interface' | 'type', text }`. `text` is the body of - * the interface (without name/braces) or the RHS of the type alias. - */ -function formatDeclaration(type, enclosingDecl, outputDir) { - const typeNode = checker.typeToTypeNode(type, enclosingDecl, nodeBuilderFlags); - if (!typeNode) return { kind: 'type', text: 'unknown' }; - - if (ts.isTypeLiteralNode(typeNode)) { - // Emit each member separately so we can build an interface body. - const memberLines = typeNode.members.map((m) => - rewriteImports(printer.printNode(ts.EmitHint.Unspecified, m, dummyFile), outputDir) - ); - return { kind: 'interface', text: memberLines.join('\n') }; - } - - const text = rewriteImports(printer.printNode(ts.EmitHint.Unspecified, typeNode, dummyFile), outputDir); - return { kind: 'type', text }; -} - -/** - * Convert "ScatterAttributes" → "Scatter" or use the @generates marker. - */ -function deriveCanonicalName(typeName, marker) { - if (marker) return marker; - if (typeName.endsWith('Attributes')) return typeName.slice(0, -'Attributes'.length); - return typeName; -} - -const generated = []; // { canonicalName, typeName, sourceRel, body } - -for (const file of attributeFiles) { - const sourceFile = program.getSourceFile(file); - if (!sourceFile) { - console.warn(`Skipping ${file}: not in program`); - continue; - } - - const alias = findExtractedTypeAlias(sourceFile); - if (!alias) { - console.warn(` ⚠ ${path.relative(repoRoot, file)}: no exported "*Attributes" type alias`); - continue; - } - - const marker = findGeneratesMarker(sourceFile); - const canonical = deriveCanonicalName(alias.name.text, marker); - - const sym = checker.getSymbolAtLocation(alias.name); - if (!sym) { - console.warn(` ⚠ ${path.relative(repoRoot, file)}: could not resolve symbol`); - continue; - } - - // Determine where the .d.ts will land so we can compute relative imports. - const sourceRel = path.relative(repoRoot, file); - const outRel = sourceRel.replace(/^src\//, '').replace(/\/attributes\.ts$/, '.d.ts'); - const outPath = path.join(generatedDir, outRel); - const outputDir = path.dirname(outPath); - - const type = checker.getDeclaredTypeOfSymbol(sym); - const declaration = formatDeclaration(type, alias, outputDir); - - generated.push({ - canonicalName: canonical, - typeName: alias.name.text, - sourceRel, - outPath, - kind: declaration.kind, - body: declaration.text - }); - - console.log(` ✓ ${sourceRel} → ${canonical}`); -} - -// --------------------------------------------------------------------------- -// 4. Emit individual .d.ts files + aggregating index -// --------------------------------------------------------------------------- - -if (!fs.existsSync(generatedDir)) { - fs.mkdirSync(generatedDir, { recursive: true }); -} - -// Per-file generated declarations -for (const g of generated) { - fs.mkdirSync(path.dirname(g.outPath), { recursive: true }); - - const header = `/**\n * Generated from ${g.sourceRel}.\n * Do not edit by hand — run \`npm run gen:types\`.\n */\n\n`; - - const { text: hoistedBody, importStatements } = hoistImportTypes(g.body, g.canonicalName); - const importBlock = importStatements.length ? importStatements.join('\n') + '\n\n' : ''; - - let declaration; - if (g.kind === 'interface') { - const indented = hoistedBody - .split('\n') - .map((line) => (line.length ? ' ' + line : line)) - .join('\n'); - declaration = `export interface ${g.canonicalName} {\n${indented}\n}\n`; - } else { - declaration = `export type ${g.canonicalName} = ${hoistedBody};\n`; - } - - fs.writeFileSync(g.outPath, header + importBlock + declaration); -} - -// Aggregating index that re-exports each canonical type -const indexPath = path.join(generatedDir, 'index.d.ts'); -const indexLines = [ - '/**', - ' * Generated type aggregator — do not edit by hand.', - ' * Run `npm run gen:types` to regenerate.', - ' */', - '' -]; - -for (const g of generated.sort((a, b) => a.canonicalName.localeCompare(b.canonicalName))) { - const rel = g.sourceRel.replace(/^src\//, './').replace(/\/attributes\.ts$/, ''); - // Use `export type` re-export form — works for both interface and type alias, - // and signals to consumers that these are type-only re-exports. - indexLines.push(`export type { ${g.canonicalName} } from '${rel}';`); -} -indexLines.push(''); - -fs.writeFileSync(indexPath, indexLines.join('\n')); - -console.log(`\nWrote ${generated.length} generated type(s) to ${path.relative(repoRoot, generatedDir)}/`); -console.log(`Aggregator: ${path.relative(repoRoot, indexPath)}`); From a274c867fd7e24aed71620c2b34b06b5d6bf2cea Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Thu, 14 May 2026 14:08:47 -0600 Subject: [PATCH 057/241] Remove type exports --- src/components/modebar/attributes.ts | 13 +++++-------- src/traces/image/attributes.ts | 29 +++++++++++++--------------- 2 files changed, 18 insertions(+), 24 deletions(-) diff --git a/src/components/modebar/attributes.ts b/src/components/modebar/attributes.ts index 9a786f7fc4c..c99e28230ba 100644 --- a/src/components/modebar/attributes.ts +++ b/src/components/modebar/attributes.ts @@ -1,10 +1,9 @@ -'use strict'; - -import type { AttributeMap, AttrsToType } from '../../types/lib/attributes'; +import type { AttributeMap } from '../../types/lib/attributes'; import constants from './constants'; /** - * @generates ModeBar + * Modebar layout attributes. + * Consumer-facing types are generated from the schema by generate_schema_types.mjs. */ const attributes = { editType: 'modebar', @@ -50,7 +49,7 @@ const attributes = { 'Please note that these buttons will only be shown if they are', 'compatible with all trace types used in a graph.', 'Similar to `config.modeBarButtonsToAdd` option.', - 'This may include *' + constants.backButtons.join('*, *') + '*.' + `This may include *${constants.backButtons.join('*, *')}*.` ].join(' ') }, remove: { @@ -61,11 +60,9 @@ const attributes = { description: [ 'Determines which predefined modebar buttons to remove.', 'Similar to `config.modeBarButtonsToRemove` option.', - 'This may include *' + constants.foreButtons.join('*, *') + '*.' + `This may include *${constants.foreButtons.join('*, *')}*.` ].join(' ') } } as const satisfies AttributeMap; -export type ModeBarAttributes = AttrsToType; - export default attributes; diff --git a/src/traces/image/attributes.ts b/src/traces/image/attributes.ts index 12e249912df..9000c72b49f 100644 --- a/src/traces/image/attributes.ts +++ b/src/traces/image/attributes.ts @@ -1,24 +1,23 @@ -'use strict'; +import type { AttributeMap } from '../../types/lib/attributes'; -import type { AttributeMap, AttrsToType } from '../../types/lib/attributes'; - -const baseAttrs = require('../../plots/attributes'); -const { zorder } = require('../scatter/attributes'); -const { hovertemplateAttrs, templatefallbackAttrs } = require('../../plots/template_attributes'); -const extendFlat = require('../../lib/extend').extendFlat; -const { colormodel } = require('./constants'); +import baseAttrs from '../../plots/attributes'; +import { zorder } from '../scatter/attributes'; +import { hovertemplateAttrs, templatefallbackAttrs } from '../../plots/template_attributes'; +import { extendFlat } from '../../lib/extend'; +import { colormodel } from './constants'; const cm = ['rgb', 'rgba', 'rgba256', 'hsl', 'hsla'] as const; const zminDesc: string[] = []; const zmaxDesc: string[] = []; -for (let i = 0; i < cm.length; i++) { - const cr = colormodel[cm[i]]; - zminDesc.push('For the `' + cm[i] + '` colormodel, it is [' + (cr.zminDflt || cr.min).join(', ') + '].'); - zmaxDesc.push('For the `' + cm[i] + '` colormodel, it is [' + (cr.zmaxDflt || cr.max).join(', ') + '].'); +for (const name of cm) { + const cr: any = colormodel[name]; + zminDesc.push(`For the \`${name}\` colormodel, it is [${(cr.zminDflt || cr.min).join(', ')}].`); + zmaxDesc.push(`For the \`${name}\` colormodel, it is [${(cr.zmaxDflt || cr.max).join(', ')}].`); } /** - * @generates ImageTrace + * Image trace attributes. + * Consumer-facing types are generated from the schema by generate_schema_types.mjs. */ const attributes = { source: { @@ -138,9 +137,7 @@ const attributes = { hovertemplate: hovertemplateAttrs({}, { keys: ['z', 'color', 'colormodel'] }), hovertemplatefallback: templatefallbackAttrs(), - zorder + zorder: zorder as any } as const satisfies AttributeMap; -export type ImageTraceAttributes = AttrsToType; - export default attributes; From 365334889557cc7b0a7de367cab775c4d4953945 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Thu, 14 May 2026 14:30:45 -0600 Subject: [PATCH 058/241] Add schema based type generator, types --- src/types/generated/schema.d.ts | 9112 +++++++++++++++++++++++++++++++ tasks/generate_schema_types.mjs | 1002 ++++ 2 files changed, 10114 insertions(+) create mode 100644 src/types/generated/schema.d.ts create mode 100644 tasks/generate_schema_types.mjs diff --git a/src/types/generated/schema.d.ts b/src/types/generated/schema.d.ts new file mode 100644 index 00000000000..e7d7f9162ee --- /dev/null +++ b/src/types/generated/schema.d.ts @@ -0,0 +1,9112 @@ +/** + * Generated from plot-schema.json by tasks/generate_schema_types.mjs. + * Do not edit by hand — run `npm run schema` to regenerate. + */ + +import type { Calendar, Color, ColorScale, Dash, Datum, MarkerSymbol, TypedArray } from '../lib/common'; + +// --------------------------------------------------------------------------- +// Shared interfaces — extracted from repeated attribute subtrees +// --------------------------------------------------------------------------- + +export interface AutoRangeOptions { + /** Clip autorange maximum if it goes beyond this value. Has no effect when `autorangeoptions.maxallowed` is provided. */ + clipmax?: any; + /** Clip autorange minimum if it goes beyond this value. Has no effect when `autorangeoptions.minallowed` is provided. */ + clipmin?: any; + /** Ensure this value is included in autorange. */ + include?: any; + /** Use this value exactly as autorange maximum. */ + maxallowed?: any; + /** Use this value exactly as autorange minimum. */ + minallowed?: any; +} + +export interface Domain { + /** If there is a layout grid, use the domain for this column in the grid for this funnelarea trace . */ + column?: number; + /** If there is a layout grid, use the domain for this row in the grid for this funnelarea trace . */ + row?: number; + /** Sets the horizontal domain of this funnelarea trace (in plot fraction). */ + x?: [number, number]; + /** Sets the vertical domain of this funnelarea trace (in plot fraction). */ + y?: [number, number]; +} + +export interface ErrorY { + /** Sets the data corresponding the length of each error bar. Values are plotted relative to the underlying data. */ + array?: Datum[] | TypedArray; + /** Sets the data corresponding the length of each error bar in the bottom (left) direction for vertical (horizontal) bars Values are plotted relative to the underlying data. */ + arrayminus?: Datum[] | TypedArray; + /** Sets the stroke color of the error bars. */ + color?: Color; + /** Determines whether or not the error bars have the same length in both direction (top/bottom for vertical bars, left/right for horizontal bars. */ + symmetric?: boolean; + /** Sets the thickness (in px) of the error bars. */ + thickness?: number; + traceref?: number; + tracerefminus?: number; + /** Determines the rule used to generate the error bars. If *constant*, the bar lengths are of a constant value. Set this constant in `value`. If *percent*, the bar lengths correspond to a percentage of underlying data. Set this percentage in `value`. If *sqrt*, the bar lengths correspond to the square of the underlying data. If *data*, the bar lengths are set with data set `array`. */ + type?: 'percent' | 'constant' | 'sqrt' | 'data'; + /** Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars. */ + value?: number; + /** Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars in the bottom (left) direction for vertical (horizontal) bars */ + valueminus?: number; + /** Determines whether or not this set of error bars is visible. */ + visible?: boolean; + /** Sets the width (in px) of the cross-bar at both ends of the error bars. */ + width?: number; +} + +export interface Font { + color?: Color; + /** HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available. */ + family?: string; + /** Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc. */ + lineposition?: 'under' | 'over' | 'through' | 'none' | (string & {}); + /** Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options. */ + shadow?: string; + size?: number; + /** Sets whether a font should be styled with a normal or italic face from its family. */ + style?: 'normal' | 'italic'; + /** Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized. */ + textcase?: 'normal' | 'word caps' | 'upper' | 'lower'; + /** Sets the variant of the font. */ + variant?: 'normal' | 'small-caps' | 'all-small-caps' | 'all-petite-caps' | 'petite-caps' | 'unicase'; + /** Sets the weight (or boldness) of the font. */ + weight?: number | 'normal' | 'bold'; +} + +export interface FontArray { + color?: Color | Color[]; + /** HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available. */ + family?: string | string[]; + /** Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc. */ + lineposition?: 'under' | 'over' | 'through' | 'none' | (string & {}) | ('under' | 'over' | 'through' | 'none' | (string & {}))[]; + /** Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options. */ + shadow?: string | string[]; + size?: number | number[]; + /** Sets whether a font should be styled with a normal or italic face from its family. */ + style?: 'normal' | 'italic' | ('normal' | 'italic')[]; + /** Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized. */ + textcase?: 'normal' | 'word caps' | 'upper' | 'lower' | ('normal' | 'word caps' | 'upper' | 'lower')[]; + /** Sets the variant of the font. */ + variant?: 'normal' | 'small-caps' | 'all-small-caps' | 'all-petite-caps' | 'petite-caps' | 'unicase' | ('normal' | 'small-caps' | 'all-small-caps' | 'all-petite-caps' | 'petite-caps' | 'unicase')[]; + /** Sets the weight (or boldness) of the font. */ + weight?: number | 'normal' | 'bold' | (number | 'normal' | 'bold')[]; +} + +export interface Lighting { + /** Ambient light increases overall color visibility but can wash out the image. */ + ambient?: number; + /** Represents the extent that incident rays are reflected in a range of angles. */ + diffuse?: number; + /** Epsilon for face normals calculation avoids math issues arising from degenerate geometry. */ + facenormalsepsilon?: number; + /** Represents the reflectance as a dependency of the viewing angle; e.g. paper is reflective when viewing it from the edge of the paper (almost 90 degrees), causing shine. */ + fresnel?: number; + /** Alters specular reflection; the rougher the surface, the wider and less contrasty the shine. */ + roughness?: number; + /** Represents the level that incident rays are reflected in a single direction, causing shine. */ + specular?: number; + /** Epsilon for vertex normals calculation avoids math issues arising from degenerate geometry. */ + vertexnormalsepsilon?: number; +} + +export interface Line { + /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. Has an effect only if in `marker.line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + autocolorscale?: boolean; + /** Determines whether or not the color domain is computed with respect to the input data (here in `marker.line.color`) or the bounds set in `marker.line.cmin` and `marker.line.cmax` Has an effect only if in `marker.line.color` is set to a numerical array. Defaults to `false` when `marker.line.cmin` and `marker.line.cmax` are set by the user. */ + cauto?: boolean; + /** Sets the upper bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmin` must be set as well. */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `marker.line.cmin` and/or `marker.line.cmax` to be equidistant to this point. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color`. Has no effect when `marker.line.cauto` is `false`. */ + cmid?: number; + /** Sets the lower bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmax` must be set as well. */ + cmin?: number; + /** Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set. */ + color?: Color | Color[]; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + /** Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + colorscale?: ColorScale; + /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + dash?: Dash | Dash[]; + /** Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color. */ + reversescale?: boolean; + /** Sets the width (in px) of the lines bounding the marker points. */ + width?: number | number[]; +} + +export interface Pattern { + /** When there is no colorscale sets the color of background pattern fill. Defaults to a `marker.color` background when `fillmode` is *overlay*. Otherwise, defaults to a transparent background. */ + bgcolor?: Color | Color[]; + /** When there is no colorscale sets the color of foreground pattern fill. Defaults to a `marker.color` background when `fillmode` is *replace*. Otherwise, defaults to dark grey or white to increase contrast with the `bgcolor`. */ + fgcolor?: Color | Color[]; + /** Sets the opacity of the foreground pattern fill. Defaults to a 0.5 when `fillmode` is *overlay*. Otherwise, defaults to 1. */ + fgopacity?: number; + /** Determines whether `marker.color` should be used as a default to `bgcolor` or a `fgcolor`. */ + fillmode?: 'replace' | 'overlay'; + /** Sets a custom path for pattern fill. Use with no `shape` or `solidity`, provide an SVG path string for the regions of the square from (0,0) to (`size`,`size`) to color. */ + path?: string | string[]; + /** Sets the shape of the pattern fill. By default, no pattern is used for filling the area. */ + shape?: '' | '/' | '\\' | 'x' | '-' | '|' | '+' | '.' | ('' | '/' | '\\' | 'x' | '-' | '|' | '+' | '.')[]; + /** Sets the size of unit squares of the pattern fill in pixels, which corresponds to the interval of repetition of the pattern. */ + size?: number | number[]; + /** Sets the solidity of the pattern fill. Solidity is roughly the fraction of the area filled by the pattern. Solidity of 0 shows only the background color without pattern and solidty of 1 shows only the foreground color without pattern. */ + solidity?: number | number[]; +} + +export interface Stream { + /** Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot. */ + maxpoints?: number; + /** The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details. */ + token?: string; +} + +export interface TickFormatStops { + /** range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null* */ + dtickrange?: [any, any]; + /** Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`. */ + enabled?: boolean; + /** When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template. */ + name?: string; + /** Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`. */ + templateitemname?: string; + /** string - dtickformat for described zoom level, the same as *tickformat* */ + value?: string; +} + +export interface ColorBar { + /** Sets the color of padded area. */ + bgcolor?: Color; + /** Sets the axis line color. */ + bordercolor?: Color; + /** Sets the width (in px) or the border enclosing this color bar. */ + borderwidth?: number; + /** Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48* */ + dtick?: any; + /** Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from "femto" f (10^-15) to "tera" T (10^12). *SI extended* covers instead the full SI range from "quecto" q (10^-30) to "quetta" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation. */ + exponentformat?: 'none' | 'e' | 'E' | 'power' | 'SI' | 'B' | 'SI extended'; + /** Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. */ + labelalias?: any; + /** Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends. */ + len?: number; + /** Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value. */ + lenmode?: 'fraction' | 'pixels'; + /** Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*. */ + minexponent?: number; + /** Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. */ + nticks?: number; + /** Sets the orientation of the colorbar. */ + orientation?: 'h' | 'v'; + /** Sets the axis line color. */ + outlinecolor?: Color; + /** Sets the width (in px) of the axis line. */ + outlinewidth?: number; + /** If "true", even 4-digit integers are separated */ + separatethousands?: boolean; + /** If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. */ + showexponent?: 'all' | 'first' | 'last' | 'none'; + /** Determines whether or not the tick labels are drawn. */ + showticklabels?: boolean; + /** If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. */ + showtickprefix?: 'all' | 'first' | 'last' | 'none'; + /** Same as `showtickprefix` but for tick suffixes. */ + showticksuffix?: 'all' | 'first' | 'last' | 'none'; + /** Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels. */ + thickness?: number; + /** Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value. */ + thicknessmode?: 'fraction' | 'pixels'; + /** Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears. */ + tick0?: any; + /** Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. */ + tickangle?: number | 'auto'; + /** Sets the tick color. */ + tickcolor?: Color; + /** Sets the color bar's tick label font */ + tickfont?: Font; + /** Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + tickformat?: string; + tickformatstops?: TickFormatStops[]; + /** Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*. */ + ticklabeloverflow?: 'allow' | 'hide past div' | 'hide past domain'; + /** Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*. */ + ticklabelposition?: 'outside' | 'inside' | 'outside top' | 'inside top' | 'outside left' | 'inside left' | 'outside right' | 'inside right' | 'outside bottom' | 'inside bottom'; + /** Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*. */ + ticklabelstep?: number; + /** Sets the tick length (in px). */ + ticklen?: number; + /** Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). */ + tickmode?: 'auto' | 'linear' | 'array'; + /** Sets a tick label prefix. */ + tickprefix?: string; + /** Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines. */ + ticks?: 'outside' | 'inside' | ''; + /** Sets a tick label suffix. */ + ticksuffix?: string; + /** Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`. */ + ticktext?: Datum[] | TypedArray; + /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ + tickvals?: Datum[] | TypedArray; + /** Sets the tick width (in px). */ + tickwidth?: number; + title?: { + /** Sets this color bar's title font. */ + font?: Font; + /** Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*. */ + side?: 'right' | 'top' | 'bottom'; + /** Sets the title of the color bar. */ + text?: string; + }; + /** Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*. */ + x?: number; + /** Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*. */ + xanchor?: 'left' | 'center' | 'right'; + /** Sets the amount of padding (in px) along the x direction. */ + xpad?: number; + /** Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only. */ + xref?: 'container' | 'paper'; + /** Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*. */ + y?: number; + /** Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*. */ + yanchor?: 'top' | 'middle' | 'bottom'; + /** Sets the amount of padding (in px) along the y direction. */ + ypad?: number; + /** Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only. */ + yref?: 'container' | 'paper'; +} + +export interface HoverLabel { + /** Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines */ + align?: 'left' | 'right' | 'auto' | ('left' | 'right' | 'auto')[]; + /** Sets the background color of the hover labels for this trace */ + bgcolor?: Color | Color[]; + /** Sets the border color of the hover labels for this trace. */ + bordercolor?: Color | Color[]; + /** Sets the font used in hover labels. */ + font?: FontArray; + /** Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis. */ + namelength?: number | number[]; + /** Sets whether or not to show the hover label arrow/triangle pointing to the data point. */ + showarrow?: boolean; +} + +export interface LegendGroupTitle { + /** Sets this legend group's title font. */ + font?: Font; + /** Sets the title of the legend group. */ + text?: string; +} + +export interface Marker { + /** Sets the marker angle in respect to `angleref`. */ + angle?: number | 'auto' | (number | 'auto')[]; + /** Sets the reference for marker angle. With *previous*, angle 0 points along the line from the previous point to this one. With *up*, angle 0 points toward the top of the screen. */ + angleref?: 'previous' | 'up'; + /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + autocolorscale?: boolean; + /** Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. */ + cauto?: boolean; + /** Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well. */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`. */ + cmid?: number; + /** Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well. */ + cmin?: number; + /** Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set. */ + color?: Color | Color[]; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + colorscale?: ColorScale; + gradient?: { + /** Sets the final color of the gradient fill: the center color for radial, the right for horizontal, or the bottom for vertical. */ + color?: Color | Color[]; + /** Sets the type of gradient used to fill the markers */ + type?: 'radial' | 'horizontal' | 'vertical' | 'none' | ('radial' | 'horizontal' | 'vertical' | 'none')[]; + }; + line?: Line; + /** Sets a maximum number of points to be drawn on the graph. *0* corresponds to no limit. */ + maxdisplayed?: number; + /** Sets the marker opacity. */ + opacity?: number | number[]; + /** Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. */ + reversescale?: boolean; + /** Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array. */ + showscale?: boolean; + /** Sets the marker size (in px). */ + size?: number | number[]; + /** Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points. */ + sizemin?: number; + /** Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels. */ + sizemode?: 'diameter' | 'area'; + /** Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`. */ + sizeref?: number; + /** Moves the marker away from the data point in the direction of `angle` (in px). This can be useful for example if you have another marker at this location and you want to point an arrowhead marker at it. */ + standoff?: number | number[]; + /** Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name. */ + symbol?: 0 | '0' | 'circle' | 100 | '100' | 'circle-open' | 200 | '200' | 'circle-dot' | 300 | '300' | 'circle-open-dot' | 1 | '1' | 'square' | 101 | '101' | 'square-open' | 201 | '201' | 'square-dot' | 301 | '301' | 'square-open-dot' | 2 | '2' | 'diamond' | 102 | '102' | 'diamond-open' | 202 | '202' | 'diamond-dot' | 302 | '302' | 'diamond-open-dot' | 3 | '3' | 'cross' | 103 | '103' | 'cross-open' | 203 | '203' | 'cross-dot' | 303 | '303' | 'cross-open-dot' | 4 | '4' | 'x' | 104 | '104' | 'x-open' | 204 | '204' | 'x-dot' | 304 | '304' | 'x-open-dot' | 5 | '5' | 'triangle-up' | 105 | '105' | 'triangle-up-open' | 205 | '205' | 'triangle-up-dot' | 305 | '305' | 'triangle-up-open-dot' | 6 | '6' | 'triangle-down' | 106 | '106' | 'triangle-down-open' | 206 | '206' | 'triangle-down-dot' | 306 | '306' | 'triangle-down-open-dot' | 7 | '7' | 'triangle-left' | 107 | '107' | 'triangle-left-open' | 207 | '207' | 'triangle-left-dot' | 307 | '307' | 'triangle-left-open-dot' | 8 | '8' | 'triangle-right' | 108 | '108' | 'triangle-right-open' | 208 | '208' | 'triangle-right-dot' | 308 | '308' | 'triangle-right-open-dot' | 9 | '9' | 'triangle-ne' | 109 | '109' | 'triangle-ne-open' | 209 | '209' | 'triangle-ne-dot' | 309 | '309' | 'triangle-ne-open-dot' | 10 | '10' | 'triangle-se' | 110 | '110' | 'triangle-se-open' | 210 | '210' | 'triangle-se-dot' | 310 | '310' | 'triangle-se-open-dot' | 11 | '11' | 'triangle-sw' | 111 | '111' | 'triangle-sw-open' | 211 | '211' | 'triangle-sw-dot' | 311 | '311' | 'triangle-sw-open-dot' | 12 | '12' | 'triangle-nw' | 112 | '112' | 'triangle-nw-open' | 212 | '212' | 'triangle-nw-dot' | 312 | '312' | 'triangle-nw-open-dot' | 13 | '13' | 'pentagon' | 113 | '113' | 'pentagon-open' | 213 | '213' | 'pentagon-dot' | 313 | '313' | 'pentagon-open-dot' | 14 | '14' | 'hexagon' | 114 | '114' | 'hexagon-open' | 214 | '214' | 'hexagon-dot' | 314 | '314' | 'hexagon-open-dot' | 15 | '15' | 'hexagon2' | 115 | '115' | 'hexagon2-open' | 215 | '215' | 'hexagon2-dot' | 315 | '315' | 'hexagon2-open-dot' | 16 | '16' | 'octagon' | 116 | '116' | 'octagon-open' | 216 | '216' | 'octagon-dot' | 316 | '316' | 'octagon-open-dot' | 17 | '17' | 'star' | 117 | '117' | 'star-open' | 217 | '217' | 'star-dot' | 317 | '317' | 'star-open-dot' | 18 | '18' | 'hexagram' | 118 | '118' | 'hexagram-open' | 218 | '218' | 'hexagram-dot' | 318 | '318' | 'hexagram-open-dot' | 19 | '19' | 'star-triangle-up' | 119 | '119' | 'star-triangle-up-open' | 219 | '219' | 'star-triangle-up-dot' | 319 | '319' | 'star-triangle-up-open-dot' | 20 | '20' | 'star-triangle-down' | 120 | '120' | 'star-triangle-down-open' | 220 | '220' | 'star-triangle-down-dot' | 320 | '320' | 'star-triangle-down-open-dot' | 21 | '21' | 'star-square' | 121 | '121' | 'star-square-open' | 221 | '221' | 'star-square-dot' | 321 | '321' | 'star-square-open-dot' | 22 | '22' | 'star-diamond' | 122 | '122' | 'star-diamond-open' | 222 | '222' | 'star-diamond-dot' | 322 | '322' | 'star-diamond-open-dot' | 23 | '23' | 'diamond-tall' | 123 | '123' | 'diamond-tall-open' | 223 | '223' | 'diamond-tall-dot' | 323 | '323' | 'diamond-tall-open-dot' | 24 | '24' | 'diamond-wide' | 124 | '124' | 'diamond-wide-open' | 224 | '224' | 'diamond-wide-dot' | 324 | '324' | 'diamond-wide-open-dot' | 25 | '25' | 'hourglass' | 125 | '125' | 'hourglass-open' | 26 | '26' | 'bowtie' | 126 | '126' | 'bowtie-open' | 27 | '27' | 'circle-cross' | 127 | '127' | 'circle-cross-open' | 28 | '28' | 'circle-x' | 128 | '128' | 'circle-x-open' | 29 | '29' | 'square-cross' | 129 | '129' | 'square-cross-open' | 30 | '30' | 'square-x' | 130 | '130' | 'square-x-open' | 31 | '31' | 'diamond-cross' | 131 | '131' | 'diamond-cross-open' | 32 | '32' | 'diamond-x' | 132 | '132' | 'diamond-x-open' | 33 | '33' | 'cross-thin' | 133 | '133' | 'cross-thin-open' | 34 | '34' | 'x-thin' | 134 | '134' | 'x-thin-open' | 35 | '35' | 'asterisk' | 135 | '135' | 'asterisk-open' | 36 | '36' | 'hash' | 136 | '136' | 'hash-open' | 236 | '236' | 'hash-dot' | 336 | '336' | 'hash-open-dot' | 37 | '37' | 'y-up' | 137 | '137' | 'y-up-open' | 38 | '38' | 'y-down' | 138 | '138' | 'y-down-open' | 39 | '39' | 'y-left' | 139 | '139' | 'y-left-open' | 40 | '40' | 'y-right' | 140 | '140' | 'y-right-open' | 41 | '41' | 'line-ew' | 141 | '141' | 'line-ew-open' | 42 | '42' | 'line-ns' | 142 | '142' | 'line-ns-open' | 43 | '43' | 'line-ne' | 143 | '143' | 'line-ne-open' | 44 | '44' | 'line-nw' | 144 | '144' | 'line-nw-open' | 45 | '45' | 'arrow-up' | 145 | '145' | 'arrow-up-open' | 46 | '46' | 'arrow-down' | 146 | '146' | 'arrow-down-open' | 47 | '47' | 'arrow-left' | 147 | '147' | 'arrow-left-open' | 48 | '48' | 'arrow-right' | 148 | '148' | 'arrow-right-open' | 49 | '49' | 'arrow-bar-up' | 149 | '149' | 'arrow-bar-up-open' | 50 | '50' | 'arrow-bar-down' | 150 | '150' | 'arrow-bar-down-open' | 51 | '51' | 'arrow-bar-left' | 151 | '151' | 'arrow-bar-left-open' | 52 | '52' | 'arrow-bar-right' | 152 | '152' | 'arrow-bar-right-open' | 53 | '53' | 'arrow' | 153 | '153' | 'arrow-open' | 54 | '54' | 'arrow-wide' | 154 | '154' | 'arrow-wide-open' | (0 | '0' | 'circle' | 100 | '100' | 'circle-open' | 200 | '200' | 'circle-dot' | 300 | '300' | 'circle-open-dot' | 1 | '1' | 'square' | 101 | '101' | 'square-open' | 201 | '201' | 'square-dot' | 301 | '301' | 'square-open-dot' | 2 | '2' | 'diamond' | 102 | '102' | 'diamond-open' | 202 | '202' | 'diamond-dot' | 302 | '302' | 'diamond-open-dot' | 3 | '3' | 'cross' | 103 | '103' | 'cross-open' | 203 | '203' | 'cross-dot' | 303 | '303' | 'cross-open-dot' | 4 | '4' | 'x' | 104 | '104' | 'x-open' | 204 | '204' | 'x-dot' | 304 | '304' | 'x-open-dot' | 5 | '5' | 'triangle-up' | 105 | '105' | 'triangle-up-open' | 205 | '205' | 'triangle-up-dot' | 305 | '305' | 'triangle-up-open-dot' | 6 | '6' | 'triangle-down' | 106 | '106' | 'triangle-down-open' | 206 | '206' | 'triangle-down-dot' | 306 | '306' | 'triangle-down-open-dot' | 7 | '7' | 'triangle-left' | 107 | '107' | 'triangle-left-open' | 207 | '207' | 'triangle-left-dot' | 307 | '307' | 'triangle-left-open-dot' | 8 | '8' | 'triangle-right' | 108 | '108' | 'triangle-right-open' | 208 | '208' | 'triangle-right-dot' | 308 | '308' | 'triangle-right-open-dot' | 9 | '9' | 'triangle-ne' | 109 | '109' | 'triangle-ne-open' | 209 | '209' | 'triangle-ne-dot' | 309 | '309' | 'triangle-ne-open-dot' | 10 | '10' | 'triangle-se' | 110 | '110' | 'triangle-se-open' | 210 | '210' | 'triangle-se-dot' | 310 | '310' | 'triangle-se-open-dot' | 11 | '11' | 'triangle-sw' | 111 | '111' | 'triangle-sw-open' | 211 | '211' | 'triangle-sw-dot' | 311 | '311' | 'triangle-sw-open-dot' | 12 | '12' | 'triangle-nw' | 112 | '112' | 'triangle-nw-open' | 212 | '212' | 'triangle-nw-dot' | 312 | '312' | 'triangle-nw-open-dot' | 13 | '13' | 'pentagon' | 113 | '113' | 'pentagon-open' | 213 | '213' | 'pentagon-dot' | 313 | '313' | 'pentagon-open-dot' | 14 | '14' | 'hexagon' | 114 | '114' | 'hexagon-open' | 214 | '214' | 'hexagon-dot' | 314 | '314' | 'hexagon-open-dot' | 15 | '15' | 'hexagon2' | 115 | '115' | 'hexagon2-open' | 215 | '215' | 'hexagon2-dot' | 315 | '315' | 'hexagon2-open-dot' | 16 | '16' | 'octagon' | 116 | '116' | 'octagon-open' | 216 | '216' | 'octagon-dot' | 316 | '316' | 'octagon-open-dot' | 17 | '17' | 'star' | 117 | '117' | 'star-open' | 217 | '217' | 'star-dot' | 317 | '317' | 'star-open-dot' | 18 | '18' | 'hexagram' | 118 | '118' | 'hexagram-open' | 218 | '218' | 'hexagram-dot' | 318 | '318' | 'hexagram-open-dot' | 19 | '19' | 'star-triangle-up' | 119 | '119' | 'star-triangle-up-open' | 219 | '219' | 'star-triangle-up-dot' | 319 | '319' | 'star-triangle-up-open-dot' | 20 | '20' | 'star-triangle-down' | 120 | '120' | 'star-triangle-down-open' | 220 | '220' | 'star-triangle-down-dot' | 320 | '320' | 'star-triangle-down-open-dot' | 21 | '21' | 'star-square' | 121 | '121' | 'star-square-open' | 221 | '221' | 'star-square-dot' | 321 | '321' | 'star-square-open-dot' | 22 | '22' | 'star-diamond' | 122 | '122' | 'star-diamond-open' | 222 | '222' | 'star-diamond-dot' | 322 | '322' | 'star-diamond-open-dot' | 23 | '23' | 'diamond-tall' | 123 | '123' | 'diamond-tall-open' | 223 | '223' | 'diamond-tall-dot' | 323 | '323' | 'diamond-tall-open-dot' | 24 | '24' | 'diamond-wide' | 124 | '124' | 'diamond-wide-open' | 224 | '224' | 'diamond-wide-dot' | 324 | '324' | 'diamond-wide-open-dot' | 25 | '25' | 'hourglass' | 125 | '125' | 'hourglass-open' | 26 | '26' | 'bowtie' | 126 | '126' | 'bowtie-open' | 27 | '27' | 'circle-cross' | 127 | '127' | 'circle-cross-open' | 28 | '28' | 'circle-x' | 128 | '128' | 'circle-x-open' | 29 | '29' | 'square-cross' | 129 | '129' | 'square-cross-open' | 30 | '30' | 'square-x' | 130 | '130' | 'square-x-open' | 31 | '31' | 'diamond-cross' | 131 | '131' | 'diamond-cross-open' | 32 | '32' | 'diamond-x' | 132 | '132' | 'diamond-x-open' | 33 | '33' | 'cross-thin' | 133 | '133' | 'cross-thin-open' | 34 | '34' | 'x-thin' | 134 | '134' | 'x-thin-open' | 35 | '35' | 'asterisk' | 135 | '135' | 'asterisk-open' | 36 | '36' | 'hash' | 136 | '136' | 'hash-open' | 236 | '236' | 'hash-dot' | 336 | '336' | 'hash-open-dot' | 37 | '37' | 'y-up' | 137 | '137' | 'y-up-open' | 38 | '38' | 'y-down' | 138 | '138' | 'y-down-open' | 39 | '39' | 'y-left' | 139 | '139' | 'y-left-open' | 40 | '40' | 'y-right' | 140 | '140' | 'y-right-open' | 41 | '41' | 'line-ew' | 141 | '141' | 'line-ew-open' | 42 | '42' | 'line-ns' | 142 | '142' | 'line-ns-open' | 43 | '43' | 'line-ne' | 143 | '143' | 'line-ne-open' | 44 | '44' | 'line-nw' | 144 | '144' | 'line-nw-open' | 45 | '45' | 'arrow-up' | 145 | '145' | 'arrow-up-open' | 46 | '46' | 'arrow-down' | 146 | '146' | 'arrow-down-open' | 47 | '47' | 'arrow-left' | 147 | '147' | 'arrow-left-open' | 48 | '48' | 'arrow-right' | 148 | '148' | 'arrow-right-open' | 49 | '49' | 'arrow-bar-up' | 149 | '149' | 'arrow-bar-up-open' | 50 | '50' | 'arrow-bar-down' | 150 | '150' | 'arrow-bar-down-open' | 51 | '51' | 'arrow-bar-left' | 151 | '151' | 'arrow-bar-left-open' | 52 | '52' | 'arrow-bar-right' | 152 | '152' | 'arrow-bar-right-open' | 53 | '53' | 'arrow' | 153 | '153' | 'arrow-open' | 54 | '54' | 'arrow-wide' | 154 | '154' | 'arrow-wide-open')[]; +} + +// --------------------------------------------------------------------------- +// Trace interfaces +// --------------------------------------------------------------------------- + +export interface BarData { + /** Set several traces linked to the same position axis or matching axes to the same alignmentgroup. This controls whether bars compute their positional range dependently or independently. */ + alignmentgroup?: string; + /** Sets where the bar base is drawn (in position axis units). In *stack* or *relative* barmode, traces that set *base* will be excluded and drawn in *overlay* mode instead. */ + base?: any; + /** Determines whether the text nodes are clipped about the subplot axes. To show the text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*. */ + cliponaxis?: boolean; + /** Constrain the size of text inside or outside a bar to be no larger than the bar itself. */ + constraintext?: 'inside' | 'outside' | 'both' | 'none'; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | TypedArray; + /** Sets the x coordinate step. See `x0` for more info. */ + dx?: number; + /** Sets the y coordinate step. See `y0` for more info. */ + dy?: number; + error_x?: { + /** Sets the data corresponding the length of each error bar. Values are plotted relative to the underlying data. */ + array?: Datum[] | TypedArray; + /** Sets the data corresponding the length of each error bar in the bottom (left) direction for vertical (horizontal) bars Values are plotted relative to the underlying data. */ + arrayminus?: Datum[] | TypedArray; + /** Sets the stroke color of the error bars. */ + color?: Color; + copy_ystyle?: boolean; + /** Determines whether or not the error bars have the same length in both direction (top/bottom for vertical bars, left/right for horizontal bars. */ + symmetric?: boolean; + /** Sets the thickness (in px) of the error bars. */ + thickness?: number; + traceref?: number; + tracerefminus?: number; + /** Determines the rule used to generate the error bars. If *constant*, the bar lengths are of a constant value. Set this constant in `value`. If *percent*, the bar lengths correspond to a percentage of underlying data. Set this percentage in `value`. If *sqrt*, the bar lengths correspond to the square of the underlying data. If *data*, the bar lengths are set with data set `array`. */ + type?: 'percent' | 'constant' | 'sqrt' | 'data'; + /** Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars. */ + value?: number; + /** Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars in the bottom (left) direction for vertical (horizontal) bars */ + valueminus?: number; + /** Determines whether or not this set of error bars is visible. */ + visible?: boolean; + /** Sets the width (in px) of the cross-bar at both ends of the error bars. */ + width?: number; + }; + error_y?: ErrorY; + /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `value` and `label`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + hovertemplatefallback?: any; + /** Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | TypedArray; + /** Determines if texts are kept at center or start/end points in `textposition` *inside* mode. */ + insidetextanchor?: 'end' | 'middle' | 'start'; + /** Sets the font used for `text` lying inside the bar. */ + insidetextfont?: FontArray; + /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + legendrank?: number; + /** Sets the width (in px or fraction) of the legend for this trace. */ + legendwidth?: number; + marker?: { + /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + autocolorscale?: boolean; + /** Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. */ + cauto?: boolean; + /** Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well. */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`. */ + cmid?: number; + /** Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well. */ + cmin?: number; + /** Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set. */ + color?: Color | Color[]; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + colorscale?: ColorScale; + /** Sets the rounding of corners. May be an integer number of pixels, or a percentage of bar width (as a string ending in %). Defaults to `layout.barcornerradius`. In stack or relative barmode, the first trace to set cornerradius is used for the whole stack. */ + cornerradius?: any; + line?: Line; + /** Sets the opacity of the bars. */ + opacity?: number | number[]; + /** Sets the pattern within the marker. */ + pattern?: Pattern; + /** Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. */ + reversescale?: boolean; + /** Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array. */ + showscale?: boolean; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Shifts the position where the bar is drawn (in position axis units). In *group* barmode, traces that set *offset* will be excluded and drawn in *overlay* mode instead. */ + offset?: number | number[]; + /** Set several traces linked to the same position axis or matching axes to the same offsetgroup where bars of the same position coordinate will line up. */ + offsetgroup?: string; + /** Sets the opacity of the trace. */ + opacity?: number; + /** Sets the orientation of the bars. With *v* (*h*), the value of the each bar spans along the vertical (horizontal). */ + orientation?: 'v' | 'h'; + /** Sets the font used for `text` lying outside the bar. */ + outsidetextfont?: FontArray; + selected?: { + marker?: { + /** Sets the marker color of selected points. */ + color?: Color; + /** Sets the marker opacity of selected points. */ + opacity?: number; + }; + textfont?: Font; + }; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + showlegend?: boolean; + stream?: Stream; + /** Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: string | string[]; + /** Sets the angle of the tick labels with respect to the bar. For example, a `tickangle` of -90 draws the tick labels vertically. With *auto* the texts may automatically be rotated to fit with the maximum size in bars. */ + textangle?: number | 'auto'; + /** Sets the font used for `text`. */ + textfont?: FontArray; + /** Specifies the location of the `text`. *inside* positions `text` inside, next to the bar end (rotated and scaled if needed). *outside* positions `text` outside, next to the bar end (scaled if needed), unless there is another bar stacked on this one, then the text gets pushed inside. *auto* tries to position `text` inside the bar, but if the bar is too small and no bar is stacked on this one the text is moved outside. If *none*, no text appears. */ + textposition?: 'inside' | 'outside' | 'auto' | 'none' | ('inside' | 'outside' | 'auto' | 'none')[]; + /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `value` and `label`. */ + texttemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + texttemplatefallback?: any; + type?: 'bar'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + unselected?: { + marker?: { + /** Sets the marker color of unselected points, applied only when a selection exists. */ + color?: Color; + /** Sets the marker opacity of unselected points, applied only when a selection exists. */ + opacity?: number; + }; + textfont?: Font; + }; + /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; + /** Sets the bar width (in position axis units). */ + width?: number | number[]; + /** Sets the x coordinates. */ + x?: Datum[] | TypedArray; + /** Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step. */ + x0?: any; + /** Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. */ + xaxis?: string; + /** Sets the calendar system to use with `x` date data. */ + xcalendar?: Calendar; + /** Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + xhoverformat?: string; + /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ + xperiod?: any; + /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the x0 axis. When `x0period` is round number of weeks, the `x0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ + xperiod0?: any; + /** Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis. */ + xperiodalignment?: 'start' | 'middle' | 'end'; + /** Sets the y coordinates. */ + y?: Datum[] | TypedArray; + /** Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step. */ + y0?: any; + /** Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. */ + yaxis?: string; + /** Sets the calendar system to use with `y` date data. */ + ycalendar?: Calendar; + /** Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + yhoverformat?: string; + /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the y axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ + yperiod?: any; + /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the y0 axis. When `y0period` is round number of weeks, the `y0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ + yperiod0?: any; + /** Only relevant when the axis `type` is *date*. Sets the alignment of data points on the y axis. */ + yperiodalignment?: 'start' | 'middle' | 'end'; + /** Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. */ + zorder?: number; +} + +export interface BarpolarData { + /** Sets where the bar base is drawn (in radial axis units). In *stack* barmode, traces that set *base* will be excluded and drawn in *overlay* mode instead. */ + base?: any; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | TypedArray; + /** Sets the r coordinate step. */ + dr?: number; + /** Sets the theta coordinate step. By default, the `dtheta` step equals the subplot's period divided by the length of the `r` coordinates. */ + dtheta?: number; + /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + hoverinfo?: 'r' | 'theta' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('r' | 'theta' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + hovertemplatefallback?: any; + /** Same as `text`. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | TypedArray; + /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + legendrank?: number; + /** Sets the width (in px or fraction) of the legend for this trace. */ + legendwidth?: number; + marker?: { + /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + autocolorscale?: boolean; + /** Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. */ + cauto?: boolean; + /** Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well. */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`. */ + cmid?: number; + /** Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well. */ + cmin?: number; + /** Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set. */ + color?: Color | Color[]; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + colorscale?: ColorScale; + line?: Line; + /** Sets the opacity of the bars. */ + opacity?: number | number[]; + /** Sets the pattern within the marker. */ + pattern?: Pattern; + /** Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. */ + reversescale?: boolean; + /** Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array. */ + showscale?: boolean; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Shifts the angular position where the bar is drawn (in *thetatunit* units). */ + offset?: number | number[]; + /** Sets the opacity of the trace. */ + opacity?: number; + /** Sets the radial coordinates */ + r?: Datum[] | TypedArray; + /** Alternate to `r`. Builds a linear space of r coordinates. Use with `dr` where `r0` is the starting coordinate and `dr` the step. */ + r0?: any; + selected?: { + marker?: { + /** Sets the marker color of selected points. */ + color?: Color; + /** Sets the marker opacity of selected points. */ + opacity?: number; + }; + textfont?: Font; + }; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + showlegend?: boolean; + stream?: Stream; + /** Sets a reference between this trace's data coordinates and a polar subplot. If *polar* (the default value), the data refer to `layout.polar`. If *polar2*, the data refer to `layout.polar2`, and so on. */ + subplot?: string; + /** Sets hover text elements associated with each bar. If a single string, the same string appears over all bars. If an array of string, the items are mapped in order to the this trace's coordinates. */ + text?: string | string[]; + /** Sets the angular coordinates */ + theta?: Datum[] | TypedArray; + /** Alternate to `theta`. Builds a linear space of theta coordinates. Use with `dtheta` where `theta0` is the starting coordinate and `dtheta` the step. */ + theta0?: any; + /** Sets the unit of input *theta* values. Has an effect only when on *linear* angular axes. */ + thetaunit?: 'radians' | 'degrees' | 'gradians'; + type?: 'barpolar'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + unselected?: { + marker?: { + /** Sets the marker color of unselected points, applied only when a selection exists. */ + color?: Color; + /** Sets the marker opacity of unselected points, applied only when a selection exists. */ + opacity?: number; + }; + textfont?: Font; + }; + /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; + /** Sets the bar angular width (in *thetaunit* units). */ + width?: number | number[]; +} + +export interface BoxData { + /** Set several traces linked to the same position axis or matching axes to the same alignmentgroup. This controls whether bars compute their positional range dependently or independently. */ + alignmentgroup?: string; + /** If *true*, the mean of the box(es)' underlying distribution is drawn as a dashed line inside the box(es). If *sd* the standard deviation is also drawn. Defaults to *true* when `mean` is set. Defaults to *sd* when `sd` is set Otherwise defaults to *false*. */ + boxmean?: true | 'sd' | false; + /** If *outliers*, only the sample points lying outside the whiskers are shown If *suspectedoutliers*, the outlier points are shown and points either less than 4*Q1-3*Q3 or greater than 4*Q3-3*Q1 are highlighted (see `outliercolor`) If *all*, all sample points are shown If *false*, only the box(es) are shown with no sample points Defaults to *suspectedoutliers* when `marker.outliercolor` or `marker.line.outliercolor` is set. Defaults to *all* under the q1/median/q3 signature. Otherwise defaults to *outliers*. */ + boxpoints?: 'all' | 'outliers' | 'suspectedoutliers' | false; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | TypedArray; + /** Sets the x coordinate step for multi-box traces set using q1/median/q3. */ + dx?: number; + /** Sets the y coordinate step for multi-box traces set using q1/median/q3. */ + dy?: number; + /** Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. */ + fillcolor?: Color; + /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Do the hover effects highlight individual boxes or sample points or both? */ + hoveron?: 'boxes' | 'points' | (string & {}); + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + hovertemplatefallback?: any; + /** Same as `text`. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | TypedArray; + /** Sets the amount of jitter in the sample points drawn. If *0*, the sample points align along the distribution axis. If *1*, the sample points are drawn in a random jitter of width equal to the width of the box(es). */ + jitter?: number; + /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + legendrank?: number; + /** Sets the width (in px or fraction) of the legend for this trace. */ + legendwidth?: number; + line?: ErrorY; + /** Sets the lower fence values. There should be as many items as the number of boxes desired. This attribute has effect only under the q1/median/q3 signature. If `lowerfence` is not provided but a sample (in `y` or `x`) is set, we compute the lower as the last sample point below 1.5 times the IQR. */ + lowerfence?: Datum[] | TypedArray; + marker?: { + /** Sets the marker angle in respect to `angleref`. */ + angle?: number | 'auto'; + /** Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set. */ + color?: Color; + line?: { + /** Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set. */ + color?: Color; + /** Sets the border line color of the outlier sample points. Defaults to marker.color */ + outliercolor?: Color; + /** Sets the border line width (in px) of the outlier sample points. */ + outlierwidth?: number; + /** Sets the width (in px) of the lines bounding the marker points. */ + width?: number; + }; + /** Sets the marker opacity. */ + opacity?: number; + /** Sets the color of the outlier sample points. */ + outliercolor?: Color; + /** Sets the marker size (in px). */ + size?: number; + /** Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name. */ + symbol?: MarkerSymbol; + }; + /** Sets the mean values. There should be as many items as the number of boxes desired. This attribute has effect only under the q1/median/q3 signature. If `mean` is not provided but a sample (in `y` or `x`) is set, we compute the mean for each box using the sample values. */ + mean?: Datum[] | TypedArray; + /** Sets the median values. There should be as many items as the number of boxes desired. */ + median?: Datum[] | TypedArray; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. For box traces, the name will also be used for the position coordinate, if `x` and `x0` (`y` and `y0` if horizontal) are missing and the position axis is categorical */ + name?: string; + /** Determines whether or not notches are drawn. Notches displays a confidence interval around the median. We compute the confidence interval as median +/- 1.57 * IQR / sqrt(N), where IQR is the interquartile range and N is the sample size. If two boxes' notches do not overlap there is 95% confidence their medians differ. See https://sites.google.com/site/davidsstatistics/home/notched-box-plots for more info. Defaults to *false* unless `notchwidth` or `notchspan` is set. */ + notched?: boolean; + /** Sets the notch span from the boxes' `median` values. There should be as many items as the number of boxes desired. This attribute has effect only under the q1/median/q3 signature. If `notchspan` is not provided but a sample (in `y` or `x`) is set, we compute it as 1.57 * IQR / sqrt(N), where N is the sample size. */ + notchspan?: Datum[] | TypedArray; + /** Sets the width of the notches relative to the box width. For example, with 0, the notches are as wide as the box(es). */ + notchwidth?: number; + /** Set several traces linked to the same position axis or matching axes to the same offsetgroup where bars of the same position coordinate will line up. */ + offsetgroup?: string; + /** Sets the opacity of the trace. */ + opacity?: number; + /** Sets the orientation of the box(es). If *v* (*h*), the distribution is visualized along the vertical (horizontal). */ + orientation?: 'v' | 'h'; + /** Sets the position of the sample points in relation to the box(es). If *0*, the sample points are places over the center of the box(es). Positive (negative) values correspond to positions to the right (left) for vertical boxes and above (below) for horizontal boxes */ + pointpos?: number; + /** Sets the Quartile 1 values. There should be as many items as the number of boxes desired. */ + q1?: Datum[] | TypedArray; + /** Sets the Quartile 3 values. There should be as many items as the number of boxes desired. */ + q3?: Datum[] | TypedArray; + /** Sets the method used to compute the sample's Q1 and Q3 quartiles. The *linear* method uses the 25th percentile for Q1 and 75th percentile for Q3 as computed using method #10 (listed on http://jse.amstat.org/v14n3/langford.html). The *exclusive* method uses the median to divide the ordered dataset into two halves if the sample is odd, it does not include the median in either half - Q1 is then the median of the lower half and Q3 the median of the upper half. The *inclusive* method also uses the median to divide the ordered dataset into two halves but if the sample is odd, it includes the median in both halves - Q1 is then the median of the lower half and Q3 the median of the upper half. */ + quartilemethod?: 'linear' | 'exclusive' | 'inclusive'; + /** Sets the standard deviation values. There should be as many items as the number of boxes desired. This attribute has effect only under the q1/median/q3 signature. If `sd` is not provided but a sample (in `y` or `x`) is set, we compute the standard deviation for each box using the sample values. */ + sd?: Datum[] | TypedArray; + /** Scales the box size when sizemode=sd Allowing boxes to be drawn across any stddev range For example 1-stddev, 3-stddev, 5-stddev */ + sdmultiple?: number; + selected?: { + marker?: { + /** Sets the marker color of selected points. */ + color?: Color; + /** Sets the marker opacity of selected points. */ + opacity?: number; + /** Sets the marker size of selected points. */ + size?: number; + }; + }; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + showlegend?: boolean; + /** Determines whether or not whiskers are visible. Defaults to true for `sizemode` *quartiles*, false for *sd*. */ + showwhiskers?: boolean; + /** Sets the upper and lower bound for the boxes quartiles means box is drawn between Q1 and Q3 SD means the box is drawn between Mean +- Standard Deviation Argument sdmultiple (default 1) to scale the box size So it could be drawn 1-stddev, 3-stddev etc */ + sizemode?: 'quartiles' | 'sd'; + stream?: Stream; + /** Sets the text elements associated with each sample value. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ + text?: string | string[]; + type?: 'box'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + unselected?: { + marker?: { + /** Sets the marker color of unselected points, applied only when a selection exists. */ + color?: Color; + /** Sets the marker opacity of unselected points, applied only when a selection exists. */ + opacity?: number; + /** Sets the marker size of unselected points, applied only when a selection exists. */ + size?: number; + }; + }; + /** Sets the upper fence values. There should be as many items as the number of boxes desired. This attribute has effect only under the q1/median/q3 signature. If `upperfence` is not provided but a sample (in `y` or `x`) is set, we compute the upper as the last sample point above 1.5 times the IQR. */ + upperfence?: Datum[] | TypedArray; + /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; + /** Sets the width of the whiskers relative to the box width. For example, with 1, the whiskers are as wide as the box(es). */ + whiskerwidth?: number; + /** Sets the width of the box in data coordinate If *0* (default value) the width is automatically selected based on the positions of other box traces in the same subplot. */ + width?: number; + /** Sets the x sample data or coordinates. See overview for more info. */ + x?: Datum[] | TypedArray; + /** Sets the x coordinate for single-box traces or the starting coordinate for multi-box traces set using q1/median/q3. See overview for more info. */ + x0?: any; + /** Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. */ + xaxis?: string; + /** Sets the calendar system to use with `x` date data. */ + xcalendar?: Calendar; + /** Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + xhoverformat?: string; + /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ + xperiod?: any; + /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the x0 axis. When `x0period` is round number of weeks, the `x0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ + xperiod0?: any; + /** Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis. */ + xperiodalignment?: 'start' | 'middle' | 'end'; + /** Sets the y sample data or coordinates. See overview for more info. */ + y?: Datum[] | TypedArray; + /** Sets the y coordinate for single-box traces or the starting coordinate for multi-box traces set using q1/median/q3. See overview for more info. */ + y0?: any; + /** Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. */ + yaxis?: string; + /** Sets the calendar system to use with `y` date data. */ + ycalendar?: Calendar; + /** Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + yhoverformat?: string; + /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the y axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ + yperiod?: any; + /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the y0 axis. When `y0period` is round number of weeks, the `y0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ + yperiod0?: any; + /** Only relevant when the axis `type` is *date*. Sets the alignment of data points on the y axis. */ + yperiodalignment?: 'start' | 'middle' | 'end'; + /** Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. */ + zorder?: number; +} + +export interface CandlestickData { + /** Sets the close values. */ + close?: Datum[] | TypedArray; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | TypedArray; + decreasing?: { + /** Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. */ + fillcolor?: Color; + line?: ErrorY; + }; + /** Sets the high values. */ + high?: Datum[] | TypedArray; + /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: { + /** Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines */ + align?: 'left' | 'right' | 'auto' | ('left' | 'right' | 'auto')[]; + /** Sets the background color of the hover labels for this trace */ + bgcolor?: Color | Color[]; + /** Sets the border color of the hover labels for this trace. */ + bordercolor?: Color | Color[]; + /** Sets the font used in hover labels. */ + font?: FontArray; + /** Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis. */ + namelength?: number | number[]; + /** Sets whether or not to show the hover label arrow/triangle pointing to the data point. */ + showarrow?: boolean; + /** Show hover information (open, close, high, low) in separate labels, rather than a single unified label. Default: *false*. When set to *true*, `hovertemplate` is ignored. */ + split?: boolean; + }; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `open`, `high`, `low` and `close`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + hovertemplatefallback?: any; + /** Same as `text`. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | TypedArray; + increasing?: { + /** Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. */ + fillcolor?: Color; + line?: ErrorY; + }; + /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + legendrank?: number; + /** Sets the width (in px or fraction) of the legend for this trace. */ + legendwidth?: number; + line?: { + /** Sets the width (in px) of line bounding the box(es). Note that this style setting can also be set per direction via `increasing.line.width` and `decreasing.line.width`. */ + width?: number; + }; + /** Sets the low values. */ + low?: Datum[] | TypedArray; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Sets the opacity of the trace. */ + opacity?: number; + /** Sets the open values. */ + open?: Datum[] | TypedArray; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + showlegend?: boolean; + stream?: Stream; + /** Sets hover text elements associated with each sample point. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to this trace's sample points. */ + text?: string | string[]; + type?: 'candlestick'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; + /** Sets the width of the whiskers relative to the box width. For example, with 1, the whiskers are as wide as the box(es). */ + whiskerwidth?: number; + /** Sets the x coordinates. If absent, linear coordinate will be generated. */ + x?: Datum[] | TypedArray; + /** Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. */ + xaxis?: string; + /** Sets the calendar system to use with `x` date data. */ + xcalendar?: Calendar; + /** Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + xhoverformat?: string; + /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ + xperiod?: any; + /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the x0 axis. When `x0period` is round number of weeks, the `x0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ + xperiod0?: any; + /** Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis. */ + xperiodalignment?: 'start' | 'middle' | 'end'; + /** Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. */ + yaxis?: string; + /** Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + yhoverformat?: string; + /** Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. */ + zorder?: number; +} + +export interface CarpetData { + /** An array containing values of the first parameter value */ + a?: Datum[] | TypedArray; + /** Alternate to `a`. Builds a linear space of a coordinates. Use with `da` where `a0` is the starting coordinate and `da` the step. */ + a0?: number; + aaxis?: { + /** The stride between grid lines along the axis */ + arraydtick?: number; + /** The starting index of grid lines along the axis */ + arraytick0?: number; + /** Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided, then `autorange` is set to *false*. */ + autorange?: true | false | 'reversed'; + /** Using *strict* a numeric string in trace data is not converted to a number. Using *convert types* a numeric string in trace data may be treated as a number during automatic axis `type` detection. Defaults to layout.autotypenumbers. */ + autotypenumbers?: 'convert types' | 'strict'; + /** Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`. */ + categoryarray?: Datum[] | TypedArray; + /** Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. */ + categoryorder?: 'trace' | 'category ascending' | 'category descending' | 'array'; + cheatertype?: 'index' | 'value'; + /** Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. */ + color?: Color; + /** The stride between grid lines along the axis */ + dtick?: number; + /** Determines whether or not a line is drawn at along the final value of this axis. If *true*, the end line is drawn on top of the grid lines. */ + endline?: boolean; + /** Sets the line color of the end line. */ + endlinecolor?: Color; + /** Sets the width (in px) of the end line. */ + endlinewidth?: number; + /** Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. */ + exponentformat?: 'none' | 'e' | 'E' | 'power' | 'SI' | 'B' | 'SI extended'; + /** Determines whether or not this axis is zoom-able. If true, then zoom is disabled. */ + fixedrange?: boolean; + /** Sets the axis line color. */ + gridcolor?: Color; + /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + griddash?: Dash; + /** Sets the width (in px) of the axis line. */ + gridwidth?: number; + /** Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. */ + labelalias?: any; + /** Extra padding between label and the axis */ + labelpadding?: number; + /** Sets a axis label prefix. */ + labelprefix?: string; + /** Sets a axis label suffix. */ + labelsuffix?: string; + /** Sets the axis line color. */ + linecolor?: Color; + /** Sets the width (in px) of the axis line. */ + linewidth?: number; + /** Hide SI prefix for 10^n if |n| is below this number */ + minexponent?: number; + /** Sets the color of the grid lines. */ + minorgridcolor?: Color; + /** Sets the number of minor grid ticks per major grid tick */ + minorgridcount?: number; + /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + minorgriddash?: Dash; + /** Sets the width (in px) of the grid lines. */ + minorgridwidth?: number; + /** Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. */ + nticks?: number; + /** Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears. */ + range?: [any, any]; + /** If *normal*, the range is computed in relation to the extrema of the input data. If *tozero*, the range extends to 0, regardless of the input data If *nonnegative*, the range is non-negative, regardless of the input data. */ + rangemode?: 'normal' | 'tozero' | 'nonnegative'; + /** If "true", even 4-digit integers are separated */ + separatethousands?: boolean; + /** If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. */ + showexponent?: 'all' | 'first' | 'last' | 'none'; + /** Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. */ + showgrid?: boolean; + /** Determines whether or not a line bounding this axis is drawn. */ + showline?: boolean; + /** Determines whether axis labels are drawn on the low side, the high side, both, or neither side of the axis. */ + showticklabels?: 'start' | 'end' | 'both' | 'none'; + /** If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. */ + showtickprefix?: 'all' | 'first' | 'last' | 'none'; + /** Same as `showtickprefix` but for tick suffixes. */ + showticksuffix?: 'all' | 'first' | 'last' | 'none'; + smoothing?: number; + /** Determines whether or not a line is drawn at along the starting value of this axis. If *true*, the start line is drawn on top of the grid lines. */ + startline?: boolean; + /** Sets the line color of the start line. */ + startlinecolor?: Color; + /** Sets the width (in px) of the start line. */ + startlinewidth?: number; + /** The starting index of grid lines along the axis */ + tick0?: number; + /** Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. */ + tickangle?: number | 'auto'; + /** Sets the tick font. */ + tickfont?: Font; + /** Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + tickformat?: string; + tickformatstops?: TickFormatStops[]; + tickmode?: 'linear' | 'array'; + /** Sets a tick label prefix. */ + tickprefix?: string; + /** Sets a tick label suffix. */ + ticksuffix?: string; + /** Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`. */ + ticktext?: Datum[] | TypedArray; + /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ + tickvals?: Datum[] | TypedArray; + title?: { + /** Sets this axis' title font. */ + font?: Font; + /** An additional amount by which to offset the title from the tick labels, given in pixels. */ + offset?: number; + /** Sets the title of this axis. */ + text?: string; + }; + /** Sets the axis type. By default, plotly attempts to determined the axis type by looking into the data of the traces that referenced the axis in question. */ + type?: '-' | 'linear' | 'date' | 'category'; + }; + /** A two dimensional array of y coordinates at each carpet point. */ + b?: Datum[] | TypedArray; + /** Alternate to `b`. Builds a linear space of a coordinates. Use with `db` where `b0` is the starting coordinate and `db` the step. */ + b0?: number; + baxis?: { + /** The stride between grid lines along the axis */ + arraydtick?: number; + /** The starting index of grid lines along the axis */ + arraytick0?: number; + /** Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided, then `autorange` is set to *false*. */ + autorange?: true | false | 'reversed'; + /** Using *strict* a numeric string in trace data is not converted to a number. Using *convert types* a numeric string in trace data may be treated as a number during automatic axis `type` detection. Defaults to layout.autotypenumbers. */ + autotypenumbers?: 'convert types' | 'strict'; + /** Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`. */ + categoryarray?: Datum[] | TypedArray; + /** Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. */ + categoryorder?: 'trace' | 'category ascending' | 'category descending' | 'array'; + cheatertype?: 'index' | 'value'; + /** Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. */ + color?: Color; + /** The stride between grid lines along the axis */ + dtick?: number; + /** Determines whether or not a line is drawn at along the final value of this axis. If *true*, the end line is drawn on top of the grid lines. */ + endline?: boolean; + /** Sets the line color of the end line. */ + endlinecolor?: Color; + /** Sets the width (in px) of the end line. */ + endlinewidth?: number; + /** Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. */ + exponentformat?: 'none' | 'e' | 'E' | 'power' | 'SI' | 'B' | 'SI extended'; + /** Determines whether or not this axis is zoom-able. If true, then zoom is disabled. */ + fixedrange?: boolean; + /** Sets the axis line color. */ + gridcolor?: Color; + /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + griddash?: Dash; + /** Sets the width (in px) of the axis line. */ + gridwidth?: number; + /** Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. */ + labelalias?: any; + /** Extra padding between label and the axis */ + labelpadding?: number; + /** Sets a axis label prefix. */ + labelprefix?: string; + /** Sets a axis label suffix. */ + labelsuffix?: string; + /** Sets the axis line color. */ + linecolor?: Color; + /** Sets the width (in px) of the axis line. */ + linewidth?: number; + /** Hide SI prefix for 10^n if |n| is below this number */ + minexponent?: number; + /** Sets the color of the grid lines. */ + minorgridcolor?: Color; + /** Sets the number of minor grid ticks per major grid tick */ + minorgridcount?: number; + /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + minorgriddash?: Dash; + /** Sets the width (in px) of the grid lines. */ + minorgridwidth?: number; + /** Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. */ + nticks?: number; + /** Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears. */ + range?: [any, any]; + /** If *normal*, the range is computed in relation to the extrema of the input data. If *tozero*, the range extends to 0, regardless of the input data If *nonnegative*, the range is non-negative, regardless of the input data. */ + rangemode?: 'normal' | 'tozero' | 'nonnegative'; + /** If "true", even 4-digit integers are separated */ + separatethousands?: boolean; + /** If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. */ + showexponent?: 'all' | 'first' | 'last' | 'none'; + /** Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. */ + showgrid?: boolean; + /** Determines whether or not a line bounding this axis is drawn. */ + showline?: boolean; + /** Determines whether axis labels are drawn on the low side, the high side, both, or neither side of the axis. */ + showticklabels?: 'start' | 'end' | 'both' | 'none'; + /** If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. */ + showtickprefix?: 'all' | 'first' | 'last' | 'none'; + /** Same as `showtickprefix` but for tick suffixes. */ + showticksuffix?: 'all' | 'first' | 'last' | 'none'; + smoothing?: number; + /** Determines whether or not a line is drawn at along the starting value of this axis. If *true*, the start line is drawn on top of the grid lines. */ + startline?: boolean; + /** Sets the line color of the start line. */ + startlinecolor?: Color; + /** Sets the width (in px) of the start line. */ + startlinewidth?: number; + /** The starting index of grid lines along the axis */ + tick0?: number; + /** Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. */ + tickangle?: number | 'auto'; + /** Sets the tick font. */ + tickfont?: Font; + /** Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + tickformat?: string; + tickformatstops?: TickFormatStops[]; + tickmode?: 'linear' | 'array'; + /** Sets a tick label prefix. */ + tickprefix?: string; + /** Sets a tick label suffix. */ + ticksuffix?: string; + /** Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`. */ + ticktext?: Datum[] | TypedArray; + /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ + tickvals?: Datum[] | TypedArray; + title?: { + /** Sets this axis' title font. */ + font?: Font; + /** An additional amount by which to offset the title from the tick labels, given in pixels. */ + offset?: number; + /** Sets the title of this axis. */ + text?: string; + }; + /** Sets the axis type. By default, plotly attempts to determined the axis type by looking into the data of the traces that referenced the axis in question. */ + type?: '-' | 'linear' | 'date' | 'category'; + }; + /** An identifier for this carpet, so that `scattercarpet` and `contourcarpet` traces can specify a carpet plot on which they lie */ + carpet?: string; + /** The shift applied to each successive row of data in creating a cheater plot. Only used if `x` is been omitted. */ + cheaterslope?: number; + /** Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. */ + color?: Color; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | TypedArray; + /** Sets the a coordinate step. See `a0` for more info. */ + da?: number; + /** Sets the b coordinate step. See `b0` for more info. */ + db?: number; + /** The default font used for axis & tick labels on this carpet */ + font?: Font; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | TypedArray; + /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + legendrank?: number; + /** Sets the width (in px or fraction) of the legend for this trace. */ + legendwidth?: number; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Sets the opacity of the trace. */ + opacity?: number; + stream?: Stream; + type?: 'carpet'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; + /** A two dimensional array of x coordinates at each carpet point. If omitted, the plot is a cheater plot and the xaxis is hidden by default. */ + x?: Datum[] | TypedArray; + /** Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. */ + xaxis?: string; + /** A two dimensional array of y coordinates at each carpet point. */ + y?: Datum[] | TypedArray; + /** Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. */ + yaxis?: string; + /** Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. */ + zorder?: number; +} + +export interface ChoroplethData { + /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + autocolorscale?: boolean; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + colorscale?: ColorScale; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | TypedArray; + /** Sets the key in GeoJSON features which is used as id to match the items included in the `locations` array. Only has an effect when `geojson` is set. Support nested property, for example *properties.name*. */ + featureidkey?: string; + /** Sets a reference between this trace's geospatial coordinates and a geographic map. If *geo* (the default value), the geospatial coordinates refer to `layout.geo`. If *geo2*, the geospatial coordinates refer to `layout.geo2`, and so on. */ + geo?: string; + /** Sets optional GeoJSON data associated with this trace. If not given, the features on the base map are used. It can be set as a valid GeoJSON object or as a URL string. Note that we only accept GeoJSONs of type *FeatureCollection* or *Feature* with geometries of type *Polygon* or *MultiPolygon*. */ + geojson?: any; + /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + hoverinfo?: 'location' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('location' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + hovertemplatefallback?: any; + /** Same as `text`. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | TypedArray; + /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + legendrank?: number; + /** Sets the width (in px or fraction) of the legend for this trace. */ + legendwidth?: number; + /** The library used by the *country names* `locationmode` option is changing in an upcoming version. Country names in existing plots may not work in the new version. Determines the set of locations used to match entries in `locations` to regions on the map. Values *ISO-3*, *USA-states*, *country names* correspond to features on the base map and value *geojson-id* corresponds to features from a custom GeoJSON linked to the `geojson` attribute. *USA-states* accepts both two-letter abbreviations (e.g. *CA*) and full state names (e.g. *California*). */ + locationmode?: 'ISO-3' | 'USA-states' | 'country names' | 'geojson-id'; + /** Sets the coordinates via location IDs or names. See `locationmode` for more info. */ + locations?: Datum[] | TypedArray; + marker?: { + line?: Line; + /** Sets the opacity of the locations. */ + opacity?: number | number[]; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color. */ + reversescale?: boolean; + selected?: { + marker?: { + /** Sets the marker opacity of selected points. */ + opacity?: number; + }; + }; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + showlegend?: boolean; + /** Determines whether or not a colorbar is displayed for this trace. */ + showscale?: boolean; + stream?: Stream; + /** Sets the text elements associated with each location. */ + text?: string | string[]; + type?: 'choropleth'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + unselected?: { + marker?: { + /** Sets the marker opacity of unselected points, applied only when a selection exists. */ + opacity?: number; + }; + }; + /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; + /** Sets the color values. */ + z?: Datum[] | TypedArray; + /** Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. */ + zauto?: boolean; + /** Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well. */ + zmax?: number; + /** Sets the mid-point of the color domain by scaling `zmin` and/or `zmax` to be equidistant to this point. Value should have the same units as in `z`. Has no effect when `zauto` is `false`. */ + zmid?: number; + /** Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well. */ + zmin?: number; +} + +export interface ChoroplethmapData { + /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + autocolorscale?: boolean; + /** Determines if the choropleth polygons will be inserted before the layer with the specified ID. By default, choroplethmap traces are placed above the water layers. If set to '', the layer will be inserted above every existing layer. */ + below?: string; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + colorscale?: ColorScale; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | TypedArray; + /** Sets the key in GeoJSON features which is used as id to match the items included in the `locations` array. Support nested property, for example *properties.name*. */ + featureidkey?: string; + /** Sets the GeoJSON data associated with this trace. It can be set as a valid GeoJSON object or as a URL string. Note that we only accept GeoJSONs of type *FeatureCollection* or *Feature* with geometries of type *Polygon* or *MultiPolygon*. */ + geojson?: any; + /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + hoverinfo?: 'location' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('location' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variable `properties` Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + hovertemplatefallback?: any; + /** Same as `text`. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | TypedArray; + /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + legendrank?: number; + /** Sets the width (in px or fraction) of the legend for this trace. */ + legendwidth?: number; + /** Sets which features found in *geojson* to plot using their feature `id` field. */ + locations?: Datum[] | TypedArray; + marker?: { + line?: Line; + /** Sets the opacity of the locations. */ + opacity?: number | number[]; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color. */ + reversescale?: boolean; + selected?: { + marker?: { + /** Sets the marker opacity of selected points. */ + opacity?: number; + }; + }; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + showlegend?: boolean; + /** Determines whether or not a colorbar is displayed for this trace. */ + showscale?: boolean; + stream?: Stream; + /** Sets a reference between this trace's data coordinates and a map subplot. If *map* (the default value), the data refer to `layout.map`. If *map2*, the data refer to `layout.map2`, and so on. */ + subplot?: string; + /** Sets the text elements associated with each location. */ + text?: string | string[]; + type?: 'choroplethmap'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + unselected?: { + marker?: { + /** Sets the marker opacity of unselected points, applied only when a selection exists. */ + opacity?: number; + }; + }; + /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; + /** Sets the color values. */ + z?: Datum[] | TypedArray; + /** Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. */ + zauto?: boolean; + /** Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well. */ + zmax?: number; + /** Sets the mid-point of the color domain by scaling `zmin` and/or `zmax` to be equidistant to this point. Value should have the same units as in `z`. Has no effect when `zauto` is `false`. */ + zmid?: number; + /** Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well. */ + zmin?: number; +} + +export interface ChoroplethmapboxData { + /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + autocolorscale?: boolean; + /** Determines if the choropleth polygons will be inserted before the layer with the specified ID. By default, choroplethmapbox traces are placed above the water layers. If set to '', the layer will be inserted above every existing layer. */ + below?: string; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + colorscale?: ColorScale; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | TypedArray; + /** Sets the key in GeoJSON features which is used as id to match the items included in the `locations` array. Support nested property, for example *properties.name*. */ + featureidkey?: string; + /** Sets the GeoJSON data associated with this trace. It can be set as a valid GeoJSON object or as a URL string. Note that we only accept GeoJSONs of type *FeatureCollection* or *Feature* with geometries of type *Polygon* or *MultiPolygon*. */ + geojson?: any; + /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + hoverinfo?: 'location' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('location' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variable `properties` Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + hovertemplatefallback?: any; + /** Same as `text`. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | TypedArray; + /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + legendrank?: number; + /** Sets the width (in px or fraction) of the legend for this trace. */ + legendwidth?: number; + /** Sets which features found in *geojson* to plot using their feature `id` field. */ + locations?: Datum[] | TypedArray; + marker?: { + line?: Line; + /** Sets the opacity of the locations. */ + opacity?: number | number[]; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color. */ + reversescale?: boolean; + selected?: { + marker?: { + /** Sets the marker opacity of selected points. */ + opacity?: number; + }; + }; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + showlegend?: boolean; + /** Determines whether or not a colorbar is displayed for this trace. */ + showscale?: boolean; + stream?: Stream; + /** mapbox subplots and traces are deprecated! Please consider switching to `map` subplots and traces. Learn more at: https://plotly.com/python/maplibre-migration/ as well as https://plotly.com/javascript/maplibre-migration/ Sets a reference between this trace's data coordinates and a mapbox subplot. If *mapbox* (the default value), the data refer to `layout.mapbox`. If *mapbox2*, the data refer to `layout.mapbox2`, and so on. */ + subplot?: string; + /** Sets the text elements associated with each location. */ + text?: string | string[]; + type?: 'choroplethmapbox'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + unselected?: { + marker?: { + /** Sets the marker opacity of unselected points, applied only when a selection exists. */ + opacity?: number; + }; + }; + /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; + /** Sets the color values. */ + z?: Datum[] | TypedArray; + /** Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. */ + zauto?: boolean; + /** Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well. */ + zmax?: number; + /** Sets the mid-point of the color domain by scaling `zmin` and/or `zmax` to be equidistant to this point. Value should have the same units as in `z`. Has no effect when `zauto` is `false`. */ + zmid?: number; + /** Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well. */ + zmin?: number; +} + +export interface ConeData { + /** Sets the cones' anchor with respect to their x/y/z positions. Note that *cm* denote the cone's center of mass which corresponds to 1/4 from the tail to tip. */ + anchor?: 'tip' | 'tail' | 'cm' | 'center'; + /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + autocolorscale?: boolean; + /** Determines whether or not the color domain is computed with respect to the input data (here u/v/w norm) or the bounds set in `cmin` and `cmax` Defaults to `false` when `cmin` and `cmax` are set by the user. */ + cauto?: boolean; + /** Sets the upper bound of the color domain. Value should have the same units as u/v/w norm and if set, `cmin` must be set as well. */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `cmin` and/or `cmax` to be equidistant to this point. Value should have the same units as u/v/w norm. Has no effect when `cauto` is `false`. */ + cmid?: number; + /** Sets the lower bound of the color domain. Value should have the same units as u/v/w norm and if set, `cmax` must be set as well. */ + cmin?: number; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + colorscale?: ColorScale; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | TypedArray; + /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + hoverinfo?: 'x' | 'y' | 'z' | 'u' | 'v' | 'w' | 'norm' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'u' | 'v' | 'w' | 'norm' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variable `norm` Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + hovertemplatefallback?: any; + /** Same as `text`. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | TypedArray; + /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + legendrank?: number; + /** Sets the width (in px or fraction) of the legend for this trace. */ + legendwidth?: number; + lighting?: Lighting; + lightposition?: { + /** Numeric vector, representing the X coordinate for each vertex. */ + x?: number; + /** Numeric vector, representing the Y coordinate for each vertex. */ + y?: number; + /** Numeric vector, representing the Z coordinate for each vertex. */ + z?: number; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Sets the opacity of the surface. Please note that in the case of using high `opacity` values for example a value greater than or equal to 0.5 on two surfaces (and 0.25 with four surfaces), an overlay of multiple transparent surfaces may not perfectly be sorted in depth by the webgl API. This behavior may be improved in the near future and is subject to change. */ + opacity?: number; + /** Reverses the color mapping if true. If true, `cmin` will correspond to the last color in the array and `cmax` will correspond to the first color. */ + reversescale?: boolean; + /** Sets a reference between this trace's 3D coordinate system and a 3D scene. If *scene* (the default value), the (x,y,z) coordinates refer to `layout.scene`. If *scene2*, the (x,y,z) coordinates refer to `layout.scene2`, and so on. */ + scene?: string; + /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + showlegend?: boolean; + /** Determines whether or not a colorbar is displayed for this trace. */ + showscale?: boolean; + /** Determines whether `sizeref` is set as a *scaled* (i.e unitless) scalar (normalized by the max u/v/w norm in the vector field) or as *absolute* value (in the same units as the vector field). To display sizes in actual vector length use *raw*. */ + sizemode?: 'scaled' | 'absolute' | 'raw'; + /** Adjusts the cone size scaling. The size of the cones is determined by their u/v/w norm multiplied a factor and `sizeref`. This factor (computed internally) corresponds to the minimum "time" to travel across two successive x/y/z positions at the average velocity of those two successive positions. All cones in a given trace use the same factor. With `sizemode` set to *raw*, its default value is *1*. With `sizemode` set to *scaled*, `sizeref` is unitless, its default value is *0.5*. With `sizemode` set to *absolute*, `sizeref` has the same units as the u/v/w vector field, its the default value is half the sample's maximum vector norm. */ + sizeref?: number; + stream?: Stream; + /** Sets the text elements associated with the cones. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: string | string[]; + type?: 'cone'; + /** Sets the x components of the vector field. */ + u?: Datum[] | TypedArray; + /** Sets the hover text formatting rulefor `u` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ + uhoverformat?: string; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** Sets the y components of the vector field. */ + v?: Datum[] | TypedArray; + /** Sets the hover text formatting rulefor `v` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ + vhoverformat?: string; + /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; + /** Sets the z components of the vector field. */ + w?: Datum[] | TypedArray; + /** Sets the hover text formatting rulefor `w` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ + whoverformat?: string; + /** Sets the x coordinates of the vector field and of the displayed cones. */ + x?: Datum[] | TypedArray; + /** Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + xhoverformat?: string; + /** Sets the y coordinates of the vector field and of the displayed cones. */ + y?: Datum[] | TypedArray; + /** Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + yhoverformat?: string; + /** Sets the z coordinates of the vector field and of the displayed cones. */ + z?: Datum[] | TypedArray; + /** Sets the hover text formatting rulefor `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`. */ + zhoverformat?: string; +} + +export interface ContourData { + /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + autocolorscale?: boolean; + /** Determines whether or not the contour level attributes are picked by an algorithm. If *true*, the number of contour levels can be set in `ncontours`. If *false*, set the contour level attributes in `contours`. */ + autocontour?: boolean; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + colorscale?: ColorScale; + /** Determines whether or not gaps (i.e. {nan} or missing values) in the `z` data are filled in. It is defaulted to true if `z` is a one dimensional array otherwise it is defaulted to false. */ + connectgaps?: boolean; + contours?: { + /** Determines the coloring method showing the contour values. If *fill*, coloring is done evenly between each contour level If *heatmap*, a heatmap gradient coloring is applied between each contour level. If *lines*, coloring is done on the contour lines. If *none*, no coloring is applied on this trace. */ + coloring?: 'fill' | 'heatmap' | 'lines' | 'none'; + /** Sets the end contour level value. Must be more than `contours.start` */ + end?: number; + /** Sets the font used for labeling the contour levels. The default color comes from the lines, if shown. The default family and size come from `layout.font`. */ + labelfont?: Font; + /** Sets the contour label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. */ + labelformat?: string; + /** Sets the constraint operation. *=* keeps regions equal to `value` *<* and *<=* keep regions less than `value` *>* and *>=* keep regions greater than `value` *[]*, *()*, *[)*, and *(]* keep regions inside `value[0]` to `value[1]` *][*, *)(*, *](*, *)[* keep regions outside `value[0]` to value[1]` Open vs. closed intervals make no difference to constraint display, but all versions are allowed for consistency with filter transforms. */ + operation?: '=' | '<' | '>=' | '>' | '<=' | '[]' | '()' | '[)' | '(]' | '][' | ')(' | '](' | ')['; + /** Determines whether to label the contour lines with their values. */ + showlabels?: boolean; + /** Determines whether or not the contour lines are drawn. Has an effect only if `contours.coloring` is set to *fill*. */ + showlines?: boolean; + /** Sets the step between each contour level. Must be positive. */ + size?: number; + /** Sets the starting contour level value. Must be less than `contours.end` */ + start?: number; + /** If `levels`, the data is represented as a contour plot with multiple levels displayed. If `constraint`, the data is represented as constraints with the invalid region shaded as specified by the `operation` and `value` parameters. */ + type?: 'levels' | 'constraint'; + /** Sets the value or values of the constraint boundary. When `operation` is set to one of the comparison values (`=,<,>=,>,<=`) *value* is expected to be a number. When `operation` is set to one of the interval values (`[],(),[),(],][,)(,](,)[`) *value* is expected to be an array of two numbers where the first is the lower bound and the second is the upper bound. */ + value?: any; + }; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | TypedArray; + /** Sets the x coordinate step. See `x0` for more info. */ + dx?: number; + /** Sets the y coordinate step. See `y0` for more info. */ + dy?: number; + /** Sets the fill color if `contours.type` is *constraint*. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. */ + fillcolor?: Color; + /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Determines whether or not gaps (i.e. {nan} or missing values) in the `z` data have hover labels associated with them. */ + hoverongaps?: boolean; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + hovertemplatefallback?: any; + /** Same as `text`. */ + hovertext?: Datum[] | TypedArray; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | TypedArray; + /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + legendrank?: number; + /** Sets the width (in px or fraction) of the legend for this trace. */ + legendwidth?: number; + line?: { + /** Sets the color of the contour level. Has no effect if `contours.coloring` is set to *lines*. */ + color?: Color; + /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + dash?: Dash; + /** Sets the amount of smoothing for the contour lines, where *0* corresponds to no smoothing. */ + smoothing?: number; + /** Sets the contour line width in (in px) Defaults to *0.5* when `contours.type` is *levels*. Defaults to *2* when `contour.type` is *constraint*. */ + width?: number; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Sets the maximum number of contour levels. The actual number of contours will be chosen automatically to be less than or equal to the value of `ncontours`. Has an effect only if `autocontour` is *true* or if `contours.size` is missing. */ + ncontours?: number; + /** Sets the opacity of the trace. */ + opacity?: number; + /** Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color. */ + reversescale?: boolean; + /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + showlegend?: boolean; + /** Determines whether or not a colorbar is displayed for this trace. */ + showscale?: boolean; + stream?: Stream; + /** Sets the text elements associated with each z value. */ + text?: Datum[] | TypedArray; + /** For this trace it only has an effect if `coloring` is set to *heatmap*. Sets the text font. */ + textfont?: Font; + /** For this trace it only has an effect if `coloring` is set to *heatmap*. Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `x`, `y`, `z` and `text`. */ + texttemplate?: string; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + texttemplatefallback?: any; + /** Transposes the z data. */ + transpose?: boolean; + type?: 'contour'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; + /** Sets the x coordinates. */ + x?: Datum[] | TypedArray; + /** Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step. */ + x0?: any; + /** Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. */ + xaxis?: string; + /** Sets the calendar system to use with `x` date data. */ + xcalendar?: Calendar; + /** Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + xhoverformat?: string; + /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ + xperiod?: any; + /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the x0 axis. When `x0period` is round number of weeks, the `x0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ + xperiod0?: any; + /** Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis. */ + xperiodalignment?: 'start' | 'middle' | 'end'; + /** If *array*, the heatmap's x coordinates are given by *x* (the default behavior when `x` is provided). If *scaled*, the heatmap's x coordinates are given by *x0* and *dx* (the default behavior when `x` is not provided). */ + xtype?: 'array' | 'scaled'; + /** Sets the y coordinates. */ + y?: Datum[] | TypedArray; + /** Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step. */ + y0?: any; + /** Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. */ + yaxis?: string; + /** Sets the calendar system to use with `y` date data. */ + ycalendar?: Calendar; + /** Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + yhoverformat?: string; + /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the y axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ + yperiod?: any; + /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the y0 axis. When `y0period` is round number of weeks, the `y0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ + yperiod0?: any; + /** Only relevant when the axis `type` is *date*. Sets the alignment of data points on the y axis. */ + yperiodalignment?: 'start' | 'middle' | 'end'; + /** If *array*, the heatmap's y coordinates are given by *y* (the default behavior when `y` is provided) If *scaled*, the heatmap's y coordinates are given by *y0* and *dy* (the default behavior when `y` is not provided) */ + ytype?: 'array' | 'scaled'; + /** Sets the z data. */ + z?: Datum[] | TypedArray; + /** Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. */ + zauto?: boolean; + /** Sets the hover text formatting rulefor `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ + zhoverformat?: string; + /** Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well. */ + zmax?: number; + /** Sets the mid-point of the color domain by scaling `zmin` and/or `zmax` to be equidistant to this point. Value should have the same units as in `z`. Has no effect when `zauto` is `false`. */ + zmid?: number; + /** Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well. */ + zmin?: number; + /** Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. */ + zorder?: number; +} + +export interface ContourcarpetData { + /** Sets the x coordinates. */ + a?: Datum[] | TypedArray; + /** Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step. */ + a0?: any; + /** If *array*, the heatmap's x coordinates are given by *x* (the default behavior when `x` is provided). If *scaled*, the heatmap's x coordinates are given by *x0* and *dx* (the default behavior when `x` is not provided). */ + atype?: 'array' | 'scaled'; + /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + autocolorscale?: boolean; + /** Determines whether or not the contour level attributes are picked by an algorithm. If *true*, the number of contour levels can be set in `ncontours`. If *false*, set the contour level attributes in `contours`. */ + autocontour?: boolean; + /** Sets the y coordinates. */ + b?: Datum[] | TypedArray; + /** Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step. */ + b0?: any; + /** If *array*, the heatmap's y coordinates are given by *y* (the default behavior when `y` is provided) If *scaled*, the heatmap's y coordinates are given by *y0* and *dy* (the default behavior when `y` is not provided) */ + btype?: 'array' | 'scaled'; + /** The `carpet` of the carpet axes on which this contour trace lies */ + carpet?: string; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + colorscale?: ColorScale; + contours?: { + /** Determines the coloring method showing the contour values. If *fill*, coloring is done evenly between each contour level If *lines*, coloring is done on the contour lines. If *none*, no coloring is applied on this trace. */ + coloring?: 'fill' | 'lines' | 'none'; + /** Sets the end contour level value. Must be more than `contours.start` */ + end?: number; + /** Sets the font used for labeling the contour levels. The default color comes from the lines, if shown. The default family and size come from `layout.font`. */ + labelfont?: Font; + /** Sets the contour label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. */ + labelformat?: string; + /** Sets the constraint operation. *=* keeps regions equal to `value` *<* and *<=* keep regions less than `value` *>* and *>=* keep regions greater than `value` *[]*, *()*, *[)*, and *(]* keep regions inside `value[0]` to `value[1]` *][*, *)(*, *](*, *)[* keep regions outside `value[0]` to value[1]` Open vs. closed intervals make no difference to constraint display, but all versions are allowed for consistency with filter transforms. */ + operation?: '=' | '<' | '>=' | '>' | '<=' | '[]' | '()' | '[)' | '(]' | '][' | ')(' | '](' | ')['; + /** Determines whether to label the contour lines with their values. */ + showlabels?: boolean; + /** Determines whether or not the contour lines are drawn. Has an effect only if `contours.coloring` is set to *fill*. */ + showlines?: boolean; + /** Sets the step between each contour level. Must be positive. */ + size?: number; + /** Sets the starting contour level value. Must be less than `contours.end` */ + start?: number; + /** If `levels`, the data is represented as a contour plot with multiple levels displayed. If `constraint`, the data is represented as constraints with the invalid region shaded as specified by the `operation` and `value` parameters. */ + type?: 'levels' | 'constraint'; + /** Sets the value or values of the constraint boundary. When `operation` is set to one of the comparison values (`=,<,>=,>,<=`) *value* is expected to be a number. When `operation` is set to one of the interval values (`[],(),[),(],][,)(,](,)[`) *value* is expected to be an array of two numbers where the first is the lower bound and the second is the upper bound. */ + value?: any; + }; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | TypedArray; + /** Sets the x coordinate step. See `x0` for more info. */ + da?: number; + /** Sets the y coordinate step. See `y0` for more info. */ + db?: number; + /** Sets the fill color if `contours.type` is *constraint*. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. */ + fillcolor?: Color; + /** Same as `text`. */ + hovertext?: Datum[] | TypedArray; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | TypedArray; + /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + legendrank?: number; + /** Sets the width (in px or fraction) of the legend for this trace. */ + legendwidth?: number; + line?: { + /** Sets the color of the contour level. Has no effect if `contours.coloring` is set to *lines*. */ + color?: Color; + /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + dash?: Dash; + /** Sets the amount of smoothing for the contour lines, where *0* corresponds to no smoothing. */ + smoothing?: number; + /** Sets the contour line width in (in px) Defaults to *0.5* when `contours.type` is *levels*. Defaults to *2* when `contour.type` is *constraint*. */ + width?: number; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Sets the maximum number of contour levels. The actual number of contours will be chosen automatically to be less than or equal to the value of `ncontours`. Has an effect only if `autocontour` is *true* or if `contours.size` is missing. */ + ncontours?: number; + /** Sets the opacity of the trace. */ + opacity?: number; + /** Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color. */ + reversescale?: boolean; + /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + showlegend?: boolean; + /** Determines whether or not a colorbar is displayed for this trace. */ + showscale?: boolean; + stream?: Stream; + /** Sets the text elements associated with each z value. */ + text?: Datum[] | TypedArray; + /** Transposes the z data. */ + transpose?: boolean; + type?: 'contourcarpet'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; + /** Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. */ + xaxis?: string; + /** Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. */ + yaxis?: string; + /** Sets the z data. */ + z?: Datum[] | TypedArray; + /** Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. */ + zauto?: boolean; + /** Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well. */ + zmax?: number; + /** Sets the mid-point of the color domain by scaling `zmin` and/or `zmax` to be equidistant to this point. Value should have the same units as in `z`. Has no effect when `zauto` is `false`. */ + zmid?: number; + /** Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well. */ + zmin?: number; + /** Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. */ + zorder?: number; +} + +export interface DensitymapData { + /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + autocolorscale?: boolean; + /** Determines if the densitymap trace will be inserted before the layer with the specified ID. By default, densitymap traces are placed below the first layer of type symbol If set to '', the layer will be inserted above every existing layer. */ + below?: string; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + colorscale?: ColorScale; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | TypedArray; + /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + hoverinfo?: 'lon' | 'lat' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('lon' | 'lat' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + hovertemplatefallback?: any; + /** Sets hover text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | TypedArray; + /** Sets the latitude coordinates (in degrees North). */ + lat?: Datum[] | TypedArray; + /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + legendrank?: number; + /** Sets the width (in px or fraction) of the legend for this trace. */ + legendwidth?: number; + /** Sets the longitude coordinates (in degrees East). */ + lon?: Datum[] | TypedArray; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Sets the opacity of the trace. */ + opacity?: number; + /** Sets the radius of influence of one `lon` / `lat` point in pixels. Increasing the value makes the densitymap trace smoother, but less detailed. */ + radius?: number | number[]; + /** Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color. */ + reversescale?: boolean; + /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + showlegend?: boolean; + /** Determines whether or not a colorbar is displayed for this trace. */ + showscale?: boolean; + stream?: Stream; + /** Sets a reference between this trace's data coordinates and a map subplot. If *map* (the default value), the data refer to `layout.map`. If *map2*, the data refer to `layout.map2`, and so on. */ + subplot?: string; + /** Sets text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: string | string[]; + type?: 'densitymap'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; + /** Sets the points' weight. For example, a value of 10 would be equivalent to having 10 points of weight 1 in the same spot */ + z?: Datum[] | TypedArray; + /** Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. */ + zauto?: boolean; + /** Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well. */ + zmax?: number; + /** Sets the mid-point of the color domain by scaling `zmin` and/or `zmax` to be equidistant to this point. Value should have the same units as in `z`. Has no effect when `zauto` is `false`. */ + zmid?: number; + /** Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well. */ + zmin?: number; +} + +export interface DensitymapboxData { + /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + autocolorscale?: boolean; + /** Determines if the densitymapbox trace will be inserted before the layer with the specified ID. By default, densitymapbox traces are placed below the first layer of type symbol If set to '', the layer will be inserted above every existing layer. */ + below?: string; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + colorscale?: ColorScale; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | TypedArray; + /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + hoverinfo?: 'lon' | 'lat' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('lon' | 'lat' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + hovertemplatefallback?: any; + /** Sets hover text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | TypedArray; + /** Sets the latitude coordinates (in degrees North). */ + lat?: Datum[] | TypedArray; + /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + legendrank?: number; + /** Sets the width (in px or fraction) of the legend for this trace. */ + legendwidth?: number; + /** Sets the longitude coordinates (in degrees East). */ + lon?: Datum[] | TypedArray; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Sets the opacity of the trace. */ + opacity?: number; + /** Sets the radius of influence of one `lon` / `lat` point in pixels. Increasing the value makes the densitymapbox trace smoother, but less detailed. */ + radius?: number | number[]; + /** Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color. */ + reversescale?: boolean; + /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + showlegend?: boolean; + /** Determines whether or not a colorbar is displayed for this trace. */ + showscale?: boolean; + stream?: Stream; + /** mapbox subplots and traces are deprecated! Please consider switching to `map` subplots and traces. Learn more at: https://plotly.com/python/maplibre-migration/ as well as https://plotly.com/javascript/maplibre-migration/ Sets a reference between this trace's data coordinates and a mapbox subplot. If *mapbox* (the default value), the data refer to `layout.mapbox`. If *mapbox2*, the data refer to `layout.mapbox2`, and so on. */ + subplot?: string; + /** Sets text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: string | string[]; + type?: 'densitymapbox'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; + /** Sets the points' weight. For example, a value of 10 would be equivalent to having 10 points of weight 1 in the same spot */ + z?: Datum[] | TypedArray; + /** Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. */ + zauto?: boolean; + /** Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well. */ + zmax?: number; + /** Sets the mid-point of the color domain by scaling `zmin` and/or `zmax` to be equidistant to this point. Value should have the same units as in `z`. Has no effect when `zauto` is `false`. */ + zmid?: number; + /** Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well. */ + zmin?: number; +} + +export interface FunnelData { + /** Set several traces linked to the same position axis or matching axes to the same alignmentgroup. This controls whether bars compute their positional range dependently or independently. */ + alignmentgroup?: string; + /** Determines whether the text nodes are clipped about the subplot axes. To show the text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*. */ + cliponaxis?: boolean; + connector?: { + /** Sets the fill color. */ + fillcolor?: Color; + line?: { + /** Sets the line color. */ + color?: Color; + /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + dash?: Dash; + /** Sets the line width (in px). */ + width?: number; + }; + /** Determines if connector regions and lines are drawn. */ + visible?: boolean; + }; + /** Constrain the size of text inside or outside a bar to be no larger than the bar itself. */ + constraintext?: 'inside' | 'outside' | 'both' | 'none'; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | TypedArray; + /** Sets the x coordinate step. See `x0` for more info. */ + dx?: number; + /** Sets the y coordinate step. See `y0` for more info. */ + dy?: number; + /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + hoverinfo?: 'name' | 'x' | 'y' | 'text' | 'percent initial' | 'percent previous' | 'percent total' | 'all' | 'none' | 'skip' | (string & {}) | ('name' | 'x' | 'y' | 'text' | 'percent initial' | 'percent previous' | 'percent total' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `percentInitial`, `percentPrevious` and `percentTotal`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + hovertemplatefallback?: any; + /** Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | TypedArray; + /** Determines if texts are kept at center or start/end points in `textposition` *inside* mode. */ + insidetextanchor?: 'end' | 'middle' | 'start'; + /** Sets the font used for `text` lying inside the bar. */ + insidetextfont?: FontArray; + /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + legendrank?: number; + /** Sets the width (in px or fraction) of the legend for this trace. */ + legendwidth?: number; + marker?: { + /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + autocolorscale?: boolean; + /** Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. */ + cauto?: boolean; + /** Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well. */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`. */ + cmid?: number; + /** Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well. */ + cmin?: number; + /** Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set. */ + color?: Color | Color[]; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + colorscale?: ColorScale; + line?: Line; + /** Sets the opacity of the bars. */ + opacity?: number | number[]; + /** Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. */ + reversescale?: boolean; + /** Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array. */ + showscale?: boolean; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Shifts the position where the bar is drawn (in position axis units). In *group* barmode, traces that set *offset* will be excluded and drawn in *overlay* mode instead. */ + offset?: number; + /** Set several traces linked to the same position axis or matching axes to the same offsetgroup where bars of the same position coordinate will line up. */ + offsetgroup?: string; + /** Sets the opacity of the trace. */ + opacity?: number; + /** Sets the orientation of the funnels. With *v* (*h*), the value of the each bar spans along the vertical (horizontal). By default funnels are tend to be oriented horizontally; unless only *y* array is presented or orientation is set to *v*. Also regarding graphs including only 'horizontal' funnels, *autorange* on the *y-axis* are set to *reversed*. */ + orientation?: 'v' | 'h'; + /** Sets the font used for `text` lying outside the bar. */ + outsidetextfont?: FontArray; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + showlegend?: boolean; + stream?: Stream; + /** Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: string | string[]; + /** Sets the angle of the tick labels with respect to the bar. For example, a `tickangle` of -90 draws the tick labels vertically. With *auto* the texts may automatically be rotated to fit with the maximum size in bars. */ + textangle?: number | 'auto'; + /** Sets the font used for `text`. */ + textfont?: FontArray; + /** Determines which trace information appear on the graph. In the case of having multiple funnels, percentages & totals are computed separately (per trace). */ + textinfo?: 'label' | 'text' | 'percent initial' | 'percent previous' | 'percent total' | 'value' | 'none' | (string & {}); + /** Specifies the location of the `text`. *inside* positions `text` inside, next to the bar end (rotated and scaled if needed). *outside* positions `text` outside, next to the bar end (scaled if needed), unless there is another bar stacked on this one, then the text gets pushed inside. *auto* tries to position `text` inside the bar, but if the bar is too small and no bar is stacked on this one the text is moved outside. If *none*, no text appears. */ + textposition?: 'inside' | 'outside' | 'auto' | 'none' | ('inside' | 'outside' | 'auto' | 'none')[]; + /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `percentInitial`, `percentPrevious`, `percentTotal`, `label` and `value`. */ + texttemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + texttemplatefallback?: any; + type?: 'funnel'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; + /** Sets the bar width (in position axis units). */ + width?: number; + /** Sets the x coordinates. */ + x?: Datum[] | TypedArray; + /** Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step. */ + x0?: any; + /** Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. */ + xaxis?: string; + /** Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + xhoverformat?: string; + /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ + xperiod?: any; + /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the x0 axis. When `x0period` is round number of weeks, the `x0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ + xperiod0?: any; + /** Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis. */ + xperiodalignment?: 'start' | 'middle' | 'end'; + /** Sets the y coordinates. */ + y?: Datum[] | TypedArray; + /** Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step. */ + y0?: any; + /** Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. */ + yaxis?: string; + /** Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + yhoverformat?: string; + /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the y axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ + yperiod?: any; + /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the y0 axis. When `y0period` is round number of weeks, the `y0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ + yperiod0?: any; + /** Only relevant when the axis `type` is *date*. Sets the alignment of data points on the y axis. */ + yperiodalignment?: 'start' | 'middle' | 'end'; + /** Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. */ + zorder?: number; +} + +export interface FunnelareaData { + /** Sets the ratio between height and width */ + aspectratio?: number; + /** Sets the ratio between bottom length and maximum top length. */ + baseratio?: number; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | TypedArray; + /** Sets the label step. See `label0` for more info. */ + dlabel?: number; + domain?: Domain; + /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + hoverinfo?: 'label' | 'text' | 'value' | 'percent' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('label' | 'text' | 'value' | 'percent' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `label`, `color`, `value`, `text` and `percent`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + hovertemplatefallback?: any; + /** Sets hover text elements associated with each sector. If a single string, the same string appears for all data points. If an array of string, the items are mapped in order of this trace's sectors. To be seen, trace `hoverinfo` must contain a *text* flag. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | TypedArray; + /** Sets the font used for `textinfo` lying inside the sector. */ + insidetextfont?: FontArray; + /** Alternate to `labels`. Builds a numeric set of labels. Use with `dlabel` where `label0` is the starting label and `dlabel` the step. */ + label0?: number; + /** Sets the sector labels. If `labels` entries are duplicated, we sum associated `values` or simply count occurrences if `values` is not provided. For other array attributes (including color) we use the first non-empty entry among all occurrences of the label. */ + labels?: Datum[] | TypedArray; + /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + legendrank?: number; + /** Sets the width (in px or fraction) of the legend for this trace. */ + legendwidth?: number; + marker?: { + /** Sets the color of each sector. If not specified, the default trace color set is used to pick the sector colors. */ + colors?: Datum[] | TypedArray; + line?: Line; + /** Sets the pattern within the marker. */ + pattern?: Pattern; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Sets the opacity of the trace. */ + opacity?: number; + /** If there are multiple funnelareas that should be sized according to their totals, link them by providing a non-empty group id here shared by every trace in the same group. */ + scalegroup?: string; + /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + showlegend?: boolean; + stream?: Stream; + /** Sets text elements associated with each sector. If trace `textinfo` contains a *text* flag, these elements will be seen on the chart. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: Datum[] | TypedArray; + /** Sets the font used for `textinfo`. */ + textfont?: FontArray; + /** Determines which trace information appear on the graph. */ + textinfo?: 'label' | 'text' | 'value' | 'percent' | 'none' | (string & {}); + /** Specifies the location of the `textinfo`. */ + textposition?: 'inside' | 'none' | ('inside' | 'none')[]; + /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `label`, `color`, `value`, `text` and `percent`. */ + texttemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + texttemplatefallback?: any; + title?: { + /** Sets the font used for `title`. */ + font?: FontArray; + /** Specifies the location of the `title`. */ + position?: 'top left' | 'top center' | 'top right'; + /** Sets the title of the chart. If it is empty, no title is displayed. */ + text?: string; + }; + type?: 'funnelarea'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** Sets the values of the sectors. If omitted, we count occurrences of each label. */ + values?: Datum[] | TypedArray; + /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; +} + +export interface HeatmapData { + /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + autocolorscale?: boolean; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + colorscale?: ColorScale; + /** Determines whether or not gaps (i.e. {nan} or missing values) in the `z` data are filled in. It is defaulted to true if `z` is a one dimensional array and `zsmooth` is not false; otherwise it is defaulted to false. */ + connectgaps?: boolean; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | TypedArray; + /** Sets the x coordinate step. See `x0` for more info. */ + dx?: number; + /** Sets the y coordinate step. See `y0` for more info. */ + dy?: number; + /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Determines whether or not gaps (i.e. {nan} or missing values) in the `z` data have hover labels associated with them. */ + hoverongaps?: boolean; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + hovertemplatefallback?: any; + /** Same as `text`. */ + hovertext?: Datum[] | TypedArray; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | TypedArray; + /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + legendrank?: number; + /** Sets the width (in px or fraction) of the legend for this trace. */ + legendwidth?: number; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Sets the opacity of the trace. */ + opacity?: number; + /** Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color. */ + reversescale?: boolean; + /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + showlegend?: boolean; + /** Determines whether or not a colorbar is displayed for this trace. */ + showscale?: boolean; + stream?: Stream; + /** Sets the text elements associated with each z value. */ + text?: Datum[] | TypedArray; + /** Sets the text font. */ + textfont?: Font; + /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `x`, `y`, `z` and `text`. */ + texttemplate?: string; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + texttemplatefallback?: any; + /** Transposes the z data. */ + transpose?: boolean; + type?: 'heatmap'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; + /** Sets the x coordinates. */ + x?: Datum[] | TypedArray; + /** Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step. */ + x0?: any; + /** Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. */ + xaxis?: string; + /** Sets the calendar system to use with `x` date data. */ + xcalendar?: Calendar; + /** Sets the horizontal gap (in pixels) between bricks. */ + xgap?: number; + /** Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + xhoverformat?: string; + /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ + xperiod?: any; + /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the x0 axis. When `x0period` is round number of weeks, the `x0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ + xperiod0?: any; + /** Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis. */ + xperiodalignment?: 'start' | 'middle' | 'end'; + /** If *array*, the heatmap's x coordinates are given by *x* (the default behavior when `x` is provided). If *scaled*, the heatmap's x coordinates are given by *x0* and *dx* (the default behavior when `x` is not provided). */ + xtype?: 'array' | 'scaled'; + /** Sets the y coordinates. */ + y?: Datum[] | TypedArray; + /** Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step. */ + y0?: any; + /** Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. */ + yaxis?: string; + /** Sets the calendar system to use with `y` date data. */ + ycalendar?: Calendar; + /** Sets the vertical gap (in pixels) between bricks. */ + ygap?: number; + /** Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + yhoverformat?: string; + /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the y axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ + yperiod?: any; + /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the y0 axis. When `y0period` is round number of weeks, the `y0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ + yperiod0?: any; + /** Only relevant when the axis `type` is *date*. Sets the alignment of data points on the y axis. */ + yperiodalignment?: 'start' | 'middle' | 'end'; + /** If *array*, the heatmap's y coordinates are given by *y* (the default behavior when `y` is provided) If *scaled*, the heatmap's y coordinates are given by *y0* and *dy* (the default behavior when `y` is not provided) */ + ytype?: 'array' | 'scaled'; + /** Sets the z data. */ + z?: Datum[] | TypedArray; + /** Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. */ + zauto?: boolean; + /** Sets the hover text formatting rulefor `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ + zhoverformat?: string; + /** Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well. */ + zmax?: number; + /** Sets the mid-point of the color domain by scaling `zmin` and/or `zmax` to be equidistant to this point. Value should have the same units as in `z`. Has no effect when `zauto` is `false`. */ + zmid?: number; + /** Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well. */ + zmin?: number; + /** Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. */ + zorder?: number; + /** Picks a smoothing algorithm use to smooth `z` data. */ + zsmooth?: 'fast' | 'best' | false; +} + +export interface HistogramData { + /** Set several traces linked to the same position axis or matching axes to the same alignmentgroup. This controls whether bars compute their positional range dependently or independently. */ + alignmentgroup?: string; + /** Obsolete: since v1.42 each bin attribute is auto-determined separately and `autobinx` is not needed. However, we accept `autobinx: true` or `false` and will update `xbins` accordingly before deleting `autobinx` from the trace. */ + autobinx?: boolean; + /** Obsolete: since v1.42 each bin attribute is auto-determined separately and `autobiny` is not needed. However, we accept `autobiny: true` or `false` and will update `ybins` accordingly before deleting `autobiny` from the trace. */ + autobiny?: boolean; + /** Set a group of histogram traces which will have compatible bin settings. Note that traces on the same subplot and with the same *orientation* under `barmode` *stack*, *relative* and *group* are forced into the same bingroup, Using `bingroup`, traces under `barmode` *overlay* and on different axes (of the same axis type) can have compatible bin settings. Note that histogram and histogram2d* trace can share the same `bingroup` */ + bingroup?: string; + /** Determines whether the text nodes are clipped about the subplot axes. To show the text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*. */ + cliponaxis?: boolean; + /** Constrain the size of text inside or outside a bar to be no larger than the bar itself. */ + constraintext?: 'inside' | 'outside' | 'both' | 'none'; + cumulative?: { + /** Only applies if cumulative is enabled. Sets whether the current bin is included, excluded, or has half of its value included in the current cumulative value. *include* is the default for compatibility with various other tools, however it introduces a half-bin bias to the results. *exclude* makes the opposite half-bin bias, and *half* removes it. */ + currentbin?: 'include' | 'exclude' | 'half'; + /** Only applies if cumulative is enabled. If *increasing* (default) we sum all prior bins, so the result increases from left to right. If *decreasing* we sum later bins so the result decreases from left to right. */ + direction?: 'increasing' | 'decreasing'; + /** If true, display the cumulative distribution by summing the binned values. Use the `direction` and `centralbin` attributes to tune the accumulation method. Note: in this mode, the *density* `histnorm` settings behave the same as their equivalents without *density*: ** and *density* both rise to the number of data points, and *probability* and *probability density* both rise to the number of sample points. */ + enabled?: boolean; + }; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | TypedArray; + error_x?: { + /** Sets the data corresponding the length of each error bar. Values are plotted relative to the underlying data. */ + array?: Datum[] | TypedArray; + /** Sets the data corresponding the length of each error bar in the bottom (left) direction for vertical (horizontal) bars Values are plotted relative to the underlying data. */ + arrayminus?: Datum[] | TypedArray; + /** Sets the stroke color of the error bars. */ + color?: Color; + copy_ystyle?: boolean; + /** Determines whether or not the error bars have the same length in both direction (top/bottom for vertical bars, left/right for horizontal bars. */ + symmetric?: boolean; + /** Sets the thickness (in px) of the error bars. */ + thickness?: number; + traceref?: number; + tracerefminus?: number; + /** Determines the rule used to generate the error bars. If *constant*, the bar lengths are of a constant value. Set this constant in `value`. If *percent*, the bar lengths correspond to a percentage of underlying data. Set this percentage in `value`. If *sqrt*, the bar lengths correspond to the square of the underlying data. If *data*, the bar lengths are set with data set `array`. */ + type?: 'percent' | 'constant' | 'sqrt' | 'data'; + /** Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars. */ + value?: number; + /** Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars in the bottom (left) direction for vertical (horizontal) bars */ + valueminus?: number; + /** Determines whether or not this set of error bars is visible. */ + visible?: boolean; + /** Sets the width (in px) of the cross-bar at both ends of the error bars. */ + width?: number; + }; + error_y?: ErrorY; + /** Specifies the binning function used for this histogram trace. If *count*, the histogram values are computed by counting the number of values lying inside each bin. If *sum*, *avg*, *min*, *max*, the histogram values are computed using the sum, the average, the minimum or the maximum of the values lying inside each bin respectively. */ + histfunc?: 'count' | 'sum' | 'avg' | 'min' | 'max'; + /** Specifies the type of normalization used for this histogram trace. If **, the span of each bar corresponds to the number of occurrences (i.e. the number of data points lying inside the bins). If *percent* / *probability*, the span of each bar corresponds to the percentage / fraction of occurrences with respect to the total number of sample points (here, the sum of all bin HEIGHTS equals 100% / 1). If *density*, the span of each bar corresponds to the number of occurrences in a bin divided by the size of the bin interval (here, the sum of all bin AREAS equals the total number of sample points). If *probability density*, the area of each bar corresponds to the probability that an event will fall into the corresponding bin (here, the sum of all bin AREAS equals 1). */ + histnorm?: '' | 'percent' | 'probability' | 'density' | 'probability density'; + /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variable `binNumber` Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + hovertemplatefallback?: any; + /** Same as `text`. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | TypedArray; + /** Determines if texts are kept at center or start/end points in `textposition` *inside* mode. */ + insidetextanchor?: 'end' | 'middle' | 'start'; + /** Sets the font used for `text` lying inside the bar. */ + insidetextfont?: Font; + /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + legendrank?: number; + /** Sets the width (in px or fraction) of the legend for this trace. */ + legendwidth?: number; + marker?: { + /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + autocolorscale?: boolean; + /** Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. */ + cauto?: boolean; + /** Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well. */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`. */ + cmid?: number; + /** Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well. */ + cmin?: number; + /** Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set. */ + color?: Color | Color[]; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + colorscale?: ColorScale; + /** Sets the rounding of corners. May be an integer number of pixels, or a percentage of bar width (as a string ending in %). Defaults to `layout.barcornerradius`. In stack or relative barmode, the first trace to set cornerradius is used for the whole stack. */ + cornerradius?: any; + line?: Line; + /** Sets the opacity of the bars. */ + opacity?: number | number[]; + /** Sets the pattern within the marker. */ + pattern?: Pattern; + /** Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. */ + reversescale?: boolean; + /** Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array. */ + showscale?: boolean; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Specifies the maximum number of desired bins. This value will be used in an algorithm that will decide the optimal bin size such that the histogram best visualizes the distribution of the data. Ignored if `xbins.size` is provided. */ + nbinsx?: number; + /** Specifies the maximum number of desired bins. This value will be used in an algorithm that will decide the optimal bin size such that the histogram best visualizes the distribution of the data. Ignored if `ybins.size` is provided. */ + nbinsy?: number; + /** Set several traces linked to the same position axis or matching axes to the same offsetgroup where bars of the same position coordinate will line up. */ + offsetgroup?: string; + /** Sets the opacity of the trace. */ + opacity?: number; + /** Sets the orientation of the bars. With *v* (*h*), the value of the each bar spans along the vertical (horizontal). */ + orientation?: 'v' | 'h'; + /** Sets the font used for `text` lying outside the bar. */ + outsidetextfont?: Font; + selected?: { + marker?: { + /** Sets the marker color of selected points. */ + color?: Color; + /** Sets the marker opacity of selected points. */ + opacity?: number; + }; + textfont?: Font; + }; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + showlegend?: boolean; + stream?: Stream; + /** Sets hover text elements associated with each bar. If a single string, the same string appears over all bars. If an array of string, the items are mapped in order to the this trace's coordinates. */ + text?: string | string[]; + /** Sets the angle of the tick labels with respect to the bar. For example, a `tickangle` of -90 draws the tick labels vertically. With *auto* the texts may automatically be rotated to fit with the maximum size in bars. */ + textangle?: number | 'auto'; + /** Sets the text font. */ + textfont?: Font; + /** Specifies the location of the `text`. *inside* positions `text` inside, next to the bar end (rotated and scaled if needed). *outside* positions `text` outside, next to the bar end (scaled if needed), unless there is another bar stacked on this one, then the text gets pushed inside. *auto* tries to position `text` inside the bar, but if the bar is too small and no bar is stacked on this one the text is moved outside. If *none*, no text appears. */ + textposition?: 'inside' | 'outside' | 'auto' | 'none'; + /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `label` and `value`. */ + texttemplate?: string; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + texttemplatefallback?: any; + type?: 'histogram'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + unselected?: { + marker?: { + /** Sets the marker color of unselected points, applied only when a selection exists. */ + color?: Color; + /** Sets the marker opacity of unselected points, applied only when a selection exists. */ + opacity?: number; + }; + textfont?: Font; + }; + /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; + /** Sets the sample data to be binned on the x axis. */ + x?: Datum[] | TypedArray; + /** Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. */ + xaxis?: string; + xbins?: { + /** Sets the end value for the x axis bins. The last bin may not end exactly at this value, we increment the bin edge by `size` from `start` until we reach or exceed `end`. Defaults to the maximum data value. Like `start`, for dates use a date string, and for category data `end` is based on the category serial numbers. */ + end?: any; + /** Sets the size of each x axis bin. Default behavior: If `nbinsx` is 0 or omitted, we choose a nice round bin size such that the number of bins is about the same as the typical number of samples in each bin. If `nbinsx` is provided, we choose a nice round bin size giving no more than that many bins. For date data, use milliseconds or *M* for months, as in `axis.dtick`. For category data, the number of categories to bin together (always defaults to 1). If multiple non-overlaying histograms share a subplot, the first explicit `size` is used and all others discarded. If no `size` is provided,the sample data from all traces is combined to determine `size` as described above. */ + size?: any; + /** Sets the starting value for the x axis bins. Defaults to the minimum data value, shifted down if necessary to make nice round values and to remove ambiguous bin edges. For example, if most of the data is integers we shift the bin edges 0.5 down, so a `size` of 5 would have a default `start` of -0.5, so it is clear that 0-4 are in the first bin, 5-9 in the second, but continuous data gets a start of 0 and bins [0,5), [5,10) etc. Dates behave similarly, and `start` should be a date string. For category data, `start` is based on the category serial numbers, and defaults to -0.5. If multiple non-overlaying histograms share a subplot, the first explicit `start` is used exactly and all others are shifted down (if necessary) to differ from that one by an integer number of bins. */ + start?: any; + }; + /** Sets the calendar system to use with `x` date data. */ + xcalendar?: Calendar; + /** Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + xhoverformat?: string; + /** Sets the sample data to be binned on the y axis. */ + y?: Datum[] | TypedArray; + /** Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. */ + yaxis?: string; + ybins?: { + /** Sets the end value for the y axis bins. The last bin may not end exactly at this value, we increment the bin edge by `size` from `start` until we reach or exceed `end`. Defaults to the maximum data value. Like `start`, for dates use a date string, and for category data `end` is based on the category serial numbers. */ + end?: any; + /** Sets the size of each y axis bin. Default behavior: If `nbinsy` is 0 or omitted, we choose a nice round bin size such that the number of bins is about the same as the typical number of samples in each bin. If `nbinsy` is provided, we choose a nice round bin size giving no more than that many bins. For date data, use milliseconds or *M* for months, as in `axis.dtick`. For category data, the number of categories to bin together (always defaults to 1). If multiple non-overlaying histograms share a subplot, the first explicit `size` is used and all others discarded. If no `size` is provided,the sample data from all traces is combined to determine `size` as described above. */ + size?: any; + /** Sets the starting value for the y axis bins. Defaults to the minimum data value, shifted down if necessary to make nice round values and to remove ambiguous bin edges. For example, if most of the data is integers we shift the bin edges 0.5 down, so a `size` of 5 would have a default `start` of -0.5, so it is clear that 0-4 are in the first bin, 5-9 in the second, but continuous data gets a start of 0 and bins [0,5), [5,10) etc. Dates behave similarly, and `start` should be a date string. For category data, `start` is based on the category serial numbers, and defaults to -0.5. If multiple non-overlaying histograms share a subplot, the first explicit `start` is used exactly and all others are shifted down (if necessary) to differ from that one by an integer number of bins. */ + start?: any; + }; + /** Sets the calendar system to use with `y` date data. */ + ycalendar?: Calendar; + /** Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + yhoverformat?: string; + /** Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. */ + zorder?: number; +} + +export interface Histogram2dData { + /** Obsolete: since v1.42 each bin attribute is auto-determined separately and `autobinx` is not needed. However, we accept `autobinx: true` or `false` and will update `xbins` accordingly before deleting `autobinx` from the trace. */ + autobinx?: boolean; + /** Obsolete: since v1.42 each bin attribute is auto-determined separately and `autobiny` is not needed. However, we accept `autobiny: true` or `false` and will update `ybins` accordingly before deleting `autobiny` from the trace. */ + autobiny?: boolean; + /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + autocolorscale?: boolean; + /** Set the `xbingroup` and `ybingroup` default prefix For example, setting a `bingroup` of *1* on two histogram2d traces will make them their x-bins and y-bins match separately. */ + bingroup?: string; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + colorscale?: ColorScale; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | TypedArray; + /** Specifies the binning function used for this histogram trace. If *count*, the histogram values are computed by counting the number of values lying inside each bin. If *sum*, *avg*, *min*, *max*, the histogram values are computed using the sum, the average, the minimum or the maximum of the values lying inside each bin respectively. */ + histfunc?: 'count' | 'sum' | 'avg' | 'min' | 'max'; + /** Specifies the type of normalization used for this histogram trace. If **, the span of each bar corresponds to the number of occurrences (i.e. the number of data points lying inside the bins). If *percent* / *probability*, the span of each bar corresponds to the percentage / fraction of occurrences with respect to the total number of sample points (here, the sum of all bin HEIGHTS equals 100% / 1). If *density*, the span of each bar corresponds to the number of occurrences in a bin divided by the size of the bin interval (here, the sum of all bin AREAS equals the total number of sample points). If *probability density*, the area of each bar corresponds to the probability that an event will fall into the corresponding bin (here, the sum of all bin AREAS equals 1). */ + histnorm?: '' | 'percent' | 'probability' | 'density' | 'probability density'; + /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variable `z` Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + hovertemplatefallback?: any; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | TypedArray; + /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + legendrank?: number; + /** Sets the width (in px or fraction) of the legend for this trace. */ + legendwidth?: number; + marker?: { + /** Sets the aggregation data. */ + color?: Datum[] | TypedArray; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Specifies the maximum number of desired bins. This value will be used in an algorithm that will decide the optimal bin size such that the histogram best visualizes the distribution of the data. Ignored if `xbins.size` is provided. */ + nbinsx?: number; + /** Specifies the maximum number of desired bins. This value will be used in an algorithm that will decide the optimal bin size such that the histogram best visualizes the distribution of the data. Ignored if `ybins.size` is provided. */ + nbinsy?: number; + /** Sets the opacity of the trace. */ + opacity?: number; + /** Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color. */ + reversescale?: boolean; + /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + showlegend?: boolean; + /** Determines whether or not a colorbar is displayed for this trace. */ + showscale?: boolean; + stream?: Stream; + /** Sets the text font. */ + textfont?: Font; + /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variable `z` */ + texttemplate?: string; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + texttemplatefallback?: any; + type?: 'histogram2d'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; + /** Sets the sample data to be binned on the x axis. */ + x?: Datum[] | TypedArray; + /** Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. */ + xaxis?: string; + /** Set a group of histogram traces which will have compatible x-bin settings. Using `xbingroup`, histogram2d and histogram2dcontour traces (on axes of the same axis type) can have compatible x-bin settings. Note that the same `xbingroup` value can be used to set (1D) histogram `bingroup` */ + xbingroup?: string; + xbins?: { + /** Sets the end value for the x axis bins. The last bin may not end exactly at this value, we increment the bin edge by `size` from `start` until we reach or exceed `end`. Defaults to the maximum data value. Like `start`, for dates use a date string, and for category data `end` is based on the category serial numbers. */ + end?: any; + /** Sets the size of each x axis bin. Default behavior: If `nbinsx` is 0 or omitted, we choose a nice round bin size such that the number of bins is about the same as the typical number of samples in each bin. If `nbinsx` is provided, we choose a nice round bin size giving no more than that many bins. For date data, use milliseconds or *M* for months, as in `axis.dtick`. For category data, the number of categories to bin together (always defaults to 1). */ + size?: any; + /** Sets the starting value for the x axis bins. Defaults to the minimum data value, shifted down if necessary to make nice round values and to remove ambiguous bin edges. For example, if most of the data is integers we shift the bin edges 0.5 down, so a `size` of 5 would have a default `start` of -0.5, so it is clear that 0-4 are in the first bin, 5-9 in the second, but continuous data gets a start of 0 and bins [0,5), [5,10) etc. Dates behave similarly, and `start` should be a date string. For category data, `start` is based on the category serial numbers, and defaults to -0.5. */ + start?: any; + }; + /** Sets the calendar system to use with `x` date data. */ + xcalendar?: Calendar; + /** Sets the horizontal gap (in pixels) between bricks. */ + xgap?: number; + /** Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + xhoverformat?: string; + /** Sets the sample data to be binned on the y axis. */ + y?: Datum[] | TypedArray; + /** Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. */ + yaxis?: string; + /** Set a group of histogram traces which will have compatible y-bin settings. Using `ybingroup`, histogram2d and histogram2dcontour traces (on axes of the same axis type) can have compatible y-bin settings. Note that the same `ybingroup` value can be used to set (1D) histogram `bingroup` */ + ybingroup?: string; + ybins?: { + /** Sets the end value for the y axis bins. The last bin may not end exactly at this value, we increment the bin edge by `size` from `start` until we reach or exceed `end`. Defaults to the maximum data value. Like `start`, for dates use a date string, and for category data `end` is based on the category serial numbers. */ + end?: any; + /** Sets the size of each y axis bin. Default behavior: If `nbinsy` is 0 or omitted, we choose a nice round bin size such that the number of bins is about the same as the typical number of samples in each bin. If `nbinsy` is provided, we choose a nice round bin size giving no more than that many bins. For date data, use milliseconds or *M* for months, as in `axis.dtick`. For category data, the number of categories to bin together (always defaults to 1). */ + size?: any; + /** Sets the starting value for the y axis bins. Defaults to the minimum data value, shifted down if necessary to make nice round values and to remove ambiguous bin edges. For example, if most of the data is integers we shift the bin edges 0.5 down, so a `size` of 5 would have a default `start` of -0.5, so it is clear that 0-4 are in the first bin, 5-9 in the second, but continuous data gets a start of 0 and bins [0,5), [5,10) etc. Dates behave similarly, and `start` should be a date string. For category data, `start` is based on the category serial numbers, and defaults to -0.5. */ + start?: any; + }; + /** Sets the calendar system to use with `y` date data. */ + ycalendar?: Calendar; + /** Sets the vertical gap (in pixels) between bricks. */ + ygap?: number; + /** Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + yhoverformat?: string; + /** Sets the aggregation data. */ + z?: Datum[] | TypedArray; + /** Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. */ + zauto?: boolean; + /** Sets the hover text formatting rulefor `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ + zhoverformat?: string; + /** Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well. */ + zmax?: number; + /** Sets the mid-point of the color domain by scaling `zmin` and/or `zmax` to be equidistant to this point. Value should have the same units as in `z`. Has no effect when `zauto` is `false`. */ + zmid?: number; + /** Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well. */ + zmin?: number; + /** Picks a smoothing algorithm use to smooth `z` data. */ + zsmooth?: 'fast' | 'best' | false; +} + +export interface Histogram2dcontourData { + /** Obsolete: since v1.42 each bin attribute is auto-determined separately and `autobinx` is not needed. However, we accept `autobinx: true` or `false` and will update `xbins` accordingly before deleting `autobinx` from the trace. */ + autobinx?: boolean; + /** Obsolete: since v1.42 each bin attribute is auto-determined separately and `autobiny` is not needed. However, we accept `autobiny: true` or `false` and will update `ybins` accordingly before deleting `autobiny` from the trace. */ + autobiny?: boolean; + /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + autocolorscale?: boolean; + /** Determines whether or not the contour level attributes are picked by an algorithm. If *true*, the number of contour levels can be set in `ncontours`. If *false*, set the contour level attributes in `contours`. */ + autocontour?: boolean; + /** Set the `xbingroup` and `ybingroup` default prefix For example, setting a `bingroup` of *1* on two histogram2d traces will make them their x-bins and y-bins match separately. */ + bingroup?: string; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + colorscale?: ColorScale; + contours?: { + /** Determines the coloring method showing the contour values. If *fill*, coloring is done evenly between each contour level If *heatmap*, a heatmap gradient coloring is applied between each contour level. If *lines*, coloring is done on the contour lines. If *none*, no coloring is applied on this trace. */ + coloring?: 'fill' | 'heatmap' | 'lines' | 'none'; + /** Sets the end contour level value. Must be more than `contours.start` */ + end?: number; + /** Sets the font used for labeling the contour levels. The default color comes from the lines, if shown. The default family and size come from `layout.font`. */ + labelfont?: Font; + /** Sets the contour label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. */ + labelformat?: string; + /** Sets the constraint operation. *=* keeps regions equal to `value` *<* and *<=* keep regions less than `value` *>* and *>=* keep regions greater than `value` *[]*, *()*, *[)*, and *(]* keep regions inside `value[0]` to `value[1]` *][*, *)(*, *](*, *)[* keep regions outside `value[0]` to value[1]` Open vs. closed intervals make no difference to constraint display, but all versions are allowed for consistency with filter transforms. */ + operation?: '=' | '<' | '>=' | '>' | '<=' | '[]' | '()' | '[)' | '(]' | '][' | ')(' | '](' | ')['; + /** Determines whether to label the contour lines with their values. */ + showlabels?: boolean; + /** Determines whether or not the contour lines are drawn. Has an effect only if `contours.coloring` is set to *fill*. */ + showlines?: boolean; + /** Sets the step between each contour level. Must be positive. */ + size?: number; + /** Sets the starting contour level value. Must be less than `contours.end` */ + start?: number; + /** If `levels`, the data is represented as a contour plot with multiple levels displayed. If `constraint`, the data is represented as constraints with the invalid region shaded as specified by the `operation` and `value` parameters. */ + type?: 'levels' | 'constraint'; + /** Sets the value or values of the constraint boundary. When `operation` is set to one of the comparison values (`=,<,>=,>,<=`) *value* is expected to be a number. When `operation` is set to one of the interval values (`[],(),[),(],][,)(,](,)[`) *value* is expected to be an array of two numbers where the first is the lower bound and the second is the upper bound. */ + value?: any; + }; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | TypedArray; + /** Specifies the binning function used for this histogram trace. If *count*, the histogram values are computed by counting the number of values lying inside each bin. If *sum*, *avg*, *min*, *max*, the histogram values are computed using the sum, the average, the minimum or the maximum of the values lying inside each bin respectively. */ + histfunc?: 'count' | 'sum' | 'avg' | 'min' | 'max'; + /** Specifies the type of normalization used for this histogram trace. If **, the span of each bar corresponds to the number of occurrences (i.e. the number of data points lying inside the bins). If *percent* / *probability*, the span of each bar corresponds to the percentage / fraction of occurrences with respect to the total number of sample points (here, the sum of all bin HEIGHTS equals 100% / 1). If *density*, the span of each bar corresponds to the number of occurrences in a bin divided by the size of the bin interval (here, the sum of all bin AREAS equals the total number of sample points). If *probability density*, the area of each bar corresponds to the probability that an event will fall into the corresponding bin (here, the sum of all bin AREAS equals 1). */ + histnorm?: '' | 'percent' | 'probability' | 'density' | 'probability density'; + /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variable `z` Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + hovertemplatefallback?: any; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | TypedArray; + /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + legendrank?: number; + /** Sets the width (in px or fraction) of the legend for this trace. */ + legendwidth?: number; + line?: { + /** Sets the color of the contour level. Has no effect if `contours.coloring` is set to *lines*. */ + color?: Color; + /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + dash?: Dash; + /** Sets the amount of smoothing for the contour lines, where *0* corresponds to no smoothing. */ + smoothing?: number; + /** Sets the contour line width in (in px) */ + width?: number; + }; + marker?: { + /** Sets the aggregation data. */ + color?: Datum[] | TypedArray; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Specifies the maximum number of desired bins. This value will be used in an algorithm that will decide the optimal bin size such that the histogram best visualizes the distribution of the data. Ignored if `xbins.size` is provided. */ + nbinsx?: number; + /** Specifies the maximum number of desired bins. This value will be used in an algorithm that will decide the optimal bin size such that the histogram best visualizes the distribution of the data. Ignored if `ybins.size` is provided. */ + nbinsy?: number; + /** Sets the maximum number of contour levels. The actual number of contours will be chosen automatically to be less than or equal to the value of `ncontours`. Has an effect only if `autocontour` is *true* or if `contours.size` is missing. */ + ncontours?: number; + /** Sets the opacity of the trace. */ + opacity?: number; + /** Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color. */ + reversescale?: boolean; + /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + showlegend?: boolean; + /** Determines whether or not a colorbar is displayed for this trace. */ + showscale?: boolean; + stream?: Stream; + /** For this trace it only has an effect if `coloring` is set to *heatmap*. Sets the text font. */ + textfont?: Font; + /** For this trace it only has an effect if `coloring` is set to *heatmap*. Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `x`, `y`, `z` and `text`. */ + texttemplate?: string; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + texttemplatefallback?: any; + type?: 'histogram2dcontour'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; + /** Sets the sample data to be binned on the x axis. */ + x?: Datum[] | TypedArray; + /** Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. */ + xaxis?: string; + /** Set a group of histogram traces which will have compatible x-bin settings. Using `xbingroup`, histogram2d and histogram2dcontour traces (on axes of the same axis type) can have compatible x-bin settings. Note that the same `xbingroup` value can be used to set (1D) histogram `bingroup` */ + xbingroup?: string; + xbins?: { + /** Sets the end value for the x axis bins. The last bin may not end exactly at this value, we increment the bin edge by `size` from `start` until we reach or exceed `end`. Defaults to the maximum data value. Like `start`, for dates use a date string, and for category data `end` is based on the category serial numbers. */ + end?: any; + /** Sets the size of each x axis bin. Default behavior: If `nbinsx` is 0 or omitted, we choose a nice round bin size such that the number of bins is about the same as the typical number of samples in each bin. If `nbinsx` is provided, we choose a nice round bin size giving no more than that many bins. For date data, use milliseconds or *M* for months, as in `axis.dtick`. For category data, the number of categories to bin together (always defaults to 1). */ + size?: any; + /** Sets the starting value for the x axis bins. Defaults to the minimum data value, shifted down if necessary to make nice round values and to remove ambiguous bin edges. For example, if most of the data is integers we shift the bin edges 0.5 down, so a `size` of 5 would have a default `start` of -0.5, so it is clear that 0-4 are in the first bin, 5-9 in the second, but continuous data gets a start of 0 and bins [0,5), [5,10) etc. Dates behave similarly, and `start` should be a date string. For category data, `start` is based on the category serial numbers, and defaults to -0.5. */ + start?: any; + }; + /** Sets the calendar system to use with `x` date data. */ + xcalendar?: Calendar; + /** Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + xhoverformat?: string; + /** Sets the sample data to be binned on the y axis. */ + y?: Datum[] | TypedArray; + /** Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. */ + yaxis?: string; + /** Set a group of histogram traces which will have compatible y-bin settings. Using `ybingroup`, histogram2d and histogram2dcontour traces (on axes of the same axis type) can have compatible y-bin settings. Note that the same `ybingroup` value can be used to set (1D) histogram `bingroup` */ + ybingroup?: string; + ybins?: { + /** Sets the end value for the y axis bins. The last bin may not end exactly at this value, we increment the bin edge by `size` from `start` until we reach or exceed `end`. Defaults to the maximum data value. Like `start`, for dates use a date string, and for category data `end` is based on the category serial numbers. */ + end?: any; + /** Sets the size of each y axis bin. Default behavior: If `nbinsy` is 0 or omitted, we choose a nice round bin size such that the number of bins is about the same as the typical number of samples in each bin. If `nbinsy` is provided, we choose a nice round bin size giving no more than that many bins. For date data, use milliseconds or *M* for months, as in `axis.dtick`. For category data, the number of categories to bin together (always defaults to 1). */ + size?: any; + /** Sets the starting value for the y axis bins. Defaults to the minimum data value, shifted down if necessary to make nice round values and to remove ambiguous bin edges. For example, if most of the data is integers we shift the bin edges 0.5 down, so a `size` of 5 would have a default `start` of -0.5, so it is clear that 0-4 are in the first bin, 5-9 in the second, but continuous data gets a start of 0 and bins [0,5), [5,10) etc. Dates behave similarly, and `start` should be a date string. For category data, `start` is based on the category serial numbers, and defaults to -0.5. */ + start?: any; + }; + /** Sets the calendar system to use with `y` date data. */ + ycalendar?: Calendar; + /** Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + yhoverformat?: string; + /** Sets the aggregation data. */ + z?: Datum[] | TypedArray; + /** Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. */ + zauto?: boolean; + /** Sets the hover text formatting rulefor `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ + zhoverformat?: string; + /** Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well. */ + zmax?: number; + /** Sets the mid-point of the color domain by scaling `zmin` and/or `zmax` to be equidistant to this point. Value should have the same units as in `z`. Has no effect when `zauto` is `false`. */ + zmid?: number; + /** Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well. */ + zmin?: number; +} + +export interface IcicleData { + /** Determines how the items in `values` are summed. When set to *total*, items in `values` are taken to be value of all its descendants. When set to *remainder*, items in `values` corresponding to the root and the branches sectors are taken to be the extra part not part of the sum of the values at their leaves. */ + branchvalues?: 'remainder' | 'total'; + /** Determines default for `values` when it is not provided, by inferring a 1 for each of the *leaves* and/or *branches*, otherwise 0. */ + count?: 'branches' | 'leaves' | (string & {}); + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | TypedArray; + domain?: Domain; + /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + hoverinfo?: 'label' | 'text' | 'value' | 'name' | 'current path' | 'percent root' | 'percent entry' | 'percent parent' | 'all' | 'none' | 'skip' | (string & {}) | ('label' | 'text' | 'value' | 'name' | 'current path' | 'percent root' | 'percent entry' | 'percent parent' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `currentPath`, `root`, `entry`, `percentRoot`, `percentEntry` and `percentParent`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + hovertemplatefallback?: any; + /** Sets hover text elements associated with each sector. If a single string, the same string appears for all data points. If an array of string, the items are mapped in order of this trace's sectors. To be seen, trace `hoverinfo` must contain a *text* flag. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | TypedArray; + /** Sets the font used for `textinfo` lying inside the sector. */ + insidetextfont?: FontArray; + /** Sets the labels of each of the sectors. */ + labels?: Datum[] | TypedArray; + leaf?: { + /** Sets the opacity of the leaves. With colorscale it is defaulted to 1; otherwise it is defaulted to 0.7 */ + opacity?: number; + }; + /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + legendrank?: number; + /** Sets the width (in px or fraction) of the legend for this trace. */ + legendwidth?: number; + /** Sets the level from which this trace hierarchy is rendered. Set `level` to `''` to start from the root node in the hierarchy. Must be an "id" if `ids` is filled in, otherwise plotly attempts to find a matching item in `labels`. */ + level?: any; + marker?: { + /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if colors is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + autocolorscale?: boolean; + /** Determines whether or not the color domain is computed with respect to the input data (here colors) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if colors is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. */ + cauto?: boolean; + /** Sets the upper bound of the color domain. Has an effect only if colors is set to a numerical array. Value should have the same units as colors and if set, `marker.cmin` must be set as well. */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if colors is set to a numerical array. Value should have the same units as colors. Has no effect when `marker.cauto` is `false`. */ + cmid?: number; + /** Sets the lower bound of the color domain. Has an effect only if colors is set to a numerical array. Value should have the same units as colors and if set, `marker.cmax` must be set as well. */ + cmin?: number; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** Sets the color of each sector of this trace. If not specified, the default trace color set is used to pick the sector colors. */ + colors?: Datum[] | TypedArray; + /** Sets the colorscale. Has an effect only if colors is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + colorscale?: ColorScale; + line?: Line; + /** Sets the pattern within the marker. */ + pattern?: Pattern; + /** Reverses the color mapping if true. Has an effect only if colors is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. */ + reversescale?: boolean; + /** Determines whether or not a colorbar is displayed for this trace. Has an effect only if colors is set to a numerical array. */ + showscale?: boolean; + }; + /** Sets the number of rendered sectors from any given `level`. Set `maxdepth` to *-1* to render all the levels in the hierarchy. */ + maxdepth?: number; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Sets the opacity of the trace. */ + opacity?: number; + /** Sets the font used for `textinfo` lying outside the sector. This option refers to the root of the hierarchy presented on top left corner of a treemap graph. Please note that if a hierarchy has multiple root nodes, this option won't have any effect and `insidetextfont` would be used. */ + outsidetextfont?: FontArray; + /** Sets the parent sectors for each of the sectors. Empty string items '' are understood to reference the root node in the hierarchy. If `ids` is filled, `parents` items are understood to be "ids" themselves. When `ids` is not set, plotly attempts to find matching items in `labels`, but beware they must be unique. */ + parents?: Datum[] | TypedArray; + pathbar?: { + /** Determines which shape is used for edges between `barpath` labels. */ + edgeshape?: '>' | '<' | '|' | '/' | '\\'; + /** Determines on which side of the the treemap the `pathbar` should be presented. */ + side?: 'top' | 'bottom'; + /** Sets the font used inside `pathbar`. */ + textfont?: FontArray; + /** Sets the thickness of `pathbar` (in px). If not specified the `pathbar.textfont.size` is used with 3 pixles extra padding on each side. */ + thickness?: number; + /** Determines if the path bar is drawn i.e. outside the trace `domain` and with one pixel gap. */ + visible?: boolean; + }; + root?: Font; + /** Determines whether or not the sectors are reordered from largest to smallest. */ + sort?: boolean; + stream?: Stream; + /** Sets text elements associated with each sector. If trace `textinfo` contains a *text* flag, these elements will be seen on the chart. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: Datum[] | TypedArray; + /** Sets the font used for `textinfo`. */ + textfont?: FontArray; + /** Determines which trace information appear on the graph. */ + textinfo?: 'label' | 'text' | 'value' | 'current path' | 'percent root' | 'percent entry' | 'percent parent' | 'none' | (string & {}); + /** Sets the positions of the `text` elements. */ + textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right'; + /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `currentPath`, `root`, `entry`, `percentRoot`, `percentEntry`, `percentParent`, `label` and `value`. */ + texttemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + texttemplatefallback?: any; + tiling?: { + /** Determines if the positions obtained from solver are flipped on each axis. */ + flip?: 'x' | 'y' | (string & {}); + /** When set in conjunction with `tiling.flip`, determines on which side the root nodes are drawn in the chart. If `tiling.orientation` is *v* and `tiling.flip` is **, the root nodes appear at the top. If `tiling.orientation` is *v* and `tiling.flip` is *y*, the root nodes appear at the bottom. If `tiling.orientation` is *h* and `tiling.flip` is **, the root nodes appear at the left. If `tiling.orientation` is *h* and `tiling.flip` is *x*, the root nodes appear at the right. */ + orientation?: 'v' | 'h'; + /** Sets the inner padding (in px). */ + pad?: number; + }; + type?: 'icicle'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** Sets the values associated with each of the sectors. Use with `branchvalues` to determine how the values are summed. */ + values?: Datum[] | TypedArray; + /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; +} + +export interface ImageData { + /** Color model used to map the numerical color components described in `z` into colors. If `source` is specified, this attribute will be set to `rgba256` otherwise it defaults to `rgb`. */ + colormodel?: 'rgb' | 'rgba' | 'rgba256' | 'hsl' | 'hsla'; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | TypedArray; + /** Set the pixel's horizontal size. */ + dx?: number; + /** Set the pixel's vertical size */ + dy?: number; + /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + hoverinfo?: 'x' | 'y' | 'z' | 'color' | 'name' | 'text' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'color' | 'name' | 'text' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `z`, `color` and `colormodel`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + hovertemplatefallback?: any; + /** Same as `text`. */ + hovertext?: Datum[] | TypedArray; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | TypedArray; + /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + legendrank?: number; + /** Sets the width (in px or fraction) of the legend for this trace. */ + legendwidth?: number; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Sets the opacity of the trace. */ + opacity?: number; + /** Specifies the data URI of the image to be visualized. The URI consists of "data:image/[][;base64\\]," */ + source?: string; + stream?: Stream; + /** Sets the text elements associated with each z value. */ + text?: Datum[] | TypedArray; + type?: 'image'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; + /** Set the image's x position. The left edge of the image (or the right edge if the x axis is reversed or dx is negative) will be found at xmin=x0-dx/2 */ + x0?: any; + /** Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. */ + xaxis?: string; + /** Set the image's y position. The top edge of the image (or the bottom edge if the y axis is NOT reversed or if dy is negative) will be found at ymin=y0-dy/2. By default when an image trace is included, the y axis will be reversed so that the image is right-side-up, but you can disable this by setting yaxis.autorange=true or by providing an explicit y axis range. */ + y0?: any; + /** Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. */ + yaxis?: string; + /** A 2-dimensional array in which each element is an array of 3 or 4 numbers representing a color. */ + z?: Datum[] | TypedArray; + /** Array defining the higher bound for each color component. Note that the default value will depend on the colormodel. For the `rgb` colormodel, it is [255, 255, 255]. For the `rgba` colormodel, it is [255, 255, 255, 1]. For the `rgba256` colormodel, it is [255, 255, 255, 255]. For the `hsl` colormodel, it is [360, 100, 100]. For the `hsla` colormodel, it is [360, 100, 100, 1]. */ + zmax?: [number, number, number, number]; + /** Array defining the lower bound for each color component. Note that the default value will depend on the colormodel. For the `rgb` colormodel, it is [0, 0, 0]. For the `rgba` colormodel, it is [0, 0, 0, 0]. For the `rgba256` colormodel, it is [0, 0, 0, 0]. For the `hsl` colormodel, it is [0, 0, 0]. For the `hsla` colormodel, it is [0, 0, 0, 0]. */ + zmin?: [number, number, number, number]; + /** Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. */ + zorder?: number; + /** Picks a smoothing algorithm used to smooth `z` data. This only applies for image traces that use the `source` attribute. */ + zsmooth?: 'fast' | false; +} + +export interface IndicatorData { + /** Sets the horizontal alignment of the `text` within the box. Note that this attribute has no effect if an angular gauge is displayed: in this case, it is always centered */ + align?: 'left' | 'center' | 'right'; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | TypedArray; + delta?: { + decreasing?: { + /** Sets the color for increasing value. */ + color?: Color; + /** Sets the symbol to display for increasing value */ + symbol?: string; + }; + /** Set the font used to display the delta */ + font?: Font; + increasing?: { + /** Sets the color for increasing value. */ + color?: Color; + /** Sets the symbol to display for increasing value */ + symbol?: string; + }; + /** Sets the position of delta with respect to the number. */ + position?: 'top' | 'bottom' | 'left' | 'right'; + /** Sets a prefix appearing before the delta. */ + prefix?: string; + /** Sets the reference value to compute the delta. By default, it is set to the current value. */ + reference?: number; + /** Show relative change */ + relative?: boolean; + /** Sets a suffix appearing next to the delta. */ + suffix?: string; + /** Sets the value formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. */ + valueformat?: string; + }; + domain?: Domain; + /** The gauge of the Indicator plot. */ + gauge?: { + axis?: { + /** Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48* */ + dtick?: any; + /** Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from "femto" f (10^-15) to "tera" T (10^12). *SI extended* covers instead the full SI range from "quecto" q (10^-30) to "quetta" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation. */ + exponentformat?: 'none' | 'e' | 'E' | 'power' | 'SI' | 'B' | 'SI extended'; + /** Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. */ + labelalias?: any; + /** Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*. */ + minexponent?: number; + /** Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. */ + nticks?: number; + /** Sets the range of this axis. */ + range?: [number, number]; + /** If "true", even 4-digit integers are separated */ + separatethousands?: boolean; + /** If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. */ + showexponent?: 'all' | 'first' | 'last' | 'none'; + /** Determines whether or not the tick labels are drawn. */ + showticklabels?: boolean; + /** If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. */ + showtickprefix?: 'all' | 'first' | 'last' | 'none'; + /** Same as `showtickprefix` but for tick suffixes. */ + showticksuffix?: 'all' | 'first' | 'last' | 'none'; + /** Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears. */ + tick0?: any; + /** Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. */ + tickangle?: number | 'auto'; + /** Sets the tick color. */ + tickcolor?: Color; + /** Sets the color bar's tick label font */ + tickfont?: Font; + /** Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + tickformat?: string; + tickformatstops?: TickFormatStops[]; + /** Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*. */ + ticklabelstep?: number; + /** Sets the tick length (in px). */ + ticklen?: number; + /** Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). */ + tickmode?: 'auto' | 'linear' | 'array'; + /** Sets a tick label prefix. */ + tickprefix?: string; + /** Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines. */ + ticks?: 'outside' | 'inside' | ''; + /** Sets a tick label suffix. */ + ticksuffix?: string; + /** Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`. */ + ticktext?: Datum[] | TypedArray; + /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ + tickvals?: Datum[] | TypedArray; + /** Sets the tick width (in px). */ + tickwidth?: number; + /** A single toggle to hide the axis while preserving interaction like dragging. Default is true when a cheater plot is present on the axis, otherwise false */ + visible?: boolean; + }; + /** Set the appearance of the gauge's value */ + bar?: { + /** Sets the background color of the arc. */ + color?: Color; + line?: ErrorY; + /** Sets the thickness of the bar as a fraction of the total thickness of the gauge. */ + thickness?: number; + }; + /** Sets the gauge background color. */ + bgcolor?: Color; + /** Sets the color of the border enclosing the gauge. */ + bordercolor?: Color; + /** Sets the width (in px) of the border enclosing the gauge. */ + borderwidth?: number; + /** Set the shape of the gauge */ + shape?: 'angular' | 'bullet'; + steps?: Array<{ + /** Sets the background color of the arc. */ + color?: Color; + line?: ErrorY; + /** When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template. */ + name?: string; + /** Sets the range of this axis. */ + range?: [number, number]; + /** Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`. */ + templateitemname?: string; + /** Sets the thickness of the bar as a fraction of the total thickness of the gauge. */ + thickness?: number; + }>; + threshold?: { + line?: ErrorY; + /** Sets the thickness of the threshold line as a fraction of the thickness of the gauge. */ + thickness?: number; + /** Sets a treshold value drawn as a line. */ + value?: number; + }; + }; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | TypedArray; + /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + legendrank?: number; + /** Sets the width (in px or fraction) of the legend for this trace. */ + legendwidth?: number; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Determines how the value is displayed on the graph. `number` displays the value numerically in text. `delta` displays the difference to a reference value in text. Finally, `gauge` displays the value graphically on an axis. */ + mode?: 'number' | 'delta' | 'gauge' | (string & {}); + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + number?: { + /** Set the font used to display main number */ + font?: Font; + /** Sets a prefix appearing before the number. */ + prefix?: string; + /** Sets a suffix appearing next to the number. */ + suffix?: string; + /** Sets the value formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. */ + valueformat?: string; + }; + stream?: Stream; + title?: { + /** Sets the horizontal alignment of the title. It defaults to `center` except for bullet charts for which it defaults to right. */ + align?: 'left' | 'center' | 'right'; + /** Set the font used to display the title */ + font?: Font; + /** Sets the title of this indicator. */ + text?: string; + }; + type?: 'indicator'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** Sets the number to be displayed. */ + value?: number; + /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; +} + +export interface IsosurfaceData { + /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + autocolorscale?: boolean; + caps?: { + x?: { + /** Sets the fill ratio of the `caps`. The default fill value of the `caps` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. */ + fill?: number; + /** Sets the fill ratio of the `slices`. The default fill value of the x `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. */ + show?: boolean; + }; + y?: { + /** Sets the fill ratio of the `caps`. The default fill value of the `caps` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. */ + fill?: number; + /** Sets the fill ratio of the `slices`. The default fill value of the y `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. */ + show?: boolean; + }; + z?: { + /** Sets the fill ratio of the `caps`. The default fill value of the `caps` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. */ + fill?: number; + /** Sets the fill ratio of the `slices`. The default fill value of the z `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. */ + show?: boolean; + }; + }; + /** Determines whether or not the color domain is computed with respect to the input data (here `value`) or the bounds set in `cmin` and `cmax` Defaults to `false` when `cmin` and `cmax` are set by the user. */ + cauto?: boolean; + /** Sets the upper bound of the color domain. Value should have the same units as `value` and if set, `cmin` must be set as well. */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `cmin` and/or `cmax` to be equidistant to this point. Value should have the same units as `value`. Has no effect when `cauto` is `false`. */ + cmid?: number; + /** Sets the lower bound of the color domain. Value should have the same units as `value` and if set, `cmax` must be set as well. */ + cmin?: number; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + colorscale?: ColorScale; + contour?: { + /** Sets the color of the contour lines. */ + color?: Color; + /** Sets whether or not dynamic contours are shown on hover */ + show?: boolean; + /** Sets the width of the contour lines. */ + width?: number; + }; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | TypedArray; + /** Determines whether or not normal smoothing is applied to the meshes, creating meshes with an angular, low-poly look via flat reflections. */ + flatshading?: boolean; + /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + hovertemplatefallback?: any; + /** Same as `text`. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | TypedArray; + /** Sets the maximum boundary for iso-surface plot. */ + isomax?: number; + /** Sets the minimum boundary for iso-surface plot. */ + isomin?: number; + /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + legendrank?: number; + /** Sets the width (in px or fraction) of the legend for this trace. */ + legendwidth?: number; + lighting?: Lighting; + lightposition?: { + /** Numeric vector, representing the X coordinate for each vertex. */ + x?: number; + /** Numeric vector, representing the Y coordinate for each vertex. */ + y?: number; + /** Numeric vector, representing the Z coordinate for each vertex. */ + z?: number; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Sets the opacity of the surface. Please note that in the case of using high `opacity` values for example a value greater than or equal to 0.5 on two surfaces (and 0.25 with four surfaces), an overlay of multiple transparent surfaces may not perfectly be sorted in depth by the webgl API. This behavior may be improved in the near future and is subject to change. */ + opacity?: number; + /** Reverses the color mapping if true. If true, `cmin` will correspond to the last color in the array and `cmax` will correspond to the first color. */ + reversescale?: boolean; + /** Sets a reference between this trace's 3D coordinate system and a 3D scene. If *scene* (the default value), the (x,y,z) coordinates refer to `layout.scene`. If *scene2*, the (x,y,z) coordinates refer to `layout.scene2`, and so on. */ + scene?: string; + /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + showlegend?: boolean; + /** Determines whether or not a colorbar is displayed for this trace. */ + showscale?: boolean; + slices?: { + x?: { + /** Sets the fill ratio of the `slices`. The default fill value of the `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. */ + fill?: number; + /** Specifies the location(s) of slices on the axis. When not specified slices would be created for all points of the axis x except start and end. */ + locations?: Datum[] | TypedArray; + /** Determines whether or not slice planes about the x dimension are drawn. */ + show?: boolean; + }; + y?: { + /** Sets the fill ratio of the `slices`. The default fill value of the `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. */ + fill?: number; + /** Specifies the location(s) of slices on the axis. When not specified slices would be created for all points of the axis y except start and end. */ + locations?: Datum[] | TypedArray; + /** Determines whether or not slice planes about the y dimension are drawn. */ + show?: boolean; + }; + z?: { + /** Sets the fill ratio of the `slices`. The default fill value of the `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. */ + fill?: number; + /** Specifies the location(s) of slices on the axis. When not specified slices would be created for all points of the axis z except start and end. */ + locations?: Datum[] | TypedArray; + /** Determines whether or not slice planes about the z dimension are drawn. */ + show?: boolean; + }; + }; + spaceframe?: { + /** Sets the fill ratio of the `spaceframe` elements. The default fill value is 0.15 meaning that only 15% of the area of every faces of tetras would be shaded. Applying a greater `fill` ratio would allow the creation of stronger elements or could be sued to have entirely closed areas (in case of using 1). */ + fill?: number; + /** Displays/hides tetrahedron shapes between minimum and maximum iso-values. Often useful when either caps or surfaces are disabled or filled with values less than 1. */ + show?: boolean; + }; + stream?: Stream; + surface?: { + /** Sets the number of iso-surfaces between minimum and maximum iso-values. By default this value is 2 meaning that only minimum and maximum surfaces would be drawn. */ + count?: number; + /** Sets the fill ratio of the iso-surface. The default fill value of the surface is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. */ + fill?: number; + /** Sets the surface pattern of the iso-surface 3-D sections. The default pattern of the surface is `all` meaning that the rest of surface elements would be shaded. The check options (either 1 or 2) could be used to draw half of the squares on the surface. Using various combinations of capital `A`, `B`, `C`, `D` and `E` may also be used to reduce the number of triangles on the iso-surfaces and creating other patterns of interest. */ + pattern?: 'A' | 'B' | 'C' | 'D' | 'E' | 'all' | 'odd' | 'even' | (string & {}); + /** Hides/displays surfaces between minimum and maximum iso-values. */ + show?: boolean; + }; + /** Sets the text elements associated with the vertices. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: string | string[]; + type?: 'isosurface'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** Sets the 4th dimension (value) of the vertices. */ + value?: Datum[] | TypedArray; + /** Sets the hover text formatting rulefor `value` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ + valuehoverformat?: string; + /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; + /** Sets the X coordinates of the vertices on X axis. */ + x?: Datum[] | TypedArray; + /** Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + xhoverformat?: string; + /** Sets the Y coordinates of the vertices on Y axis. */ + y?: Datum[] | TypedArray; + /** Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + yhoverformat?: string; + /** Sets the Z coordinates of the vertices on Z axis. */ + z?: Datum[] | TypedArray; + /** Sets the hover text formatting rulefor `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`. */ + zhoverformat?: string; +} + +export interface Mesh3dData { + /** Determines how the mesh surface triangles are derived from the set of vertices (points) represented by the `x`, `y` and `z` arrays, if the `i`, `j`, `k` arrays are not supplied. For general use of `mesh3d` it is preferred that `i`, `j`, `k` are supplied. If *-1*, Delaunay triangulation is used, which is mainly suitable if the mesh is a single, more or less layer surface that is perpendicular to `delaunayaxis`. In case the `delaunayaxis` intersects the mesh surface at more than one point it will result triangles that are very long in the dimension of `delaunayaxis`. If *>0*, the alpha-shape algorithm is used. In this case, the positive `alphahull` value signals the use of the alpha-shape algorithm, _and_ its value acts as the parameter for the mesh fitting. If *0*, the convex-hull algorithm is used. It is suitable for convex bodies or if the intention is to enclose the `x`, `y` and `z` point set into a convex hull. */ + alphahull?: number; + /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + autocolorscale?: boolean; + /** Determines whether or not the color domain is computed with respect to the input data (here `intensity`) or the bounds set in `cmin` and `cmax` Defaults to `false` when `cmin` and `cmax` are set by the user. */ + cauto?: boolean; + /** Sets the upper bound of the color domain. Value should have the same units as `intensity` and if set, `cmin` must be set as well. */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `cmin` and/or `cmax` to be equidistant to this point. Value should have the same units as `intensity`. Has no effect when `cauto` is `false`. */ + cmid?: number; + /** Sets the lower bound of the color domain. Value should have the same units as `intensity` and if set, `cmax` must be set as well. */ + cmin?: number; + /** Sets the color of the whole mesh */ + color?: Color; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + colorscale?: ColorScale; + contour?: { + /** Sets the color of the contour lines. */ + color?: Color; + /** Sets whether or not dynamic contours are shown on hover */ + show?: boolean; + /** Sets the width of the contour lines. */ + width?: number; + }; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | TypedArray; + /** Sets the Delaunay axis, which is the axis that is perpendicular to the surface of the Delaunay triangulation. It has an effect if `i`, `j`, `k` are not provided and `alphahull` is set to indicate Delaunay triangulation. */ + delaunayaxis?: 'x' | 'y' | 'z'; + /** Sets the color of each face Overrides *color* and *vertexcolor*. */ + facecolor?: Datum[] | TypedArray; + /** Determines whether or not normal smoothing is applied to the meshes, creating meshes with an angular, low-poly look via flat reflections. */ + flatshading?: boolean; + /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + hovertemplatefallback?: any; + /** Same as `text`. */ + hovertext?: string | string[]; + /** A vector of vertex indices, i.e. integer values between 0 and the length of the vertex vectors, representing the *first* vertex of a triangle. For example, `{i[m], j[m], k[m]}` together represent face m (triangle m) in the mesh, where `i[m] = n` points to the triplet `{x[n], y[n], z[n]}` in the vertex arrays. Therefore, each element in `i` represents a point in space, which is the first vertex of a triangle. */ + i?: Datum[] | TypedArray; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | TypedArray; + /** Sets the intensity values for vertices or cells as defined by `intensitymode`. It can be used for plotting fields on meshes. */ + intensity?: Datum[] | TypedArray; + /** Determines the source of `intensity` values. */ + intensitymode?: 'vertex' | 'cell'; + /** A vector of vertex indices, i.e. integer values between 0 and the length of the vertex vectors, representing the *second* vertex of a triangle. For example, `{i[m], j[m], k[m]}` together represent face m (triangle m) in the mesh, where `j[m] = n` points to the triplet `{x[n], y[n], z[n]}` in the vertex arrays. Therefore, each element in `j` represents a point in space, which is the second vertex of a triangle. */ + j?: Datum[] | TypedArray; + /** A vector of vertex indices, i.e. integer values between 0 and the length of the vertex vectors, representing the *third* vertex of a triangle. For example, `{i[m], j[m], k[m]}` together represent face m (triangle m) in the mesh, where `k[m] = n` points to the triplet `{x[n], y[n], z[n]}` in the vertex arrays. Therefore, each element in `k` represents a point in space, which is the third vertex of a triangle. */ + k?: Datum[] | TypedArray; + /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + legendrank?: number; + /** Sets the width (in px or fraction) of the legend for this trace. */ + legendwidth?: number; + lighting?: Lighting; + lightposition?: { + /** Numeric vector, representing the X coordinate for each vertex. */ + x?: number; + /** Numeric vector, representing the Y coordinate for each vertex. */ + y?: number; + /** Numeric vector, representing the Z coordinate for each vertex. */ + z?: number; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Sets the opacity of the surface. Please note that in the case of using high `opacity` values for example a value greater than or equal to 0.5 on two surfaces (and 0.25 with four surfaces), an overlay of multiple transparent surfaces may not perfectly be sorted in depth by the webgl API. This behavior may be improved in the near future and is subject to change. */ + opacity?: number; + /** Reverses the color mapping if true. If true, `cmin` will correspond to the last color in the array and `cmax` will correspond to the first color. */ + reversescale?: boolean; + /** Sets a reference between this trace's 3D coordinate system and a 3D scene. If *scene* (the default value), the (x,y,z) coordinates refer to `layout.scene`. If *scene2*, the (x,y,z) coordinates refer to `layout.scene2`, and so on. */ + scene?: string; + /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + showlegend?: boolean; + /** Determines whether or not a colorbar is displayed for this trace. */ + showscale?: boolean; + stream?: Stream; + /** Sets the text elements associated with the vertices. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: string | string[]; + type?: 'mesh3d'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** Sets the color of each vertex Overrides *color*. While Red, green and blue colors are in the range of 0 and 255; in the case of having vertex color data in RGBA format, the alpha color should be normalized to be between 0 and 1. */ + vertexcolor?: Datum[] | TypedArray; + /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; + /** Sets the X coordinates of the vertices. The nth element of vectors `x`, `y` and `z` jointly represent the X, Y and Z coordinates of the nth vertex. */ + x?: Datum[] | TypedArray; + /** Sets the calendar system to use with `x` date data. */ + xcalendar?: Calendar; + /** Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + xhoverformat?: string; + /** Sets the Y coordinates of the vertices. The nth element of vectors `x`, `y` and `z` jointly represent the X, Y and Z coordinates of the nth vertex. */ + y?: Datum[] | TypedArray; + /** Sets the calendar system to use with `y` date data. */ + ycalendar?: Calendar; + /** Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + yhoverformat?: string; + /** Sets the Z coordinates of the vertices. The nth element of vectors `x`, `y` and `z` jointly represent the X, Y and Z coordinates of the nth vertex. */ + z?: Datum[] | TypedArray; + /** Sets the calendar system to use with `z` date data. */ + zcalendar?: Calendar; + /** Sets the hover text formatting rulefor `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`. */ + zhoverformat?: string; +} + +export interface OhlcData { + /** Sets the close values. */ + close?: Datum[] | TypedArray; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | TypedArray; + decreasing?: { + line?: { + /** Sets the line color. */ + color?: Color; + /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + dash?: Dash; + /** Sets the line width (in px). */ + width?: number; + }; + }; + /** Sets the high values. */ + high?: Datum[] | TypedArray; + /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: { + /** Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines */ + align?: 'left' | 'right' | 'auto' | ('left' | 'right' | 'auto')[]; + /** Sets the background color of the hover labels for this trace */ + bgcolor?: Color | Color[]; + /** Sets the border color of the hover labels for this trace. */ + bordercolor?: Color | Color[]; + /** Sets the font used in hover labels. */ + font?: FontArray; + /** Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis. */ + namelength?: number | number[]; + /** Sets whether or not to show the hover label arrow/triangle pointing to the data point. */ + showarrow?: boolean; + /** Show hover information (open, close, high, low) in separate labels, rather than a single unified label. Default: *false*. When set to *true*, `hovertemplate` is ignored. */ + split?: boolean; + }; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `open`, `high`, `low` and `close`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + hovertemplatefallback?: any; + /** Same as `text`. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | TypedArray; + increasing?: { + line?: { + /** Sets the line color. */ + color?: Color; + /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + dash?: Dash; + /** Sets the line width (in px). */ + width?: number; + }; + }; + /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + legendrank?: number; + /** Sets the width (in px or fraction) of the legend for this trace. */ + legendwidth?: number; + line?: { + /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). Note that this style setting can also be set per direction via `increasing.line.dash` and `decreasing.line.dash`. */ + dash?: Dash; + /** [object Object] Note that this style setting can also be set per direction via `increasing.line.width` and `decreasing.line.width`. */ + width?: number; + }; + /** Sets the low values. */ + low?: Datum[] | TypedArray; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Sets the opacity of the trace. */ + opacity?: number; + /** Sets the open values. */ + open?: Datum[] | TypedArray; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + showlegend?: boolean; + stream?: Stream; + /** Sets hover text elements associated with each sample point. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to this trace's sample points. */ + text?: string | string[]; + /** Sets the width of the open/close tick marks relative to the *x* minimal interval. */ + tickwidth?: number; + type?: 'ohlc'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; + /** Sets the x coordinates. If absent, linear coordinate will be generated. */ + x?: Datum[] | TypedArray; + /** Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. */ + xaxis?: string; + /** Sets the calendar system to use with `x` date data. */ + xcalendar?: Calendar; + /** Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + xhoverformat?: string; + /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ + xperiod?: any; + /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the x0 axis. When `x0period` is round number of weeks, the `x0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ + xperiod0?: any; + /** Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis. */ + xperiodalignment?: 'start' | 'middle' | 'end'; + /** Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. */ + yaxis?: string; + /** Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + yhoverformat?: string; + /** Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. */ + zorder?: number; +} + +export interface ParcatsData { + /** Sets the drag interaction mode for categories and dimensions. If `perpendicular`, the categories can only move along a line perpendicular to the paths. If `freeform`, the categories can freely move on the plane. If `fixed`, the categories and dimensions are stationary. */ + arrangement?: 'perpendicular' | 'freeform' | 'fixed'; + /** Sort paths so that like colors are bundled together within each category. */ + bundlecolors?: boolean; + /** The number of observations represented by each state. Defaults to 1 so that each state represents one observation */ + counts?: number | number[]; + dimensions?: Array<{ + /** Sets the order in which categories in this dimension appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`. */ + categoryarray?: Datum[] | TypedArray; + /** Specifies the ordering logic for the categories in the dimension. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. */ + categoryorder?: 'trace' | 'category ascending' | 'category descending' | 'array'; + /** The display index of dimension, from left to right, zero indexed, defaults to dimension index. */ + displayindex?: number; + /** The shown name of the dimension. */ + label?: string; + /** Sets alternative tick labels for the categories in this dimension. Only has an effect if `categoryorder` is set to *array*. Should be an array the same length as `categoryarray` Used with `categoryorder`. */ + ticktext?: Datum[] | TypedArray; + /** Dimension values. `values[n]` represents the category value of the `n`th point in the dataset, therefore the `values` vector for all dimensions must be the same (longer vectors will be truncated). */ + values?: Datum[] | TypedArray; + /** Shows the dimension when set to `true` (the default). Hides the dimension for `false`. */ + visible?: boolean; + }>; + domain?: Domain; + /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + hoverinfo?: 'count' | 'probability' | 'all' | 'none' | 'skip' | (string & {}); + /** Sets the hover interaction mode for the parcats diagram. If `category`, hover interaction take place per category. If `color`, hover interactions take place per color per category. If `dimension`, hover interactions take place across all categories per dimension. */ + hoveron?: 'category' | 'color' | 'dimension'; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `count`, `probability`, `category`, `categorycount`, `colorcount` and `bandcolorcount`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + hovertemplatefallback?: any; + /** Sets the font for the `dimension` labels. */ + labelfont?: Font; + legendgrouptitle?: LegendGroupTitle; + /** Sets the width (in px or fraction) of the legend for this trace. */ + legendwidth?: number; + line?: { + /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `line.colorscale`. Has an effect only if in `line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + autocolorscale?: boolean; + /** Determines whether or not the color domain is computed with respect to the input data (here in `line.color`) or the bounds set in `line.cmin` and `line.cmax` Has an effect only if in `line.color` is set to a numerical array. Defaults to `false` when `line.cmin` and `line.cmax` are set by the user. */ + cauto?: boolean; + /** Sets the upper bound of the color domain. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color` and if set, `line.cmin` must be set as well. */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `line.cmin` and/or `line.cmax` to be equidistant to this point. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color`. Has no effect when `line.cauto` is `false`. */ + cmid?: number; + /** Sets the lower bound of the color domain. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color` and if set, `line.cmax` must be set as well. */ + cmin?: number; + /** Sets the line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `line.cmin` and `line.cmax` if set. */ + color?: Color | Color[]; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** Sets the colorscale. Has an effect only if in `line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `line.cmin` and `line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + colorscale?: ColorScale; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `count` and `probability`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + hovertemplatefallback?: any; + /** Reverses the color mapping if true. Has an effect only if in `line.color` is set to a numerical array. If true, `line.cmin` will correspond to the last color in the array and `line.cmax` will correspond to the first color. */ + reversescale?: boolean; + /** Sets the shape of the paths. If `linear`, paths are composed of straight lines. If `hspline`, paths are composed of horizontal curved splines */ + shape?: 'linear' | 'hspline'; + /** Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `line.color` is set to a numerical array. */ + showscale?: boolean; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Sets the path sorting algorithm. If `forward`, sort paths based on dimension categories from left to right. If `backward`, sort paths based on dimensions categories from right to left. */ + sortpaths?: 'forward' | 'backward'; + stream?: Stream; + /** Sets the font for the `category` labels. */ + tickfont?: Font; + type?: 'parcats'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; +} + +export interface ParcoordsData { + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | TypedArray; + dimensions?: Array<{ + /** The domain range to which the filter on the dimension is constrained. Must be an array of `[fromValue, toValue]` with `fromValue <= toValue`, or if `multiselect` is not disabled, you may give an array of arrays, where each inner array is `[fromValue, toValue]`. */ + constraintrange?: any[]; + /** The shown name of the dimension. */ + label?: string; + /** Do we allow multiple selection ranges or just a single range? */ + multiselect?: boolean; + /** When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template. */ + name?: string; + /** The domain range that represents the full, shown axis extent. Defaults to the `values` extent. Must be an array of `[fromValue, toValue]` with finite numbers as elements. */ + range?: [number, number]; + /** Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`. */ + templateitemname?: string; + /** Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + tickformat?: string; + /** Sets the text displayed at the ticks position via `tickvals`. */ + ticktext?: Datum[] | TypedArray; + /** Sets the values at which ticks on this axis appear. */ + tickvals?: Datum[] | TypedArray; + /** Dimension values. `values[n]` represents the value of the `n`th point in the dataset, therefore the `values` vector for all dimensions must be the same (longer vectors will be truncated). Each value must be a finite number. */ + values?: Datum[] | TypedArray; + /** Shows the dimension when set to `true` (the default). Hides the dimension for `false`. */ + visible?: boolean; + }>; + domain?: Domain; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | TypedArray; + /** Sets the angle of the labels with respect to the horizontal. For example, a `tickangle` of -90 draws the labels vertically. Tilted labels with *labelangle* may be positioned better inside margins when `labelposition` is set to *bottom*. */ + labelangle?: number | 'auto'; + /** Sets the font for the `dimension` labels. */ + labelfont?: Font; + /** Specifies the location of the `label`. *top* positions labels above, next to the title *bottom* positions labels below the graph Tilted labels with *labelangle* may be positioned better inside margins when `labelposition` is set to *bottom*. */ + labelside?: 'top' | 'bottom'; + /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + legendrank?: number; + /** Sets the width (in px or fraction) of the legend for this trace. */ + legendwidth?: number; + line?: { + /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `line.colorscale`. Has an effect only if in `line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + autocolorscale?: boolean; + /** Determines whether or not the color domain is computed with respect to the input data (here in `line.color`) or the bounds set in `line.cmin` and `line.cmax` Has an effect only if in `line.color` is set to a numerical array. Defaults to `false` when `line.cmin` and `line.cmax` are set by the user. */ + cauto?: boolean; + /** Sets the upper bound of the color domain. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color` and if set, `line.cmin` must be set as well. */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `line.cmin` and/or `line.cmax` to be equidistant to this point. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color`. Has no effect when `line.cauto` is `false`. */ + cmid?: number; + /** Sets the lower bound of the color domain. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color` and if set, `line.cmax` must be set as well. */ + cmin?: number; + /** Sets the line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `line.cmin` and `line.cmax` if set. */ + color?: Color | Color[]; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** Sets the colorscale. Has an effect only if in `line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `line.cmin` and `line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + colorscale?: ColorScale; + /** Reverses the color mapping if true. Has an effect only if in `line.color` is set to a numerical array. If true, `line.cmin` will correspond to the last color in the array and `line.cmax` will correspond to the first color. */ + reversescale?: boolean; + /** Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `line.color` is set to a numerical array. */ + showscale?: boolean; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Sets the font for the `dimension` range values. */ + rangefont?: Font; + stream?: Stream; + /** Sets the font for the `dimension` tick values. */ + tickfont?: Font; + type?: 'parcoords'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + unselected?: { + line?: { + /** Sets the base color of unselected lines. in connection with `unselected.line.opacity`. */ + color?: Color; + /** Sets the opacity of unselected lines. The default *auto* decreases the opacity smoothly as the number of lines increases. Use *1* to achieve exact `unselected.line.color`. */ + opacity?: number; + }; + }; + /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; +} + +export interface PieData { + /** Determines whether outside text labels can push the margins. */ + automargin?: boolean; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | TypedArray; + /** Specifies the direction at which succeeding sectors follow one another. */ + direction?: 'clockwise' | 'counterclockwise'; + /** Sets the label step. See `label0` for more info. */ + dlabel?: number; + domain?: Domain; + /** Sets the fraction of the radius to cut out of the pie. Use this to make a donut chart. */ + hole?: number; + /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + hoverinfo?: 'label' | 'text' | 'value' | 'percent' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('label' | 'text' | 'value' | 'percent' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `label`, `color`, `value`, `percent` and `text`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + hovertemplatefallback?: any; + /** Sets hover text elements associated with each sector. If a single string, the same string appears for all data points. If an array of string, the items are mapped in order of this trace's sectors. To be seen, trace `hoverinfo` must contain a *text* flag. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | TypedArray; + /** Sets the font used for `textinfo` lying inside the sector. */ + insidetextfont?: FontArray; + /** Controls the orientation of the text inside chart sectors. When set to *auto*, text may be oriented in any direction in order to be as big as possible in the middle of a sector. The *horizontal* option orients text to be parallel with the bottom of the chart, and may make text smaller in order to achieve that goal. The *radial* option orients text along the radius of the sector. The *tangential* option orients text perpendicular to the radius of the sector. */ + insidetextorientation?: 'horizontal' | 'radial' | 'tangential' | 'auto'; + /** Alternate to `labels`. Builds a numeric set of labels. Use with `dlabel` where `label0` is the starting label and `dlabel` the step. */ + label0?: number; + /** Sets the sector labels. If `labels` entries are duplicated, we sum associated `values` or simply count occurrences if `values` is not provided. For other array attributes (including color) we use the first non-empty entry among all occurrences of the label. */ + labels?: Datum[] | TypedArray; + /** Sets the reference to a legend to show the pie slices in. Can be an array if `values` is set. In that case, each entry specifies the legend reference for one slice. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string | string[]; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for this pie. If passed as an array, this will set the legend rank of the individual pie slices. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + legendrank?: number | number[]; + /** Sets the width (in px or fraction) of the legend for this trace. */ + legendwidth?: number; + marker?: { + /** Sets the color of each sector. If not specified, the default trace color set is used to pick the sector colors. */ + colors?: Datum[] | TypedArray; + line?: Line; + /** Sets the pattern within the marker. */ + pattern?: Pattern; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Sets the opacity of the trace. */ + opacity?: number; + /** Sets the font used for `textinfo` lying outside the sector. */ + outsidetextfont?: FontArray; + /** Sets the fraction of larger radius to pull the sectors out from the center. This can be a constant to pull all slices apart from each other equally or an array to highlight one or more slices. */ + pull?: number | number[]; + /** Instead of the first slice starting at 12 o'clock, rotate to some other angle. */ + rotation?: number | 'auto'; + /** If there are multiple pie charts that should be sized according to their totals, link them by providing a non-empty group id here shared by every trace in the same group. */ + scalegroup?: string; + /** Determines whether or not items corresponding to the pie slices are shown in the legend. Can be an array if `values` is set. In that case, each entry specifies appearance in the legend for one slice. */ + showlegend?: boolean | boolean[]; + /** Determines whether or not the sectors are reordered from largest to smallest. */ + sort?: boolean; + stream?: Stream; + /** Sets text elements associated with each sector. If trace `textinfo` contains a *text* flag, these elements will be seen on the chart. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: Datum[] | TypedArray; + /** Sets the font used for `textinfo`. */ + textfont?: FontArray; + /** Determines which trace information appear on the graph. */ + textinfo?: 'label' | 'text' | 'value' | 'percent' | 'none' | (string & {}); + /** Specifies the location of the `textinfo`. */ + textposition?: 'inside' | 'outside' | 'auto' | 'none' | ('inside' | 'outside' | 'auto' | 'none')[]; + /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `label`, `color`, `value`, `percent` and `text`. */ + texttemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + texttemplatefallback?: any; + title?: { + /** Sets the font used for `title`. */ + font?: FontArray; + /** Specifies the location of the `title`. */ + position?: 'top left' | 'top center' | 'top right' | 'middle center' | 'bottom left' | 'bottom center' | 'bottom right'; + /** Sets the title of the chart. If it is empty, no title is displayed. */ + text?: string; + }; + type?: 'pie'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** Sets the values of the sectors. If omitted, we count occurrences of each label. */ + values?: Datum[] | TypedArray; + /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; +} + +export interface SankeyData { + /** If value is `snap` (the default), the node arrangement is assisted by automatic snapping of elements to preserve space between nodes specified via `nodepad`. If value is `perpendicular`, the nodes can only move along a line perpendicular to the flow. If value is `freeform`, the nodes can freely move on the plane. If value is `fixed`, the nodes are stationary. */ + arrangement?: 'snap' | 'perpendicular' | 'freeform' | 'fixed'; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | TypedArray; + domain?: Domain; + /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. Note that this attribute is superseded by `node.hoverinfo` and `node.hoverinfo` for nodes and links respectively. */ + hoverinfo?: 'all' | 'none' | 'skip' | (string & {}); + hoverlabel?: HoverLabel; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | TypedArray; + /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + legendrank?: number; + /** Sets the width (in px or fraction) of the legend for this trace. */ + legendwidth?: number; + /** The links of the Sankey plot. */ + link?: { + /** Sets the length (in px) of the links arrow, if 0 no arrow will be drawn. */ + arrowlen?: number; + /** Sets the `link` color. It can be a single value, or an array for specifying color for each `link`. If `link.color` is omitted, then by default, a translucent grey link will be used. */ + color?: Color | Color[]; + colorscales?: Array<{ + /** Sets the upper bound of the color domain. */ + cmax?: number; + /** Sets the lower bound of the color domain. */ + cmin?: number; + /** Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + colorscale?: ColorScale; + /** The label of the links to color based on their concentration within a flow. */ + label?: string; + /** When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template. */ + name?: string; + /** Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`. */ + templateitemname?: string; + }>; + /** Assigns extra data to each link. */ + customdata?: Datum[] | TypedArray; + /** Sets the `link` hover color. It can be a single value, or an array for specifying hover colors for each `link`. If `link.hovercolor` is omitted, then by default, links will become slightly more opaque when hovered over. */ + hovercolor?: Color | Color[]; + /** Determines which trace information appear when hovering links. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + hoverinfo?: 'all' | 'none' | 'skip'; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `value` and `label`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + hovertemplatefallback?: any; + /** The shown name of the link. */ + label?: Datum[] | TypedArray; + line?: Line; + /** An integer number `[0..nodes.length - 1]` that represents the source node. */ + source?: Datum[] | TypedArray; + /** An integer number `[0..nodes.length - 1]` that represents the target node. */ + target?: Datum[] | TypedArray; + /** A numeric value representing the flow volume value. */ + value?: Datum[] | TypedArray; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** The nodes of the Sankey plot. */ + node?: { + /** Sets the alignment method used to position the nodes along the horizontal axis. */ + align?: 'justify' | 'left' | 'right' | 'center'; + /** Sets the `node` color. It can be a single value, or an array for specifying color for each `node`. If `node.color` is omitted, then the default `Plotly` color palette will be cycled through to have a variety of colors. These defaults are not fully opaque, to allow some visibility of what is beneath the node. */ + color?: Color | Color[]; + /** Assigns extra data to each node. */ + customdata?: Datum[] | TypedArray; + /** Groups of nodes. Each group is defined by an array with the indices of the nodes it contains. Multiple groups can be specified. */ + groups?: number[]; + /** Determines which trace information appear when hovering nodes. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + hoverinfo?: 'all' | 'none' | 'skip'; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `value` and `label`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + hovertemplatefallback?: any; + /** The shown name of the node. */ + label?: Datum[] | TypedArray; + line?: Line; + /** Sets the padding (in px) between the `nodes`. */ + pad?: number; + /** Sets the thickness (in px) of the `nodes`. */ + thickness?: number; + /** The normalized horizontal position of the node. */ + x?: Datum[] | TypedArray; + /** The normalized vertical position of the node. */ + y?: Datum[] | TypedArray; + }; + /** Sets the orientation of the Sankey diagram. */ + orientation?: 'v' | 'h'; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + stream?: Stream; + /** Sets the font for node labels */ + textfont?: Font; + type?: 'sankey'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** Sets the value formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. */ + valueformat?: string; + /** Adds a unit to follow the value in the hover tooltip. Add a space if a separation is necessary from the value. */ + valuesuffix?: string; + /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; +} + +export interface ScatterData { + /** Set several traces linked to the same position axis or matching axes to the same alignmentgroup. This controls whether bars compute their positional range dependently or independently. */ + alignmentgroup?: string; + /** Determines whether or not markers and text nodes are clipped about the subplot axes. To show markers and text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*. */ + cliponaxis?: boolean; + /** Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected. */ + connectgaps?: boolean; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | TypedArray; + /** Sets the x coordinate step. See `x0` for more info. */ + dx?: number; + /** Sets the y coordinate step. See `y0` for more info. */ + dy?: number; + error_x?: { + /** Sets the data corresponding the length of each error bar. Values are plotted relative to the underlying data. */ + array?: Datum[] | TypedArray; + /** Sets the data corresponding the length of each error bar in the bottom (left) direction for vertical (horizontal) bars Values are plotted relative to the underlying data. */ + arrayminus?: Datum[] | TypedArray; + /** Sets the stroke color of the error bars. */ + color?: Color; + copy_ystyle?: boolean; + /** Determines whether or not the error bars have the same length in both direction (top/bottom for vertical bars, left/right for horizontal bars. */ + symmetric?: boolean; + /** Sets the thickness (in px) of the error bars. */ + thickness?: number; + traceref?: number; + tracerefminus?: number; + /** Determines the rule used to generate the error bars. If *constant*, the bar lengths are of a constant value. Set this constant in `value`. If *percent*, the bar lengths correspond to a percentage of underlying data. Set this percentage in `value`. If *sqrt*, the bar lengths correspond to the square of the underlying data. If *data*, the bar lengths are set with data set `array`. */ + type?: 'percent' | 'constant' | 'sqrt' | 'data'; + /** Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars. */ + value?: number; + /** Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars in the bottom (left) direction for vertical (horizontal) bars */ + valueminus?: number; + /** Determines whether or not this set of error bars is visible. */ + visible?: boolean; + /** Sets the width (in px) of the cross-bar at both ends of the error bars. */ + width?: number; + }; + error_y?: ErrorY; + /** Sets the area to fill with a solid color. Defaults to *none* unless this trace is stacked, then it gets *tonexty* (*tonextx*) if `orientation` is *v* (*h*) Use with `fillcolor` if not *none*. *tozerox* and *tozeroy* fill to x=0 and y=0 respectively. *tonextx* and *tonexty* fill between the endpoints of this trace and the endpoints of the trace before it, connecting those endpoints with straight lines (to make a stacked area graph); if there is no trace before it, they behave like *tozerox* and *tozeroy*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other. Traces in a `stackgroup` will only fill to (or be filled to) other traces in the same group. With multiple `stackgroup`s or some traces stacked and some not, if fill-linked traces are not already consecutive, the later ones will be pushed down in the drawing order. */ + fill?: 'none' | 'tozeroy' | 'tozerox' | 'tonexty' | 'tonextx' | 'toself' | 'tonext'; + /** Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. If fillgradient is specified, fillcolor is ignored except for setting the background color of the hover label, if any. */ + fillcolor?: Color; + /** Sets a fill gradient. If not specified, the fillcolor is used instead. */ + fillgradient?: { + /** Sets the fill gradient colors as a color scale. The color scale is interpreted as a gradient applied in the direction specified by *orientation*, from the lowest to the highest value of the scatter plot along that axis, or from the center to the most distant point from it, if orientation is *radial*. */ + colorscale?: ColorScale; + /** Sets the gradient start value. It is given as the absolute position on the axis determined by the orientiation. E.g., if orientation is *horizontal*, the gradient will be horizontal and start from the x-position given by start. If omitted, the gradient starts at the lowest value of the trace along the respective axis. Ignored if orientation is *radial*. */ + start?: number; + /** Sets the gradient end value. It is given as the absolute position on the axis determined by the orientiation. E.g., if orientation is *horizontal*, the gradient will be horizontal and end at the x-position given by end. If omitted, the gradient ends at the highest value of the trace along the respective axis. Ignored if orientation is *radial*. */ + stop?: number; + /** Sets the type/orientation of the color gradient for the fill. Defaults to *none*. */ + type?: 'radial' | 'horizontal' | 'vertical' | 'none'; + }; + /** Sets the pattern within the marker. */ + fillpattern?: Pattern; + /** Only relevant when `stackgroup` is used, and only the first `groupnorm` found in the `stackgroup` will be used - including if `visible` is *legendonly* but not if it is `false`. Sets the normalization for the sum of this `stackgroup`. With *fraction*, the value of each trace at each location is divided by the sum of all trace values at that location. *percent* is the same but multiplied by 100 to show percentages. If there are multiple subplots, or multiple `stackgroup`s on one subplot, each will be normalized within its own set. */ + groupnorm?: '' | 'fraction' | 'percent'; + /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Do the hover effects highlight individual points (markers or line points) or do they highlight filled regions? If the fill is *toself* or *tonext* and there are no markers or text, then the default is *fills*, otherwise it is *points*. */ + hoveron?: 'points' | 'fills' | (string & {}); + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + hovertemplatefallback?: any; + /** Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | TypedArray; + /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + legendrank?: number; + /** Sets the width (in px or fraction) of the legend for this trace. */ + legendwidth?: number; + line?: { + /** Sets the line back off from the end point of the nth line segment (in px). This option is useful e.g. to avoid overlap with arrowhead markers. With *auto* the lines would trim before markers if `marker.angleref` is set to *previous*. */ + backoff?: number | number[]; + /** Sets the line color. */ + color?: Color; + /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + dash?: Dash; + /** Determines the line shape. With *spline* the lines are drawn using spline interpolation. The other available values correspond to step-wise line shapes. */ + shape?: 'linear' | 'spline' | 'hv' | 'vh' | 'hvh' | 'vhv'; + /** Simplifies lines by removing nearly-collinear points. When transitioning lines, it may be desirable to disable this so that the number of points along the resulting SVG path is unaffected. */ + simplify?: boolean; + /** Has an effect only if `shape` is set to *spline* Sets the amount of smoothing. *0* corresponds to no smoothing (equivalent to a *linear* shape). */ + smoothing?: number; + /** Sets the line width (in px). */ + width?: number; + }; + marker?: Marker; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*. */ + mode?: 'lines' | 'markers' | 'text' | 'none' | (string & {}); + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Set several traces linked to the same position axis or matching axes to the same offsetgroup where bars of the same position coordinate will line up. */ + offsetgroup?: string; + /** Sets the opacity of the trace. */ + opacity?: number; + /** Only relevant in the following cases: 1. when `scattermode` is set to *group*. 2. when `stackgroup` is used, and only the first `orientation` found in the `stackgroup` will be used - including if `visible` is *legendonly* but not if it is `false`. Sets the stacking direction. With *v* (*h*), the y (x) values of subsequent traces are added. Also affects the default value of `fill`. */ + orientation?: 'v' | 'h'; + selected?: { + marker?: { + /** Sets the marker color of selected points. */ + color?: Color; + /** Sets the marker opacity of selected points. */ + opacity?: number; + /** Sets the marker size of selected points. */ + size?: number; + }; + textfont?: Font; + }; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + showlegend?: boolean; + /** Only relevant when `stackgroup` is used, and only the first `stackgaps` found in the `stackgroup` will be used - including if `visible` is *legendonly* but not if it is `false`. Determines how we handle locations at which other traces in this group have data but this one does not. With *infer zero* we insert a zero at these locations. With *interpolate* we linearly interpolate between existing values, and extrapolate a constant beyond the existing values. */ + stackgaps?: 'infer zero' | 'interpolate'; + /** Set several scatter traces (on the same subplot) to the same stackgroup in order to add their y values (or their x values if `orientation` is *h*). If blank or omitted this trace will not be stacked. Stacking also turns `fill` on by default, using *tonexty* (*tonextx*) if `orientation` is *h* (*v*) and sets the default `mode` to *lines* irrespective of point count. You can only stack on a numeric (linear or log) axis. Traces in a `stackgroup` will only fill to (or be filled to) other traces in the same group. With multiple `stackgroup`s or some traces stacked and some not, if fill-linked traces are not already consecutive, the later ones will be pushed down in the drawing order. */ + stackgroup?: string; + stream?: Stream; + /** Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: string | string[]; + /** Sets the text font. */ + textfont?: FontArray; + /** Sets the positions of the `text` elements with respects to the (x,y) coordinates. */ + textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right' | ('top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right')[]; + /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. */ + texttemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + texttemplatefallback?: any; + type?: 'scatter'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + unselected?: { + marker?: { + /** Sets the marker color of unselected points, applied only when a selection exists. */ + color?: Color; + /** Sets the marker opacity of unselected points, applied only when a selection exists. */ + opacity?: number; + /** Sets the marker size of unselected points, applied only when a selection exists. */ + size?: number; + }; + textfont?: Font; + }; + /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; + /** Sets the x coordinates. */ + x?: Datum[] | TypedArray; + /** Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step. */ + x0?: any; + /** Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. */ + xaxis?: string; + /** Sets the calendar system to use with `x` date data. */ + xcalendar?: Calendar; + /** Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + xhoverformat?: string; + /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ + xperiod?: any; + /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the x0 axis. When `x0period` is round number of weeks, the `x0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ + xperiod0?: any; + /** Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis. */ + xperiodalignment?: 'start' | 'middle' | 'end'; + /** Sets the y coordinates. */ + y?: Datum[] | TypedArray; + /** Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step. */ + y0?: any; + /** Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. */ + yaxis?: string; + /** Sets the calendar system to use with `y` date data. */ + ycalendar?: Calendar; + /** Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + yhoverformat?: string; + /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the y axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ + yperiod?: any; + /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the y0 axis. When `y0period` is round number of weeks, the `y0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ + yperiod0?: any; + /** Only relevant when the axis `type` is *date*. Sets the alignment of data points on the y axis. */ + yperiodalignment?: 'start' | 'middle' | 'end'; + /** Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. */ + zorder?: number; +} + +export interface Scatter3dData { + /** Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected. */ + connectgaps?: boolean; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | TypedArray; + error_x?: { + /** Sets the data corresponding the length of each error bar. Values are plotted relative to the underlying data. */ + array?: Datum[] | TypedArray; + /** Sets the data corresponding the length of each error bar in the bottom (left) direction for vertical (horizontal) bars Values are plotted relative to the underlying data. */ + arrayminus?: Datum[] | TypedArray; + /** Sets the stroke color of the error bars. */ + color?: Color; + copy_zstyle?: boolean; + /** Determines whether or not the error bars have the same length in both direction (top/bottom for vertical bars, left/right for horizontal bars. */ + symmetric?: boolean; + /** Sets the thickness (in px) of the error bars. */ + thickness?: number; + traceref?: number; + tracerefminus?: number; + /** Determines the rule used to generate the error bars. If *constant*, the bar lengths are of a constant value. Set this constant in `value`. If *percent*, the bar lengths correspond to a percentage of underlying data. Set this percentage in `value`. If *sqrt*, the bar lengths correspond to the square of the underlying data. If *data*, the bar lengths are set with data set `array`. */ + type?: 'percent' | 'constant' | 'sqrt' | 'data'; + /** Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars. */ + value?: number; + /** Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars in the bottom (left) direction for vertical (horizontal) bars */ + valueminus?: number; + /** Determines whether or not this set of error bars is visible. */ + visible?: boolean; + /** Sets the width (in px) of the cross-bar at both ends of the error bars. */ + width?: number; + }; + error_y?: { + /** Sets the data corresponding the length of each error bar. Values are plotted relative to the underlying data. */ + array?: Datum[] | TypedArray; + /** Sets the data corresponding the length of each error bar in the bottom (left) direction for vertical (horizontal) bars Values are plotted relative to the underlying data. */ + arrayminus?: Datum[] | TypedArray; + /** Sets the stroke color of the error bars. */ + color?: Color; + copy_zstyle?: boolean; + /** Determines whether or not the error bars have the same length in both direction (top/bottom for vertical bars, left/right for horizontal bars. */ + symmetric?: boolean; + /** Sets the thickness (in px) of the error bars. */ + thickness?: number; + traceref?: number; + tracerefminus?: number; + /** Determines the rule used to generate the error bars. If *constant*, the bar lengths are of a constant value. Set this constant in `value`. If *percent*, the bar lengths correspond to a percentage of underlying data. Set this percentage in `value`. If *sqrt*, the bar lengths correspond to the square of the underlying data. If *data*, the bar lengths are set with data set `array`. */ + type?: 'percent' | 'constant' | 'sqrt' | 'data'; + /** Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars. */ + value?: number; + /** Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars in the bottom (left) direction for vertical (horizontal) bars */ + valueminus?: number; + /** Determines whether or not this set of error bars is visible. */ + visible?: boolean; + /** Sets the width (in px) of the cross-bar at both ends of the error bars. */ + width?: number; + }; + error_z?: ErrorY; + /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + hovertemplatefallback?: any; + /** Sets text elements associated with each (x,y,z) triplet. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y,z) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | TypedArray; + /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + legendrank?: number; + /** Sets the width (in px or fraction) of the legend for this trace. */ + legendwidth?: number; + line?: { + /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `line.colorscale`. Has an effect only if in `line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + autocolorscale?: boolean; + /** Determines whether or not the color domain is computed with respect to the input data (here in `line.color`) or the bounds set in `line.cmin` and `line.cmax` Has an effect only if in `line.color` is set to a numerical array. Defaults to `false` when `line.cmin` and `line.cmax` are set by the user. */ + cauto?: boolean; + /** Sets the upper bound of the color domain. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color` and if set, `line.cmin` must be set as well. */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `line.cmin` and/or `line.cmax` to be equidistant to this point. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color`. Has no effect when `line.cauto` is `false`. */ + cmid?: number; + /** Sets the lower bound of the color domain. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color` and if set, `line.cmax` must be set as well. */ + cmin?: number; + /** Sets the line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `line.cmin` and `line.cmax` if set. */ + color?: Color | Color[]; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** Sets the colorscale. Has an effect only if in `line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `line.cmin` and `line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + colorscale?: ColorScale; + /** Sets the dash style of the lines. */ + dash?: Dash; + /** Reverses the color mapping if true. Has an effect only if in `line.color` is set to a numerical array. If true, `line.cmin` will correspond to the last color in the array and `line.cmax` will correspond to the first color. */ + reversescale?: boolean; + /** Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `line.color` is set to a numerical array. */ + showscale?: boolean; + /** Sets the line width (in px). */ + width?: number; + }; + marker?: { + /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + autocolorscale?: boolean; + /** Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. */ + cauto?: boolean; + /** Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well. */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`. */ + cmid?: number; + /** Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well. */ + cmin?: number; + /** Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set. */ + color?: Color | Color[]; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + colorscale?: ColorScale; + line?: { + /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. Has an effect only if in `marker.line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + autocolorscale?: boolean; + /** Determines whether or not the color domain is computed with respect to the input data (here in `marker.line.color`) or the bounds set in `marker.line.cmin` and `marker.line.cmax` Has an effect only if in `marker.line.color` is set to a numerical array. Defaults to `false` when `marker.line.cmin` and `marker.line.cmax` are set by the user. */ + cauto?: boolean; + /** Sets the upper bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmin` must be set as well. */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `marker.line.cmin` and/or `marker.line.cmax` to be equidistant to this point. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color`. Has no effect when `marker.line.cauto` is `false`. */ + cmid?: number; + /** Sets the lower bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmax` must be set as well. */ + cmin?: number; + /** Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set. */ + color?: Color | Color[]; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + /** Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + colorscale?: ColorScale; + /** Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color. */ + reversescale?: boolean; + /** Sets the width (in px) of the lines bounding the marker points. */ + width?: number; + }; + /** Sets the marker opacity. Note that the marker opacity for scatter3d traces must be a scalar value for performance reasons. To set a blending opacity value (i.e. which is not transparent), set *marker.color* to an rgba color and use its alpha channel. */ + opacity?: number; + /** Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. */ + reversescale?: boolean; + /** Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array. */ + showscale?: boolean; + /** Sets the marker size (in px). */ + size?: number | number[]; + /** Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points. */ + sizemin?: number; + /** Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels. */ + sizemode?: 'diameter' | 'area'; + /** Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`. */ + sizeref?: number; + /** Sets the marker symbol type. */ + symbol?: MarkerSymbol; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*. */ + mode?: 'lines' | 'markers' | 'text' | 'none' | (string & {}); + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Sets the opacity of the trace. */ + opacity?: number; + projection?: { + x?: { + /** Sets the projection color. */ + opacity?: number; + /** Sets the scale factor determining the size of the projection marker points. */ + scale?: number; + /** Sets whether or not projections are shown along the x axis. */ + show?: boolean; + }; + y?: { + /** Sets the projection color. */ + opacity?: number; + /** Sets the scale factor determining the size of the projection marker points. */ + scale?: number; + /** Sets whether or not projections are shown along the y axis. */ + show?: boolean; + }; + z?: { + /** Sets the projection color. */ + opacity?: number; + /** Sets the scale factor determining the size of the projection marker points. */ + scale?: number; + /** Sets whether or not projections are shown along the z axis. */ + show?: boolean; + }; + }; + /** Sets a reference between this trace's 3D coordinate system and a 3D scene. If *scene* (the default value), the (x,y,z) coordinates refer to `layout.scene`. If *scene2*, the (x,y,z) coordinates refer to `layout.scene2`, and so on. */ + scene?: string; + /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + showlegend?: boolean; + stream?: Stream; + /** If *-1*, the scatter points are not fill with a surface If *0*, *1*, *2*, the scatter points are filled with a Delaunay surface about the x, y, z respectively. */ + surfaceaxis?: -1 | 0 | 1 | 2; + /** Sets the surface fill color. */ + surfacecolor?: Color; + /** Sets text elements associated with each (x,y,z) triplet. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y,z) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: string | string[]; + /** Sets the text font. */ + textfont?: { + color?: Color | Color[]; + /** HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available. */ + family?: string | string[]; + size?: number | number[]; + /** Sets whether a font should be styled with a normal or italic face from its family. */ + style?: 'normal' | 'italic' | ('normal' | 'italic')[]; + /** Sets the variant of the font. */ + variant?: 'normal' | 'small-caps' | ('normal' | 'small-caps')[]; + /** Sets the weight (or boldness) of the font. */ + weight?: number | 'normal' | 'bold' | (number | 'normal' | 'bold')[]; + }; + /** Sets the positions of the `text` elements with respects to the (x,y) coordinates. */ + textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right' | ('top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right')[]; + /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. */ + texttemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + texttemplatefallback?: any; + type?: 'scatter3d'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; + /** Sets the x coordinates. */ + x?: Datum[] | TypedArray; + /** Sets the calendar system to use with `x` date data. */ + xcalendar?: Calendar; + /** Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + xhoverformat?: string; + /** Sets the y coordinates. */ + y?: Datum[] | TypedArray; + /** Sets the calendar system to use with `y` date data. */ + ycalendar?: Calendar; + /** Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + yhoverformat?: string; + /** Sets the z coordinates. */ + z?: Datum[] | TypedArray; + /** Sets the calendar system to use with `z` date data. */ + zcalendar?: Calendar; + /** Sets the hover text formatting rulefor `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`. */ + zhoverformat?: string; +} + +export interface ScattercarpetData { + /** Sets the a-axis coordinates. */ + a?: Datum[] | TypedArray; + /** Sets the b-axis coordinates. */ + b?: Datum[] | TypedArray; + /** An identifier for this carpet, so that `scattercarpet` and `contourcarpet` traces can specify a carpet plot on which they lie */ + carpet?: string; + /** Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected. */ + connectgaps?: boolean; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | TypedArray; + /** Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. scatterternary has a subset of the options available to scatter. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other. */ + fill?: 'none' | 'toself' | 'tonext'; + /** Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. */ + fillcolor?: Color; + /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + hoverinfo?: 'a' | 'b' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('a' | 'b' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Do the hover effects highlight individual points (markers or line points) or do they highlight filled regions? If the fill is *toself* or *tonext* and there are no markers or text, then the default is *fills*, otherwise it is *points*. */ + hoveron?: 'points' | 'fills' | (string & {}); + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + hovertemplatefallback?: any; + /** Sets hover text elements associated with each (a,b) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the the data points in (a,b). To be seen, trace `hoverinfo` must contain a *text* flag. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | TypedArray; + /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + legendrank?: number; + /** Sets the width (in px or fraction) of the legend for this trace. */ + legendwidth?: number; + line?: { + /** Sets the line back off from the end point of the nth line segment (in px). This option is useful e.g. to avoid overlap with arrowhead markers. With *auto* the lines would trim before markers if `marker.angleref` is set to *previous*. */ + backoff?: number | number[]; + /** Sets the line color. */ + color?: Color; + /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + dash?: Dash; + /** Determines the line shape. With *spline* the lines are drawn using spline interpolation. The other available values correspond to step-wise line shapes. */ + shape?: 'linear' | 'spline'; + /** Has an effect only if `shape` is set to *spline* Sets the amount of smoothing. *0* corresponds to no smoothing (equivalent to a *linear* shape). */ + smoothing?: number; + /** Sets the line width (in px). */ + width?: number; + }; + marker?: Marker; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*. */ + mode?: 'lines' | 'markers' | 'text' | 'none' | (string & {}); + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Sets the opacity of the trace. */ + opacity?: number; + selected?: { + marker?: { + /** Sets the marker color of selected points. */ + color?: Color; + /** Sets the marker opacity of selected points. */ + opacity?: number; + /** Sets the marker size of selected points. */ + size?: number; + }; + textfont?: Font; + }; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + showlegend?: boolean; + stream?: Stream; + /** Sets text elements associated with each (a,b) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the the data points in (a,b). If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: string | string[]; + /** Sets the text font. */ + textfont?: FontArray; + /** Sets the positions of the `text` elements with respects to the (x,y) coordinates. */ + textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right' | ('top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right')[]; + /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `a`, `b` and `text`. */ + texttemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + texttemplatefallback?: any; + type?: 'scattercarpet'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + unselected?: { + marker?: { + /** Sets the marker color of unselected points, applied only when a selection exists. */ + color?: Color; + /** Sets the marker opacity of unselected points, applied only when a selection exists. */ + opacity?: number; + /** Sets the marker size of unselected points, applied only when a selection exists. */ + size?: number; + }; + textfont?: Font; + }; + /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; + /** Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. */ + xaxis?: string; + /** Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. */ + yaxis?: string; + /** Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. */ + zorder?: number; +} + +export interface ScattergeoData { + /** Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected. */ + connectgaps?: boolean; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | TypedArray; + /** Sets the key in GeoJSON features which is used as id to match the items included in the `locations` array. Only has an effect when `geojson` is set. Support nested property, for example *properties.name*. */ + featureidkey?: string; + /** Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. */ + fill?: 'none' | 'toself'; + /** Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. */ + fillcolor?: Color; + /** Sets a reference between this trace's geospatial coordinates and a geographic map. If *geo* (the default value), the geospatial coordinates refer to `layout.geo`. If *geo2*, the geospatial coordinates refer to `layout.geo2`, and so on. */ + geo?: string; + /** Sets optional GeoJSON data associated with this trace. If not given, the features on the base map are used when `locations` is set. It can be set as a valid GeoJSON object or as a URL string. Note that we only accept GeoJSONs of type *FeatureCollection* or *Feature* with geometries of type *Polygon* or *MultiPolygon*. */ + geojson?: any; + /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + hoverinfo?: 'lon' | 'lat' | 'location' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('lon' | 'lat' | 'location' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + hovertemplatefallback?: any; + /** Sets hover text elements associated with each (lon,lat) pair or item in `locations`. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) or `locations` coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | TypedArray; + /** Sets the latitude coordinates (in degrees North). */ + lat?: Datum[] | TypedArray; + /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + legendrank?: number; + /** Sets the width (in px or fraction) of the legend for this trace. */ + legendwidth?: number; + line?: { + /** Sets the line color. */ + color?: Color; + /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + dash?: Dash; + /** Sets the line width (in px). */ + width?: number; + }; + /** The library used by the *country names* `locationmode` option is changing in an upcoming version. Country names in existing plots may not work in the new version. Determines the set of locations used to match entries in `locations` to regions on the map. Values *ISO-3*, *USA-states*, *country names* correspond to features on the base map and value *geojson-id* corresponds to features from a custom GeoJSON linked to the `geojson` attribute. *USA-states* accepts both two-letter abbreviations (e.g. *CA*) and full state names (e.g. *California*). */ + locationmode?: 'ISO-3' | 'USA-states' | 'country names' | 'geojson-id'; + /** Sets the coordinates via location IDs or names. Coordinates correspond to the centroid of each location given. See `locationmode` for more info. */ + locations?: Datum[] | TypedArray; + /** Sets the longitude coordinates (in degrees East). */ + lon?: Datum[] | TypedArray; + marker?: { + /** Sets the marker angle in respect to `angleref`. */ + angle?: number | 'auto' | (number | 'auto')[]; + /** Sets the reference for marker angle. With *previous*, angle 0 points along the line from the previous point to this one. With *up*, angle 0 points toward the top of the screen. With *north*, angle 0 points north based on the current map projection. */ + angleref?: 'previous' | 'up' | 'north'; + /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + autocolorscale?: boolean; + /** Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. */ + cauto?: boolean; + /** Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well. */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`. */ + cmid?: number; + /** Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well. */ + cmin?: number; + /** Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set. */ + color?: Color | Color[]; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + colorscale?: ColorScale; + gradient?: { + /** Sets the final color of the gradient fill: the center color for radial, the right for horizontal, or the bottom for vertical. */ + color?: Color | Color[]; + /** Sets the type of gradient used to fill the markers */ + type?: 'radial' | 'horizontal' | 'vertical' | 'none' | ('radial' | 'horizontal' | 'vertical' | 'none')[]; + }; + line?: Line; + /** Sets the marker opacity. */ + opacity?: number | number[]; + /** Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. */ + reversescale?: boolean; + /** Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array. */ + showscale?: boolean; + /** Sets the marker size (in px). */ + size?: number | number[]; + /** Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points. */ + sizemin?: number; + /** Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels. */ + sizemode?: 'diameter' | 'area'; + /** Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`. */ + sizeref?: number; + /** Moves the marker away from the data point in the direction of `angle` (in px). This can be useful for example if you have another marker at this location and you want to point an arrowhead marker at it. */ + standoff?: number | number[]; + /** Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name. */ + symbol?: MarkerSymbol; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*. */ + mode?: 'lines' | 'markers' | 'text' | 'none' | (string & {}); + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Sets the opacity of the trace. */ + opacity?: number; + selected?: { + marker?: { + /** Sets the marker color of selected points. */ + color?: Color; + /** Sets the marker opacity of selected points. */ + opacity?: number; + /** Sets the marker size of selected points. */ + size?: number; + }; + textfont?: Font; + }; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + showlegend?: boolean; + stream?: Stream; + /** Sets text elements associated with each (lon,lat) pair or item in `locations`. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) or `locations` coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: string | string[]; + /** Sets the text font. */ + textfont?: FontArray; + /** Sets the positions of the `text` elements with respects to the (x,y) coordinates. */ + textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right' | ('top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right')[]; + /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `lat`, `lon`, `location` and `text`. */ + texttemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + texttemplatefallback?: any; + type?: 'scattergeo'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + unselected?: { + marker?: { + /** Sets the marker color of unselected points, applied only when a selection exists. */ + color?: Color; + /** Sets the marker opacity of unselected points, applied only when a selection exists. */ + opacity?: number; + /** Sets the marker size of unselected points, applied only when a selection exists. */ + size?: number; + }; + textfont?: Font; + }; + /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; +} + +export interface ScatterglData { + /** Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected. */ + connectgaps?: boolean; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | TypedArray; + /** Sets the x coordinate step. See `x0` for more info. */ + dx?: number; + /** Sets the y coordinate step. See `y0` for more info. */ + dy?: number; + error_x?: { + /** Sets the data corresponding the length of each error bar. Values are plotted relative to the underlying data. */ + array?: Datum[] | TypedArray; + /** Sets the data corresponding the length of each error bar in the bottom (left) direction for vertical (horizontal) bars Values are plotted relative to the underlying data. */ + arrayminus?: Datum[] | TypedArray; + /** Sets the stroke color of the error bars. */ + color?: Color; + copy_ystyle?: boolean; + /** Determines whether or not the error bars have the same length in both direction (top/bottom for vertical bars, left/right for horizontal bars. */ + symmetric?: boolean; + /** Sets the thickness (in px) of the error bars. */ + thickness?: number; + traceref?: number; + tracerefminus?: number; + /** Determines the rule used to generate the error bars. If *constant*, the bar lengths are of a constant value. Set this constant in `value`. If *percent*, the bar lengths correspond to a percentage of underlying data. Set this percentage in `value`. If *sqrt*, the bar lengths correspond to the square of the underlying data. If *data*, the bar lengths are set with data set `array`. */ + type?: 'percent' | 'constant' | 'sqrt' | 'data'; + /** Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars. */ + value?: number; + /** Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars in the bottom (left) direction for vertical (horizontal) bars */ + valueminus?: number; + /** Determines whether or not this set of error bars is visible. */ + visible?: boolean; + /** Sets the width (in px) of the cross-bar at both ends of the error bars. */ + width?: number; + }; + error_y?: ErrorY; + /** Sets the area to fill with a solid color. Defaults to *none* unless this trace is stacked, then it gets *tonexty* (*tonextx*) if `orientation` is *v* (*h*) Use with `fillcolor` if not *none*. *tozerox* and *tozeroy* fill to x=0 and y=0 respectively. *tonextx* and *tonexty* fill between the endpoints of this trace and the endpoints of the trace before it, connecting those endpoints with straight lines (to make a stacked area graph); if there is no trace before it, they behave like *tozerox* and *tozeroy*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other. Traces in a `stackgroup` will only fill to (or be filled to) other traces in the same group. With multiple `stackgroup`s or some traces stacked and some not, if fill-linked traces are not already consecutive, the later ones will be pushed down in the drawing order. */ + fill?: 'none' | 'tozeroy' | 'tozerox' | 'tonexty' | 'tonextx' | 'toself' | 'tonext'; + /** Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. */ + fillcolor?: Color; + /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + hovertemplatefallback?: any; + /** Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | TypedArray; + /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + legendrank?: number; + /** Sets the width (in px or fraction) of the legend for this trace. */ + legendwidth?: number; + line?: { + /** Sets the line color. */ + color?: Color; + /** Sets the style of the lines. */ + dash?: Dash; + /** Determines the line shape. The values correspond to step-wise line shapes. */ + shape?: 'linear' | 'hv' | 'vh' | 'hvh' | 'vhv'; + /** Sets the line width (in px). */ + width?: number; + }; + marker?: Marker; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Determines the drawing mode for this scatter trace. */ + mode?: 'lines' | 'markers' | 'text' | 'none' | (string & {}); + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Sets the opacity of the trace. */ + opacity?: number; + selected?: { + marker?: { + /** Sets the marker color of selected points. */ + color?: Color; + /** Sets the marker opacity of selected points. */ + opacity?: number; + /** Sets the marker size of selected points. */ + size?: number; + }; + textfont?: Font; + }; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + showlegend?: boolean; + stream?: Stream; + /** Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: string | string[]; + /** Sets the text font. */ + textfont?: { + color?: Color | Color[]; + /** HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available. */ + family?: string | string[]; + size?: number | number[]; + /** Sets whether a font should be styled with a normal or italic face from its family. */ + style?: 'normal' | 'italic' | ('normal' | 'italic')[]; + /** Sets the variant of the font. */ + variant?: 'normal' | 'small-caps' | ('normal' | 'small-caps')[]; + /** Sets the weight (or boldness) of the font. */ + weight?: 'normal' | 'bold' | ('normal' | 'bold')[]; + }; + /** Sets the positions of the `text` elements with respects to the (x,y) coordinates. */ + textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right' | ('top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right')[]; + /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. */ + texttemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + texttemplatefallback?: any; + type?: 'scattergl'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + unselected?: { + marker?: { + /** Sets the marker color of unselected points, applied only when a selection exists. */ + color?: Color; + /** Sets the marker opacity of unselected points, applied only when a selection exists. */ + opacity?: number; + /** Sets the marker size of unselected points, applied only when a selection exists. */ + size?: number; + }; + textfont?: Font; + }; + /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; + /** Sets the x coordinates. */ + x?: Datum[] | TypedArray; + /** Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step. */ + x0?: any; + /** Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. */ + xaxis?: string; + /** Sets the calendar system to use with `x` date data. */ + xcalendar?: Calendar; + /** Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + xhoverformat?: string; + /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ + xperiod?: any; + /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the x0 axis. When `x0period` is round number of weeks, the `x0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ + xperiod0?: any; + /** Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis. */ + xperiodalignment?: 'start' | 'middle' | 'end'; + /** Sets the y coordinates. */ + y?: Datum[] | TypedArray; + /** Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step. */ + y0?: any; + /** Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. */ + yaxis?: string; + /** Sets the calendar system to use with `y` date data. */ + ycalendar?: Calendar; + /** Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + yhoverformat?: string; + /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the y axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ + yperiod?: any; + /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the y0 axis. When `y0period` is round number of weeks, the `y0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ + yperiod0?: any; + /** Only relevant when the axis `type` is *date*. Sets the alignment of data points on the y axis. */ + yperiodalignment?: 'start' | 'middle' | 'end'; +} + +export interface ScattermapData { + /** Determines if this scattermap trace's layers are to be inserted before the layer with the specified ID. By default, scattermap layers are inserted above all the base layers. To place the scattermap layers above every other layer, set `below` to *''*. */ + below?: string; + cluster?: { + /** Sets the color for each cluster step. */ + color?: Color | Color[]; + /** Determines whether clustering is enabled or disabled. */ + enabled?: boolean; + /** Sets the maximum zoom level. At zoom levels equal to or greater than this, points will never be clustered. */ + maxzoom?: number; + /** Sets the marker opacity. */ + opacity?: number | number[]; + /** Sets the size for each cluster step. */ + size?: number | number[]; + /** Sets how many points it takes to create a cluster or advance to the next cluster step. Use this in conjunction with arrays for `size` and / or `color`. If an integer, steps start at multiples of this number. If an array, each step extends from the given value until one less than the next value. */ + step?: number | number[]; + }; + /** Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected. */ + connectgaps?: boolean; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | TypedArray; + /** Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. */ + fill?: 'none' | 'toself'; + /** Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. */ + fillcolor?: Color; + /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + hoverinfo?: 'lon' | 'lat' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('lon' | 'lat' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + hovertemplatefallback?: any; + /** Sets hover text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | TypedArray; + /** Sets the latitude coordinates (in degrees North). */ + lat?: Datum[] | TypedArray; + /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + legendrank?: number; + /** Sets the width (in px or fraction) of the legend for this trace. */ + legendwidth?: number; + line?: ErrorY; + /** Sets the longitude coordinates (in degrees East). */ + lon?: Datum[] | TypedArray; + marker?: { + /** Flag to draw all symbols, even if they overlap. */ + allowoverlap?: boolean; + /** Sets the marker orientation from true North, in degrees clockwise. When using the *auto* default, no rotation would be applied in perspective views which is different from using a zero angle. */ + angle?: number | number[]; + /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + autocolorscale?: boolean; + /** Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. */ + cauto?: boolean; + /** Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well. */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`. */ + cmid?: number; + /** Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well. */ + cmin?: number; + /** Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set. */ + color?: Color | Color[]; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + colorscale?: ColorScale; + /** Sets the marker opacity. */ + opacity?: number | number[]; + /** Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. */ + reversescale?: boolean; + /** Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array. */ + showscale?: boolean; + /** Sets the marker size (in px). */ + size?: number | number[]; + /** Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points. */ + sizemin?: number; + /** Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels. */ + sizemode?: 'diameter' | 'area'; + /** Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`. */ + sizeref?: number; + /** Sets the marker symbol. Full list: https://www.mapbox.com/maki-icons/ Note that the array `marker.color` and `marker.size` are only available for *circle* symbols. */ + symbol?: MarkerSymbol; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. */ + mode?: 'lines' | 'markers' | 'text' | 'none' | (string & {}); + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Sets the opacity of the trace. */ + opacity?: number; + selected?: { + marker?: { + /** Sets the marker color of selected points. */ + color?: Color; + /** Sets the marker opacity of selected points. */ + opacity?: number; + /** Sets the marker size of selected points. */ + size?: number; + }; + }; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + showlegend?: boolean; + stream?: Stream; + /** Sets a reference between this trace's data coordinates and a map subplot. If *map* (the default value), the data refer to `layout.map`. If *map2*, the data refer to `layout.map2`, and so on. */ + subplot?: string; + /** Sets text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: string | string[]; + /** Sets the icon text font (color=map.layer.paint.text-color, size=map.layer.layout.text-size). Has an effect only when `type` is set to *symbol*. */ + textfont?: Font; + /** Sets the positions of the `text` elements with respects to the (x,y) coordinates. */ + textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right'; + /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `lat`, `lon` and `text`. */ + texttemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + texttemplatefallback?: any; + type?: 'scattermap'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + unselected?: { + marker?: { + /** Sets the marker color of unselected points, applied only when a selection exists. */ + color?: Color; + /** Sets the marker opacity of unselected points, applied only when a selection exists. */ + opacity?: number; + /** Sets the marker size of unselected points, applied only when a selection exists. */ + size?: number; + }; + }; + /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; +} + +export interface ScattermapboxData { + /** Determines if this scattermapbox trace's layers are to be inserted before the layer with the specified ID. By default, scattermapbox layers are inserted above all the base layers. To place the scattermapbox layers above every other layer, set `below` to *''*. */ + below?: string; + cluster?: { + /** Sets the color for each cluster step. */ + color?: Color | Color[]; + /** Determines whether clustering is enabled or disabled. */ + enabled?: boolean; + /** Sets the maximum zoom level. At zoom levels equal to or greater than this, points will never be clustered. */ + maxzoom?: number; + /** Sets the marker opacity. */ + opacity?: number | number[]; + /** Sets the size for each cluster step. */ + size?: number | number[]; + /** Sets how many points it takes to create a cluster or advance to the next cluster step. Use this in conjunction with arrays for `size` and / or `color`. If an integer, steps start at multiples of this number. If an array, each step extends from the given value until one less than the next value. */ + step?: number | number[]; + }; + /** Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected. */ + connectgaps?: boolean; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | TypedArray; + /** Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. */ + fill?: 'none' | 'toself'; + /** Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. */ + fillcolor?: Color; + /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + hoverinfo?: 'lon' | 'lat' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('lon' | 'lat' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + hovertemplatefallback?: any; + /** Sets hover text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | TypedArray; + /** Sets the latitude coordinates (in degrees North). */ + lat?: Datum[] | TypedArray; + /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + legendrank?: number; + /** Sets the width (in px or fraction) of the legend for this trace. */ + legendwidth?: number; + line?: ErrorY; + /** Sets the longitude coordinates (in degrees East). */ + lon?: Datum[] | TypedArray; + marker?: { + /** Flag to draw all symbols, even if they overlap. */ + allowoverlap?: boolean; + /** Sets the marker orientation from true North, in degrees clockwise. When using the *auto* default, no rotation would be applied in perspective views which is different from using a zero angle. */ + angle?: number | number[]; + /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + autocolorscale?: boolean; + /** Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. */ + cauto?: boolean; + /** Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well. */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`. */ + cmid?: number; + /** Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well. */ + cmin?: number; + /** Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set. */ + color?: Color | Color[]; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + colorscale?: ColorScale; + /** Sets the marker opacity. */ + opacity?: number | number[]; + /** Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. */ + reversescale?: boolean; + /** Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array. */ + showscale?: boolean; + /** Sets the marker size (in px). */ + size?: number | number[]; + /** Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points. */ + sizemin?: number; + /** Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels. */ + sizemode?: 'diameter' | 'area'; + /** Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`. */ + sizeref?: number; + /** Sets the marker symbol. Full list: https://www.mapbox.com/maki-icons/ Note that the array `marker.color` and `marker.size` are only available for *circle* symbols. */ + symbol?: MarkerSymbol; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. */ + mode?: 'lines' | 'markers' | 'text' | 'none' | (string & {}); + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Sets the opacity of the trace. */ + opacity?: number; + selected?: { + marker?: { + /** Sets the marker color of selected points. */ + color?: Color; + /** Sets the marker opacity of selected points. */ + opacity?: number; + /** Sets the marker size of selected points. */ + size?: number; + }; + }; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + showlegend?: boolean; + stream?: Stream; + /** mapbox subplots and traces are deprecated! Please consider switching to `map` subplots and traces. Learn more at: https://plotly.com/python/maplibre-migration/ as well as https://plotly.com/javascript/maplibre-migration/ Sets a reference between this trace's data coordinates and a mapbox subplot. If *mapbox* (the default value), the data refer to `layout.mapbox`. If *mapbox2*, the data refer to `layout.mapbox2`, and so on. */ + subplot?: string; + /** Sets text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: string | string[]; + /** Sets the icon text font (color=mapbox.layer.paint.text-color, size=mapbox.layer.layout.text-size). Has an effect only when `type` is set to *symbol*. */ + textfont?: Font; + /** Sets the positions of the `text` elements with respects to the (x,y) coordinates. */ + textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right'; + /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `lat`, `lon` and `text`. */ + texttemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + texttemplatefallback?: any; + type?: 'scattermapbox'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + unselected?: { + marker?: { + /** Sets the marker color of unselected points, applied only when a selection exists. */ + color?: Color; + /** Sets the marker opacity of unselected points, applied only when a selection exists. */ + opacity?: number; + /** Sets the marker size of unselected points, applied only when a selection exists. */ + size?: number; + }; + }; + /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; +} + +export interface ScatterpolarData { + /** Determines whether or not markers and text nodes are clipped about the subplot axes. To show markers and text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*. */ + cliponaxis?: boolean; + /** Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected. */ + connectgaps?: boolean; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | TypedArray; + /** Sets the r coordinate step. */ + dr?: number; + /** Sets the theta coordinate step. By default, the `dtheta` step equals the subplot's period divided by the length of the `r` coordinates. */ + dtheta?: number; + /** Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. scatterpolar has a subset of the options available to scatter. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other. */ + fill?: 'none' | 'toself' | 'tonext'; + /** Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. */ + fillcolor?: Color; + /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + hoverinfo?: 'r' | 'theta' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('r' | 'theta' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Do the hover effects highlight individual points (markers or line points) or do they highlight filled regions? If the fill is *toself* or *tonext* and there are no markers or text, then the default is *fills*, otherwise it is *points*. */ + hoveron?: 'points' | 'fills' | (string & {}); + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + hovertemplatefallback?: any; + /** Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | TypedArray; + /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + legendrank?: number; + /** Sets the width (in px or fraction) of the legend for this trace. */ + legendwidth?: number; + line?: { + /** Sets the line back off from the end point of the nth line segment (in px). This option is useful e.g. to avoid overlap with arrowhead markers. With *auto* the lines would trim before markers if `marker.angleref` is set to *previous*. */ + backoff?: number | number[]; + /** Sets the line color. */ + color?: Color; + /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + dash?: Dash; + /** Determines the line shape. With *spline* the lines are drawn using spline interpolation. The other available values correspond to step-wise line shapes. */ + shape?: 'linear' | 'spline'; + /** Has an effect only if `shape` is set to *spline* Sets the amount of smoothing. *0* corresponds to no smoothing (equivalent to a *linear* shape). */ + smoothing?: number; + /** Sets the line width (in px). */ + width?: number; + }; + marker?: Marker; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*. */ + mode?: 'lines' | 'markers' | 'text' | 'none' | (string & {}); + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Sets the opacity of the trace. */ + opacity?: number; + /** Sets the radial coordinates */ + r?: Datum[] | TypedArray; + /** Alternate to `r`. Builds a linear space of r coordinates. Use with `dr` where `r0` is the starting coordinate and `dr` the step. */ + r0?: any; + selected?: { + marker?: { + /** Sets the marker color of selected points. */ + color?: Color; + /** Sets the marker opacity of selected points. */ + opacity?: number; + /** Sets the marker size of selected points. */ + size?: number; + }; + textfont?: Font; + }; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + showlegend?: boolean; + stream?: Stream; + /** Sets a reference between this trace's data coordinates and a polar subplot. If *polar* (the default value), the data refer to `layout.polar`. If *polar2*, the data refer to `layout.polar2`, and so on. */ + subplot?: string; + /** Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: string | string[]; + /** Sets the text font. */ + textfont?: FontArray; + /** Sets the positions of the `text` elements with respects to the (x,y) coordinates. */ + textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right' | ('top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right')[]; + /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `r`, `theta` and `text`. */ + texttemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + texttemplatefallback?: any; + /** Sets the angular coordinates */ + theta?: Datum[] | TypedArray; + /** Alternate to `theta`. Builds a linear space of theta coordinates. Use with `dtheta` where `theta0` is the starting coordinate and `dtheta` the step. */ + theta0?: any; + /** Sets the unit of input *theta* values. Has an effect only when on *linear* angular axes. */ + thetaunit?: 'radians' | 'degrees' | 'gradians'; + type?: 'scatterpolar'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + unselected?: { + marker?: { + /** Sets the marker color of unselected points, applied only when a selection exists. */ + color?: Color; + /** Sets the marker opacity of unselected points, applied only when a selection exists. */ + opacity?: number; + /** Sets the marker size of unselected points, applied only when a selection exists. */ + size?: number; + }; + textfont?: Font; + }; + /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; +} + +export interface ScatterpolarglData { + /** Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected. */ + connectgaps?: boolean; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | TypedArray; + /** Sets the r coordinate step. */ + dr?: number; + /** Sets the theta coordinate step. By default, the `dtheta` step equals the subplot's period divided by the length of the `r` coordinates. */ + dtheta?: number; + /** Sets the area to fill with a solid color. Defaults to *none* unless this trace is stacked, then it gets *tonexty* (*tonextx*) if `orientation` is *v* (*h*) Use with `fillcolor` if not *none*. *tozerox* and *tozeroy* fill to x=0 and y=0 respectively. *tonextx* and *tonexty* fill between the endpoints of this trace and the endpoints of the trace before it, connecting those endpoints with straight lines (to make a stacked area graph); if there is no trace before it, they behave like *tozerox* and *tozeroy*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other. Traces in a `stackgroup` will only fill to (or be filled to) other traces in the same group. With multiple `stackgroup`s or some traces stacked and some not, if fill-linked traces are not already consecutive, the later ones will be pushed down in the drawing order. */ + fill?: 'none' | 'tozeroy' | 'tozerox' | 'tonexty' | 'tonextx' | 'toself' | 'tonext'; + /** Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. */ + fillcolor?: Color; + /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + hoverinfo?: 'r' | 'theta' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('r' | 'theta' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + hovertemplatefallback?: any; + /** Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | TypedArray; + /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + legendrank?: number; + /** Sets the width (in px or fraction) of the legend for this trace. */ + legendwidth?: number; + line?: { + /** Sets the line color. */ + color?: Color; + /** Sets the style of the lines. */ + dash?: Dash; + /** Sets the line width (in px). */ + width?: number; + }; + marker?: Marker; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*. */ + mode?: 'lines' | 'markers' | 'text' | 'none' | (string & {}); + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Sets the opacity of the trace. */ + opacity?: number; + /** Sets the radial coordinates */ + r?: Datum[] | TypedArray; + /** Alternate to `r`. Builds a linear space of r coordinates. Use with `dr` where `r0` is the starting coordinate and `dr` the step. */ + r0?: any; + selected?: { + marker?: { + /** Sets the marker color of selected points. */ + color?: Color; + /** Sets the marker opacity of selected points. */ + opacity?: number; + /** Sets the marker size of selected points. */ + size?: number; + }; + textfont?: Font; + }; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + showlegend?: boolean; + stream?: Stream; + /** Sets a reference between this trace's data coordinates and a polar subplot. If *polar* (the default value), the data refer to `layout.polar`. If *polar2*, the data refer to `layout.polar2`, and so on. */ + subplot?: string; + /** Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: string | string[]; + /** Sets the text font. */ + textfont?: { + color?: Color | Color[]; + /** HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available. */ + family?: string | string[]; + size?: number | number[]; + /** Sets whether a font should be styled with a normal or italic face from its family. */ + style?: 'normal' | 'italic' | ('normal' | 'italic')[]; + /** Sets the variant of the font. */ + variant?: 'normal' | 'small-caps' | ('normal' | 'small-caps')[]; + /** Sets the weight (or boldness) of the font. */ + weight?: 'normal' | 'bold' | ('normal' | 'bold')[]; + }; + /** Sets the positions of the `text` elements with respects to the (x,y) coordinates. */ + textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right' | ('top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right')[]; + /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `r`, `theta` and `text`. */ + texttemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + texttemplatefallback?: any; + /** Sets the angular coordinates */ + theta?: Datum[] | TypedArray; + /** Alternate to `theta`. Builds a linear space of theta coordinates. Use with `dtheta` where `theta0` is the starting coordinate and `dtheta` the step. */ + theta0?: any; + /** Sets the unit of input *theta* values. Has an effect only when on *linear* angular axes. */ + thetaunit?: 'radians' | 'degrees' | 'gradians'; + type?: 'scatterpolargl'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + unselected?: { + marker?: { + /** Sets the marker color of unselected points, applied only when a selection exists. */ + color?: Color; + /** Sets the marker opacity of unselected points, applied only when a selection exists. */ + opacity?: number; + /** Sets the marker size of unselected points, applied only when a selection exists. */ + size?: number; + }; + textfont?: Font; + }; + /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; +} + +export interface ScattersmithData { + /** Determines whether or not markers and text nodes are clipped about the subplot axes. To show markers and text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*. */ + cliponaxis?: boolean; + /** Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected. */ + connectgaps?: boolean; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | TypedArray; + /** Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. scattersmith has a subset of the options available to scatter. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other. */ + fill?: 'none' | 'toself' | 'tonext'; + /** Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. */ + fillcolor?: Color; + /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + hoverinfo?: 'real' | 'imag' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('real' | 'imag' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Do the hover effects highlight individual points (markers or line points) or do they highlight filled regions? If the fill is *toself* or *tonext* and there are no markers or text, then the default is *fills*, otherwise it is *points*. */ + hoveron?: 'points' | 'fills' | (string & {}); + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + hovertemplatefallback?: any; + /** Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | TypedArray; + /** Sets the imaginary component of the data, in units of normalized impedance such that real=1, imag=0 is the center of the chart. */ + imag?: Datum[] | TypedArray; + /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + legendrank?: number; + /** Sets the width (in px or fraction) of the legend for this trace. */ + legendwidth?: number; + line?: { + /** Sets the line back off from the end point of the nth line segment (in px). This option is useful e.g. to avoid overlap with arrowhead markers. With *auto* the lines would trim before markers if `marker.angleref` is set to *previous*. */ + backoff?: number | number[]; + /** Sets the line color. */ + color?: Color; + /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + dash?: Dash; + /** Determines the line shape. With *spline* the lines are drawn using spline interpolation. The other available values correspond to step-wise line shapes. */ + shape?: 'linear' | 'spline'; + /** Has an effect only if `shape` is set to *spline* Sets the amount of smoothing. *0* corresponds to no smoothing (equivalent to a *linear* shape). */ + smoothing?: number; + /** Sets the line width (in px). */ + width?: number; + }; + marker?: Marker; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*. */ + mode?: 'lines' | 'markers' | 'text' | 'none' | (string & {}); + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Sets the opacity of the trace. */ + opacity?: number; + /** Sets the real component of the data, in units of normalized impedance such that real=1, imag=0 is the center of the chart. */ + real?: Datum[] | TypedArray; + selected?: { + marker?: { + /** Sets the marker color of selected points. */ + color?: Color; + /** Sets the marker opacity of selected points. */ + opacity?: number; + /** Sets the marker size of selected points. */ + size?: number; + }; + textfont?: Font; + }; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + showlegend?: boolean; + stream?: Stream; + /** Sets a reference between this trace's data coordinates and a smith subplot. If *smith* (the default value), the data refer to `layout.smith`. If *smith2*, the data refer to `layout.smith2`, and so on. */ + subplot?: string; + /** Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: string | string[]; + /** Sets the text font. */ + textfont?: FontArray; + /** Sets the positions of the `text` elements with respects to the (x,y) coordinates. */ + textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right' | ('top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right')[]; + /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `real`, `imag` and `text`. */ + texttemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + texttemplatefallback?: any; + type?: 'scattersmith'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + unselected?: { + marker?: { + /** Sets the marker color of unselected points, applied only when a selection exists. */ + color?: Color; + /** Sets the marker opacity of unselected points, applied only when a selection exists. */ + opacity?: number; + /** Sets the marker size of unselected points, applied only when a selection exists. */ + size?: number; + }; + textfont?: Font; + }; + /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; +} + +export interface ScatterternaryData { + /** Sets the quantity of component `a` in each data point. If `a`, `b`, and `c` are all provided, they need not be normalized, only the relative values matter. If only two arrays are provided they must be normalized to match `ternary.sum`. */ + a?: Datum[] | TypedArray; + /** Sets the quantity of component `a` in each data point. If `a`, `b`, and `c` are all provided, they need not be normalized, only the relative values matter. If only two arrays are provided they must be normalized to match `ternary.sum`. */ + b?: Datum[] | TypedArray; + /** Sets the quantity of component `a` in each data point. If `a`, `b`, and `c` are all provided, they need not be normalized, only the relative values matter. If only two arrays are provided they must be normalized to match `ternary.sum`. */ + c?: Datum[] | TypedArray; + /** Determines whether or not markers and text nodes are clipped about the subplot axes. To show markers and text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*. */ + cliponaxis?: boolean; + /** Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected. */ + connectgaps?: boolean; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | TypedArray; + /** Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. scatterternary has a subset of the options available to scatter. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other. */ + fill?: 'none' | 'toself' | 'tonext'; + /** Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. */ + fillcolor?: Color; + /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + hoverinfo?: 'a' | 'b' | 'c' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('a' | 'b' | 'c' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Do the hover effects highlight individual points (markers or line points) or do they highlight filled regions? If the fill is *toself* or *tonext* and there are no markers or text, then the default is *fills*, otherwise it is *points*. */ + hoveron?: 'points' | 'fills' | (string & {}); + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + hovertemplatefallback?: any; + /** Sets hover text elements associated with each (a,b,c) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the the data points in (a,b,c). To be seen, trace `hoverinfo` must contain a *text* flag. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | TypedArray; + /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + legendrank?: number; + /** Sets the width (in px or fraction) of the legend for this trace. */ + legendwidth?: number; + line?: { + /** Sets the line back off from the end point of the nth line segment (in px). This option is useful e.g. to avoid overlap with arrowhead markers. With *auto* the lines would trim before markers if `marker.angleref` is set to *previous*. */ + backoff?: number | number[]; + /** Sets the line color. */ + color?: Color; + /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + dash?: Dash; + /** Determines the line shape. With *spline* the lines are drawn using spline interpolation. The other available values correspond to step-wise line shapes. */ + shape?: 'linear' | 'spline'; + /** Has an effect only if `shape` is set to *spline* Sets the amount of smoothing. *0* corresponds to no smoothing (equivalent to a *linear* shape). */ + smoothing?: number; + /** Sets the line width (in px). */ + width?: number; + }; + marker?: Marker; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*. */ + mode?: 'lines' | 'markers' | 'text' | 'none' | (string & {}); + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Sets the opacity of the trace. */ + opacity?: number; + selected?: { + marker?: { + /** Sets the marker color of selected points. */ + color?: Color; + /** Sets the marker opacity of selected points. */ + opacity?: number; + /** Sets the marker size of selected points. */ + size?: number; + }; + textfont?: Font; + }; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + showlegend?: boolean; + stream?: Stream; + /** Sets a reference between this trace's data coordinates and a ternary subplot. If *ternary* (the default value), the data refer to `layout.ternary`. If *ternary2*, the data refer to `layout.ternary2`, and so on. */ + subplot?: string; + /** The number each triplet should sum to, if only two of `a`, `b`, and `c` are provided. This overrides `ternary.sum` to normalize this specific trace, but does not affect the values displayed on the axes. 0 (or missing) means to use ternary.sum */ + sum?: number; + /** Sets text elements associated with each (a,b,c) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the the data points in (a,b,c). If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: string | string[]; + /** Sets the text font. */ + textfont?: FontArray; + /** Sets the positions of the `text` elements with respects to the (x,y) coordinates. */ + textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right' | ('top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right')[]; + /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `a`, `b`, `c` and `text`. */ + texttemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + texttemplatefallback?: any; + type?: 'scatterternary'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + unselected?: { + marker?: { + /** Sets the marker color of unselected points, applied only when a selection exists. */ + color?: Color; + /** Sets the marker opacity of unselected points, applied only when a selection exists. */ + opacity?: number; + /** Sets the marker size of unselected points, applied only when a selection exists. */ + size?: number; + }; + textfont?: Font; + }; + /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; +} + +export interface SplomData { + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | TypedArray; + diagonal?: { + /** Determines whether or not subplots on the diagonal are displayed. */ + visible?: boolean; + }; + dimensions?: Array<{ + axis?: { + /** Determines whether or not the x & y axes generated by this dimension match. Equivalent to setting the `matches` axis attribute in the layout with the correct axis id. */ + matches?: boolean; + /** Sets the axis type for this dimension's generated x and y axes. Note that the axis `type` values set in layout take precedence over this attribute. */ + type?: 'linear' | 'log' | 'date' | 'category'; + }; + /** Sets the label corresponding to this splom dimension. */ + label?: string; + /** When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template. */ + name?: string; + /** Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`. */ + templateitemname?: string; + /** Sets the dimension values to be plotted. */ + values?: Datum[] | TypedArray; + /** Determines whether or not this dimension is shown on the graph. Note that even visible false dimension contribute to the default grid generate by this splom trace. */ + visible?: boolean; + }>; + /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + hovertemplatefallback?: any; + /** Same as `text`. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | TypedArray; + /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + legendrank?: number; + /** Sets the width (in px or fraction) of the legend for this trace. */ + legendwidth?: number; + marker?: Marker; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Sets the opacity of the trace. */ + opacity?: number; + selected?: { + marker?: { + /** Sets the marker color of selected points. */ + color?: Color; + /** Sets the marker opacity of selected points. */ + opacity?: number; + /** Sets the marker size of selected points. */ + size?: number; + }; + }; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + showlegend?: boolean; + /** Determines whether or not subplots on the lower half from the diagonal are displayed. */ + showlowerhalf?: boolean; + /** Determines whether or not subplots on the upper half from the diagonal are displayed. */ + showupperhalf?: boolean; + stream?: Stream; + /** Sets text elements associated with each (x,y) pair to appear on hover. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. */ + text?: string | string[]; + type?: 'splom'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + unselected?: { + marker?: { + /** Sets the marker color of unselected points, applied only when a selection exists. */ + color?: Color; + /** Sets the marker opacity of unselected points, applied only when a selection exists. */ + opacity?: number; + /** Sets the marker size of unselected points, applied only when a selection exists. */ + size?: number; + }; + }; + /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; + /** Sets the list of x axes corresponding to dimensions of this splom trace. By default, a splom will match the first N xaxes where N is the number of input dimensions. Note that, in case where `diagonal.visible` is false and `showupperhalf` or `showlowerhalf` is false, this splom trace will generate one less x-axis and one less y-axis. */ + xaxes?: string[]; + /** Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + xhoverformat?: string; + /** Sets the list of y axes corresponding to dimensions of this splom trace. By default, a splom will match the first N yaxes where N is the number of input dimensions. Note that, in case where `diagonal.visible` is false and `showupperhalf` or `showlowerhalf` is false, this splom trace will generate one less x-axis and one less y-axis. */ + yaxes?: string[]; + /** Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + yhoverformat?: string; +} + +export interface StreamtubeData { + /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + autocolorscale?: boolean; + /** Determines whether or not the color domain is computed with respect to the input data (here u/v/w norm) or the bounds set in `cmin` and `cmax` Defaults to `false` when `cmin` and `cmax` are set by the user. */ + cauto?: boolean; + /** Sets the upper bound of the color domain. Value should have the same units as u/v/w norm and if set, `cmin` must be set as well. */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `cmin` and/or `cmax` to be equidistant to this point. Value should have the same units as u/v/w norm. Has no effect when `cauto` is `false`. */ + cmid?: number; + /** Sets the lower bound of the color domain. Value should have the same units as u/v/w norm and if set, `cmax` must be set as well. */ + cmin?: number; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + colorscale?: ColorScale; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | TypedArray; + /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + hoverinfo?: 'x' | 'y' | 'z' | 'u' | 'v' | 'w' | 'norm' | 'divergence' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'u' | 'v' | 'w' | 'norm' | 'divergence' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `tubex`, `tubey`, `tubez`, `tubeu`, `tubev`, `tubew`, `norm` and `divergence`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + hovertemplatefallback?: any; + /** Same as `text`. */ + hovertext?: string; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | TypedArray; + /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + legendrank?: number; + /** Sets the width (in px or fraction) of the legend for this trace. */ + legendwidth?: number; + lighting?: Lighting; + lightposition?: { + /** Numeric vector, representing the X coordinate for each vertex. */ + x?: number; + /** Numeric vector, representing the Y coordinate for each vertex. */ + y?: number; + /** Numeric vector, representing the Z coordinate for each vertex. */ + z?: number; + }; + /** The maximum number of displayed segments in a streamtube. */ + maxdisplayed?: number; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Sets the opacity of the surface. Please note that in the case of using high `opacity` values for example a value greater than or equal to 0.5 on two surfaces (and 0.25 with four surfaces), an overlay of multiple transparent surfaces may not perfectly be sorted in depth by the webgl API. This behavior may be improved in the near future and is subject to change. */ + opacity?: number; + /** Reverses the color mapping if true. If true, `cmin` will correspond to the last color in the array and `cmax` will correspond to the first color. */ + reversescale?: boolean; + /** Sets a reference between this trace's 3D coordinate system and a 3D scene. If *scene* (the default value), the (x,y,z) coordinates refer to `layout.scene`. If *scene2*, the (x,y,z) coordinates refer to `layout.scene2`, and so on. */ + scene?: string; + /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + showlegend?: boolean; + /** Determines whether or not a colorbar is displayed for this trace. */ + showscale?: boolean; + /** The scaling factor for the streamtubes. The default is 1, which avoids two max divergence tubes from touching at adjacent starting positions. */ + sizeref?: number; + starts?: { + /** Sets the x components of the starting position of the streamtubes */ + x?: Datum[] | TypedArray; + /** Sets the y components of the starting position of the streamtubes */ + y?: Datum[] | TypedArray; + /** Sets the z components of the starting position of the streamtubes */ + z?: Datum[] | TypedArray; + }; + stream?: Stream; + /** Sets a text element associated with this trace. If trace `hoverinfo` contains a *text* flag, this text element will be seen in all hover labels. Note that streamtube traces do not support array `text` values. */ + text?: string; + type?: 'streamtube'; + /** Sets the x components of the vector field. */ + u?: Datum[] | TypedArray; + /** Sets the hover text formatting rulefor `u` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ + uhoverformat?: string; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** Sets the y components of the vector field. */ + v?: Datum[] | TypedArray; + /** Sets the hover text formatting rulefor `v` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ + vhoverformat?: string; + /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; + /** Sets the z components of the vector field. */ + w?: Datum[] | TypedArray; + /** Sets the hover text formatting rulefor `w` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ + whoverformat?: string; + /** Sets the x coordinates of the vector field. */ + x?: Datum[] | TypedArray; + /** Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + xhoverformat?: string; + /** Sets the y coordinates of the vector field. */ + y?: Datum[] | TypedArray; + /** Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + yhoverformat?: string; + /** Sets the z coordinates of the vector field. */ + z?: Datum[] | TypedArray; + /** Sets the hover text formatting rulefor `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`. */ + zhoverformat?: string; +} + +export interface SunburstData { + /** Determines how the items in `values` are summed. When set to *total*, items in `values` are taken to be value of all its descendants. When set to *remainder*, items in `values` corresponding to the root and the branches sectors are taken to be the extra part not part of the sum of the values at their leaves. */ + branchvalues?: 'remainder' | 'total'; + /** Determines default for `values` when it is not provided, by inferring a 1 for each of the *leaves* and/or *branches*, otherwise 0. */ + count?: 'branches' | 'leaves' | (string & {}); + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | TypedArray; + domain?: Domain; + /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + hoverinfo?: 'label' | 'text' | 'value' | 'name' | 'current path' | 'percent root' | 'percent entry' | 'percent parent' | 'all' | 'none' | 'skip' | (string & {}) | ('label' | 'text' | 'value' | 'name' | 'current path' | 'percent root' | 'percent entry' | 'percent parent' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `currentPath`, `root`, `entry`, `percentRoot`, `percentEntry` and `percentParent`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + hovertemplatefallback?: any; + /** Sets hover text elements associated with each sector. If a single string, the same string appears for all data points. If an array of string, the items are mapped in order of this trace's sectors. To be seen, trace `hoverinfo` must contain a *text* flag. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | TypedArray; + /** Sets the font used for `textinfo` lying inside the sector. */ + insidetextfont?: FontArray; + /** Controls the orientation of the text inside chart sectors. When set to *auto*, text may be oriented in any direction in order to be as big as possible in the middle of a sector. The *horizontal* option orients text to be parallel with the bottom of the chart, and may make text smaller in order to achieve that goal. The *radial* option orients text along the radius of the sector. The *tangential* option orients text perpendicular to the radius of the sector. */ + insidetextorientation?: 'horizontal' | 'radial' | 'tangential' | 'auto'; + /** Sets the labels of each of the sectors. */ + labels?: Datum[] | TypedArray; + leaf?: { + /** Sets the opacity of the leaves. With colorscale it is defaulted to 1; otherwise it is defaulted to 0.7 */ + opacity?: number; + }; + /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + legendrank?: number; + /** Sets the width (in px or fraction) of the legend for this trace. */ + legendwidth?: number; + /** Sets the level from which this trace hierarchy is rendered. Set `level` to `''` to start from the root node in the hierarchy. Must be an "id" if `ids` is filled in, otherwise plotly attempts to find a matching item in `labels`. */ + level?: any; + marker?: { + /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if colors is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + autocolorscale?: boolean; + /** Determines whether or not the color domain is computed with respect to the input data (here colors) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if colors is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. */ + cauto?: boolean; + /** Sets the upper bound of the color domain. Has an effect only if colors is set to a numerical array. Value should have the same units as colors and if set, `marker.cmin` must be set as well. */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if colors is set to a numerical array. Value should have the same units as colors. Has no effect when `marker.cauto` is `false`. */ + cmid?: number; + /** Sets the lower bound of the color domain. Has an effect only if colors is set to a numerical array. Value should have the same units as colors and if set, `marker.cmax` must be set as well. */ + cmin?: number; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** Sets the color of each sector of this trace. If not specified, the default trace color set is used to pick the sector colors. */ + colors?: Datum[] | TypedArray; + /** Sets the colorscale. Has an effect only if colors is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + colorscale?: ColorScale; + line?: Line; + /** Sets the pattern within the marker. */ + pattern?: Pattern; + /** Reverses the color mapping if true. Has an effect only if colors is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. */ + reversescale?: boolean; + /** Determines whether or not a colorbar is displayed for this trace. Has an effect only if colors is set to a numerical array. */ + showscale?: boolean; + }; + /** Sets the number of rendered sectors from any given `level`. Set `maxdepth` to *-1* to render all the levels in the hierarchy. */ + maxdepth?: number; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Sets the opacity of the trace. */ + opacity?: number; + /** Sets the font used for `textinfo` lying outside the sector. This option refers to the root of the hierarchy presented at the center of a sunburst graph. Please note that if a hierarchy has multiple root nodes, this option won't have any effect and `insidetextfont` would be used. */ + outsidetextfont?: FontArray; + /** Sets the parent sectors for each of the sectors. Empty string items '' are understood to reference the root node in the hierarchy. If `ids` is filled, `parents` items are understood to be "ids" themselves. When `ids` is not set, plotly attempts to find matching items in `labels`, but beware they must be unique. */ + parents?: Datum[] | TypedArray; + root?: Font; + /** Rotates the whole diagram counterclockwise by some angle. By default the first slice starts at 3 o'clock. */ + rotation?: number | 'auto'; + /** Determines whether or not the sectors are reordered from largest to smallest. */ + sort?: boolean; + stream?: Stream; + /** Sets text elements associated with each sector. If trace `textinfo` contains a *text* flag, these elements will be seen on the chart. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: Datum[] | TypedArray; + /** Sets the font used for `textinfo`. */ + textfont?: FontArray; + /** Determines which trace information appear on the graph. */ + textinfo?: 'label' | 'text' | 'value' | 'current path' | 'percent root' | 'percent entry' | 'percent parent' | 'none' | (string & {}); + /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `currentPath`, `root`, `entry`, `percentRoot`, `percentEntry`, `percentParent`, `label` and `value`. */ + texttemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + texttemplatefallback?: any; + type?: 'sunburst'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** Sets the values associated with each of the sectors. Use with `branchvalues` to determine how the values are summed. */ + values?: Datum[] | TypedArray; + /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; +} + +export interface SurfaceData { + /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + autocolorscale?: boolean; + /** Determines whether or not the color domain is computed with respect to the input data (here z or surfacecolor) or the bounds set in `cmin` and `cmax` Defaults to `false` when `cmin` and `cmax` are set by the user. */ + cauto?: boolean; + /** Sets the upper bound of the color domain. Value should have the same units as z or surfacecolor and if set, `cmin` must be set as well. */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `cmin` and/or `cmax` to be equidistant to this point. Value should have the same units as z or surfacecolor. Has no effect when `cauto` is `false`. */ + cmid?: number; + /** Sets the lower bound of the color domain. Value should have the same units as z or surfacecolor and if set, `cmax` must be set as well. */ + cmin?: number; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + colorscale?: ColorScale; + /** Determines whether or not gaps (i.e. {nan} or missing values) in the `z` data are filled in. */ + connectgaps?: boolean; + contours?: { + x?: { + /** Sets the color of the contour lines. */ + color?: Color; + /** Sets the end contour level value. Must be more than `contours.start` */ + end?: number; + /** Determines whether or not contour lines about the x dimension are highlighted on hover. */ + highlight?: boolean; + /** Sets the color of the highlighted contour lines. */ + highlightcolor?: Color; + /** Sets the width of the highlighted contour lines. */ + highlightwidth?: number; + project?: { + /** Determines whether or not these contour lines are projected on the x plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence. */ + x?: boolean; + /** Determines whether or not these contour lines are projected on the y plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence. */ + y?: boolean; + /** Determines whether or not these contour lines are projected on the z plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence. */ + z?: boolean; + }; + /** Determines whether or not contour lines about the x dimension are drawn. */ + show?: boolean; + /** Sets the step between each contour level. Must be positive. */ + size?: number; + /** Sets the starting contour level value. Must be less than `contours.end` */ + start?: number; + /** An alternate to *color*. Determines whether or not the contour lines are colored using the trace *colorscale*. */ + usecolormap?: boolean; + /** Sets the width of the contour lines. */ + width?: number; + }; + y?: { + /** Sets the color of the contour lines. */ + color?: Color; + /** Sets the end contour level value. Must be more than `contours.start` */ + end?: number; + /** Determines whether or not contour lines about the y dimension are highlighted on hover. */ + highlight?: boolean; + /** Sets the color of the highlighted contour lines. */ + highlightcolor?: Color; + /** Sets the width of the highlighted contour lines. */ + highlightwidth?: number; + project?: { + /** Determines whether or not these contour lines are projected on the x plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence. */ + x?: boolean; + /** Determines whether or not these contour lines are projected on the y plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence. */ + y?: boolean; + /** Determines whether or not these contour lines are projected on the z plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence. */ + z?: boolean; + }; + /** Determines whether or not contour lines about the y dimension are drawn. */ + show?: boolean; + /** Sets the step between each contour level. Must be positive. */ + size?: number; + /** Sets the starting contour level value. Must be less than `contours.end` */ + start?: number; + /** An alternate to *color*. Determines whether or not the contour lines are colored using the trace *colorscale*. */ + usecolormap?: boolean; + /** Sets the width of the contour lines. */ + width?: number; + }; + z?: { + /** Sets the color of the contour lines. */ + color?: Color; + /** Sets the end contour level value. Must be more than `contours.start` */ + end?: number; + /** Determines whether or not contour lines about the z dimension are highlighted on hover. */ + highlight?: boolean; + /** Sets the color of the highlighted contour lines. */ + highlightcolor?: Color; + /** Sets the width of the highlighted contour lines. */ + highlightwidth?: number; + project?: { + /** Determines whether or not these contour lines are projected on the x plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence. */ + x?: boolean; + /** Determines whether or not these contour lines are projected on the y plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence. */ + y?: boolean; + /** Determines whether or not these contour lines are projected on the z plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence. */ + z?: boolean; + }; + /** Determines whether or not contour lines about the z dimension are drawn. */ + show?: boolean; + /** Sets the step between each contour level. Must be positive. */ + size?: number; + /** Sets the starting contour level value. Must be less than `contours.end` */ + start?: number; + /** An alternate to *color*. Determines whether or not the contour lines are colored using the trace *colorscale*. */ + usecolormap?: boolean; + /** Sets the width of the contour lines. */ + width?: number; + }; + }; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | TypedArray; + /** Determines whether or not a surface is drawn. For example, set `hidesurface` to *false* `contours.x.show` to *true* and `contours.y.show` to *true* to draw a wire frame plot. */ + hidesurface?: boolean; + /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + hovertemplatefallback?: any; + /** Same as `text`. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | TypedArray; + /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + legendrank?: number; + /** Sets the width (in px or fraction) of the legend for this trace. */ + legendwidth?: number; + lighting?: { + /** Ambient light increases overall color visibility but can wash out the image. */ + ambient?: number; + /** Represents the extent that incident rays are reflected in a range of angles. */ + diffuse?: number; + /** Represents the reflectance as a dependency of the viewing angle; e.g. paper is reflective when viewing it from the edge of the paper (almost 90 degrees), causing shine. */ + fresnel?: number; + /** Alters specular reflection; the rougher the surface, the wider and less contrasty the shine. */ + roughness?: number; + /** Represents the level that incident rays are reflected in a single direction, causing shine. */ + specular?: number; + }; + lightposition?: { + /** Numeric vector, representing the X coordinate for each vertex. */ + x?: number; + /** Numeric vector, representing the Y coordinate for each vertex. */ + y?: number; + /** Numeric vector, representing the Z coordinate for each vertex. */ + z?: number; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Sets the opacity of the surface. Please note that in the case of using high `opacity` values for example a value greater than or equal to 0.5 on two surfaces (and 0.25 with four surfaces), an overlay of multiple transparent surfaces may not perfectly be sorted in depth by the webgl API. This behavior may be improved in the near future and is subject to change. */ + opacity?: number; + /** Sets the opacityscale. The opacityscale must be an array containing arrays mapping a normalized value to an opacity value. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 1], [0.5, 0.2], [1, 1]]` means that higher/lower values would have higher opacity values and those in the middle would be more transparent Alternatively, `opacityscale` may be a palette name string of the following list: 'min', 'max', 'extremes' and 'uniform'. The default is 'uniform'. */ + opacityscale?: any; + /** Reverses the color mapping if true. If true, `cmin` will correspond to the last color in the array and `cmax` will correspond to the first color. */ + reversescale?: boolean; + /** Sets a reference between this trace's 3D coordinate system and a 3D scene. If *scene* (the default value), the (x,y,z) coordinates refer to `layout.scene`. If *scene2*, the (x,y,z) coordinates refer to `layout.scene2`, and so on. */ + scene?: string; + /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + showlegend?: boolean; + /** Determines whether or not a colorbar is displayed for this trace. */ + showscale?: boolean; + stream?: Stream; + /** Sets the surface color values, used for setting a color scale independent of `z`. */ + surfacecolor?: Datum[] | TypedArray; + /** Sets the text elements associated with each z value. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: string | string[]; + type?: 'surface'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; + /** Sets the x coordinates. */ + x?: Datum[] | TypedArray; + /** Sets the calendar system to use with `x` date data. */ + xcalendar?: Calendar; + /** Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + xhoverformat?: string; + /** Sets the y coordinates. */ + y?: Datum[] | TypedArray; + /** Sets the calendar system to use with `y` date data. */ + ycalendar?: Calendar; + /** Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + yhoverformat?: string; + /** Sets the z coordinates. */ + z?: Datum[] | TypedArray; + /** Sets the calendar system to use with `z` date data. */ + zcalendar?: Calendar; + /** Sets the hover text formatting rulefor `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`. */ + zhoverformat?: string; +} + +export interface TableData { + cells?: { + /** Sets the horizontal alignment of the `text` within the box. Has an effect only if `text` spans two or more lines (i.e. `text` contains one or more
HTML tags) or if an explicit width is set to override the text width. */ + align?: 'left' | 'center' | 'right' | ('left' | 'center' | 'right')[]; + fill?: FontArray; + font?: FontArray; + /** Sets the cell value formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. */ + format?: Datum[] | TypedArray; + /** The height of cells. */ + height?: number; + line?: Line; + /** Prefix for cell values. */ + prefix?: string | string[]; + /** Suffix for cell values. */ + suffix?: string | string[]; + /** Cell values. `values[m][n]` represents the value of the `n`th point in column `m`, therefore the `values[m]` vector length for all columns must be the same (longer vectors will be truncated). Each value must be a finite number or a string. */ + values?: Datum[] | TypedArray; + }; + /** Specifies the rendered order of the data columns; for example, a value `2` at position `0` means that column index `0` in the data will be rendered as the third column, as columns have an index base of zero. */ + columnorder?: Datum[] | TypedArray; + /** The width of columns expressed as a ratio. Columns fill the available width in proportion of their specified column widths. */ + columnwidth?: number | number[]; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | TypedArray; + domain?: Domain; + header?: { + /** Sets the horizontal alignment of the `text` within the box. Has an effect only if `text` spans two or more lines (i.e. `text` contains one or more
HTML tags) or if an explicit width is set to override the text width. */ + align?: 'left' | 'center' | 'right' | ('left' | 'center' | 'right')[]; + fill?: FontArray; + font?: FontArray; + /** Sets the cell value formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. */ + format?: Datum[] | TypedArray; + /** The height of cells. */ + height?: number; + line?: Line; + /** Prefix for cell values. */ + prefix?: string | string[]; + /** Suffix for cell values. */ + suffix?: string | string[]; + /** Header cell values. `values[m][n]` represents the value of the `n`th point in column `m`, therefore the `values[m]` vector length for all columns must be the same (longer vectors will be truncated). Each value must be a finite number or a string. */ + values?: Datum[] | TypedArray; + }; + /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | TypedArray; + /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + legendrank?: number; + /** Sets the width (in px or fraction) of the legend for this trace. */ + legendwidth?: number; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + stream?: Stream; + type?: 'table'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; +} + +export interface TreemapData { + /** Determines how the items in `values` are summed. When set to *total*, items in `values` are taken to be value of all its descendants. When set to *remainder*, items in `values` corresponding to the root and the branches sectors are taken to be the extra part not part of the sum of the values at their leaves. */ + branchvalues?: 'remainder' | 'total'; + /** Determines default for `values` when it is not provided, by inferring a 1 for each of the *leaves* and/or *branches*, otherwise 0. */ + count?: 'branches' | 'leaves' | (string & {}); + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | TypedArray; + domain?: Domain; + /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + hoverinfo?: 'label' | 'text' | 'value' | 'name' | 'current path' | 'percent root' | 'percent entry' | 'percent parent' | 'all' | 'none' | 'skip' | (string & {}) | ('label' | 'text' | 'value' | 'name' | 'current path' | 'percent root' | 'percent entry' | 'percent parent' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `currentPath`, `root`, `entry`, `percentRoot`, `percentEntry` and `percentParent`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + hovertemplatefallback?: any; + /** Sets hover text elements associated with each sector. If a single string, the same string appears for all data points. If an array of string, the items are mapped in order of this trace's sectors. To be seen, trace `hoverinfo` must contain a *text* flag. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | TypedArray; + /** Sets the font used for `textinfo` lying inside the sector. */ + insidetextfont?: FontArray; + /** Sets the labels of each of the sectors. */ + labels?: Datum[] | TypedArray; + /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + legendrank?: number; + /** Sets the width (in px or fraction) of the legend for this trace. */ + legendwidth?: number; + /** Sets the level from which this trace hierarchy is rendered. Set `level` to `''` to start from the root node in the hierarchy. Must be an "id" if `ids` is filled in, otherwise plotly attempts to find a matching item in `labels`. */ + level?: any; + marker?: { + /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if colors is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + autocolorscale?: boolean; + /** Determines whether or not the color domain is computed with respect to the input data (here colors) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if colors is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. */ + cauto?: boolean; + /** Sets the upper bound of the color domain. Has an effect only if colors is set to a numerical array. Value should have the same units as colors and if set, `marker.cmin` must be set as well. */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if colors is set to a numerical array. Value should have the same units as colors. Has no effect when `marker.cauto` is `false`. */ + cmid?: number; + /** Sets the lower bound of the color domain. Has an effect only if colors is set to a numerical array. Value should have the same units as colors and if set, `marker.cmax` must be set as well. */ + cmin?: number; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** Sets the color of each sector of this trace. If not specified, the default trace color set is used to pick the sector colors. */ + colors?: Datum[] | TypedArray; + /** Sets the colorscale. Has an effect only if colors is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + colorscale?: ColorScale; + /** Sets the maximum rounding of corners (in px). */ + cornerradius?: number; + /** Determines if the sector colors are faded towards the background from the leaves up to the headers. This option is unavailable when a `colorscale` is present, defaults to false when `marker.colors` is set, but otherwise defaults to true. When set to *reversed*, the fading direction is inverted, that is the top elements within hierarchy are drawn with fully saturated colors while the leaves are faded towards the background color. */ + depthfade?: true | false | 'reversed'; + line?: Line; + pad?: { + /** Sets the padding form the bottom (in px). */ + b?: number; + /** Sets the padding form the left (in px). */ + l?: number; + /** Sets the padding form the right (in px). */ + r?: number; + /** Sets the padding form the top (in px). */ + t?: number; + }; + /** Sets the pattern within the marker. */ + pattern?: Pattern; + /** Reverses the color mapping if true. Has an effect only if colors is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. */ + reversescale?: boolean; + /** Determines whether or not a colorbar is displayed for this trace. Has an effect only if colors is set to a numerical array. */ + showscale?: boolean; + }; + /** Sets the number of rendered sectors from any given `level`. Set `maxdepth` to *-1* to render all the levels in the hierarchy. */ + maxdepth?: number; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Sets the opacity of the trace. */ + opacity?: number; + /** Sets the font used for `textinfo` lying outside the sector. This option refers to the root of the hierarchy presented on top left corner of a treemap graph. Please note that if a hierarchy has multiple root nodes, this option won't have any effect and `insidetextfont` would be used. */ + outsidetextfont?: FontArray; + /** Sets the parent sectors for each of the sectors. Empty string items '' are understood to reference the root node in the hierarchy. If `ids` is filled, `parents` items are understood to be "ids" themselves. When `ids` is not set, plotly attempts to find matching items in `labels`, but beware they must be unique. */ + parents?: Datum[] | TypedArray; + pathbar?: { + /** Determines which shape is used for edges between `barpath` labels. */ + edgeshape?: '>' | '<' | '|' | '/' | '\\'; + /** Determines on which side of the the treemap the `pathbar` should be presented. */ + side?: 'top' | 'bottom'; + /** Sets the font used inside `pathbar`. */ + textfont?: FontArray; + /** Sets the thickness of `pathbar` (in px). If not specified the `pathbar.textfont.size` is used with 3 pixles extra padding on each side. */ + thickness?: number; + /** Determines if the path bar is drawn i.e. outside the trace `domain` and with one pixel gap. */ + visible?: boolean; + }; + root?: Font; + /** Determines whether or not the sectors are reordered from largest to smallest. */ + sort?: boolean; + stream?: Stream; + /** Sets text elements associated with each sector. If trace `textinfo` contains a *text* flag, these elements will be seen on the chart. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: Datum[] | TypedArray; + /** Sets the font used for `textinfo`. */ + textfont?: FontArray; + /** Determines which trace information appear on the graph. */ + textinfo?: 'label' | 'text' | 'value' | 'current path' | 'percent root' | 'percent entry' | 'percent parent' | 'none' | (string & {}); + /** Sets the positions of the `text` elements. */ + textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right'; + /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `currentPath`, `root`, `entry`, `percentRoot`, `percentEntry`, `percentParent`, `label` and `value`. */ + texttemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + texttemplatefallback?: any; + tiling?: { + /** Determines if the positions obtained from solver are flipped on each axis. */ + flip?: 'x' | 'y' | (string & {}); + /** Determines d3 treemap solver. For more info please refer to https://github.com/d3/d3-hierarchy#treemap-tiling */ + packing?: 'squarify' | 'binary' | 'dice' | 'slice' | 'slice-dice' | 'dice-slice'; + /** Sets the inner padding (in px). */ + pad?: number; + /** When using *squarify* `packing` algorithm, according to https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#squarify_ratio this option specifies the desired aspect ratio of the generated rectangles. The ratio must be specified as a number greater than or equal to one. Note that the orientation of the generated rectangles (tall or wide) is not implied by the ratio; for example, a ratio of two will attempt to produce a mixture of rectangles whose width:height ratio is either 2:1 or 1:2. When using *squarify*, unlike d3 which uses the Golden Ratio i.e. 1.618034, Plotly applies 1 to increase squares in treemap layouts. */ + squarifyratio?: number; + }; + type?: 'treemap'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** Sets the values associated with each of the sectors. Use with `branchvalues` to determine how the values are summed. */ + values?: Datum[] | TypedArray; + /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; +} + +export interface ViolinData { + /** Set several traces linked to the same position axis or matching axes to the same alignmentgroup. This controls whether bars compute their positional range dependently or independently. */ + alignmentgroup?: string; + /** Sets the bandwidth used to compute the kernel density estimate. By default, the bandwidth is determined by Silverman's rule of thumb. */ + bandwidth?: number; + box?: { + /** Sets the inner box plot fill color. */ + fillcolor?: Color; + line?: ErrorY; + /** Determines if an miniature box plot is drawn inside the violins. */ + visible?: boolean; + /** Sets the width of the inner box plots relative to the violins' width. For example, with 1, the inner box plots are as wide as the violins. */ + width?: number; + }; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | TypedArray; + /** Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. */ + fillcolor?: Color; + /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Do the hover effects highlight individual violins or sample points or the kernel density estimate or any combination of them? */ + hoveron?: 'violins' | 'points' | 'kde' | 'all' | (string & {}); + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + hovertemplatefallback?: any; + /** Same as `text`. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | TypedArray; + /** Sets the amount of jitter in the sample points drawn. If *0*, the sample points align along the distribution axis. If *1*, the sample points are drawn in a random jitter of width equal to the width of the violins. */ + jitter?: number; + /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + legendrank?: number; + /** Sets the width (in px or fraction) of the legend for this trace. */ + legendwidth?: number; + line?: ErrorY; + marker?: { + /** Sets the marker angle in respect to `angleref`. */ + angle?: number | 'auto'; + /** Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set. */ + color?: Color; + line?: { + /** Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set. */ + color?: Color; + /** Sets the border line color of the outlier sample points. Defaults to marker.color */ + outliercolor?: Color; + /** Sets the border line width (in px) of the outlier sample points. */ + outlierwidth?: number; + /** Sets the width (in px) of the lines bounding the marker points. */ + width?: number; + }; + /** Sets the marker opacity. */ + opacity?: number; + /** Sets the color of the outlier sample points. */ + outliercolor?: Color; + /** Sets the marker size (in px). */ + size?: number; + /** Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name. */ + symbol?: MarkerSymbol; + }; + meanline?: { + /** Sets the mean line color. */ + color?: Color; + /** Determines if a line corresponding to the sample's mean is shown inside the violins. If `box.visible` is turned on, the mean line is drawn inside the inner box. Otherwise, the mean line is drawn from one side of the violin to other. */ + visible?: boolean; + /** Sets the mean line width. */ + width?: number; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. For violin traces, the name will also be used for the position coordinate, if `x` and `x0` (`y` and `y0` if horizontal) are missing and the position axis is categorical. Note that the trace name is also used as a default value for attribute `scalegroup` (please see its description for details). */ + name?: string; + /** Set several traces linked to the same position axis or matching axes to the same offsetgroup where bars of the same position coordinate will line up. */ + offsetgroup?: string; + /** Sets the opacity of the trace. */ + opacity?: number; + /** Sets the orientation of the violin(s). If *v* (*h*), the distribution is visualized along the vertical (horizontal). */ + orientation?: 'v' | 'h'; + /** Sets the position of the sample points in relation to the violins. If *0*, the sample points are places over the center of the violins. Positive (negative) values correspond to positions to the right (left) for vertical violins and above (below) for horizontal violins. */ + pointpos?: number; + /** If *outliers*, only the sample points lying outside the whiskers are shown If *suspectedoutliers*, the outlier points are shown and points either less than 4*Q1-3*Q3 or greater than 4*Q3-3*Q1 are highlighted (see `outliercolor`) If *all*, all sample points are shown If *false*, only the violins are shown with no sample points. Defaults to *suspectedoutliers* when `marker.outliercolor` or `marker.line.outliercolor` is set, otherwise defaults to *outliers*. */ + points?: 'all' | 'outliers' | 'suspectedoutliers' | false; + /** Sets the method used to compute the sample's Q1 and Q3 quartiles. The *linear* method uses the 25th percentile for Q1 and 75th percentile for Q3 as computed using method #10 (listed on http://jse.amstat.org/v14n3/langford.html). The *exclusive* method uses the median to divide the ordered dataset into two halves if the sample is odd, it does not include the median in either half - Q1 is then the median of the lower half and Q3 the median of the upper half. The *inclusive* method also uses the median to divide the ordered dataset into two halves but if the sample is odd, it includes the median in both halves - Q1 is then the median of the lower half and Q3 the median of the upper half. */ + quartilemethod?: 'linear' | 'exclusive' | 'inclusive'; + /** If there are multiple violins that should be sized according to to some metric (see `scalemode`), link them by providing a non-empty group id here shared by every trace in the same group. If a violin's `width` is undefined, `scalegroup` will default to the trace's name. In this case, violins with the same names will be linked together */ + scalegroup?: string; + /** Sets the metric by which the width of each violin is determined. *width* means each violin has the same (max) width *count* means the violins are scaled by the number of sample points making up each violin. */ + scalemode?: 'width' | 'count'; + selected?: { + marker?: { + /** Sets the marker color of selected points. */ + color?: Color; + /** Sets the marker opacity of selected points. */ + opacity?: number; + /** Sets the marker size of selected points. */ + size?: number; + }; + }; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + showlegend?: boolean; + /** Determines on which side of the position value the density function making up one half of a violin is plotted. Useful when comparing two violin traces under *overlay* mode, where one trace has `side` set to *positive* and the other to *negative*. */ + side?: 'both' | 'positive' | 'negative'; + /** Sets the span in data space for which the density function will be computed. Has an effect only when `spanmode` is set to *manual*. */ + span?: [any, any]; + /** Sets the method by which the span in data space where the density function will be computed. *soft* means the span goes from the sample's minimum value minus two bandwidths to the sample's maximum value plus two bandwidths. *hard* means the span goes from the sample's minimum to its maximum value. For custom span settings, use mode *manual* and fill in the `span` attribute. */ + spanmode?: 'soft' | 'hard' | 'manual'; + stream?: Stream; + /** Sets the text elements associated with each sample value. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ + text?: string | string[]; + type?: 'violin'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + unselected?: { + marker?: { + /** Sets the marker color of unselected points, applied only when a selection exists. */ + color?: Color; + /** Sets the marker opacity of unselected points, applied only when a selection exists. */ + opacity?: number; + /** Sets the marker size of unselected points, applied only when a selection exists. */ + size?: number; + }; + }; + /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; + /** Sets the width of the violin in data coordinates. If *0* (default value) the width is automatically selected based on the positions of other violin traces in the same subplot. */ + width?: number; + /** Sets the x sample data or coordinates. See overview for more info. */ + x?: Datum[] | TypedArray; + /** Sets the x coordinate for single-box traces or the starting coordinate for multi-box traces set using q1/median/q3. See overview for more info. */ + x0?: any; + /** Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. */ + xaxis?: string; + /** Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + xhoverformat?: string; + /** Sets the y sample data or coordinates. See overview for more info. */ + y?: Datum[] | TypedArray; + /** Sets the y coordinate for single-box traces or the starting coordinate for multi-box traces set using q1/median/q3. See overview for more info. */ + y0?: any; + /** Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. */ + yaxis?: string; + /** Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + yhoverformat?: string; + /** Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. */ + zorder?: number; +} + +export interface VolumeData { + /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + autocolorscale?: boolean; + caps?: { + x?: { + /** Sets the fill ratio of the `caps`. The default fill value of the `caps` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. */ + fill?: number; + /** Sets the fill ratio of the `slices`. The default fill value of the x `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. */ + show?: boolean; + }; + y?: { + /** Sets the fill ratio of the `caps`. The default fill value of the `caps` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. */ + fill?: number; + /** Sets the fill ratio of the `slices`. The default fill value of the y `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. */ + show?: boolean; + }; + z?: { + /** Sets the fill ratio of the `caps`. The default fill value of the `caps` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. */ + fill?: number; + /** Sets the fill ratio of the `slices`. The default fill value of the z `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. */ + show?: boolean; + }; + }; + /** Determines whether or not the color domain is computed with respect to the input data (here `value`) or the bounds set in `cmin` and `cmax` Defaults to `false` when `cmin` and `cmax` are set by the user. */ + cauto?: boolean; + /** Sets the upper bound of the color domain. Value should have the same units as `value` and if set, `cmin` must be set as well. */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `cmin` and/or `cmax` to be equidistant to this point. Value should have the same units as `value`. Has no effect when `cauto` is `false`. */ + cmid?: number; + /** Sets the lower bound of the color domain. Value should have the same units as `value` and if set, `cmax` must be set as well. */ + cmin?: number; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + colorscale?: ColorScale; + contour?: { + /** Sets the color of the contour lines. */ + color?: Color; + /** Sets whether or not dynamic contours are shown on hover */ + show?: boolean; + /** Sets the width of the contour lines. */ + width?: number; + }; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | TypedArray; + /** Determines whether or not normal smoothing is applied to the meshes, creating meshes with an angular, low-poly look via flat reflections. */ + flatshading?: boolean; + /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + hovertemplatefallback?: any; + /** Same as `text`. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | TypedArray; + /** Sets the maximum boundary for iso-surface plot. */ + isomax?: number; + /** Sets the minimum boundary for iso-surface plot. */ + isomin?: number; + /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + legendrank?: number; + /** Sets the width (in px or fraction) of the legend for this trace. */ + legendwidth?: number; + lighting?: Lighting; + lightposition?: { + /** Numeric vector, representing the X coordinate for each vertex. */ + x?: number; + /** Numeric vector, representing the Y coordinate for each vertex. */ + y?: number; + /** Numeric vector, representing the Z coordinate for each vertex. */ + z?: number; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Sets the opacity of the surface. Please note that in the case of using high `opacity` values for example a value greater than or equal to 0.5 on two surfaces (and 0.25 with four surfaces), an overlay of multiple transparent surfaces may not perfectly be sorted in depth by the webgl API. This behavior may be improved in the near future and is subject to change. */ + opacity?: number; + /** Sets the opacityscale. The opacityscale must be an array containing arrays mapping a normalized value to an opacity value. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 1], [0.5, 0.2], [1, 1]]` means that higher/lower values would have higher opacity values and those in the middle would be more transparent Alternatively, `opacityscale` may be a palette name string of the following list: 'min', 'max', 'extremes' and 'uniform'. The default is 'uniform'. */ + opacityscale?: any; + /** Reverses the color mapping if true. If true, `cmin` will correspond to the last color in the array and `cmax` will correspond to the first color. */ + reversescale?: boolean; + /** Sets a reference between this trace's 3D coordinate system and a 3D scene. If *scene* (the default value), the (x,y,z) coordinates refer to `layout.scene`. If *scene2*, the (x,y,z) coordinates refer to `layout.scene2`, and so on. */ + scene?: string; + /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + showlegend?: boolean; + /** Determines whether or not a colorbar is displayed for this trace. */ + showscale?: boolean; + slices?: { + x?: { + /** Sets the fill ratio of the `slices`. The default fill value of the `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. */ + fill?: number; + /** Specifies the location(s) of slices on the axis. When not specified slices would be created for all points of the axis x except start and end. */ + locations?: Datum[] | TypedArray; + /** Determines whether or not slice planes about the x dimension are drawn. */ + show?: boolean; + }; + y?: { + /** Sets the fill ratio of the `slices`. The default fill value of the `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. */ + fill?: number; + /** Specifies the location(s) of slices on the axis. When not specified slices would be created for all points of the axis y except start and end. */ + locations?: Datum[] | TypedArray; + /** Determines whether or not slice planes about the y dimension are drawn. */ + show?: boolean; + }; + z?: { + /** Sets the fill ratio of the `slices`. The default fill value of the `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. */ + fill?: number; + /** Specifies the location(s) of slices on the axis. When not specified slices would be created for all points of the axis z except start and end. */ + locations?: Datum[] | TypedArray; + /** Determines whether or not slice planes about the z dimension are drawn. */ + show?: boolean; + }; + }; + spaceframe?: { + /** Sets the fill ratio of the `spaceframe` elements. The default fill value is 1 meaning that they are entirely shaded. Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. */ + fill?: number; + /** Displays/hides tetrahedron shapes between minimum and maximum iso-values. Often useful when either caps or surfaces are disabled or filled with values less than 1. */ + show?: boolean; + }; + stream?: Stream; + surface?: { + /** Sets the number of iso-surfaces between minimum and maximum iso-values. By default this value is 2 meaning that only minimum and maximum surfaces would be drawn. */ + count?: number; + /** Sets the fill ratio of the iso-surface. The default fill value of the surface is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. */ + fill?: number; + /** Sets the surface pattern of the iso-surface 3-D sections. The default pattern of the surface is `all` meaning that the rest of surface elements would be shaded. The check options (either 1 or 2) could be used to draw half of the squares on the surface. Using various combinations of capital `A`, `B`, `C`, `D` and `E` may also be used to reduce the number of triangles on the iso-surfaces and creating other patterns of interest. */ + pattern?: 'A' | 'B' | 'C' | 'D' | 'E' | 'all' | 'odd' | 'even' | (string & {}); + /** Hides/displays surfaces between minimum and maximum iso-values. */ + show?: boolean; + }; + /** Sets the text elements associated with the vertices. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: string | string[]; + type?: 'volume'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** Sets the 4th dimension (value) of the vertices. */ + value?: Datum[] | TypedArray; + /** Sets the hover text formatting rulefor `value` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ + valuehoverformat?: string; + /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; + /** Sets the X coordinates of the vertices on X axis. */ + x?: Datum[] | TypedArray; + /** Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + xhoverformat?: string; + /** Sets the Y coordinates of the vertices on Y axis. */ + y?: Datum[] | TypedArray; + /** Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + yhoverformat?: string; + /** Sets the Z coordinates of the vertices on Z axis. */ + z?: Datum[] | TypedArray; + /** Sets the hover text formatting rulefor `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`. */ + zhoverformat?: string; +} + +export interface WaterfallData { + /** Set several traces linked to the same position axis or matching axes to the same alignmentgroup. This controls whether bars compute their positional range dependently or independently. */ + alignmentgroup?: string; + /** Sets where the bar base is drawn (in position axis units). */ + base?: number; + /** Determines whether the text nodes are clipped about the subplot axes. To show the text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*. */ + cliponaxis?: boolean; + connector?: { + line?: { + /** Sets the line color. */ + color?: Color; + /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + dash?: Dash; + /** Sets the line width (in px). */ + width?: number; + }; + /** Sets the shape of connector lines. */ + mode?: 'spanning' | 'between'; + /** Determines if connector lines are drawn. */ + visible?: boolean; + }; + /** Constrain the size of text inside or outside a bar to be no larger than the bar itself. */ + constraintext?: 'inside' | 'outside' | 'both' | 'none'; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | TypedArray; + decreasing?: { + marker?: { + /** Sets the marker color of all decreasing values. */ + color?: Color; + line?: ErrorY; + }; + }; + /** Sets the x coordinate step. See `x0` for more info. */ + dx?: number; + /** Sets the y coordinate step. See `y0` for more info. */ + dy?: number; + /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + hoverinfo?: 'name' | 'x' | 'y' | 'text' | 'initial' | 'delta' | 'final' | 'all' | 'none' | 'skip' | (string & {}) | ('name' | 'x' | 'y' | 'text' | 'initial' | 'delta' | 'final' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `initial`, `delta` and `final`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + hovertemplatefallback?: any; + /** Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ + hovertext?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | TypedArray; + increasing?: { + marker?: { + /** Sets the marker color of all increasing values. */ + color?: Color; + line?: ErrorY; + }; + }; + /** Determines if texts are kept at center or start/end points in `textposition` *inside* mode. */ + insidetextanchor?: 'end' | 'middle' | 'start'; + /** Sets the font used for `text` lying inside the bar. */ + insidetextfont?: FontArray; + /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + legendrank?: number; + /** Sets the width (in px or fraction) of the legend for this trace. */ + legendwidth?: number; + /** An array containing types of values. By default the values are considered as 'relative'. However; it is possible to use 'total' to compute the sums. Also 'absolute' could be applied to reset the computed total or to declare an initial value where needed. */ + measure?: Datum[] | TypedArray; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** Shifts the position where the bar is drawn (in position axis units). In *group* barmode, traces that set *offset* will be excluded and drawn in *overlay* mode instead. */ + offset?: number | number[]; + /** Set several traces linked to the same position axis or matching axes to the same offsetgroup where bars of the same position coordinate will line up. */ + offsetgroup?: string; + /** Sets the opacity of the trace. */ + opacity?: number; + /** Sets the orientation of the bars. With *v* (*h*), the value of the each bar spans along the vertical (horizontal). */ + orientation?: 'v' | 'h'; + /** Sets the font used for `text` lying outside the bar. */ + outsidetextfont?: FontArray; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + showlegend?: boolean; + stream?: Stream; + /** Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + text?: string | string[]; + /** Sets the angle of the tick labels with respect to the bar. For example, a `tickangle` of -90 draws the tick labels vertically. With *auto* the texts may automatically be rotated to fit with the maximum size in bars. */ + textangle?: number | 'auto'; + /** Sets the font used for `text`. */ + textfont?: FontArray; + /** Determines which trace information appear on the graph. In the case of having multiple waterfalls, totals are computed separately (per trace). */ + textinfo?: 'label' | 'text' | 'initial' | 'delta' | 'final' | 'none' | (string & {}); + /** Specifies the location of the `text`. *inside* positions `text` inside, next to the bar end (rotated and scaled if needed). *outside* positions `text` outside, next to the bar end (scaled if needed), unless there is another bar stacked on this one, then the text gets pushed inside. *auto* tries to position `text` inside the bar, but if the bar is too small and no bar is stacked on this one the text is moved outside. If *none*, no text appears. */ + textposition?: 'inside' | 'outside' | 'auto' | 'none' | ('inside' | 'outside' | 'auto' | 'none')[]; + /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `initial`, `delta`, `final` and `label`. */ + texttemplate?: string | string[]; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + texttemplatefallback?: any; + totals?: { + marker?: { + /** Sets the marker color of all intermediate sums and total values. */ + color?: Color; + line?: ErrorY; + }; + }; + type?: 'waterfall'; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; + /** Sets the bar width (in position axis units). */ + width?: number | number[]; + /** Sets the x coordinates. */ + x?: Datum[] | TypedArray; + /** Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step. */ + x0?: any; + /** Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. */ + xaxis?: string; + /** Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + xhoverformat?: string; + /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ + xperiod?: any; + /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the x0 axis. When `x0period` is round number of weeks, the `x0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ + xperiod0?: any; + /** Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis. */ + xperiodalignment?: 'start' | 'middle' | 'end'; + /** Sets the y coordinates. */ + y?: Datum[] | TypedArray; + /** Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step. */ + y0?: any; + /** Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. */ + yaxis?: string; + /** Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + yhoverformat?: string; + /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the y axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ + yperiod?: any; + /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the y0 axis. When `y0period` is round number of weeks, the `y0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ + yperiod0?: any; + /** Only relevant when the axis `type` is *date*. Sets the alignment of data points on the y axis. */ + yperiodalignment?: 'start' | 'middle' | 'end'; + /** Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. */ + zorder?: number; +} + +// --------------------------------------------------------------------------- +// Layout component interfaces +// --------------------------------------------------------------------------- + +export interface ColorAxis { + /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + autocolorscale?: boolean; + /** Determines whether or not the color domain is computed with respect to the input data (here corresponding trace color array(s)) or the bounds set in `cmin` and `cmax` Defaults to `false` when `cmin` and `cmax` are set by the user. */ + cauto?: boolean; + /** Sets the upper bound of the color domain. Value should have the same units as corresponding trace color array(s) and if set, `cmin` must be set as well. */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `cmin` and/or `cmax` to be equidistant to this point. Value should have the same units as corresponding trace color array(s). Has no effect when `cauto` is `false`. */ + cmid?: number; + /** Sets the lower bound of the color domain. Value should have the same units as corresponding trace color array(s) and if set, `cmax` must be set as well. */ + cmin?: number; + colorbar?: ColorBar; + /** Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + colorscale?: ColorScale; + /** Reverses the color mapping if true. If true, `cmin` will correspond to the last color in the array and `cmax` will correspond to the first color. */ + reversescale?: boolean; + /** Determines whether or not a colorbar is displayed for this trace. */ + showscale?: boolean; +} + +export interface GeoLayout { + /** Set the background color of the map */ + bgcolor?: Color; + center?: { + /** Sets the latitude of the map's center. For all projection types, the map's latitude center lies at the middle of the latitude range by default. */ + lat?: number; + /** Sets the longitude of the map's center. By default, the map's longitude center lies at the middle of the longitude range for scoped projection and above `projection.rotation.lon` otherwise. */ + lon?: number; + }; + /** Sets the coastline color. */ + coastlinecolor?: Color; + /** Sets the coastline stroke width (in px). */ + coastlinewidth?: number; + /** Sets line color of the country boundaries. */ + countrycolor?: Color; + /** Sets line width (in px) of the country boundaries. */ + countrywidth?: number; + domain?: Domain; + /** Determines if this subplot's view settings are auto-computed to fit trace data. On scoped maps, setting `fitbounds` leads to `center.lon` and `center.lat` getting auto-filled. On maps with a non-clipped projection, setting `fitbounds` leads to `center.lon`, `center.lat`, and `projection.rotation.lon` getting auto-filled. On maps with a clipped projection, setting `fitbounds` leads to `center.lon`, `center.lat`, `projection.rotation.lon`, `projection.rotation.lat`, `lonaxis.range` and `lataxis.range` getting auto-filled. If *locations*, only the trace's visible locations are considered in the `fitbounds` computations. If *geojson*, the entire trace input `geojson` (if provided) is considered in the `fitbounds` computations, Defaults to *false*. */ + fitbounds?: false | 'locations' | 'geojson'; + /** Sets the color the frame. */ + framecolor?: Color; + /** Sets the stroke width (in px) of the frame. */ + framewidth?: number; + /** Sets the color of the lakes. */ + lakecolor?: Color; + /** Sets the land mass color. */ + landcolor?: Color; + lataxis?: { + /** Sets the graticule's longitude/latitude tick step. */ + dtick?: number; + /** Sets the graticule's stroke color. */ + gridcolor?: Color; + /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + griddash?: Dash; + /** Sets the graticule's stroke width (in px). */ + gridwidth?: number; + /** Sets the range of this axis (in degrees), sets the map's clipped coordinates. */ + range?: [number, number]; + /** Sets whether or not graticule are shown on the map. */ + showgrid?: boolean; + /** Sets the graticule's starting tick longitude/latitude. */ + tick0?: number; + }; + lonaxis?: { + /** Sets the graticule's longitude/latitude tick step. */ + dtick?: number; + /** Sets the graticule's stroke color. */ + gridcolor?: Color; + /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + griddash?: Dash; + /** Sets the graticule's stroke width (in px). */ + gridwidth?: number; + /** Sets the range of this axis (in degrees), sets the map's clipped coordinates. */ + range?: [number, number]; + /** Sets whether or not graticule are shown on the map. */ + showgrid?: boolean; + /** Sets the graticule's starting tick longitude/latitude. */ + tick0?: number; + }; + /** Sets the ocean color */ + oceancolor?: Color; + projection?: { + /** For satellite projection type only. Sets the distance from the center of the sphere to the point of view as a proportion of the sphere’s radius. */ + distance?: number; + /** For conic projection types only. Sets the parallels (tangent, secant) where the cone intersects the sphere. */ + parallels?: [number, number]; + rotation?: { + /** Rotates the map along meridians (in degrees North). */ + lat?: number; + /** Rotates the map along parallels (in degrees East). Defaults to the center of the `lonaxis.range` values. */ + lon?: number; + /** Roll the map (in degrees) For example, a roll of *180* makes the map appear upside down. */ + roll?: number; + }; + /** Zooms in or out on the map view. A scale of *1* corresponds to the largest zoom level that fits the map's lon and lat ranges. */ + scale?: number; + /** For satellite projection type only. Sets the tilt angle of perspective projection. */ + tilt?: number; + /** Sets the projection type. */ + type?: 'airy' | 'aitoff' | 'albers' | 'albers usa' | 'august' | 'azimuthal equal area' | 'azimuthal equidistant' | 'baker' | 'bertin1953' | 'boggs' | 'bonne' | 'bottomley' | 'bromley' | 'collignon' | 'conic conformal' | 'conic equal area' | 'conic equidistant' | 'craig' | 'craster' | 'cylindrical equal area' | 'cylindrical stereographic' | 'eckert1' | 'eckert2' | 'eckert3' | 'eckert4' | 'eckert5' | 'eckert6' | 'eisenlohr' | 'equal earth' | 'equirectangular' | 'fahey' | 'foucaut' | 'foucaut sinusoidal' | 'ginzburg4' | 'ginzburg5' | 'ginzburg6' | 'ginzburg8' | 'ginzburg9' | 'gnomonic' | 'gringorten' | 'gringorten quincuncial' | 'guyou' | 'hammer' | 'hill' | 'homolosine' | 'hufnagel' | 'hyperelliptical' | 'kavrayskiy7' | 'lagrange' | 'larrivee' | 'laskowski' | 'loximuthal' | 'mercator' | 'miller' | 'mollweide' | 'mt flat polar parabolic' | 'mt flat polar quartic' | 'mt flat polar sinusoidal' | 'natural earth' | 'natural earth1' | 'natural earth2' | 'nell hammer' | 'nicolosi' | 'orthographic' | 'patterson' | 'peirce quincuncial' | 'polyconic' | 'rectangular polyconic' | 'robinson' | 'satellite' | 'sinu mollweide' | 'sinusoidal' | 'stereographic' | 'times' | 'transverse mercator' | 'van der grinten' | 'van der grinten2' | 'van der grinten3' | 'van der grinten4' | 'wagner4' | 'wagner6' | 'wiechel' | 'winkel tripel' | 'winkel3'; + }; + /** Sets the resolution of the base layers. The values have units of km/mm e.g. 110 corresponds to a scale ratio of 1:110,000,000. */ + resolution?: 110 | 50; + /** Sets color of the rivers. */ + rivercolor?: Color; + /** Sets the stroke width (in px) of the rivers. */ + riverwidth?: number; + /** Set the scope of the map. */ + scope?: 'africa' | 'antarctica' | 'asia' | 'europe' | 'north america' | 'oceania' | 'south america' | 'usa' | 'world'; + /** Sets whether or not the coastlines are drawn. */ + showcoastlines?: boolean; + /** Sets whether or not country boundaries are drawn. */ + showcountries?: boolean; + /** Sets whether or not a frame is drawn around the map. */ + showframe?: boolean; + /** Sets whether or not lakes are drawn. */ + showlakes?: boolean; + /** Sets whether or not land masses are filled in color. */ + showland?: boolean; + /** Sets whether or not oceans are filled in color. */ + showocean?: boolean; + /** Sets whether or not rivers are drawn. */ + showrivers?: boolean; + /** Sets whether or not boundaries of subunits within countries (e.g. states, provinces) are drawn. */ + showsubunits?: boolean; + /** Sets the color of the subunits boundaries. */ + subunitcolor?: Color; + /** Sets the stroke width (in px) of the subunits boundaries. */ + subunitwidth?: number; + /** Controls persistence of user-driven changes in the view (projection and center). Defaults to `layout.uirevision`. */ + uirevision?: any; + /** Sets the default visibility of the base layers. */ + visible?: boolean; +} + +export interface LayoutAxis { + /** If set to an opposite-letter axis id (e.g. `x2`, `y`), this axis is bound to the corresponding opposite-letter axis. If set to *free*, this axis' position is determined by `position`. */ + anchor?: 'free' | '/^x([2-9]|[1-9][0-9]+)?( domain)?$/' | '/^y([2-9]|[1-9][0-9]+)?( domain)?$/'; + /** Determines whether long tick labels automatically grow the figure margins. */ + automargin?: 'height' | 'width' | 'left' | 'right' | 'top' | 'bottom' | true | false | (string & {}); + /** Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided and it has a value for both the lower and upper bound, `autorange` is set to *false*. Using *min* applies autorange only to set the minimum. Using *max* applies autorange only to set the maximum. Using *min reversed* applies autorange only to set the minimum on a reversed axis. Using *max reversed* applies autorange only to set the maximum on a reversed axis. Using *reversed* applies autorange on both ends and reverses the axis direction. */ + autorange?: true | false | 'reversed' | 'min reversed' | 'max reversed' | 'min' | 'max'; + autorangeoptions?: AutoRangeOptions; + /** Automatically reposition the axis to avoid overlap with other axes with the same `overlaying` value. This repositioning will account for any `shift` amount applied to other axes on the same side with `autoshift` is set to true. Only has an effect if `anchor` is set to *free*. */ + autoshift?: boolean; + /** When `tickangle` is set to *auto*, it will be set to the first angle in this array that is large enough to prevent label overlap. */ + autotickangles?: any[]; + /** Using *strict* a numeric string in trace data is not converted to a number. Using *convert types* a numeric string in trace data may be treated as a number during automatic axis `type` detection. Defaults to layout.autotypenumbers. */ + autotypenumbers?: 'convert types' | 'strict'; + /** Sets the calendar system to use for `range` and `tick0` if this is a date axis. This does not set the calendar for interpreting data on this axis, that's specified in the trace or via the global `layout.calendar` */ + calendar?: Calendar; + /** Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`. */ + categoryarray?: Datum[] | TypedArray; + /** Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. Set `categoryorder` to *total ascending* or *total descending* if order should be determined by the numerical order of the values. Similarly, the order can be determined by the min, max, sum, mean, geometric mean or median of all the values. */ + categoryorder?: 'trace' | 'category ascending' | 'category descending' | 'array' | 'total ascending' | 'total descending' | 'min ascending' | 'min descending' | 'max ascending' | 'max descending' | 'sum ascending' | 'sum descending' | 'mean ascending' | 'mean descending' | 'geometric mean ascending' | 'geometric mean descending' | 'median ascending' | 'median descending'; + /** Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. */ + color?: Color; + /** If this axis needs to be compressed (either due to its own `scaleanchor` and `scaleratio` or those of the other axis), determines how that happens: by increasing the *range*, or by decreasing the *domain*. Default is *domain* for axes containing image traces, *range* otherwise. */ + constrain?: 'range' | 'domain'; + /** If this axis needs to be compressed (either due to its own `scaleanchor` and `scaleratio` or those of the other axis), determines which direction we push the originally specified plot area. Options are *left*, *center* (default), and *right* for x axes, and *top*, *middle* (default), and *bottom* for y axes. */ + constraintoward?: 'left' | 'center' | 'right' | 'top' | 'middle' | 'bottom'; + /** Sets the color of the dividers Only has an effect on *multicategory* axes. */ + dividercolor?: Color; + /** Sets the width (in px) of the dividers Only has an effect on *multicategory* axes. */ + dividerwidth?: number; + /** Sets the domain of this axis (in plot fraction). */ + domain?: [number, number]; + /** Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48* */ + dtick?: any; + /** Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from "femto" f (10^-15) to "tera" T (10^12). *SI extended* covers instead the full SI range from "quecto" q (10^-30) to "quetta" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation. */ + exponentformat?: 'none' | 'e' | 'E' | 'power' | 'SI' | 'B' | 'SI extended'; + /** Determines whether or not this axis is zoom-able. If true, then zoom is disabled. */ + fixedrange?: boolean; + /** Sets the color of the grid lines. */ + gridcolor?: Color; + /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + griddash?: Dash; + /** Sets the width (in px) of the grid lines. */ + gridwidth?: number; + /** Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + hoverformat?: string; + /** Could be used to set the desired inside range of this axis (excluding the labels) when `ticklabelposition` of the anchored axis has *inside*. Not implemented for axes with `type` *log*. This would be ignored when `range` is provided. */ + insiderange?: [any, any]; + /** Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. */ + labelalias?: any; + /** Sets the layer on which this axis is displayed. If *above traces*, this axis is displayed above all the subplot's traces If *below traces*, this axis is displayed below all the subplot's traces, but above the grid lines. Useful when used together with scatter-like traces with `cliponaxis` set to *false* to show markers and/or text nodes above this axis. */ + layer?: 'above traces' | 'below traces'; + /** Sets the axis line color. */ + linecolor?: Color; + /** Sets the width (in px) of the axis line. */ + linewidth?: number; + /** If set to another axis id (e.g. `x2`, `y`), the range of this axis will match the range of the corresponding axis in data-coordinates space. Moreover, matching axes share auto-range values, category lists and histogram auto-bins. Note that setting axes simultaneously in both a `scaleanchor` and a `matches` constraint is currently forbidden. Moreover, note that matching axes must have the same `type`. */ + matches?: '/^x([2-9]|[1-9][0-9]+)?( domain)?$/' | '/^y([2-9]|[1-9][0-9]+)?( domain)?$/'; + /** Determines the maximum range of this axis. */ + maxallowed?: any; + /** Determines the minimum range of this axis. */ + minallowed?: any; + /** Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*. */ + minexponent?: number; + minor?: { + /** Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48* */ + dtick?: any; + /** Sets the color of the grid lines. */ + gridcolor?: Color; + /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + griddash?: Dash; + /** Sets the width (in px) of the grid lines. */ + gridwidth?: number; + /** Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. */ + nticks?: number; + /** Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. */ + showgrid?: boolean; + /** Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears. */ + tick0?: any; + /** Sets the tick color. */ + tickcolor?: Color; + /** Sets the tick length (in px). */ + ticklen?: number; + /** Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). */ + tickmode?: 'auto' | 'linear' | 'array'; + /** Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines. */ + ticks?: 'outside' | 'inside' | ''; + /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ + tickvals?: Datum[] | TypedArray; + /** Sets the tick width (in px). */ + tickwidth?: number; + }; + /** Determines how minor log labels are displayed. If *small digits*, small digits i.e. 2 or 5 are displayed. If *complete*, complete digits are displayed. If *none*, no labels are displayed. */ + minorloglabels?: 'small digits' | 'complete' | 'none'; + /** Determines if the axis lines or/and ticks are mirrored to the opposite side of the plotting area. If *true*, the axis lines are mirrored. If *ticks*, the axis lines and ticks are mirrored. If *false*, mirroring is disable. If *all*, axis lines are mirrored on all shared-axes subplots. If *allticks*, axis lines and ticks are mirrored on all shared-axes subplots. */ + mirror?: true | 'ticks' | false | 'all' | 'allticks'; + /** Disables certain modebar buttons for this axis. *autoscale* disables the autoscale buttons, *zoominout* disables the zoom-in and zoom-out buttons. */ + modebardisable?: 'autoscale' | 'zoominout' | 'none' | (string & {}); + /** Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. */ + nticks?: number; + /** If set a same-letter axis id, this axis is overlaid on top of the corresponding same-letter axis, with traces and axes visible for both axes. If *false*, this axis does not overlay any same-letter axes. In this case, for axes with overlapping domains only the highest-numbered axis will be visible. */ + overlaying?: 'free' | '/^x([2-9]|[1-9][0-9]+)?( domain)?$/' | '/^y([2-9]|[1-9][0-9]+)?( domain)?$/'; + /** Sets the position of this axis in the plotting space (in normalized coordinates). Only has an effect if `anchor` is set to *free*. */ + position?: number; + /** Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears. Leaving either or both elements `null` impacts the default `autorange`. */ + range?: [any, any]; + rangebreaks?: Array<{ + /** Sets the lower and upper bounds of this axis rangebreak. Can be used with `pattern`. */ + bounds?: [any, any]; + /** Sets the size of each `values` item. The default is one day in milliseconds. */ + dvalue?: number; + /** Determines whether this axis rangebreak is enabled or disabled. Please note that `rangebreaks` only work for *date* axis type. */ + enabled?: boolean; + /** When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template. */ + name?: string; + /** Determines a pattern on the time line that generates breaks. If *day of week* - days of the week in English e.g. 'Sunday' or `sun` (matching is case-insensitive and considers only the first three characters), as well as Sunday-based integers between 0 and 6. If *hour* - hour (24-hour clock) as decimal numbers between 0 and 24. for more info. Examples: - { pattern: 'day of week', bounds: [6, 1] } or simply { bounds: ['sat', 'mon'] } breaks from Saturday to Monday (i.e. skips the weekends). - { pattern: 'hour', bounds: [17, 8] } breaks from 5pm to 8am (i.e. skips non-work hours). */ + pattern?: 'day of week' | 'hour' | ''; + /** Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`. */ + templateitemname?: string; + /** Sets the coordinate values corresponding to the rangebreaks. An alternative to `bounds`. Use `dvalue` to set the size of the values along the axis. */ + values?: any[]; + }>; + /** If *normal*, the range is computed in relation to the extrema of the input data. If *tozero*, the range extends to 0, regardless of the input data If *nonnegative*, the range is non-negative, regardless of the input data. Applies only to linear axes. */ + rangemode?: 'normal' | 'tozero' | 'nonnegative'; + rangeselector?: { + /** Sets the background color of the active range selector button. */ + activecolor?: Color; + /** Sets the background color of the range selector buttons. */ + bgcolor?: Color; + /** Sets the color of the border enclosing the range selector. */ + bordercolor?: Color; + /** Sets the width (in px) of the border enclosing the range selector. */ + borderwidth?: number; + buttons?: Array<{ + /** Sets the number of steps to take to update the range. Use with `step` to specify the update interval. */ + count?: number; + /** Sets the text label to appear on the button. */ + label?: string; + /** When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template. */ + name?: string; + /** The unit of measurement that the `count` value will set the range by. */ + step?: 'month' | 'year' | 'day' | 'hour' | 'minute' | 'second' | 'all'; + /** Sets the range update mode. If *backward*, the range update shifts the start of range back *count* times *step* milliseconds. If *todate*, the range update shifts the start of range back to the first timestamp from *count* times *step* milliseconds back. For example, with `step` set to *year* and `count` set to *1* the range update shifts the start of the range back to January 01 of the current year. Month and year *todate* are currently available only for the built-in (Gregorian) calendar. */ + stepmode?: 'backward' | 'todate'; + /** Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`. */ + templateitemname?: string; + /** Determines whether or not this button is visible. */ + visible?: boolean; + }>; + /** Sets the font of the range selector button text. */ + font?: Font; + /** Determines whether or not this range selector is visible. Note that range selectors are only available for x axes of `type` set to or auto-typed to *date*. */ + visible?: boolean; + /** Sets the x position (in normalized coordinates) of the range selector. */ + x?: number; + /** Sets the range selector's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the range selector. */ + xanchor?: 'auto' | 'left' | 'center' | 'right'; + /** Sets the y position (in normalized coordinates) of the range selector. */ + y?: number; + /** Sets the range selector's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the range selector. */ + yanchor?: 'auto' | 'top' | 'middle' | 'bottom'; + }; + rangeslider?: { + /** Determines whether or not the range slider range is computed in relation to the input data. If `range` is provided, then `autorange` is set to *false*. */ + autorange?: boolean; + /** Sets the background color of the range slider. */ + bgcolor?: Color; + /** Sets the border color of the range slider. */ + bordercolor?: Color; + /** Sets the border width of the range slider. */ + borderwidth?: number; + /** Sets the range of the range slider. If not set, defaults to the full xaxis range. If the axis `type` is *log*, then you must take the log of your desired range. If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears. */ + range?: [any, any]; + /** The height of the range slider as a fraction of the total plot area height. */ + thickness?: number; + /** Determines whether or not the range slider will be visible. If visible, perpendicular axes will be set to `fixedrange` */ + visible?: boolean; + yaxis?: { + /** Sets the range of this axis for the rangeslider. */ + range?: [any, any]; + /** Determines whether or not the range of this axis in the rangeslider use the same value than in the main plot when zooming in/out. If *auto*, the autorange will be used. If *fixed*, the `range` is used. If *match*, the current range of the corresponding y-axis on the main subplot is used. */ + rangemode?: 'auto' | 'fixed' | 'match'; + }; + }; + /** If set to another axis id (e.g. `x2`, `y`), the range of this axis changes together with the range of the corresponding axis such that the scale of pixels per unit is in a constant ratio. Both axes are still zoomable, but when you zoom one, the other will zoom the same amount, keeping a fixed midpoint. `constrain` and `constraintoward` determine how we enforce the constraint. You can chain these, ie `yaxis: {scaleanchor: *x*}, xaxis2: {scaleanchor: *y*}` but you can only link axes of the same `type`. The linked axis can have the opposite letter (to constrain the aspect ratio) or the same letter (to match scales across subplots). Loops (`yaxis: {scaleanchor: *x*}, xaxis: {scaleanchor: *y*}` or longer) are redundant and the last constraint encountered will be ignored to avoid possible inconsistent constraints via `scaleratio`. Note that setting axes simultaneously in both a `scaleanchor` and a `matches` constraint is currently forbidden. Setting `false` allows to remove a default constraint (occasionally, you may need to prevent a default `scaleanchor` constraint from being applied, eg. when having an image trace `yaxis: {scaleanchor: "x"}` is set automatically in order for pixels to be rendered as squares, setting `yaxis: {scaleanchor: false}` allows to remove the constraint). */ + scaleanchor?: '/^x([2-9]|[1-9][0-9]+)?( domain)?$/' | '/^y([2-9]|[1-9][0-9]+)?( domain)?$/' | false; + /** If this axis is linked to another by `scaleanchor`, this determines the pixel to unit scale ratio. For example, if this value is 10, then every unit on this axis spans 10 times the number of pixels as a unit on the linked axis. Use this for example to create an elevation profile where the vertical scale is exaggerated a fixed amount with respect to the horizontal. */ + scaleratio?: number; + /** If "true", even 4-digit integers are separated */ + separatethousands?: boolean; + /** Moves the axis a given number of pixels from where it would have been otherwise. Accepts both positive and negative values, which will shift the axis either right or left, respectively. If `autoshift` is set to true, then this defaults to a padding of -3 if `side` is set to *left*. and defaults to +3 if `side` is set to *right*. Defaults to 0 if `autoshift` is set to false. Only has an effect if `anchor` is set to *free*. */ + shift?: number; + /** Determines whether or not a dividers are drawn between the category levels of this axis. Only has an effect on *multicategory* axes. */ + showdividers?: boolean; + /** If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. */ + showexponent?: 'all' | 'first' | 'last' | 'none'; + /** Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. */ + showgrid?: boolean; + /** Determines whether or not a line bounding this axis is drawn. */ + showline?: boolean; + /** Determines whether or not spikes (aka droplines) are drawn for this axis. Note: This only takes affect when hovermode = closest */ + showspikes?: boolean; + /** Determines whether or not the tick labels are drawn. */ + showticklabels?: boolean; + /** If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. */ + showtickprefix?: 'all' | 'first' | 'last' | 'none'; + /** Same as `showtickprefix` but for tick suffixes. */ + showticksuffix?: 'all' | 'first' | 'last' | 'none'; + /** Determines whether a x (y) axis is positioned at the *bottom* (*left*) or *top* (*right*) of the plotting area. */ + side?: 'top' | 'bottom' | 'left' | 'right'; + /** Sets the spike color. If undefined, will use the series color */ + spikecolor?: Color; + /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + spikedash?: Dash; + /** Determines the drawing mode for the spike line If *toaxis*, the line is drawn from the data point to the axis the series is plotted on. If *across*, the line is drawn across the entire plot area, and supercedes *toaxis*. If *marker*, then a marker dot is drawn on the axis the series is plotted on */ + spikemode?: 'toaxis' | 'across' | 'marker' | (string & {}); + /** Determines whether spikelines are stuck to the cursor or to the closest datapoints. */ + spikesnap?: 'data' | 'cursor' | 'hovered data'; + /** Sets the width (in px) of the zero line. */ + spikethickness?: number; + /** Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears. */ + tick0?: any; + /** Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. */ + tickangle?: number | 'auto'; + /** Sets the tick color. */ + tickcolor?: Color; + /** Sets the tick font. */ + tickfont?: Font; + /** Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + tickformat?: string; + tickformatstops?: TickFormatStops[]; + /** Only for axes with `type` *date* or *linear*. Instead of drawing the major tick label, draw the label for the minor tick that is n positions away from the major tick. E.g. to always draw the label for the minor tick before each major tick, choose `ticklabelindex` -1. This is useful for date axes with `ticklabelmode` *period* if you want to label the period that ends with each major tick instead of the period that begins there. */ + ticklabelindex?: number | number[]; + /** Determines where tick labels are drawn with respect to their corresponding ticks and grid lines. Only has an effect for axes of `type` *date* When set to *period*, tick labels are drawn in the middle of the period between ticks. */ + ticklabelmode?: 'instant' | 'period'; + /** Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. Otherwise on *category* and *multicategory* axes the default is *allow*. In other cases the default is *hide past div*. */ + ticklabeloverflow?: 'allow' | 'hide past div' | 'hide past domain'; + /** Determines where tick labels are drawn with respect to the axis. Please note that top or bottom has no effect on x axes or when `ticklabelmode` is set to *period* or when `tickson` is set to *boundaries*. Similarly, left or right has no effect on y axes or when `ticklabelmode` is set to *period* or when `tickson` is set to *boundaries*. Has no effect on *multicategory* axes. When used on axes linked by `matches` or `scaleanchor`, no extra padding for inside labels would be added by autorange, so that the scales could match. */ + ticklabelposition?: 'outside' | 'inside' | 'outside top' | 'inside top' | 'outside left' | 'inside left' | 'outside right' | 'inside right' | 'outside bottom' | 'inside bottom'; + /** Shifts the tick labels by the specified number of pixels in parallel to the axis. Positive values move the labels in the positive direction of the axis. */ + ticklabelshift?: number; + /** Sets the standoff distance (in px) between the axis tick labels and their default position. A positive `ticklabelstandoff` moves the labels farther away from the plot area if `ticklabelposition` is *outside*, and deeper into the plot area if `ticklabelposition` is *inside*. A negative `ticklabelstandoff` works in the opposite direction, moving outside ticks towards the plot area and inside ticks towards the outside. If the negative value is large enough, inside ticks can even end up outside and vice versa. */ + ticklabelstandoff?: number; + /** Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*. */ + ticklabelstep?: number; + /** Sets the tick length (in px). */ + ticklen?: number; + /** Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). If *sync*, the number of ticks will sync with the overlayed axis set by `overlaying` property. */ + tickmode?: 'auto' | 'linear' | 'array' | 'sync'; + /** Sets a tick label prefix. */ + tickprefix?: string; + /** Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines. */ + ticks?: 'outside' | 'inside' | ''; + /** Determines where ticks and grid lines are drawn with respect to their corresponding tick labels. Only has an effect for axes of `type` *category* or *multicategory*. When set to *boundaries*, ticks and grid lines are drawn half a category to the left/bottom of labels. */ + tickson?: 'labels' | 'boundaries'; + /** Sets a tick label suffix. */ + ticksuffix?: string; + /** Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`. */ + ticktext?: Datum[] | TypedArray; + /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ + tickvals?: Datum[] | TypedArray; + /** Sets the tick width (in px). */ + tickwidth?: number; + title?: { + /** Sets this axis' title font. */ + font?: Font; + /** Sets the standoff distance (in px) between the axis labels and the title text The default value is a function of the axis tick labels, the title `font.size` and the axis `linewidth`. Note that the axis title position is always constrained within the margins, so the actual standoff distance is always less than the set or default value. By setting `standoff` and turning on `automargin`, plotly.js will push the margins to fit the axis title at given standoff distance. */ + standoff?: number; + /** Sets the title of this axis. */ + text?: string; + }; + /** Sets the axis type. By default, plotly attempts to determined the axis type by looking into the data of the traces that referenced the axis in question. */ + type?: '-' | 'linear' | 'log' | 'date' | 'category' | 'multicategory'; + /** Controls persistence of user-driven changes in axis `range`, `autorange`, and `title` if in `editable: true` configuration. Defaults to `layout.uirevision`. */ + uirevision?: any; + unifiedhovertitle?: LegendGroupTitle; + /** A single toggle to hide the axis while preserving interaction like dragging. Default is true when a cheater plot is present on the axis, otherwise false */ + visible?: boolean; + /** Determines whether or not a line is drawn at along the 0 value of this axis. If *true*, the zero line is drawn on top of the grid lines. */ + zeroline?: boolean; + /** Sets the line color of the zero line. */ + zerolinecolor?: Color; + /** Sets the layer on which this zeroline is displayed. If *above traces*, this zeroline is displayed above all the subplot's traces If *below traces*, this zeroline is displayed below all the subplot's traces, but above the grid lines. Limitation: *zerolinelayer* currently has no effect if the *zorder* property is set on any trace. */ + zerolinelayer?: 'above traces' | 'below traces'; + /** Sets the width (in px) of the zero line. */ + zerolinewidth?: number; +} + +export interface Legend { + /** Sets the legend background color. Defaults to `layout.paper_bgcolor`. */ + bgcolor?: Color; + /** Sets the color of the border enclosing the legend. */ + bordercolor?: Color; + /** Sets the width (in px) of the border enclosing the legend. */ + borderwidth?: number; + /** Sets the width (in px or fraction) of the legend. Use 0 to size the entry based on the text width, when `entrywidthmode` is set to *pixels*. */ + entrywidth?: number; + /** Determines what entrywidth means. */ + entrywidthmode?: 'fraction' | 'pixels'; + /** Sets the font used to text the legend items. */ + font?: Font; + /** Determines the behavior on legend group item click. *toggleitem* toggles the visibility of the individual item clicked on the graph. *togglegroup* toggles the visibility of all items in the same legendgroup as the item clicked on the graph. */ + groupclick?: 'toggleitem' | 'togglegroup'; + /** Sets the font for group titles in legend. Defaults to `legend.font` with its size increased about 10%. */ + grouptitlefont?: Font; + /** Sets the indentation (in px) of the legend entries. */ + indentation?: number; + /** Determines the behavior on legend item click. *toggle* toggles the visibility of the item clicked on the graph. *toggleothers* makes the clicked item the sole visible item on the graph. *false* disables legend item click interactions. */ + itemclick?: 'toggle' | 'toggleothers' | false; + /** Determines the behavior on legend item double-click. *toggle* toggles the visibility of the item clicked on the graph. *toggleothers* makes the clicked item the sole visible item on the graph. *false* disables legend item double-click interactions. */ + itemdoubleclick?: 'toggle' | 'toggleothers' | false; + /** Determines if the legend items symbols scale with their corresponding *trace* attributes or remain *constant* independent of the symbol size on the graph. */ + itemsizing?: 'trace' | 'constant'; + /** Sets the width (in px) of the legend item symbols (the part other than the title.text). */ + itemwidth?: number; + /** Sets the max height (in px) of the legend, or max height ratio (reference height * ratio) if less than or equal to 1. Default value is: 0.5 for horizontal legends; 1 for vertical legends. The minimum allowed height is 30px. For a ratio of 0.5, the legend will take up to 50% of the reference height before displaying a scrollbar. The reference height is the full layout height with the following exception: vertically oriented legends with a `yref` of `"paper", located to the side of the plot. In this case, the reference height is the plot height. */ + maxheight?: number; + /** Sets the orientation of the legend. */ + orientation?: 'v' | 'h'; + title?: { + /** Sets this legend's title font. Defaults to `legend.font` with its size increased about 20%. */ + font?: Font; + /** Determines the location of legend's title with respect to the legend items. Defaulted to *top* with `orientation` is *h*. Defaulted to *left* with `orientation` is *v*. The *top left* options could be used to expand top center and top right are for horizontal alignment legend area in both x and y sides. */ + side?: 'top' | 'left' | 'top left' | 'top center' | 'top right'; + /** Sets the title of the legend. */ + text?: string; + }; + /** Determines the behavior on legend title click. *toggle* toggles the visibility of all items in the legend. *toggleothers* toggles the visibility of all other legends. *false* disables legend title click interactions. Defaults to *toggle* when there are multiple legends, *false* otherwise. Not supported for legends containing pie and pie-like traces. */ + titleclick?: 'toggle' | 'toggleothers' | false; + /** Determines the behavior on legend title double-click. *toggle* toggles the visibility of all items in the legend. *toggleothers* toggles the visibility of all other legends. *false* disables legend title double-click interactions. Defaults to *toggleothers* when there are multiple legends, *false* otherwise. Not supported for legends containing pie and pie-like traces. */ + titledoubleclick?: 'toggle' | 'toggleothers' | false; + /** Sets the amount of vertical space (in px) between legend groups. */ + tracegroupgap?: number; + /** Determines the order at which the legend items are displayed. If *normal*, the items are displayed top-to-bottom in the same order as the input data. If *reversed*, the items are displayed in the opposite order as *normal*. If *grouped*, the items are displayed in groups (when a trace `legendgroup` is provided). if *grouped+reversed*, the items are displayed in the opposite order as *grouped*. */ + traceorder?: 'reversed' | 'grouped' | 'normal' | (string & {}); + /** Controls persistence of legend-driven changes in trace and pie label visibility. Defaults to `layout.uirevision`. */ + uirevision?: any; + /** Sets the vertical alignment of the symbols with respect to their associated text. */ + valign?: 'top' | 'middle' | 'bottom'; + /** Determines whether or not this legend is visible. */ + visible?: boolean; + /** Sets the x position with respect to `xref` (in normalized coordinates) of the legend. When `xref` is *paper*, defaults to *1.02* for vertical legends and defaults to *0* for horizontal legends. When `xref` is *container*, defaults to *1* for vertical legends and defaults to *0* for horizontal legends. Must be between *0* and *1* if `xref` is *container*. and between *-2* and *3* if `xref` is *paper*. */ + x?: number; + /** Sets the legend's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the legend. Value *auto* anchors legends to the right for `x` values greater than or equal to 2/3, anchors legends to the left for `x` values less than or equal to 1/3 and anchors legends with respect to their center otherwise. */ + xanchor?: 'auto' | 'left' | 'center' | 'right'; + /** Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only. */ + xref?: 'container' | 'paper'; + /** Sets the y position with respect to `yref` (in normalized coordinates) of the legend. When `yref` is *paper*, defaults to *1* for vertical legends, defaults to *-0.1* for horizontal legends on graphs w/o range sliders and defaults to *1.1* for horizontal legends on graph with one or multiple range sliders. When `yref` is *container*, defaults to *1*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*. */ + y?: number; + /** Sets the legend's vertical position anchor. This anchor binds the `y` position to the *top*, *middle* or *bottom* of the legend. Value *auto* anchors legends at their bottom for `y` values less than or equal to 1/3, anchors legends to at their top for `y` values greater than or equal to 2/3 and anchors legends with respect to their middle otherwise. */ + yanchor?: 'auto' | 'top' | 'middle' | 'bottom'; + /** Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only. */ + yref?: 'container' | 'paper'; +} + +export interface MapLayout { + /** Sets the mapbox access token to be used for this mapbox map. Alternatively, the mapbox access token can be set in the configuration options under `mapboxAccessToken`. Note that accessToken are only required when `style` (e.g with values : basic, streets, outdoors, light, dark, satellite, satellite-streets ) and/or a layout layer references the Mapbox server. */ + accesstoken?: string; + /** Sets the bearing angle of the map in degrees counter-clockwise from North (map.bearing). */ + bearing?: number; + bounds?: { + /** Sets the maximum longitude of the map (in degrees East) if `west`, `south` and `north` are declared. */ + east?: number; + /** Sets the maximum latitude of the map (in degrees North) if `east`, `west` and `south` are declared. */ + north?: number; + /** Sets the minimum latitude of the map (in degrees North) if `east`, `west` and `north` are declared. */ + south?: number; + /** Sets the minimum longitude of the map (in degrees East) if `east`, `south` and `north` are declared. */ + west?: number; + }; + center?: { + /** Sets the latitude of the center of the map (in degrees North). */ + lat?: number; + /** Sets the longitude of the center of the map (in degrees East). */ + lon?: number; + }; + domain?: Domain; + layers?: Array<{ + /** Determines if the layer will be inserted before the layer with the specified ID. If omitted or set to '', the layer will be inserted above every existing layer. */ + below?: string; + circle?: { + /** Sets the circle radius (map.layer.paint.circle-radius). Has an effect only when `type` is set to *circle*. */ + radius?: number; + }; + /** Sets the primary layer color. If `type` is *circle*, color corresponds to the circle color (map.layer.paint.circle-color) If `type` is *line*, color corresponds to the line color (map.layer.paint.line-color) If `type` is *fill*, color corresponds to the fill color (map.layer.paint.fill-color) If `type` is *symbol*, color corresponds to the icon color (map.layer.paint.icon-color) */ + color?: Color; + /** Sets the coordinates array contains [longitude, latitude] pairs for the image corners listed in clockwise order: top left, top right, bottom right, bottom left. Only has an effect for *image* `sourcetype`. */ + coordinates?: any; + fill?: ColorBar; + line?: { + /** Sets the length of dashes and gaps (map.layer.paint.line-dasharray). Has an effect only when `type` is set to *line*. */ + dash?: Datum[] | TypedArray; + /** Sets the line width (map.layer.paint.line-width). Has an effect only when `type` is set to *line*. */ + width?: number; + }; + /** Sets the maximum zoom level (map.layer.maxzoom). At zoom levels equal to or greater than the maxzoom, the layer will be hidden. */ + maxzoom?: number; + /** Sets the minimum zoom level (map.layer.minzoom). At zoom levels less than the minzoom, the layer will be hidden. */ + minzoom?: number; + /** When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template. */ + name?: string; + /** Sets the opacity of the layer. If `type` is *circle*, opacity corresponds to the circle opacity (map.layer.paint.circle-opacity) If `type` is *line*, opacity corresponds to the line opacity (map.layer.paint.line-opacity) If `type` is *fill*, opacity corresponds to the fill opacity (map.layer.paint.fill-opacity) If `type` is *symbol*, opacity corresponds to the icon/text opacity (map.layer.paint.text-opacity) */ + opacity?: number; + /** Sets the source data for this layer (map.layer.source). When `sourcetype` is set to *geojson*, `source` can be a URL to a GeoJSON or a GeoJSON object. When `sourcetype` is set to *vector* or *raster*, `source` can be a URL or an array of tile URLs. When `sourcetype` is set to *image*, `source` can be a URL to an image. */ + source?: any; + /** Sets the attribution for this source. */ + sourceattribution?: string; + /** Specifies the layer to use from a vector tile source (map.layer.source-layer). Required for *vector* source type that supports multiple layers. */ + sourcelayer?: string; + /** Sets the source type for this layer, that is the type of the layer data. */ + sourcetype?: 'geojson' | 'vector' | 'raster' | 'image'; + symbol?: { + /** Sets the symbol icon image (map.layer.layout.icon-image). Full list: https://www.mapbox.com/maki-icons/ */ + icon?: string; + /** Sets the symbol icon size (map.layer.layout.icon-size). Has an effect only when `type` is set to *symbol*. */ + iconsize?: number; + /** Sets the symbol and/or text placement (map.layer.layout.symbol-placement). If `placement` is *point*, the label is placed where the geometry is located If `placement` is *line*, the label is placed along the line of the geometry If `placement` is *line-center*, the label is placed on the center of the geometry */ + placement?: 'point' | 'line' | 'line-center'; + /** Sets the symbol text (map.layer.layout.text-field). */ + text?: string; + /** Sets the icon text font (color=map.layer.paint.text-color, size=map.layer.layout.text-size). Has an effect only when `type` is set to *symbol*. */ + textfont?: Font; + /** Sets the positions of the `text` elements with respects to the (x,y) coordinates. */ + textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right'; + }; + /** Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`. */ + templateitemname?: string; + /** Sets the layer type, that is the how the layer data set in `source` will be rendered With `sourcetype` set to *geojson*, the following values are allowed: *circle*, *line*, *fill* and *symbol*. but note that *line* and *fill* are not compatible with Point GeoJSON geometries. With `sourcetype` set to *vector*, the following values are allowed: *circle*, *line*, *fill* and *symbol*. With `sourcetype` set to *raster* or *image*, only the *raster* value is allowed. */ + type?: 'circle' | 'line' | 'fill' | 'symbol' | 'raster'; + /** Determines whether this layer is displayed */ + visible?: boolean; + }>; + /** Sets the pitch angle of the map (in degrees, where *0* means perpendicular to the surface of the map) (map.pitch). */ + pitch?: number; + /** Defines the map layers that are rendered by default below the trace layers defined in `data`, which are themselves by default rendered below the layers defined in `layout.map.layers`. These layers can be defined either explicitly as a Map Style object which can contain multiple layer definitions that load data from any public or private Tile Map Service (TMS or XYZ) or Web Map Service (WMS) or implicitly by using one of the built-in style objects which use WMSes or by using a custom style URL Map Style objects are of the form described in the MapLibre GL JS documentation available at https://maplibre.org/maplibre-style-spec/ The built-in plotly.js styles objects are: basic, carto-darkmatter, carto-darkmatter-nolabels, carto-positron, carto-positron-nolabels, carto-voyager, carto-voyager-nolabels, dark, light, open-street-map, outdoors, satellite, satellite-streets, streets, white-bg. */ + style?: any; + /** Controls persistence of user-driven changes in the view: `center`, `zoom`, `bearing`, `pitch`. Defaults to `layout.uirevision`. */ + uirevision?: any; + /** Sets the zoom level of the map (map.zoom). */ + zoom?: number; +} + +export interface PolarLayout { + angularaxis?: { + /** Using *strict* a numeric string in trace data is not converted to a number. Using *convert types* a numeric string in trace data may be treated as a number during automatic axis `type` detection. Defaults to layout.autotypenumbers. */ + autotypenumbers?: 'convert types' | 'strict'; + /** Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`. */ + categoryarray?: Datum[] | TypedArray; + /** Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. Set `categoryorder` to *total ascending* or *total descending* if order should be determined by the numerical order of the values. Similarly, the order can be determined by the min, max, sum, mean, geometric mean or median of all the values. */ + categoryorder?: 'trace' | 'category ascending' | 'category descending' | 'array' | 'total ascending' | 'total descending' | 'min ascending' | 'min descending' | 'max ascending' | 'max descending' | 'sum ascending' | 'sum descending' | 'mean ascending' | 'mean descending' | 'geometric mean ascending' | 'geometric mean descending' | 'median ascending' | 'median descending'; + /** Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. */ + color?: Color; + /** Sets the direction corresponding to positive angles. */ + direction?: 'counterclockwise' | 'clockwise'; + /** Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48* */ + dtick?: any; + /** Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from "femto" f (10^-15) to "tera" T (10^12). *SI extended* covers instead the full SI range from "quecto" q (10^-30) to "quetta" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation. */ + exponentformat?: 'none' | 'e' | 'E' | 'power' | 'SI' | 'B' | 'SI extended'; + /** Sets the color of the grid lines. */ + gridcolor?: Color; + /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + griddash?: Dash; + /** Sets the width (in px) of the grid lines. */ + gridwidth?: number; + /** Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + hoverformat?: string; + /** Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. */ + labelalias?: any; + /** Sets the layer on which this axis is displayed. If *above traces*, this axis is displayed above all the subplot's traces If *below traces*, this axis is displayed below all the subplot's traces, but above the grid lines. Useful when used together with scatter-like traces with `cliponaxis` set to *false* to show markers and/or text nodes above this axis. */ + layer?: 'above traces' | 'below traces'; + /** Sets the axis line color. */ + linecolor?: Color; + /** Sets the width (in px) of the axis line. */ + linewidth?: number; + /** Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*. */ + minexponent?: number; + /** Determines how minor log labels are displayed. If *small digits*, small digits i.e. 2 or 5 are displayed. If *complete*, complete digits are displayed. If *none*, no labels are displayed. */ + minorloglabels?: 'small digits' | 'complete' | 'none'; + /** Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. */ + nticks?: number; + /** Set the angular period. Has an effect only when `angularaxis.type` is *category*. */ + period?: number; + /** Sets that start position (in degrees) of the angular axis By default, polar subplots with `direction` set to *counterclockwise* get a `rotation` of *0* which corresponds to due East (like what mathematicians prefer). In turn, polar with `direction` set to *clockwise* get a rotation of *90* which corresponds to due North (like on a compass), */ + rotation?: number | 'auto'; + /** If "true", even 4-digit integers are separated */ + separatethousands?: boolean; + /** If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. */ + showexponent?: 'all' | 'first' | 'last' | 'none'; + /** Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. */ + showgrid?: boolean; + /** Determines whether or not a line bounding this axis is drawn. */ + showline?: boolean; + /** Determines whether or not the tick labels are drawn. */ + showticklabels?: boolean; + /** If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. */ + showtickprefix?: 'all' | 'first' | 'last' | 'none'; + /** Same as `showtickprefix` but for tick suffixes. */ + showticksuffix?: 'all' | 'first' | 'last' | 'none'; + /** Sets the format unit of the formatted *theta* values. Has an effect only when `angularaxis.type` is *linear*. */ + thetaunit?: 'radians' | 'degrees'; + /** Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears. */ + tick0?: any; + /** Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. */ + tickangle?: number | 'auto'; + /** Sets the tick color. */ + tickcolor?: Color; + /** Sets the tick font. */ + tickfont?: Font; + /** Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + tickformat?: string; + tickformatstops?: TickFormatStops[]; + /** Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*. */ + ticklabelstep?: number; + /** Sets the tick length (in px). */ + ticklen?: number; + /** Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). */ + tickmode?: 'auto' | 'linear' | 'array'; + /** Sets a tick label prefix. */ + tickprefix?: string; + /** Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines. */ + ticks?: 'outside' | 'inside' | ''; + /** Sets a tick label suffix. */ + ticksuffix?: string; + /** Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`. */ + ticktext?: Datum[] | TypedArray; + /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ + tickvals?: Datum[] | TypedArray; + /** Sets the tick width (in px). */ + tickwidth?: number; + /** Sets the angular axis type. If *linear*, set `thetaunit` to determine the unit in which axis value are shown. If *category, use `period` to set the number of integer coordinates around polar axis. */ + type?: '-' | 'linear' | 'category'; + /** Controls persistence of user-driven changes in axis `rotation`. Defaults to `polar.uirevision`. */ + uirevision?: any; + /** A single toggle to hide the axis while preserving interaction like dragging. Default is true when a cheater plot is present on the axis, otherwise false */ + visible?: boolean; + }; + /** Set the background color of the subplot */ + bgcolor?: Color; + domain?: Domain; + /** Determines if the radial axis grid lines and angular axis line are drawn as *circular* sectors or as *linear* (polygon) sectors. Has an effect only when the angular axis has `type` *category*. Note that `radialaxis.angle` is snapped to the angle of the closest vertex when `gridshape` is *circular* (so that radial axis scale is the same as the data scale). */ + gridshape?: 'circular' | 'linear'; + /** Sets the fraction of the radius to cut out of the polar subplot. */ + hole?: number; + radialaxis?: { + /** Sets the angle (in degrees) from which the radial axis is drawn. Note that by default, radial axis line on the theta=0 line corresponds to a line pointing right (like what mathematicians prefer). Defaults to the first `polar.sector` angle. */ + angle?: number | 'auto'; + /** Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided and it has a value for both the lower and upper bound, `autorange` is set to *false*. Using *min* applies autorange only to set the minimum. Using *max* applies autorange only to set the maximum. Using *min reversed* applies autorange only to set the minimum on a reversed axis. Using *max reversed* applies autorange only to set the maximum on a reversed axis. Using *reversed* applies autorange on both ends and reverses the axis direction. */ + autorange?: true | false | 'reversed' | 'min reversed' | 'max reversed' | 'min' | 'max'; + autorangeoptions?: AutoRangeOptions; + /** When `tickangle` is set to *auto*, it will be set to the first angle in this array that is large enough to prevent label overlap. */ + autotickangles?: any[]; + /** Using *strict* a numeric string in trace data is not converted to a number. Using *convert types* a numeric string in trace data may be treated as a number during automatic axis `type` detection. Defaults to layout.autotypenumbers. */ + autotypenumbers?: 'convert types' | 'strict'; + /** Sets the calendar system to use for `range` and `tick0` if this is a date axis. This does not set the calendar for interpreting data on this axis, that's specified in the trace or via the global `layout.calendar` */ + calendar?: Calendar; + /** Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`. */ + categoryarray?: Datum[] | TypedArray; + /** Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. Set `categoryorder` to *total ascending* or *total descending* if order should be determined by the numerical order of the values. Similarly, the order can be determined by the min, max, sum, mean, geometric mean or median of all the values. */ + categoryorder?: 'trace' | 'category ascending' | 'category descending' | 'array' | 'total ascending' | 'total descending' | 'min ascending' | 'min descending' | 'max ascending' | 'max descending' | 'sum ascending' | 'sum descending' | 'mean ascending' | 'mean descending' | 'geometric mean ascending' | 'geometric mean descending' | 'median ascending' | 'median descending'; + /** Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. */ + color?: Color; + /** Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48* */ + dtick?: any; + /** Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from "femto" f (10^-15) to "tera" T (10^12). *SI extended* covers instead the full SI range from "quecto" q (10^-30) to "quetta" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation. */ + exponentformat?: 'none' | 'e' | 'E' | 'power' | 'SI' | 'B' | 'SI extended'; + /** Sets the color of the grid lines. */ + gridcolor?: Color; + /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + griddash?: Dash; + /** Sets the width (in px) of the grid lines. */ + gridwidth?: number; + /** Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + hoverformat?: string; + /** Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. */ + labelalias?: any; + /** Sets the layer on which this axis is displayed. If *above traces*, this axis is displayed above all the subplot's traces If *below traces*, this axis is displayed below all the subplot's traces, but above the grid lines. Useful when used together with scatter-like traces with `cliponaxis` set to *false* to show markers and/or text nodes above this axis. */ + layer?: 'above traces' | 'below traces'; + /** Sets the axis line color. */ + linecolor?: Color; + /** Sets the width (in px) of the axis line. */ + linewidth?: number; + /** Determines the maximum range of this axis. */ + maxallowed?: any; + /** Determines the minimum range of this axis. */ + minallowed?: any; + /** Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*. */ + minexponent?: number; + /** Determines how minor log labels are displayed. If *small digits*, small digits i.e. 2 or 5 are displayed. If *complete*, complete digits are displayed. If *none*, no labels are displayed. */ + minorloglabels?: 'small digits' | 'complete' | 'none'; + /** Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. */ + nticks?: number; + /** Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears. Leaving either or both elements `null` impacts the default `autorange`. */ + range?: [any, any]; + /** If *tozero*, the range extends to 0, regardless of the input data If *nonnegative*, the range is non-negative, regardless of the input data. If *normal*, the range is computed in relation to the extrema of the input data (same behavior as for cartesian axes). */ + rangemode?: 'tozero' | 'nonnegative' | 'normal'; + /** If "true", even 4-digit integers are separated */ + separatethousands?: boolean; + /** If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. */ + showexponent?: 'all' | 'first' | 'last' | 'none'; + /** Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. */ + showgrid?: boolean; + /** Determines whether or not a line bounding this axis is drawn. */ + showline?: boolean; + /** Determines whether or not the tick labels are drawn. */ + showticklabels?: boolean; + /** If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. */ + showtickprefix?: 'all' | 'first' | 'last' | 'none'; + /** Same as `showtickprefix` but for tick suffixes. */ + showticksuffix?: 'all' | 'first' | 'last' | 'none'; + /** Determines on which side of radial axis line the tick and tick labels appear. */ + side?: 'clockwise' | 'counterclockwise'; + /** Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears. */ + tick0?: any; + /** Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. */ + tickangle?: number | 'auto'; + /** Sets the tick color. */ + tickcolor?: Color; + /** Sets the tick font. */ + tickfont?: Font; + /** Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + tickformat?: string; + tickformatstops?: TickFormatStops[]; + /** Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*. */ + ticklabelstep?: number; + /** Sets the tick length (in px). */ + ticklen?: number; + /** Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). */ + tickmode?: 'auto' | 'linear' | 'array'; + /** Sets a tick label prefix. */ + tickprefix?: string; + /** Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines. */ + ticks?: 'outside' | 'inside' | ''; + /** Sets a tick label suffix. */ + ticksuffix?: string; + /** Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`. */ + ticktext?: Datum[] | TypedArray; + /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ + tickvals?: Datum[] | TypedArray; + /** Sets the tick width (in px). */ + tickwidth?: number; + title?: LegendGroupTitle; + /** Sets the axis type. By default, plotly attempts to determined the axis type by looking into the data of the traces that referenced the axis in question. */ + type?: '-' | 'linear' | 'log' | 'date' | 'category'; + /** Controls persistence of user-driven changes in axis `range`, `autorange`, `angle`, and `title` if in `editable: true` configuration. Defaults to `polar.uirevision`. */ + uirevision?: any; + /** A single toggle to hide the axis while preserving interaction like dragging. Default is true when a cheater plot is present on the axis, otherwise false */ + visible?: boolean; + }; + /** Sets angular span of this polar subplot with two angles (in degrees). Sector are assumed to be spanned in the counterclockwise direction with *0* corresponding to rightmost limit of the polar subplot. */ + sector?: [number, number]; + /** Controls persistence of user-driven changes in axis attributes, if not overridden in the individual axes. Defaults to `layout.uirevision`. */ + uirevision?: any; +} + +export interface Scene { + annotations?: Array<{ + /** Sets the horizontal alignment of the `text` within the box. Has an effect only if `text` spans two or more lines (i.e. `text` contains one or more
HTML tags) or if an explicit width is set to override the text width. */ + align?: 'left' | 'center' | 'right'; + /** Sets the color of the annotation arrow. */ + arrowcolor?: Color; + /** Sets the end annotation arrow head style. */ + arrowhead?: number; + /** Sets the annotation arrow head position. */ + arrowside?: 'end' | 'start' | 'none' | (string & {}); + /** Sets the size of the end annotation arrow head, relative to `arrowwidth`. A value of 1 (default) gives a head about 3x as wide as the line. */ + arrowsize?: number; + /** Sets the width (in px) of annotation arrow line. */ + arrowwidth?: number; + /** Sets the x component of the arrow tail about the arrow head (in pixels). */ + ax?: number; + /** Sets the y component of the arrow tail about the arrow head (in pixels). */ + ay?: number; + /** Sets the background color of the annotation. */ + bgcolor?: Color; + /** Sets the color of the border enclosing the annotation `text`. */ + bordercolor?: Color; + /** Sets the padding (in px) between the `text` and the enclosing border. */ + borderpad?: number; + /** Sets the width (in px) of the border enclosing the annotation `text`. */ + borderwidth?: number; + /** Determines whether the annotation text box captures mouse move and click events, or allows those events to pass through to data points in the plot that may be behind the annotation. By default `captureevents` is *false* unless `hovertext` is provided. If you use the event `plotly_clickannotation` without `hovertext` you must explicitly enable `captureevents`. */ + captureevents?: boolean; + /** Sets the annotation text font. */ + font?: Font; + /** Sets an explicit height for the text box. null (default) lets the text set the box height. Taller text will be clipped. */ + height?: number; + hoverlabel?: { + /** Sets the background color of the hover label. By default uses the annotation's `bgcolor` made opaque, or white if it was transparent. */ + bgcolor?: Color; + /** Sets the border color of the hover label. By default uses either dark grey or white, for maximum contrast with `hoverlabel.bgcolor`. */ + bordercolor?: Color; + /** Sets the hover label text font. By default uses the global hover font and size, with color from `hoverlabel.bordercolor`. */ + font?: Font; + }; + /** Sets text to appear when hovering over this annotation. If omitted or blank, no hover label will appear. */ + hovertext?: string; + /** When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template. */ + name?: string; + /** Sets the opacity of the annotation (text + arrow). */ + opacity?: number; + /** Determines whether or not the annotation is drawn with an arrow. If *true*, `text` is placed near the arrow's tail. If *false*, `text` lines up with the `x` and `y` provided. */ + showarrow?: boolean; + /** Sets a distance, in pixels, to move the end arrowhead away from the position it is pointing at, for example to point at the edge of a marker independent of zoom. Note that this shortens the arrow from the `ax` / `ay` vector, in contrast to `xshift` / `yshift` which moves everything by this amount. */ + standoff?: number; + /** Sets the start annotation arrow head style. */ + startarrowhead?: number; + /** Sets the size of the start annotation arrow head, relative to `arrowwidth`. A value of 1 (default) gives a head about 3x as wide as the line. */ + startarrowsize?: number; + /** Sets a distance, in pixels, to move the start arrowhead away from the position it is pointing at, for example to point at the edge of a marker independent of zoom. Note that this shortens the arrow from the `ax` / `ay` vector, in contrast to `xshift` / `yshift` which moves everything by this amount. */ + startstandoff?: number; + /** Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`. */ + templateitemname?: string; + /** Sets the text associated with this annotation. Plotly uses a subset of HTML tags to do things like newline (`
`), bold (``), italics (``), hyperlinks (`
`). Tags ``, ``, ``, ``, ``, and `` are also supported. */ + text?: string; + /** Sets the angle at which the `text` is drawn with respect to the horizontal. */ + textangle?: number | 'auto'; + /** Sets the vertical alignment of the `text` within the box. Has an effect only if an explicit height is set to override the text height. */ + valign?: 'top' | 'middle' | 'bottom'; + /** Determines whether or not this annotation is visible. */ + visible?: boolean; + /** Sets an explicit width for the text box. null (default) lets the text set the box width. Wider text will be clipped. There is no automatic wrapping; use
to start a new line. */ + width?: number; + /** Sets the annotation's x position. */ + x?: any; + /** Sets the text box's horizontal position anchor This anchor binds the `x` position to the *left*, *center* or *right* of the annotation. For example, if `x` is set to 1, `xref` to *paper* and `xanchor` to *right* then the right-most portion of the annotation lines up with the right-most edge of the plotting area. If *auto*, the anchor is equivalent to *center* for data-referenced annotations or if there is an arrow, whereas for paper-referenced with no arrow, the anchor picked corresponds to the closest side. */ + xanchor?: 'auto' | 'left' | 'center' | 'right'; + /** Shifts the position of the whole annotation and arrow to the right (positive) or left (negative) by this many pixels. */ + xshift?: number; + /** Sets the annotation's y position. */ + y?: any; + /** Sets the text box's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the annotation. For example, if `y` is set to 1, `yref` to *paper* and `yanchor` to *top* then the top-most portion of the annotation lines up with the top-most edge of the plotting area. If *auto*, the anchor is equivalent to *middle* for data-referenced annotations or if there is an arrow, whereas for paper-referenced with no arrow, the anchor picked corresponds to the closest side. */ + yanchor?: 'auto' | 'top' | 'middle' | 'bottom'; + /** Shifts the position of the whole annotation and arrow up (positive) or down (negative) by this many pixels. */ + yshift?: number; + /** Sets the annotation's z position. */ + z?: any; + }>; + /** If *cube*, this scene's axes are drawn as a cube, regardless of the axes' ranges. If *data*, this scene's axes are drawn in proportion with the axes' ranges. If *manual*, this scene's axes are drawn in proportion with the input of *aspectratio* (the default behavior if *aspectratio* is provided). If *auto*, this scene's axes are drawn using the results of *data* except when one axis is more than four times the size of the two others, where in that case the results of *cube* are used. */ + aspectmode?: 'auto' | 'cube' | 'data' | 'manual'; + /** Sets this scene's axis aspectratio. */ + aspectratio?: { + x?: number; + y?: number; + z?: number; + }; + bgcolor?: Color; + camera?: { + /** Sets the (x,y,z) components of the 'center' camera vector This vector determines the translation (x,y,z) space about the center of this scene. By default, there is no such translation. */ + center?: { + x?: number; + y?: number; + z?: number; + }; + /** Sets the (x,y,z) components of the 'eye' camera vector. This vector determines the view point about the origin of this scene. */ + eye?: { + x?: number; + y?: number; + z?: number; + }; + projection?: { + /** Sets the projection type. The projection type could be either *perspective* or *orthographic*. The default is *perspective*. */ + type?: 'perspective' | 'orthographic'; + }; + /** Sets the (x,y,z) components of the 'up' camera vector. This vector determines the up direction of this scene with respect to the page. The default is *{x: 0, y: 0, z: 1}* which means that the z axis points up. */ + up?: { + x?: number; + y?: number; + z?: number; + }; + }; + domain?: Domain; + /** Determines the mode of drag interactions for this scene. */ + dragmode?: 'orbit' | 'turntable' | 'zoom' | 'pan' | false; + /** Determines the mode of hover interactions for this scene. */ + hovermode?: 'closest' | false; + /** Controls persistence of user-driven changes in camera attributes. Defaults to `layout.uirevision`. */ + uirevision?: any; + xaxis?: { + /** Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided and it has a value for both the lower and upper bound, `autorange` is set to *false*. Using *min* applies autorange only to set the minimum. Using *max* applies autorange only to set the maximum. Using *min reversed* applies autorange only to set the minimum on a reversed axis. Using *max reversed* applies autorange only to set the maximum on a reversed axis. Using *reversed* applies autorange on both ends and reverses the axis direction. */ + autorange?: true | false | 'reversed' | 'min reversed' | 'max reversed' | 'min' | 'max'; + autorangeoptions?: AutoRangeOptions; + /** Using *strict* a numeric string in trace data is not converted to a number. Using *convert types* a numeric string in trace data may be treated as a number during automatic axis `type` detection. Defaults to layout.autotypenumbers. */ + autotypenumbers?: 'convert types' | 'strict'; + /** Sets the background color of this axis' wall. */ + backgroundcolor?: Color; + /** Sets the calendar system to use for `range` and `tick0` if this is a date axis. This does not set the calendar for interpreting data on this axis, that's specified in the trace or via the global `layout.calendar` */ + calendar?: Calendar; + /** Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`. */ + categoryarray?: Datum[] | TypedArray; + /** Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. Set `categoryorder` to *total ascending* or *total descending* if order should be determined by the numerical order of the values. Similarly, the order can be determined by the min, max, sum, mean, geometric mean or median of all the values. */ + categoryorder?: 'trace' | 'category ascending' | 'category descending' | 'array' | 'total ascending' | 'total descending' | 'min ascending' | 'min descending' | 'max ascending' | 'max descending' | 'sum ascending' | 'sum descending' | 'mean ascending' | 'mean descending' | 'geometric mean ascending' | 'geometric mean descending' | 'median ascending' | 'median descending'; + /** Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. */ + color?: Color; + /** Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48* */ + dtick?: any; + /** Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from "femto" f (10^-15) to "tera" T (10^12). *SI extended* covers instead the full SI range from "quecto" q (10^-30) to "quetta" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation. */ + exponentformat?: 'none' | 'e' | 'E' | 'power' | 'SI' | 'B' | 'SI extended'; + /** Sets the color of the grid lines. */ + gridcolor?: Color; + /** Sets the width (in px) of the grid lines. */ + gridwidth?: number; + /** Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + hoverformat?: string; + /** Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. */ + labelalias?: any; + /** Sets the axis line color. */ + linecolor?: Color; + /** Sets the width (in px) of the axis line. */ + linewidth?: number; + /** Determines the maximum range of this axis. */ + maxallowed?: any; + /** Determines the minimum range of this axis. */ + minallowed?: any; + /** Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*. */ + minexponent?: number; + /** Determines if the axis lines or/and ticks are mirrored to the opposite side of the plotting area. If *true*, the axis lines are mirrored. If *ticks*, the axis lines and ticks are mirrored. If *false*, mirroring is disable. If *all*, axis lines are mirrored on all shared-axes subplots. If *allticks*, axis lines and ticks are mirrored on all shared-axes subplots. */ + mirror?: true | 'ticks' | false | 'all' | 'allticks'; + /** Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. */ + nticks?: number; + /** Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears. Leaving either or both elements `null` impacts the default `autorange`. */ + range?: [any, any]; + /** If *normal*, the range is computed in relation to the extrema of the input data. If *tozero*, the range extends to 0, regardless of the input data If *nonnegative*, the range is non-negative, regardless of the input data. Applies only to linear axes. */ + rangemode?: 'normal' | 'tozero' | 'nonnegative'; + /** If "true", even 4-digit integers are separated */ + separatethousands?: boolean; + /** Sets whether or not this axis is labeled */ + showaxeslabels?: boolean; + /** Sets whether or not this axis' wall has a background color. */ + showbackground?: boolean; + /** If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. */ + showexponent?: 'all' | 'first' | 'last' | 'none'; + /** Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. */ + showgrid?: boolean; + /** Determines whether or not a line bounding this axis is drawn. */ + showline?: boolean; + /** Sets whether or not spikes starting from data points to this axis' wall are shown on hover. */ + showspikes?: boolean; + /** Determines whether or not the tick labels are drawn. */ + showticklabels?: boolean; + /** If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. */ + showtickprefix?: 'all' | 'first' | 'last' | 'none'; + /** Same as `showtickprefix` but for tick suffixes. */ + showticksuffix?: 'all' | 'first' | 'last' | 'none'; + /** Sets the color of the spikes. */ + spikecolor?: Color; + /** Sets whether or not spikes extending from the projection data points to this axis' wall boundaries are shown on hover. */ + spikesides?: boolean; + /** Sets the thickness (in px) of the spikes. */ + spikethickness?: number; + /** Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears. */ + tick0?: any; + /** Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. */ + tickangle?: number | 'auto'; + /** Sets the tick color. */ + tickcolor?: Color; + /** Sets the tick font. */ + tickfont?: Font; + /** Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + tickformat?: string; + tickformatstops?: TickFormatStops[]; + /** Sets the tick length (in px). */ + ticklen?: number; + /** Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). */ + tickmode?: 'auto' | 'linear' | 'array'; + /** Sets a tick label prefix. */ + tickprefix?: string; + /** Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines. */ + ticks?: 'outside' | 'inside' | ''; + /** Sets a tick label suffix. */ + ticksuffix?: string; + /** Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`. */ + ticktext?: Datum[] | TypedArray; + /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ + tickvals?: Datum[] | TypedArray; + /** Sets the tick width (in px). */ + tickwidth?: number; + title?: LegendGroupTitle; + /** Sets the axis type. By default, plotly attempts to determined the axis type by looking into the data of the traces that referenced the axis in question. */ + type?: '-' | 'linear' | 'log' | 'date' | 'category'; + /** A single toggle to hide the axis while preserving interaction like dragging. Default is true when a cheater plot is present on the axis, otherwise false */ + visible?: boolean; + /** Determines whether or not a line is drawn at along the 0 value of this axis. If *true*, the zero line is drawn on top of the grid lines. */ + zeroline?: boolean; + /** Sets the line color of the zero line. */ + zerolinecolor?: Color; + /** Sets the width (in px) of the zero line. */ + zerolinewidth?: number; + }; + yaxis?: { + /** Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided and it has a value for both the lower and upper bound, `autorange` is set to *false*. Using *min* applies autorange only to set the minimum. Using *max* applies autorange only to set the maximum. Using *min reversed* applies autorange only to set the minimum on a reversed axis. Using *max reversed* applies autorange only to set the maximum on a reversed axis. Using *reversed* applies autorange on both ends and reverses the axis direction. */ + autorange?: true | false | 'reversed' | 'min reversed' | 'max reversed' | 'min' | 'max'; + autorangeoptions?: AutoRangeOptions; + /** Using *strict* a numeric string in trace data is not converted to a number. Using *convert types* a numeric string in trace data may be treated as a number during automatic axis `type` detection. Defaults to layout.autotypenumbers. */ + autotypenumbers?: 'convert types' | 'strict'; + /** Sets the background color of this axis' wall. */ + backgroundcolor?: Color; + /** Sets the calendar system to use for `range` and `tick0` if this is a date axis. This does not set the calendar for interpreting data on this axis, that's specified in the trace or via the global `layout.calendar` */ + calendar?: Calendar; + /** Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`. */ + categoryarray?: Datum[] | TypedArray; + /** Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. Set `categoryorder` to *total ascending* or *total descending* if order should be determined by the numerical order of the values. Similarly, the order can be determined by the min, max, sum, mean, geometric mean or median of all the values. */ + categoryorder?: 'trace' | 'category ascending' | 'category descending' | 'array' | 'total ascending' | 'total descending' | 'min ascending' | 'min descending' | 'max ascending' | 'max descending' | 'sum ascending' | 'sum descending' | 'mean ascending' | 'mean descending' | 'geometric mean ascending' | 'geometric mean descending' | 'median ascending' | 'median descending'; + /** Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. */ + color?: Color; + /** Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48* */ + dtick?: any; + /** Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from "femto" f (10^-15) to "tera" T (10^12). *SI extended* covers instead the full SI range from "quecto" q (10^-30) to "quetta" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation. */ + exponentformat?: 'none' | 'e' | 'E' | 'power' | 'SI' | 'B' | 'SI extended'; + /** Sets the color of the grid lines. */ + gridcolor?: Color; + /** Sets the width (in px) of the grid lines. */ + gridwidth?: number; + /** Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + hoverformat?: string; + /** Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. */ + labelalias?: any; + /** Sets the axis line color. */ + linecolor?: Color; + /** Sets the width (in px) of the axis line. */ + linewidth?: number; + /** Determines the maximum range of this axis. */ + maxallowed?: any; + /** Determines the minimum range of this axis. */ + minallowed?: any; + /** Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*. */ + minexponent?: number; + /** Determines if the axis lines or/and ticks are mirrored to the opposite side of the plotting area. If *true*, the axis lines are mirrored. If *ticks*, the axis lines and ticks are mirrored. If *false*, mirroring is disable. If *all*, axis lines are mirrored on all shared-axes subplots. If *allticks*, axis lines and ticks are mirrored on all shared-axes subplots. */ + mirror?: true | 'ticks' | false | 'all' | 'allticks'; + /** Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. */ + nticks?: number; + /** Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears. Leaving either or both elements `null` impacts the default `autorange`. */ + range?: [any, any]; + /** If *normal*, the range is computed in relation to the extrema of the input data. If *tozero*, the range extends to 0, regardless of the input data If *nonnegative*, the range is non-negative, regardless of the input data. Applies only to linear axes. */ + rangemode?: 'normal' | 'tozero' | 'nonnegative'; + /** If "true", even 4-digit integers are separated */ + separatethousands?: boolean; + /** Sets whether or not this axis is labeled */ + showaxeslabels?: boolean; + /** Sets whether or not this axis' wall has a background color. */ + showbackground?: boolean; + /** If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. */ + showexponent?: 'all' | 'first' | 'last' | 'none'; + /** Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. */ + showgrid?: boolean; + /** Determines whether or not a line bounding this axis is drawn. */ + showline?: boolean; + /** Sets whether or not spikes starting from data points to this axis' wall are shown on hover. */ + showspikes?: boolean; + /** Determines whether or not the tick labels are drawn. */ + showticklabels?: boolean; + /** If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. */ + showtickprefix?: 'all' | 'first' | 'last' | 'none'; + /** Same as `showtickprefix` but for tick suffixes. */ + showticksuffix?: 'all' | 'first' | 'last' | 'none'; + /** Sets the color of the spikes. */ + spikecolor?: Color; + /** Sets whether or not spikes extending from the projection data points to this axis' wall boundaries are shown on hover. */ + spikesides?: boolean; + /** Sets the thickness (in px) of the spikes. */ + spikethickness?: number; + /** Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears. */ + tick0?: any; + /** Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. */ + tickangle?: number | 'auto'; + /** Sets the tick color. */ + tickcolor?: Color; + /** Sets the tick font. */ + tickfont?: Font; + /** Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + tickformat?: string; + tickformatstops?: TickFormatStops[]; + /** Sets the tick length (in px). */ + ticklen?: number; + /** Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). */ + tickmode?: 'auto' | 'linear' | 'array'; + /** Sets a tick label prefix. */ + tickprefix?: string; + /** Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines. */ + ticks?: 'outside' | 'inside' | ''; + /** Sets a tick label suffix. */ + ticksuffix?: string; + /** Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`. */ + ticktext?: Datum[] | TypedArray; + /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ + tickvals?: Datum[] | TypedArray; + /** Sets the tick width (in px). */ + tickwidth?: number; + title?: LegendGroupTitle; + /** Sets the axis type. By default, plotly attempts to determined the axis type by looking into the data of the traces that referenced the axis in question. */ + type?: '-' | 'linear' | 'log' | 'date' | 'category'; + /** A single toggle to hide the axis while preserving interaction like dragging. Default is true when a cheater plot is present on the axis, otherwise false */ + visible?: boolean; + /** Determines whether or not a line is drawn at along the 0 value of this axis. If *true*, the zero line is drawn on top of the grid lines. */ + zeroline?: boolean; + /** Sets the line color of the zero line. */ + zerolinecolor?: Color; + /** Sets the width (in px) of the zero line. */ + zerolinewidth?: number; + }; + zaxis?: { + /** Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided and it has a value for both the lower and upper bound, `autorange` is set to *false*. Using *min* applies autorange only to set the minimum. Using *max* applies autorange only to set the maximum. Using *min reversed* applies autorange only to set the minimum on a reversed axis. Using *max reversed* applies autorange only to set the maximum on a reversed axis. Using *reversed* applies autorange on both ends and reverses the axis direction. */ + autorange?: true | false | 'reversed' | 'min reversed' | 'max reversed' | 'min' | 'max'; + autorangeoptions?: AutoRangeOptions; + /** Using *strict* a numeric string in trace data is not converted to a number. Using *convert types* a numeric string in trace data may be treated as a number during automatic axis `type` detection. Defaults to layout.autotypenumbers. */ + autotypenumbers?: 'convert types' | 'strict'; + /** Sets the background color of this axis' wall. */ + backgroundcolor?: Color; + /** Sets the calendar system to use for `range` and `tick0` if this is a date axis. This does not set the calendar for interpreting data on this axis, that's specified in the trace or via the global `layout.calendar` */ + calendar?: Calendar; + /** Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`. */ + categoryarray?: Datum[] | TypedArray; + /** Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. Set `categoryorder` to *total ascending* or *total descending* if order should be determined by the numerical order of the values. Similarly, the order can be determined by the min, max, sum, mean, geometric mean or median of all the values. */ + categoryorder?: 'trace' | 'category ascending' | 'category descending' | 'array' | 'total ascending' | 'total descending' | 'min ascending' | 'min descending' | 'max ascending' | 'max descending' | 'sum ascending' | 'sum descending' | 'mean ascending' | 'mean descending' | 'geometric mean ascending' | 'geometric mean descending' | 'median ascending' | 'median descending'; + /** Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. */ + color?: Color; + /** Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48* */ + dtick?: any; + /** Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from "femto" f (10^-15) to "tera" T (10^12). *SI extended* covers instead the full SI range from "quecto" q (10^-30) to "quetta" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation. */ + exponentformat?: 'none' | 'e' | 'E' | 'power' | 'SI' | 'B' | 'SI extended'; + /** Sets the color of the grid lines. */ + gridcolor?: Color; + /** Sets the width (in px) of the grid lines. */ + gridwidth?: number; + /** Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + hoverformat?: string; + /** Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. */ + labelalias?: any; + /** Sets the axis line color. */ + linecolor?: Color; + /** Sets the width (in px) of the axis line. */ + linewidth?: number; + /** Determines the maximum range of this axis. */ + maxallowed?: any; + /** Determines the minimum range of this axis. */ + minallowed?: any; + /** Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*. */ + minexponent?: number; + /** Determines if the axis lines or/and ticks are mirrored to the opposite side of the plotting area. If *true*, the axis lines are mirrored. If *ticks*, the axis lines and ticks are mirrored. If *false*, mirroring is disable. If *all*, axis lines are mirrored on all shared-axes subplots. If *allticks*, axis lines and ticks are mirrored on all shared-axes subplots. */ + mirror?: true | 'ticks' | false | 'all' | 'allticks'; + /** Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. */ + nticks?: number; + /** Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears. Leaving either or both elements `null` impacts the default `autorange`. */ + range?: [any, any]; + /** If *normal*, the range is computed in relation to the extrema of the input data. If *tozero*, the range extends to 0, regardless of the input data If *nonnegative*, the range is non-negative, regardless of the input data. Applies only to linear axes. */ + rangemode?: 'normal' | 'tozero' | 'nonnegative'; + /** If "true", even 4-digit integers are separated */ + separatethousands?: boolean; + /** Sets whether or not this axis is labeled */ + showaxeslabels?: boolean; + /** Sets whether or not this axis' wall has a background color. */ + showbackground?: boolean; + /** If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. */ + showexponent?: 'all' | 'first' | 'last' | 'none'; + /** Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. */ + showgrid?: boolean; + /** Determines whether or not a line bounding this axis is drawn. */ + showline?: boolean; + /** Sets whether or not spikes starting from data points to this axis' wall are shown on hover. */ + showspikes?: boolean; + /** Determines whether or not the tick labels are drawn. */ + showticklabels?: boolean; + /** If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. */ + showtickprefix?: 'all' | 'first' | 'last' | 'none'; + /** Same as `showtickprefix` but for tick suffixes. */ + showticksuffix?: 'all' | 'first' | 'last' | 'none'; + /** Sets the color of the spikes. */ + spikecolor?: Color; + /** Sets whether or not spikes extending from the projection data points to this axis' wall boundaries are shown on hover. */ + spikesides?: boolean; + /** Sets the thickness (in px) of the spikes. */ + spikethickness?: number; + /** Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears. */ + tick0?: any; + /** Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. */ + tickangle?: number | 'auto'; + /** Sets the tick color. */ + tickcolor?: Color; + /** Sets the tick font. */ + tickfont?: Font; + /** Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + tickformat?: string; + tickformatstops?: TickFormatStops[]; + /** Sets the tick length (in px). */ + ticklen?: number; + /** Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). */ + tickmode?: 'auto' | 'linear' | 'array'; + /** Sets a tick label prefix. */ + tickprefix?: string; + /** Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines. */ + ticks?: 'outside' | 'inside' | ''; + /** Sets a tick label suffix. */ + ticksuffix?: string; + /** Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`. */ + ticktext?: Datum[] | TypedArray; + /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ + tickvals?: Datum[] | TypedArray; + /** Sets the tick width (in px). */ + tickwidth?: number; + title?: LegendGroupTitle; + /** Sets the axis type. By default, plotly attempts to determined the axis type by looking into the data of the traces that referenced the axis in question. */ + type?: '-' | 'linear' | 'log' | 'date' | 'category'; + /** A single toggle to hide the axis while preserving interaction like dragging. Default is true when a cheater plot is present on the axis, otherwise false */ + visible?: boolean; + /** Determines whether or not a line is drawn at along the 0 value of this axis. If *true*, the zero line is drawn on top of the grid lines. */ + zeroline?: boolean; + /** Sets the line color of the zero line. */ + zerolinecolor?: Color; + /** Sets the width (in px) of the zero line. */ + zerolinewidth?: number; + }; +} + +export interface SmithLayout { + /** Set the background color of the subplot */ + bgcolor?: Color; + domain?: Domain; + imaginaryaxis?: { + /** Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. */ + color?: Color; + /** Sets the color of the grid lines. */ + gridcolor?: Color; + /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + griddash?: Dash; + /** Sets the width (in px) of the grid lines. */ + gridwidth?: number; + /** Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + hoverformat?: string; + /** Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. */ + labelalias?: any; + /** Sets the layer on which this axis is displayed. If *above traces*, this axis is displayed above all the subplot's traces If *below traces*, this axis is displayed below all the subplot's traces, but above the grid lines. Useful when used together with scatter-like traces with `cliponaxis` set to *false* to show markers and/or text nodes above this axis. */ + layer?: 'above traces' | 'below traces'; + /** Sets the axis line color. */ + linecolor?: Color; + /** Sets the width (in px) of the axis line. */ + linewidth?: number; + /** Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. */ + showgrid?: boolean; + /** Determines whether or not a line bounding this axis is drawn. */ + showline?: boolean; + /** Determines whether or not the tick labels are drawn. */ + showticklabels?: boolean; + /** If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. */ + showtickprefix?: 'all' | 'first' | 'last' | 'none'; + /** Same as `showtickprefix` but for tick suffixes. */ + showticksuffix?: 'all' | 'first' | 'last' | 'none'; + /** Sets the tick color. */ + tickcolor?: Color; + /** Sets the tick font. */ + tickfont?: Font; + /** Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + tickformat?: string; + /** Sets the tick length (in px). */ + ticklen?: number; + /** Sets a tick label prefix. */ + tickprefix?: string; + /** Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines. */ + ticks?: 'outside' | 'inside' | ''; + /** Sets a tick label suffix. */ + ticksuffix?: string; + /** Sets the values at which ticks on this axis appear. Defaults to `realaxis.tickvals` plus the same as negatives and zero. */ + tickvals?: Datum[] | TypedArray; + /** Sets the tick width (in px). */ + tickwidth?: number; + /** A single toggle to hide the axis while preserving interaction like dragging. Default is true when a cheater plot is present on the axis, otherwise false */ + visible?: boolean; + }; + realaxis?: { + /** Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. */ + color?: Color; + /** Sets the color of the grid lines. */ + gridcolor?: Color; + /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + griddash?: Dash; + /** Sets the width (in px) of the grid lines. */ + gridwidth?: number; + /** Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + hoverformat?: string; + /** Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. */ + labelalias?: any; + /** Sets the layer on which this axis is displayed. If *above traces*, this axis is displayed above all the subplot's traces If *below traces*, this axis is displayed below all the subplot's traces, but above the grid lines. Useful when used together with scatter-like traces with `cliponaxis` set to *false* to show markers and/or text nodes above this axis. */ + layer?: 'above traces' | 'below traces'; + /** Sets the axis line color. */ + linecolor?: Color; + /** Sets the width (in px) of the axis line. */ + linewidth?: number; + /** Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. */ + showgrid?: boolean; + /** Determines whether or not a line bounding this axis is drawn. */ + showline?: boolean; + /** Determines whether or not the tick labels are drawn. */ + showticklabels?: boolean; + /** If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. */ + showtickprefix?: 'all' | 'first' | 'last' | 'none'; + /** Same as `showtickprefix` but for tick suffixes. */ + showticksuffix?: 'all' | 'first' | 'last' | 'none'; + /** Determines on which side of real axis line the tick and tick labels appear. */ + side?: 'top' | 'bottom'; + /** Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. */ + tickangle?: number | 'auto'; + /** Sets the tick color. */ + tickcolor?: Color; + /** Sets the tick font. */ + tickfont?: Font; + /** Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + tickformat?: string; + /** Sets the tick length (in px). */ + ticklen?: number; + /** Sets a tick label prefix. */ + tickprefix?: string; + /** Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *top* (*bottom*), this axis' are drawn above (below) the axis line. */ + ticks?: 'top' | 'bottom' | ''; + /** Sets a tick label suffix. */ + ticksuffix?: string; + /** Sets the values at which ticks on this axis appear. */ + tickvals?: Datum[] | TypedArray; + /** Sets the tick width (in px). */ + tickwidth?: number; + /** A single toggle to hide the axis while preserving interaction like dragging. Default is true when a cheater plot is present on the axis, otherwise false */ + visible?: boolean; + }; +} + +export interface TernaryLayout { + aaxis?: { + /** Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. */ + color?: Color; + /** Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48* */ + dtick?: any; + /** Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from "femto" f (10^-15) to "tera" T (10^12). *SI extended* covers instead the full SI range from "quecto" q (10^-30) to "quetta" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation. */ + exponentformat?: 'none' | 'e' | 'E' | 'power' | 'SI' | 'B' | 'SI extended'; + /** Sets the color of the grid lines. */ + gridcolor?: Color; + /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + griddash?: Dash; + /** Sets the width (in px) of the grid lines. */ + gridwidth?: number; + /** Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + hoverformat?: string; + /** Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. */ + labelalias?: any; + /** Sets the layer on which this axis is displayed. If *above traces*, this axis is displayed above all the subplot's traces If *below traces*, this axis is displayed below all the subplot's traces, but above the grid lines. Useful when used together with scatter-like traces with `cliponaxis` set to *false* to show markers and/or text nodes above this axis. */ + layer?: 'above traces' | 'below traces'; + /** Sets the axis line color. */ + linecolor?: Color; + /** Sets the width (in px) of the axis line. */ + linewidth?: number; + /** The minimum value visible on this axis. The maximum is determined by the sum minus the minimum values of the other two axes. The full view corresponds to all the minima set to zero. */ + min?: number; + /** Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*. */ + minexponent?: number; + /** Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. */ + nticks?: number; + /** If "true", even 4-digit integers are separated */ + separatethousands?: boolean; + /** If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. */ + showexponent?: 'all' | 'first' | 'last' | 'none'; + /** Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. */ + showgrid?: boolean; + /** Determines whether or not a line bounding this axis is drawn. */ + showline?: boolean; + /** Determines whether or not the tick labels are drawn. */ + showticklabels?: boolean; + /** If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. */ + showtickprefix?: 'all' | 'first' | 'last' | 'none'; + /** Same as `showtickprefix` but for tick suffixes. */ + showticksuffix?: 'all' | 'first' | 'last' | 'none'; + /** Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears. */ + tick0?: any; + /** Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. */ + tickangle?: number | 'auto'; + /** Sets the tick color. */ + tickcolor?: Color; + /** Sets the tick font. */ + tickfont?: Font; + /** Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + tickformat?: string; + tickformatstops?: TickFormatStops[]; + /** Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*. */ + ticklabelstep?: number; + /** Sets the tick length (in px). */ + ticklen?: number; + /** Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). */ + tickmode?: 'auto' | 'linear' | 'array'; + /** Sets a tick label prefix. */ + tickprefix?: string; + /** Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines. */ + ticks?: 'outside' | 'inside' | ''; + /** Sets a tick label suffix. */ + ticksuffix?: string; + /** Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`. */ + ticktext?: Datum[] | TypedArray; + /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ + tickvals?: Datum[] | TypedArray; + /** Sets the tick width (in px). */ + tickwidth?: number; + title?: LegendGroupTitle; + /** Controls persistence of user-driven changes in axis `min`, and `title` if in `editable: true` configuration. Defaults to `ternary.uirevision`. */ + uirevision?: any; + }; + baxis?: { + /** Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. */ + color?: Color; + /** Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48* */ + dtick?: any; + /** Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from "femto" f (10^-15) to "tera" T (10^12). *SI extended* covers instead the full SI range from "quecto" q (10^-30) to "quetta" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation. */ + exponentformat?: 'none' | 'e' | 'E' | 'power' | 'SI' | 'B' | 'SI extended'; + /** Sets the color of the grid lines. */ + gridcolor?: Color; + /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + griddash?: Dash; + /** Sets the width (in px) of the grid lines. */ + gridwidth?: number; + /** Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + hoverformat?: string; + /** Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. */ + labelalias?: any; + /** Sets the layer on which this axis is displayed. If *above traces*, this axis is displayed above all the subplot's traces If *below traces*, this axis is displayed below all the subplot's traces, but above the grid lines. Useful when used together with scatter-like traces with `cliponaxis` set to *false* to show markers and/or text nodes above this axis. */ + layer?: 'above traces' | 'below traces'; + /** Sets the axis line color. */ + linecolor?: Color; + /** Sets the width (in px) of the axis line. */ + linewidth?: number; + /** The minimum value visible on this axis. The maximum is determined by the sum minus the minimum values of the other two axes. The full view corresponds to all the minima set to zero. */ + min?: number; + /** Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*. */ + minexponent?: number; + /** Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. */ + nticks?: number; + /** If "true", even 4-digit integers are separated */ + separatethousands?: boolean; + /** If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. */ + showexponent?: 'all' | 'first' | 'last' | 'none'; + /** Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. */ + showgrid?: boolean; + /** Determines whether or not a line bounding this axis is drawn. */ + showline?: boolean; + /** Determines whether or not the tick labels are drawn. */ + showticklabels?: boolean; + /** If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. */ + showtickprefix?: 'all' | 'first' | 'last' | 'none'; + /** Same as `showtickprefix` but for tick suffixes. */ + showticksuffix?: 'all' | 'first' | 'last' | 'none'; + /** Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears. */ + tick0?: any; + /** Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. */ + tickangle?: number | 'auto'; + /** Sets the tick color. */ + tickcolor?: Color; + /** Sets the tick font. */ + tickfont?: Font; + /** Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + tickformat?: string; + tickformatstops?: TickFormatStops[]; + /** Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*. */ + ticklabelstep?: number; + /** Sets the tick length (in px). */ + ticklen?: number; + /** Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). */ + tickmode?: 'auto' | 'linear' | 'array'; + /** Sets a tick label prefix. */ + tickprefix?: string; + /** Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines. */ + ticks?: 'outside' | 'inside' | ''; + /** Sets a tick label suffix. */ + ticksuffix?: string; + /** Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`. */ + ticktext?: Datum[] | TypedArray; + /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ + tickvals?: Datum[] | TypedArray; + /** Sets the tick width (in px). */ + tickwidth?: number; + title?: LegendGroupTitle; + /** Controls persistence of user-driven changes in axis `min`, and `title` if in `editable: true` configuration. Defaults to `ternary.uirevision`. */ + uirevision?: any; + }; + /** Set the background color of the subplot */ + bgcolor?: Color; + caxis?: { + /** Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. */ + color?: Color; + /** Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48* */ + dtick?: any; + /** Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from "femto" f (10^-15) to "tera" T (10^12). *SI extended* covers instead the full SI range from "quecto" q (10^-30) to "quetta" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation. */ + exponentformat?: 'none' | 'e' | 'E' | 'power' | 'SI' | 'B' | 'SI extended'; + /** Sets the color of the grid lines. */ + gridcolor?: Color; + /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + griddash?: Dash; + /** Sets the width (in px) of the grid lines. */ + gridwidth?: number; + /** Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + hoverformat?: string; + /** Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. */ + labelalias?: any; + /** Sets the layer on which this axis is displayed. If *above traces*, this axis is displayed above all the subplot's traces If *below traces*, this axis is displayed below all the subplot's traces, but above the grid lines. Useful when used together with scatter-like traces with `cliponaxis` set to *false* to show markers and/or text nodes above this axis. */ + layer?: 'above traces' | 'below traces'; + /** Sets the axis line color. */ + linecolor?: Color; + /** Sets the width (in px) of the axis line. */ + linewidth?: number; + /** The minimum value visible on this axis. The maximum is determined by the sum minus the minimum values of the other two axes. The full view corresponds to all the minima set to zero. */ + min?: number; + /** Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*. */ + minexponent?: number; + /** Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. */ + nticks?: number; + /** If "true", even 4-digit integers are separated */ + separatethousands?: boolean; + /** If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. */ + showexponent?: 'all' | 'first' | 'last' | 'none'; + /** Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. */ + showgrid?: boolean; + /** Determines whether or not a line bounding this axis is drawn. */ + showline?: boolean; + /** Determines whether or not the tick labels are drawn. */ + showticklabels?: boolean; + /** If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. */ + showtickprefix?: 'all' | 'first' | 'last' | 'none'; + /** Same as `showtickprefix` but for tick suffixes. */ + showticksuffix?: 'all' | 'first' | 'last' | 'none'; + /** Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears. */ + tick0?: any; + /** Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. */ + tickangle?: number | 'auto'; + /** Sets the tick color. */ + tickcolor?: Color; + /** Sets the tick font. */ + tickfont?: Font; + /** Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ + tickformat?: string; + tickformatstops?: TickFormatStops[]; + /** Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*. */ + ticklabelstep?: number; + /** Sets the tick length (in px). */ + ticklen?: number; + /** Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). */ + tickmode?: 'auto' | 'linear' | 'array'; + /** Sets a tick label prefix. */ + tickprefix?: string; + /** Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines. */ + ticks?: 'outside' | 'inside' | ''; + /** Sets a tick label suffix. */ + ticksuffix?: string; + /** Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`. */ + ticktext?: Datum[] | TypedArray; + /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ + tickvals?: Datum[] | TypedArray; + /** Sets the tick width (in px). */ + tickwidth?: number; + title?: LegendGroupTitle; + /** Controls persistence of user-driven changes in axis `min`, and `title` if in `editable: true` configuration. Defaults to `ternary.uirevision`. */ + uirevision?: any; + }; + domain?: Domain; + /** The number each triplet should sum to, and the maximum range of each axis */ + sum?: number; + /** Controls persistence of user-driven changes in axis `min` and `title`, if not overridden in the individual axes. Defaults to `layout.uirevision`. */ + uirevision?: any; +} + +export interface Annotation { + /** Sets the horizontal alignment of the `text` within the box. Has an effect only if `text` spans two or more lines (i.e. `text` contains one or more
HTML tags) or if an explicit width is set to override the text width. */ + align?: 'left' | 'center' | 'right'; + /** Sets the color of the annotation arrow. */ + arrowcolor?: Color; + /** Sets the end annotation arrow head style. */ + arrowhead?: number; + /** Sets the annotation arrow head position. */ + arrowside?: 'end' | 'start' | 'none' | (string & {}); + /** Sets the size of the end annotation arrow head, relative to `arrowwidth`. A value of 1 (default) gives a head about 3x as wide as the line. */ + arrowsize?: number; + /** Sets the width (in px) of annotation arrow line. */ + arrowwidth?: number; + /** Sets the x component of the arrow tail about the arrow head. If `axref` is `pixel`, a positive (negative) component corresponds to an arrow pointing from right to left (left to right). If `axref` is not `pixel` and is exactly the same as `xref`, this is an absolute value on that axis, like `x`, specified in the same coordinates as `xref`. */ + ax?: any; + /** Indicates in what coordinates the tail of the annotation (ax,ay) is specified. If set to a x axis id (e.g. *x* or *x2*), the `x` position refers to a x coordinate. If set to *paper*, the `x` position refers to the distance from the left of the plotting area in normalized coordinates where *0* (*1*) corresponds to the left (right). If set to a x axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the left of the domain of that axis: e.g., *x2 domain* refers to the domain of the second x axis and a x position of 0.5 refers to the point between the left and the right of the domain of the second x axis. In order for absolute positioning of the arrow to work, *axref* must be exactly the same as *xref*, otherwise *axref* will revert to *pixel* (explained next). For relative positioning, *axref* can be set to *pixel*, in which case the *ax* value is specified in pixels relative to *x*. Absolute positioning is useful for trendline annotations which should continue to indicate the correct trend when zoomed. Relative positioning is useful for specifying the text offset for an annotated point. */ + axref?: 'pixel' | '/^x([2-9]|[1-9][0-9]+)?( domain)?$/'; + /** Sets the y component of the arrow tail about the arrow head. If `ayref` is `pixel`, a positive (negative) component corresponds to an arrow pointing from bottom to top (top to bottom). If `ayref` is not `pixel` and is exactly the same as `yref`, this is an absolute value on that axis, like `y`, specified in the same coordinates as `yref`. */ + ay?: any; + /** Indicates in what coordinates the tail of the annotation (ax,ay) is specified. If set to a y axis id (e.g. *y* or *y2*), the `y` position refers to a y coordinate. If set to *paper*, the `y` position refers to the distance from the bottom of the plotting area in normalized coordinates where *0* (*1*) corresponds to the bottom (top). If set to a y axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the bottom of the domain of that axis: e.g., *y2 domain* refers to the domain of the second y axis and a y position of 0.5 refers to the point between the bottom and the top of the domain of the second y axis. In order for absolute positioning of the arrow to work, *ayref* must be exactly the same as *yref*, otherwise *ayref* will revert to *pixel* (explained next). For relative positioning, *ayref* can be set to *pixel*, in which case the *ay* value is specified in pixels relative to *y*. Absolute positioning is useful for trendline annotations which should continue to indicate the correct trend when zoomed. Relative positioning is useful for specifying the text offset for an annotated point. */ + ayref?: 'pixel' | '/^y([2-9]|[1-9][0-9]+)?( domain)?$/'; + /** Sets the background color of the annotation. */ + bgcolor?: Color; + /** Sets the color of the border enclosing the annotation `text`. */ + bordercolor?: Color; + /** Sets the padding (in px) between the `text` and the enclosing border. */ + borderpad?: number; + /** Sets the width (in px) of the border enclosing the annotation `text`. */ + borderwidth?: number; + /** Determines whether the annotation text box captures mouse move and click events, or allows those events to pass through to data points in the plot that may be behind the annotation. By default `captureevents` is *false* unless `hovertext` is provided. If you use the event `plotly_clickannotation` without `hovertext` you must explicitly enable `captureevents`. */ + captureevents?: boolean; + /** Makes this annotation respond to clicks on the plot. If you click a data point that exactly matches the `x` and `y` values of this annotation, and it is hidden (visible: false), it will appear. In *onoff* mode, you must click the same point again to make it disappear, so if you click multiple points, you can show multiple annotations. In *onout* mode, a click anywhere else in the plot (on another data point or not) will hide this annotation. If you need to show/hide this annotation in response to different `x` or `y` values, you can set `xclick` and/or `yclick`. This is useful for example to label the side of a bar. To label markers though, `standoff` is preferred over `xclick` and `yclick`. */ + clicktoshow?: false | 'onoff' | 'onout'; + /** Sets the annotation text font. */ + font?: Font; + /** Sets an explicit height for the text box. null (default) lets the text set the box height. Taller text will be clipped. */ + height?: number; + hoverlabel?: { + /** Sets the background color of the hover label. By default uses the annotation's `bgcolor` made opaque, or white if it was transparent. */ + bgcolor?: Color; + /** Sets the border color of the hover label. By default uses either dark grey or white, for maximum contrast with `hoverlabel.bgcolor`. */ + bordercolor?: Color; + /** Sets the hover label text font. By default uses the global hover font and size, with color from `hoverlabel.bordercolor`. */ + font?: Font; + }; + /** Sets text to appear when hovering over this annotation. If omitted or blank, no hover label will appear. */ + hovertext?: string; + /** When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template. */ + name?: string; + /** Sets the opacity of the annotation (text + arrow). */ + opacity?: number; + /** Determines whether or not the annotation is drawn with an arrow. If *true*, `text` is placed near the arrow's tail. If *false*, `text` lines up with the `x` and `y` provided. */ + showarrow?: boolean; + /** Sets a distance, in pixels, to move the end arrowhead away from the position it is pointing at, for example to point at the edge of a marker independent of zoom. Note that this shortens the arrow from the `ax` / `ay` vector, in contrast to `xshift` / `yshift` which moves everything by this amount. */ + standoff?: number; + /** Sets the start annotation arrow head style. */ + startarrowhead?: number; + /** Sets the size of the start annotation arrow head, relative to `arrowwidth`. A value of 1 (default) gives a head about 3x as wide as the line. */ + startarrowsize?: number; + /** Sets a distance, in pixels, to move the start arrowhead away from the position it is pointing at, for example to point at the edge of a marker independent of zoom. Note that this shortens the arrow from the `ax` / `ay` vector, in contrast to `xshift` / `yshift` which moves everything by this amount. */ + startstandoff?: number; + /** Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`. */ + templateitemname?: string; + /** Sets the text associated with this annotation. Plotly uses a subset of HTML tags to do things like newline (`
`), bold (``), italics (``), hyperlinks (``). Tags ``, ``, ``, ``, ``, and `` are also supported. */ + text?: string; + /** Sets the angle at which the `text` is drawn with respect to the horizontal. */ + textangle?: number | 'auto'; + /** Sets the vertical alignment of the `text` within the box. Has an effect only if an explicit height is set to override the text height. */ + valign?: 'top' | 'middle' | 'bottom'; + /** Determines whether or not this annotation is visible. */ + visible?: boolean; + /** Sets an explicit width for the text box. null (default) lets the text set the box width. Wider text will be clipped. There is no automatic wrapping; use
to start a new line. */ + width?: number; + /** Sets the annotation's x position. If the axis `type` is *log*, then you must take the log of your desired range. If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears. */ + x?: any; + /** Sets the text box's horizontal position anchor This anchor binds the `x` position to the *left*, *center* or *right* of the annotation. For example, if `x` is set to 1, `xref` to *paper* and `xanchor` to *right* then the right-most portion of the annotation lines up with the right-most edge of the plotting area. If *auto*, the anchor is equivalent to *center* for data-referenced annotations or if there is an arrow, whereas for paper-referenced with no arrow, the anchor picked corresponds to the closest side. */ + xanchor?: 'auto' | 'left' | 'center' | 'right'; + /** Toggle this annotation when clicking a data point whose `x` value is `xclick` rather than the annotation's `x` value. */ + xclick?: any; + /** Sets the annotation's x coordinate axis. If set to a x axis id (e.g. *x* or *x2*), the `x` position refers to a x coordinate. If set to *paper*, the `x` position refers to the distance from the left of the plotting area in normalized coordinates where *0* (*1*) corresponds to the left (right). If set to a x axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the left of the domain of that axis: e.g., *x2 domain* refers to the domain of the second x axis and a x position of 0.5 refers to the point between the left and the right of the domain of the second x axis. */ + xref?: 'paper' | '/^x([2-9]|[1-9][0-9]+)?( domain)?$/'; + /** Shifts the position of the whole annotation and arrow to the right (positive) or left (negative) by this many pixels. */ + xshift?: number; + /** Sets the annotation's y position. If the axis `type` is *log*, then you must take the log of your desired range. If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears. */ + y?: any; + /** Sets the text box's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the annotation. For example, if `y` is set to 1, `yref` to *paper* and `yanchor` to *top* then the top-most portion of the annotation lines up with the top-most edge of the plotting area. If *auto*, the anchor is equivalent to *middle* for data-referenced annotations or if there is an arrow, whereas for paper-referenced with no arrow, the anchor picked corresponds to the closest side. */ + yanchor?: 'auto' | 'top' | 'middle' | 'bottom'; + /** Toggle this annotation when clicking a data point whose `y` value is `yclick` rather than the annotation's `y` value. */ + yclick?: any; + /** Sets the annotation's y coordinate axis. If set to a y axis id (e.g. *y* or *y2*), the `y` position refers to a y coordinate. If set to *paper*, the `y` position refers to the distance from the bottom of the plotting area in normalized coordinates where *0* (*1*) corresponds to the bottom (top). If set to a y axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the bottom of the domain of that axis: e.g., *y2 domain* refers to the domain of the second y axis and a y position of 0.5 refers to the point between the bottom and the top of the domain of the second y axis. */ + yref?: 'paper' | '/^y([2-9]|[1-9][0-9]+)?( domain)?$/'; + /** Shifts the position of the whole annotation and arrow up (positive) or down (negative) by this many pixels. */ + yshift?: number; +} + +export interface LayoutImage { + /** Specifies whether images are drawn below or above traces. When `xref` and `yref` are both set to `paper`, image is drawn below the entire plot area. */ + layer?: 'below' | 'above'; + /** When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template. */ + name?: string; + /** Sets the opacity of the image. */ + opacity?: number; + /** Sets the image container size horizontally. The image will be sized based on the `position` value. When `xref` is set to `paper`, units are sized relative to the plot width. When `xref` ends with ` domain`, units are sized relative to the axis width. */ + sizex?: number; + /** Sets the image container size vertically. The image will be sized based on the `position` value. When `yref` is set to `paper`, units are sized relative to the plot height. When `yref` ends with ` domain`, units are sized relative to the axis height. */ + sizey?: number; + /** Specifies which dimension of the image to constrain. */ + sizing?: 'fill' | 'contain' | 'stretch'; + /** Specifies the URL of the image to be used. The URL must be accessible from the domain where the plot code is run, and can be either relative or absolute. */ + source?: string; + /** Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`. */ + templateitemname?: string; + /** Determines whether or not this image is visible. */ + visible?: boolean; + /** Sets the image's x position. When `xref` is set to `paper`, units are sized relative to the plot height. See `xref` for more info */ + x?: any; + /** Sets the anchor for the x position */ + xanchor?: 'left' | 'center' | 'right'; + /** Sets the images's x coordinate axis. If set to a x axis id (e.g. *x* or *x2*), the `x` position refers to a x coordinate. If set to *paper*, the `x` position refers to the distance from the left of the plotting area in normalized coordinates where *0* (*1*) corresponds to the left (right). If set to a x axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the left of the domain of that axis: e.g., *x2 domain* refers to the domain of the second x axis and a x position of 0.5 refers to the point between the left and the right of the domain of the second x axis. */ + xref?: 'paper' | '/^x([2-9]|[1-9][0-9]+)?( domain)?$/'; + /** Sets the image's y position. When `yref` is set to `paper`, units are sized relative to the plot height. See `yref` for more info */ + y?: any; + /** Sets the anchor for the y position. */ + yanchor?: 'top' | 'middle' | 'bottom'; + /** Sets the images's y coordinate axis. If set to a y axis id (e.g. *y* or *y2*), the `y` position refers to a y coordinate. If set to *paper*, the `y` position refers to the distance from the bottom of the plotting area in normalized coordinates where *0* (*1*) corresponds to the bottom (top). If set to a y axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the bottom of the domain of that axis: e.g., *y2 domain* refers to the domain of the second y axis and a y position of 0.5 refers to the point between the bottom and the top of the domain of the second y axis. */ + yref?: 'paper' | '/^y([2-9]|[1-9][0-9]+)?( domain)?$/'; +} + +export interface LayoutSelection { + line?: { + /** Sets the line color. */ + color?: Color; + /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + dash?: Dash; + /** Sets the line width (in px). */ + width?: number; + }; + /** When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template. */ + name?: string; + /** Sets the opacity of the selection. */ + opacity?: number; + /** For `type` *path* - a valid SVG path similar to `shapes.path` in data coordinates. Allowed segments are: M, L and Z. */ + path?: string; + /** Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`. */ + templateitemname?: string; + /** Specifies the selection type to be drawn. If *rect*, a rectangle is drawn linking (`x0`,`y0`), (`x1`,`y0`), (`x1`,`y1`) and (`x0`,`y1`). If *path*, draw a custom SVG path using `path`. */ + type?: 'rect' | 'path'; + /** Sets the selection's starting x position. */ + x0?: any; + /** Sets the selection's end x position. */ + x1?: any; + /** Sets the selection's x coordinate axis. If set to a x axis id (e.g. *x* or *x2*), the `x` position refers to a x coordinate. If set to *paper*, the `x` position refers to the distance from the left of the plotting area in normalized coordinates where *0* (*1*) corresponds to the left (right). If set to a x axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the left of the domain of that axis: e.g., *x2 domain* refers to the domain of the second x axis and a x position of 0.5 refers to the point between the left and the right of the domain of the second x axis. */ + xref?: 'paper' | '/^x([2-9]|[1-9][0-9]+)?( domain)?$/'; + /** Sets the selection's starting y position. */ + y0?: any; + /** Sets the selection's end y position. */ + y1?: any; + /** Sets the selection's x coordinate axis. If set to a y axis id (e.g. *y* or *y2*), the `y` position refers to a y coordinate. If set to *paper*, the `y` position refers to the distance from the bottom of the plotting area in normalized coordinates where *0* (*1*) corresponds to the bottom (top). If set to a y axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the bottom of the domain of that axis: e.g., *y2 domain* refers to the domain of the second y axis and a y position of 0.5 refers to the point between the bottom and the top of the domain of the second y axis. */ + yref?: 'paper' | '/^y([2-9]|[1-9][0-9]+)?( domain)?$/'; +} + +export interface Shape { + /** Determines whether the shape could be activated for edit or not. Has no effect when the older editable shapes mode is enabled via `config.editable` or `config.edits.shapePosition`. */ + editable?: boolean; + /** Sets the color filling the shape's interior. Only applies to closed shapes. */ + fillcolor?: Color; + /** Determines which regions of complex paths constitute the interior. For more info please visit https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/fill-rule */ + fillrule?: 'evenodd' | 'nonzero'; + label?: { + /** Sets the shape label text font. */ + font?: Font; + /** Sets padding (in px) between edge of label and edge of shape. */ + padding?: number; + /** Sets the text to display with shape. It is also used for legend item if `name` is not provided. */ + text?: string; + /** Sets the angle at which the label text is drawn with respect to the horizontal. For lines, angle *auto* is the same angle as the line. For all other shapes, angle *auto* is horizontal. */ + textangle?: number | 'auto'; + /** Sets the position of the label text relative to the shape. Supported values for rectangles, circles and paths are *top left*, *top center*, *top right*, *middle left*, *middle center*, *middle right*, *bottom left*, *bottom center*, and *bottom right*. Supported values for lines are *start*, *middle*, and *end*. Default: *middle center* for rectangles, circles, and paths; *middle* for lines. */ + textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right' | 'start' | 'middle' | 'end'; + /** Template string used for rendering the shape's label. Note that this will override `text`. Variables are inserted using %{variable}, for example "x0: %{x0}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{x0:$.2f}". See https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{x0|%m %b %Y}". See https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. A single multiplication or division operation may be applied to numeric variables, and combined with d3 number formatting, for example "Length in cm: %{x0*2.54}", "%{slope*60:.1f} meters per second." For log axes, variable values are given in log units. For date axes, x/y coordinate variables and center variables use datetimes, while all other variable values use values in ms. Finally, the template string has access to variables `x0`, `x1`, `y0`, `y1`, `slope`, `dx`, `dy`, `width`, `height`, `length`, `xcenter`, `ycenter`, `simpleXVariables` and `simpleYVariables`. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. */ + texttemplate?: string; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + texttemplatefallback?: any; + /** Sets the label's horizontal position anchor This anchor binds the specified `textposition` to the *left*, *center* or *right* of the label text. For example, if `textposition` is set to *top right* and `xanchor` to *right* then the right-most portion of the label text lines up with the right-most edge of the shape. */ + xanchor?: 'auto' | 'left' | 'center' | 'right'; + /** Sets the label's vertical position anchor This anchor binds the specified `textposition` to the *top*, *middle* or *bottom* of the label text. For example, if `textposition` is set to *top right* and `yanchor` to *top* then the top-most portion of the label text lines up with the top-most edge of the shape. */ + yanchor?: 'top' | 'middle' | 'bottom'; + }; + /** Specifies whether shapes are drawn below gridlines (*below*), between gridlines and traces (*between*) or above traces (*above*). */ + layer?: 'below' | 'above' | 'between'; + /** Sets the reference to a legend to show this shape in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string; + /** Sets the legend group for this shape. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for this shape. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + legendrank?: number; + /** Sets the width (in px or fraction) of the legend for this shape. */ + legendwidth?: number; + line?: { + /** Sets the line color. */ + color?: Color; + /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + dash?: Dash; + /** Sets the line width (in px). */ + width?: number; + }; + /** When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template. */ + name?: string; + /** Sets the opacity of the shape. */ + opacity?: number; + /** For `type` *path* - a valid SVG path with the pixel values replaced by data values in `xsizemode`/`ysizemode` being *scaled* and taken unmodified as pixels relative to `xanchor` and `yanchor` in case of *pixel* size mode. There are a few restrictions / quirks only absolute instructions, not relative. So the allowed segments are: M, L, H, V, Q, C, T, S, and Z arcs (A) are not allowed because radius rx and ry are relative. In the future we could consider supporting relative commands, but we would have to decide on how to handle date and log axes. Note that even as is, Q and C Bezier paths that are smooth on linear axes may not be smooth on log, and vice versa. no chained "polybezier" commands - specify the segment type for each one. On category axes, values are numbers scaled to the serial numbers of categories because using the categories themselves there would be no way to describe fractional positions On data axes: because space and T are both normal components of path strings, we can't use either to separate date from time parts. Therefore we'll use underscore for this purpose: 2015-02-21_13:45:56.789 */ + path?: string; + /** Determines whether or not this shape is shown in the legend. */ + showlegend?: boolean; + /** Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`. */ + templateitemname?: string; + /** Specifies the shape type to be drawn. If *line*, a line is drawn from (`x0`,`y0`) to (`x1`,`y1`) with respect to the axes' sizing mode. If *circle*, a circle is drawn from ((`x0`+`x1`)/2, (`y0`+`y1`)/2)) with radius (|(`x0`+`x1`)/2 - `x0`|, |(`y0`+`y1`)/2 -`y0`)|) with respect to the axes' sizing mode. If *rect*, a rectangle is drawn linking (`x0`,`y0`), (`x1`,`y0`), (`x1`,`y1`), (`x0`,`y1`), (`x0`,`y0`) with respect to the axes' sizing mode. If *path*, draw a custom SVG path using `path`. with respect to the axes' sizing mode. */ + type?: 'circle' | 'rect' | 'path' | 'line'; + /** Determines whether or not this shape is visible. If *legendonly*, the shape is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; + /** Sets the shape's starting x position. See `type` and `xsizemode` for more info. */ + x0?: any; + /** Shifts `x0` away from the center of the category when `xref` is a *category* or *multicategory* axis. -0.5 corresponds to the start of the category and 0.5 corresponds to the end of the category. */ + x0shift?: number; + /** Sets the shape's end x position. See `type` and `xsizemode` for more info. */ + x1?: any; + /** Shifts `x1` away from the center of the category when `xref` is a *category* or *multicategory* axis. -0.5 corresponds to the start of the category and 0.5 corresponds to the end of the category. */ + x1shift?: number; + /** Only relevant in conjunction with `xsizemode` set to *pixel*. Specifies the anchor point on the x axis to which `x0`, `x1` and x coordinates within `path` are relative to. E.g. useful to attach a pixel sized shape to a certain data value. No effect when `xsizemode` not set to *pixel*. */ + xanchor?: any; + /** Sets the shape's x coordinate axis. If set to a x axis id (e.g. *x* or *x2*), the `x` position refers to a x coordinate. If set to *paper*, the `x` position refers to the distance from the left of the plotting area in normalized coordinates where *0* (*1*) corresponds to the left (right). If set to a x axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the left of the domain of that axis: e.g., *x2 domain* refers to the domain of the second x axis and a x position of 0.5 refers to the point between the left and the right of the domain of the second x axis. If an array of axis IDs is provided, each `x` value will refer to the corresponding axis, e.g., ['x', 'x2'] for a rectangle, line, or circle means `x0` uses the `x` axis and `x1` uses the `x2` axis. Path shapes using an array should have one entry for each x coordinate in the string. */ + xref?: 'paper' | '/^x([2-9]|[1-9][0-9]+)?( domain)?$/' | ('paper' | '/^x([2-9]|[1-9][0-9]+)?( domain)?$/')[]; + /** Sets the shapes's sizing mode along the x axis. If set to *scaled*, `x0`, `x1` and x coordinates within `path` refer to data values on the x axis or a fraction of the plot area's width (`xref` set to *paper*). If set to *pixel*, `xanchor` specifies the x position in terms of data or plot fraction but `x0`, `x1` and x coordinates within `path` are pixels relative to `xanchor`. This way, the shape can have a fixed width while maintaining a position relative to data or plot fraction. Note: `xsizemode` *pixel* is not supported when `xref` is an array. */ + xsizemode?: 'scaled' | 'pixel'; + /** Sets the shape's starting y position. See `type` and `ysizemode` for more info. */ + y0?: any; + /** Shifts `y0` away from the center of the category when `yref` is a *category* or *multicategory* axis. -0.5 corresponds to the start of the category and 0.5 corresponds to the end of the category. */ + y0shift?: number; + /** Sets the shape's end y position. See `type` and `ysizemode` for more info. */ + y1?: any; + /** Shifts `y1` away from the center of the category when `yref` is a *category* or *multicategory* axis. -0.5 corresponds to the start of the category and 0.5 corresponds to the end of the category. */ + y1shift?: number; + /** Only relevant in conjunction with `ysizemode` set to *pixel*. Specifies the anchor point on the y axis to which `y0`, `y1` and y coordinates within `path` are relative to. E.g. useful to attach a pixel sized shape to a certain data value. No effect when `ysizemode` not set to *pixel*. */ + yanchor?: any; + /** Sets the shape's y coordinate axis. If set to a y axis id (e.g. *y* or *y2*), the `y` position refers to a y coordinate. If set to *paper*, the `y` position refers to the distance from the bottom of the plotting area in normalized coordinates where *0* (*1*) corresponds to the bottom (top). If set to a y axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the bottom of the domain of that axis: e.g., *y2 domain* refers to the domain of the second y axis and a y position of 0.5 refers to the point between the bottom and the top of the domain of the second y axis. If an array of axis IDs is provided, each `y` value will refer to the corresponding axis, e.g., ['y', 'y2'] for a rectangle, line, or circle means `y0` uses the `y` axis and `y1` uses the `y2` axis. Path shapes using an array should have one entry for each y coordinate in the string. */ + yref?: 'paper' | '/^y([2-9]|[1-9][0-9]+)?( domain)?$/' | ('paper' | '/^y([2-9]|[1-9][0-9]+)?( domain)?$/')[]; + /** Sets the shapes's sizing mode along the y axis. If set to *scaled*, `y0`, `y1` and y coordinates within `path` refer to data values on the y axis or a fraction of the plot area's height (`yref` set to *paper*). If set to *pixel*, `yanchor` specifies the y position in terms of data or plot fraction but `y0`, `y1` and y coordinates within `path` are pixels relative to `yanchor`. This way, the shape can have a fixed height while maintaining a position relative to data or plot fraction. Note: `ysizemode` *pixel* is not supported when `yref` is an array. */ + ysizemode?: 'scaled' | 'pixel'; +} + +export interface Slider { + /** Determines which button (by index starting from 0) is considered active. */ + active?: number; + /** Sets the background color of the slider grip while dragging. */ + activebgcolor?: Color; + /** Sets the background color of the slider. */ + bgcolor?: Color; + /** Sets the color of the border enclosing the slider. */ + bordercolor?: Color; + /** Sets the width (in px) of the border enclosing the slider. */ + borderwidth?: number; + currentvalue?: { + /** Sets the font of the current value label text. */ + font?: Font; + /** The amount of space, in pixels, between the current value label and the slider. */ + offset?: number; + /** When currentvalue.visible is true, this sets the prefix of the label. */ + prefix?: string; + /** When currentvalue.visible is true, this sets the suffix of the label. */ + suffix?: string; + /** Shows the currently-selected value above the slider. */ + visible?: boolean; + /** The alignment of the value readout relative to the length of the slider. */ + xanchor?: 'left' | 'center' | 'right'; + }; + /** Sets the font of the slider step labels. */ + font?: Font; + /** Sets the length of the slider This measure excludes the padding of both ends. That is, the slider's length is this length minus the padding on both ends. */ + len?: number; + /** Determines whether this slider length is set in units of plot *fraction* or in *pixels. Use `len` to set the value. */ + lenmode?: 'fraction' | 'pixels'; + /** Sets the length in pixels of minor step tick marks */ + minorticklen?: number; + /** When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template. */ + name?: string; + /** Set the padding of the slider component along each side. */ + pad?: { + /** The amount of padding (in px) along the bottom of the component. */ + b?: number; + /** The amount of padding (in px) on the left side of the component. */ + l?: number; + /** The amount of padding (in px) on the right side of the component. */ + r?: number; + /** The amount of padding (in px) along the top of the component. */ + t?: number; + }; + steps?: Array<{ + /** Sets the arguments values to be passed to the Plotly method set in `method` on slide. */ + args?: any[]; + /** When true, the API method is executed. When false, all other behaviors are the same and command execution is skipped. This may be useful when hooking into, for example, the `plotly_sliderchange` method and executing the API command manually without losing the benefit of the slider automatically binding to the state of the plot through the specification of `method` and `args`. */ + execute?: boolean; + /** Sets the text label to appear on the slider */ + label?: string; + /** Sets the Plotly method to be called when the slider value is changed. If the `skip` method is used, the API slider will function as normal but will perform no API calls and will not bind automatically to state updates. This may be used to create a component interface and attach to slider events manually via JavaScript. */ + method?: 'restyle' | 'relayout' | 'animate' | 'update' | 'skip'; + /** When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template. */ + name?: string; + /** Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`. */ + templateitemname?: string; + /** Sets the value of the slider step, used to refer to the step programatically. Defaults to the slider label if not provided. */ + value?: string; + /** Determines whether or not this step is included in the slider. */ + visible?: boolean; + }>; + /** Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`. */ + templateitemname?: string; + /** Sets the color of the border enclosing the slider. */ + tickcolor?: Color; + /** Sets the length in pixels of step tick marks */ + ticklen?: number; + /** Sets the tick width (in px). */ + tickwidth?: number; + transition?: { + /** Sets the duration of the slider transition */ + duration?: number; + /** Sets the easing function of the slider transition */ + easing?: 'linear' | 'quad' | 'cubic' | 'sin' | 'exp' | 'circle' | 'elastic' | 'back' | 'bounce' | 'linear-in' | 'quad-in' | 'cubic-in' | 'sin-in' | 'exp-in' | 'circle-in' | 'elastic-in' | 'back-in' | 'bounce-in' | 'linear-out' | 'quad-out' | 'cubic-out' | 'sin-out' | 'exp-out' | 'circle-out' | 'elastic-out' | 'back-out' | 'bounce-out' | 'linear-in-out' | 'quad-in-out' | 'cubic-in-out' | 'sin-in-out' | 'exp-in-out' | 'circle-in-out' | 'elastic-in-out' | 'back-in-out' | 'bounce-in-out'; + }; + /** Determines whether or not the slider is visible. */ + visible?: boolean; + /** Sets the x position (in normalized coordinates) of the slider. */ + x?: number; + /** Sets the slider's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the range selector. */ + xanchor?: 'auto' | 'left' | 'center' | 'right'; + /** Sets the y position (in normalized coordinates) of the slider. */ + y?: number; + /** Sets the slider's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the range selector. */ + yanchor?: 'auto' | 'top' | 'middle' | 'bottom'; +} + +export interface UpdateMenu { + /** Determines which button (by index starting from 0) is considered active. */ + active?: number; + /** Sets the background color of the update menu buttons. */ + bgcolor?: Color; + /** Sets the color of the border enclosing the update menu. */ + bordercolor?: Color; + /** Sets the width (in px) of the border enclosing the update menu. */ + borderwidth?: number; + buttons?: Array<{ + /** Sets the arguments values to be passed to the Plotly method set in `method` on click. */ + args?: any[]; + /** Sets a 2nd set of `args`, these arguments values are passed to the Plotly method set in `method` when clicking this button while in the active state. Use this to create toggle buttons. */ + args2?: any[]; + /** When true, the API method is executed. When false, all other behaviors are the same and command execution is skipped. This may be useful when hooking into, for example, the `plotly_buttonclicked` method and executing the API command manually without losing the benefit of the updatemenu automatically binding to the state of the plot through the specification of `method` and `args`. */ + execute?: boolean; + /** Sets the text label to appear on the button. */ + label?: string; + /** Sets the Plotly method to be called on click. If the `skip` method is used, the API updatemenu will function as normal but will perform no API calls and will not bind automatically to state updates. This may be used to create a component interface and attach to updatemenu events manually via JavaScript. */ + method?: 'restyle' | 'relayout' | 'animate' | 'update' | 'skip'; + /** When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template. */ + name?: string; + /** Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`. */ + templateitemname?: string; + /** Determines whether or not this button is visible. */ + visible?: boolean; + }>; + /** Determines the direction in which the buttons are laid out, whether in a dropdown menu or a row/column of buttons. For `left` and `up`, the buttons will still appear in left-to-right or top-to-bottom order respectively. */ + direction?: 'left' | 'right' | 'up' | 'down'; + /** Sets the font of the update menu button text. */ + font?: Font; + /** When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template. */ + name?: string; + /** Sets the padding around the buttons or dropdown menu. */ + pad?: { + /** The amount of padding (in px) along the bottom of the component. */ + b?: number; + /** The amount of padding (in px) on the left side of the component. */ + l?: number; + /** The amount of padding (in px) on the right side of the component. */ + r?: number; + /** The amount of padding (in px) along the top of the component. */ + t?: number; + }; + /** Highlights active dropdown item or active button if true. */ + showactive?: boolean; + /** Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`. */ + templateitemname?: string; + /** Determines whether the buttons are accessible via a dropdown menu or whether the buttons are stacked horizontally or vertically */ + type?: 'dropdown' | 'buttons'; + /** Determines whether or not the update menu is visible. */ + visible?: boolean; + /** Sets the x position (in normalized coordinates) of the update menu. */ + x?: number; + /** Sets the update menu's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the range selector. */ + xanchor?: 'auto' | 'left' | 'center' | 'right'; + /** Sets the y position (in normalized coordinates) of the update menu. */ + y?: number; + /** Sets the update menu's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the range selector. */ + yanchor?: 'auto' | 'top' | 'middle' | 'bottom'; +} + +// --------------------------------------------------------------------------- +// Layout +// --------------------------------------------------------------------------- + +export interface Layout { + activeselection?: { + /** Sets the color filling the active selection' interior. */ + fillcolor?: Color; + /** Sets the opacity of the active selection. */ + opacity?: number; + }; + activeshape?: { + /** Sets the color filling the active shape' interior. */ + fillcolor?: Color; + /** Sets the opacity of the active shape. */ + opacity?: number; + }; + annotations?: Annotation[]; + autosize?: boolean; + autotypenumbers?: 'convert types' | 'strict'; + calendar?: Calendar; + clickanywhere?: boolean; + clickmode?: 'event' | 'select' | 'none' | (string & {}); + coloraxis?: ColorAxis; + colorscale?: { + /** Sets the default diverging colorscale. Note that `autocolorscale` must be true for this attribute to work. */ + diverging?: ColorScale; + /** Sets the default sequential colorscale for positive values. Note that `autocolorscale` must be true for this attribute to work. */ + sequential?: ColorScale; + /** Sets the default sequential colorscale for negative values. Note that `autocolorscale` must be true for this attribute to work. */ + sequentialminus?: ColorScale; + }; + colorway?: Color[]; + computed?: any; + datarevision?: any; + dragmode?: 'zoom' | 'pan' | 'select' | 'lasso' | 'drawclosedpath' | 'drawopenpath' | 'drawline' | 'drawrect' | 'drawcircle' | 'orbit' | 'turntable' | false; + editrevision?: any; + font?: Font; + geo?: GeoLayout; + grid?: { + /** The number of columns in the grid. If you provide a 2D `subplots` array, the length of its longest row is used as the default. If you give an `xaxes` array, its length is used as the default. But it's also possible to have a different length, if you want to leave a row at the end for non-cartesian subplots. */ + columns?: number; + domain?: { + /** Sets the horizontal domain of this grid subplot (in plot fraction). The first and last cells end exactly at the domain edges, with no grout around the edges. */ + x?: [number, number]; + /** Sets the vertical domain of this grid subplot (in plot fraction). The first and last cells end exactly at the domain edges, with no grout around the edges. */ + y?: [number, number]; + }; + /** If no `subplots`, `xaxes`, or `yaxes` are given but we do have `rows` and `columns`, we can generate defaults using consecutive axis IDs, in two ways: *coupled* gives one x axis per column and one y axis per row. *independent* uses a new xy pair for each cell, left-to-right across each row then iterating rows according to `roworder`. */ + pattern?: 'independent' | 'coupled'; + /** Is the first row the top or the bottom? Note that columns are always enumerated from left to right. */ + roworder?: 'top to bottom' | 'bottom to top'; + /** The number of rows in the grid. If you provide a 2D `subplots` array or a `yaxes` array, its length is used as the default. But it's also possible to have a different length, if you want to leave a row at the end for non-cartesian subplots. */ + rows?: number; + /** Used for freeform grids, where some axes may be shared across subplots but others are not. Each entry should be a cartesian subplot id, like *xy* or *x3y2*, or ** to leave that cell empty. You may reuse x axes within the same column, and y axes within the same row. Non-cartesian subplots and traces that support `domain` can place themselves in this grid separately using the `gridcell` attribute. */ + subplots?: any[]; + /** Used with `yaxes` when the x and y axes are shared across columns and rows. Each entry should be an x axis id like *x*, *x2*, etc., or ** to not put an x axis in that column. Entries other than ** must be unique. Ignored if `subplots` is present. If missing but `yaxes` is present, will generate consecutive IDs. */ + xaxes?: any[]; + /** Horizontal space between grid cells, expressed as a fraction of the total width available to one cell. Defaults to 0.1 for coupled-axes grids and 0.2 for independent grids. */ + xgap?: number; + /** Sets where the x axis labels and titles go. *bottom* means the very bottom of the grid. *bottom plot* is the lowest plot that each x axis is used in. *top* and *top plot* are similar. */ + xside?: 'bottom' | 'bottom plot' | 'top plot' | 'top'; + /** Used with `yaxes` when the x and y axes are shared across columns and rows. Each entry should be an y axis id like *y*, *y2*, etc., or ** to not put a y axis in that row. Entries other than ** must be unique. Ignored if `subplots` is present. If missing but `xaxes` is present, will generate consecutive IDs. */ + yaxes?: any[]; + /** Vertical space between grid cells, expressed as a fraction of the total height available to one cell. Defaults to 0.1 for coupled-axes grids and 0.3 for independent grids. */ + ygap?: number; + /** Sets where the y axis labels and titles go. *left* means the very left edge of the grid. *left plot* is the leftmost plot that each y axis is used in. *right* and *right plot* are similar. */ + yside?: 'left' | 'left plot' | 'right plot' | 'right'; + }; + height?: number; + hidesources?: boolean; + hoveranywhere?: boolean; + hoverdistance?: number; + hoverlabel?: { + /** Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines */ + align?: 'left' | 'right' | 'auto'; + /** Sets the background color of all hover labels on graph */ + bgcolor?: Color; + /** Sets the border color of all hover labels on graph. */ + bordercolor?: Color; + /** Sets the default hover label font used by all traces on the graph. */ + font?: Font; + /** Sets the font for group titles in hover (unified modes). Defaults to `hoverlabel.font`. */ + grouptitlefont?: Font; + /** Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis. */ + namelength?: number; + /** Sets whether or not to show the hover label arrow/triangle pointing to the data point. */ + showarrow?: boolean; + }; + hovermode?: 'x' | 'y' | 'closest' | false | 'x unified' | 'y unified'; + hoversubplots?: 'single' | 'overlaying' | 'axis'; + images?: LayoutImage[]; + legend?: Legend; + map?: MapLayout; + mapbox?: MapLayout; + margin?: { + /** Turns on/off margin expansion computations. Legends, colorbars, updatemenus, sliders, axis rangeselector and rangeslider are allowed to push the margins by defaults. */ + autoexpand?: boolean; + /** Sets the bottom margin (in px). */ + b?: number; + /** Sets the left margin (in px). */ + l?: number; + /** Sets the amount of padding (in px) between the plotting area and the axis lines */ + pad?: number; + /** Sets the right margin (in px). */ + r?: number; + /** Sets the top margin (in px). */ + t?: number; + }; + meta?: any; + minreducedheight?: number; + minreducedwidth?: number; + modebar?: { + /** Sets the color of the active or hovered on icons in the modebar. */ + activecolor?: Color; + /** Determines which predefined modebar buttons to add. Please note that these buttons will only be shown if they are compatible with all trace types used in a graph. Similar to `config.modeBarButtonsToAdd` option. This may include *v1hovermode*, *hoverclosest*, *hovercompare*, *togglehover*, *togglespikelines*, *drawline*, *drawopenpath*, *drawclosedpath*, *drawcircle*, *drawrect*, *eraseshape*. */ + add?: string | string[]; + /** Sets the background color of the modebar. */ + bgcolor?: Color; + /** Sets the color of the icons in the modebar. */ + color?: Color; + /** Sets the orientation of the modebar. */ + orientation?: 'v' | 'h'; + /** Determines which predefined modebar buttons to remove. Similar to `config.modeBarButtonsToRemove` option. This may include *autoScale2d*, *autoscale*, *editInChartStudio*, *editinchartstudio*, *hoverCompareCartesian*, *hovercompare*, *lasso*, *lasso2d*, *orbitRotation*, *orbitrotation*, *pan*, *pan2d*, *pan3d*, *reset*, *resetCameraDefault3d*, *resetCameraLastSave3d*, *resetGeo*, *resetSankeyGroup*, *resetScale2d*, *resetViewMap*, *resetViewMapbox*, *resetViews*, *resetcameradefault*, *resetcameralastsave*, *resetsankeygroup*, *resetscale*, *resetview*, *resetviews*, *select*, *select2d*, *sendDataToCloud*, *senddatatocloud*, *tableRotation*, *tablerotation*, *toImage*, *toggleHover*, *toggleSpikelines*, *togglehover*, *togglespikelines*, *toimage*, *zoom*, *zoom2d*, *zoom3d*, *zoomIn2d*, *zoomInGeo*, *zoomInMap*, *zoomInMapbox*, *zoomOut2d*, *zoomOutGeo*, *zoomOutMap*, *zoomOutMapbox*, *zoomin*, *zoomout*. */ + remove?: string | string[]; + /** Controls persistence of user-driven changes related to the modebar, including `hovermode`, `dragmode`, and `showspikes` at both the root level and inside subplots. Defaults to `layout.uirevision`. */ + uirevision?: any; + }; + newselection?: { + line?: { + /** Sets the line color. By default uses either dark grey or white to increase contrast with background color. */ + color?: Color; + /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + dash?: Dash; + /** Sets the line width (in px). */ + width?: number; + }; + /** Describes how a new selection is created. If `immediate`, a new selection is created after first mouse up. If `gradual`, a new selection is not created after first mouse. By adding to and subtracting from the initial selection, this option allows declaring extra outlines of the selection. */ + mode?: 'immediate' | 'gradual'; + }; + newshape?: { + /** When `dragmode` is set to *drawrect*, *drawline* or *drawcircle* this limits the drag to be horizontal, vertical or diagonal. Using *diagonal* there is no limit e.g. in drawing lines in any direction. *ortho* limits the draw to be either horizontal or vertical. *horizontal* allows horizontal extend. *vertical* allows vertical extend. */ + drawdirection?: 'ortho' | 'horizontal' | 'vertical' | 'diagonal'; + /** Sets the color filling new shapes' interior. Please note that if using a fillcolor with alpha greater than half, drag inside the active shape starts moving the shape underneath, otherwise a new shape could be started over. */ + fillcolor?: Color; + /** Determines the path's interior. For more info please visit https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/fill-rule */ + fillrule?: 'evenodd' | 'nonzero'; + label?: { + /** Sets the new shape label text font. */ + font?: Font; + /** Sets padding (in px) between edge of label and edge of new shape. */ + padding?: number; + /** Sets the text to display with the new shape. It is also used for legend item if `name` is not provided. */ + text?: string; + /** Sets the angle at which the label text is drawn with respect to the horizontal. For lines, angle *auto* is the same angle as the line. For all other shapes, angle *auto* is horizontal. */ + textangle?: number | 'auto'; + /** Sets the position of the label text relative to the new shape. Supported values for rectangles, circles and paths are *top left*, *top center*, *top right*, *middle left*, *middle center*, *middle right*, *bottom left*, *bottom center*, and *bottom right*. Supported values for lines are *start*, *middle*, and *end*. Default: *middle center* for rectangles, circles, and paths; *middle* for lines. */ + textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right' | 'start' | 'middle' | 'end'; + /** Template string used for rendering the new shape's label. Note that this will override `text`. Variables are inserted using %{variable}, for example "x0: %{x0}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{x0:$.2f}". See https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{x0|%m %b %Y}". See https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. A single multiplication or division operation may be applied to numeric variables, and combined with d3 number formatting, for example "Length in cm: %{x0*2.54}", "%{slope*60:.1f} meters per second." For log axes, variable values are given in log units. For date axes, x/y coordinate variables and center variables use datetimes, while all other variable values use values in ms. Finally, the template string has access to variables `x0`, `x1`, `y0`, `y1`, `slope`, `dx`, `dy`, `width`, `height`, `length`, `xcenter`, `ycenter`, `simpleXVariables` and `simpleYVariables`. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. */ + texttemplate?: string; + /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + texttemplatefallback?: any; + /** Sets the label's horizontal position anchor This anchor binds the specified `textposition` to the *left*, *center* or *right* of the label text. For example, if `textposition` is set to *top right* and `xanchor` to *right* then the right-most portion of the label text lines up with the right-most edge of the new shape. */ + xanchor?: 'auto' | 'left' | 'center' | 'right'; + /** Sets the label's vertical position anchor This anchor binds the specified `textposition` to the *top*, *middle* or *bottom* of the label text. For example, if `textposition` is set to *top right* and `yanchor` to *top* then the top-most portion of the label text lines up with the top-most edge of the new shape. */ + yanchor?: 'top' | 'middle' | 'bottom'; + }; + /** Specifies whether new shapes are drawn below gridlines (*below*), between gridlines and traces (*between*) or above traces (*above*). */ + layer?: 'below' | 'above' | 'between'; + /** Sets the reference to a legend to show new shape in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + legend?: string; + /** Sets the legend group for new shape. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** Sets the legend rank for new shape. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. */ + legendrank?: number; + /** Sets the width (in px or fraction) of the legend for new shape. */ + legendwidth?: number; + line?: { + /** Sets the line color. By default uses either dark grey or white to increase contrast with background color. */ + color?: Color; + /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + dash?: Dash; + /** Sets the line width (in px). */ + width?: number; + }; + /** Sets new shape name. The name appears as the legend item. */ + name?: string; + /** Sets the opacity of new shapes. */ + opacity?: number; + /** Determines whether or not new shape is shown in the legend. */ + showlegend?: boolean; + /** Determines whether or not new shape is visible. If *legendonly*, the shape is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + visible?: true | false | 'legendonly'; + }; + paper_bgcolor?: Color; + plot_bgcolor?: Color; + polar?: PolarLayout; + scene?: Scene; + selectdirection?: 'h' | 'v' | 'd' | 'any'; + selectionrevision?: any; + selections?: LayoutSelection[]; + separators?: string; + shapes?: Shape[]; + showlegend?: boolean; + sliders?: Slider[]; + smith?: SmithLayout; + spikedistance?: number; + template?: any; + ternary?: TernaryLayout; + title?: { + /** Determines whether the title can automatically push the figure margins. If `yref='paper'` then the margin will expand to ensure that the title doesn’t overlap with the edges of the container. If `yref='container'` then the margins will ensure that the title doesn’t overlap with the plot area, tick labels, and axis titles. If `automargin=true` and the margins need to be expanded, then y will be set to a default 1 and yanchor will be set to an appropriate default to ensure that minimal margin space is needed. Note that when `yref='paper'`, only 1 or 0 are allowed y values. Invalid values will be reset to the default 1. */ + automargin?: boolean; + /** Sets the title font. */ + font?: Font; + /** Sets the padding of the title. Each padding value only applies when the corresponding `xanchor`/`yanchor` value is set accordingly. E.g. for left padding to take effect, `xanchor` must be set to *left*. The same rule applies if `xanchor`/`yanchor` is determined automatically. Padding is muted if the respective anchor value is *middle*\/*center*. */ + pad?: { + /** The amount of padding (in px) along the bottom of the component. */ + b?: number; + /** The amount of padding (in px) on the left side of the component. */ + l?: number; + /** The amount of padding (in px) on the right side of the component. */ + r?: number; + /** The amount of padding (in px) along the top of the component. */ + t?: number; + }; + subtitle?: LegendGroupTitle; + /** Sets the plot's title. */ + text?: string; + /** Sets the x position with respect to `xref` in normalized coordinates from *0* (left) to *1* (right). */ + x?: number; + /** Sets the title's horizontal alignment with respect to its x position. *left* means that the title starts at x, *right* means that the title ends at x and *center* means that the title's center is at x. *auto* divides `xref` by three and calculates the `xanchor` value automatically based on the value of `x`. */ + xanchor?: 'auto' | 'left' | 'center' | 'right'; + /** Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only. */ + xref?: 'container' | 'paper'; + /** Sets the y position with respect to `yref` in normalized coordinates from *0* (bottom) to *1* (top). *auto* places the baseline of the title onto the vertical center of the top margin. */ + y?: number; + /** Sets the title's vertical alignment with respect to its y position. *top* means that the title's cap line is at y, *bottom* means that the title's baseline is at y and *middle* means that the title's midline is at y. *auto* divides `yref` by three and calculates the `yanchor` value automatically based on the value of `y`. */ + yanchor?: 'auto' | 'top' | 'middle' | 'bottom'; + /** Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only. */ + yref?: 'container' | 'paper'; + }; + transition?: { + /** The duration of the transition, in milliseconds. If equal to zero, updates are synchronous. */ + duration?: number; + /** The easing function used for the transition */ + easing?: 'linear' | 'quad' | 'cubic' | 'sin' | 'exp' | 'circle' | 'elastic' | 'back' | 'bounce' | 'linear-in' | 'quad-in' | 'cubic-in' | 'sin-in' | 'exp-in' | 'circle-in' | 'elastic-in' | 'back-in' | 'bounce-in' | 'linear-out' | 'quad-out' | 'cubic-out' | 'sin-out' | 'exp-out' | 'circle-out' | 'elastic-out' | 'back-out' | 'bounce-out' | 'linear-in-out' | 'quad-in-out' | 'cubic-in-out' | 'sin-in-out' | 'exp-in-out' | 'circle-in-out' | 'elastic-in-out' | 'back-in-out' | 'bounce-in-out'; + /** Determines whether the figure's layout or traces smoothly transitions during updates that make both traces and layout change. */ + ordering?: 'layout first' | 'traces first'; + }; + uirevision?: any; + uniformtext?: { + /** Sets the minimum text size between traces of the same type. */ + minsize?: number; + /** Determines how the font size for various text elements are uniformed between each trace type. If the computed text sizes were smaller than the minimum size defined by `uniformtext.minsize` using *hide* option hides the text; and using *show* option shows the text without further downscaling. Please note that if the size defined by `minsize` is greater than the font size defined by trace, then the `minsize` is used. */ + mode?: false | 'hide' | 'show'; + }; + updatemenus?: UpdateMenu[]; + width?: number; + xaxis?: LayoutAxis; + yaxis?: LayoutAxis; + + // Subplot index signatures for numbered variants + [key: `coloraxis${number}`]: ColorAxis; + [key: `geo${number}`]: GeoLayout; + [key: `legend${number}`]: Legend; + [key: `map${number}`]: MapLayout; + [key: `mapbox${number}`]: MapLayout; + [key: `polar${number}`]: PolarLayout; + [key: `scene${number}`]: Scene; + [key: `smith${number}`]: SmithLayout; + [key: `ternary${number}`]: TernaryLayout; + [key: `xaxis${number}`]: LayoutAxis; + [key: `yaxis${number}`]: LayoutAxis; +} diff --git a/tasks/generate_schema_types.mjs b/tasks/generate_schema_types.mjs new file mode 100644 index 00000000000..fb5b4f70615 --- /dev/null +++ b/tasks/generate_schema_types.mjs @@ -0,0 +1,1002 @@ +/** + * Generate TypeScript interfaces from the plot schema. + * + * Walks schema.traces and schema.layout.layoutAttributes, emitting interfaces + * for all trace types, layout component types, and a top-level Layout interface + * into a single .d.ts file. All attribute metadata (valType, values, arrayOk, + * etc.) is mapped to the corresponding TypeScript type. + * + * Repeated container subtrees (colorbar, hoverlabel, font, etc.) are + * automatically detected via fingerprinting and extracted into shared + * interfaces to reduce output size. + * + * Run via `npm run schema` (which calls this after writing plot-schema.json). + */ + +import * as fs from 'fs'; + +// --------------------------------------------------------------------------- +// Meta keys to skip (not user-facing attributes) +// --------------------------------------------------------------------------- + +const META_KEYS = new Set([ + 'editType', + 'role', + 'description', + 'impliedEdits', + '_isSubplotObj', + '_isLinkedToArray', + '_arrayAttrRegexps', + '_deprecated' +]); + +// --------------------------------------------------------------------------- +// Common type reuse — map known value sets to types from lib/common.d.ts +// --------------------------------------------------------------------------- + +const CALENDAR_VALUES = [ + 'chinese', + 'coptic', + 'discworld', + 'ethiopian', + 'gregorian', + 'hebrew', + 'islamic', + 'jalali', + 'julian', + 'mayan', + 'nanakshahi', + 'nepali', + 'persian', + 'taiwan', + 'thai', + 'ummalqura' +]; + +const DASH_VALUES = ['dash', 'dashdot', 'dot', 'longdash', 'longdashdot', 'solid']; + +/** Map of sorted-JSON-stringified values → common type name. */ +const VALUES_TO_COMMON_TYPE = new Map([ + [JSON.stringify(CALENDAR_VALUES), 'Calendar'], + [JSON.stringify(DASH_VALUES), 'Dash'] +]); + +/** Attribute name patterns that should use a specific common type. */ +const ATTR_NAME_OVERRIDES = new Map([['marker.symbol', 'MarkerSymbol']]); + +// --------------------------------------------------------------------------- +// Layout naming maps +// --------------------------------------------------------------------------- + +/** + * Override auto-generated shared type names to produce correct PascalCase. + * The fingerprint-based naming just capitalizes the first letter, which + * produces "Colorbar" instead of "ColorBar". These overrides fix that. + */ +const SHARED_NAME_OVERRIDES = new Map([ + ['colorbar', 'ColorBar'], + ['hoverlabel', 'HoverLabel'], + ['tickformatstops', 'TickFormatStops'], + ['autorangeoptions', 'AutoRangeOptions'], + ['legendgrouptitle', 'LegendGroupTitle'], + ['error_y', 'ErrorY'], + ['error_x', 'ErrorX'], + ['stream', 'Stream'] +]); + +/** Interface names for layout subplot containers (_isSubplotObj). */ +const LAYOUT_CONTAINER_NAMES = new Map([ + ['xaxis', 'LayoutAxis'], + ['yaxis', 'LayoutAxis'], + ['legend', 'Legend'], + ['scene', 'Scene'], + ['polar', 'PolarLayout'], + ['ternary', 'TernaryLayout'], + ['geo', 'GeoLayout'], + ['map', 'MapLayout'], + ['mapbox', 'MapLayout'], + ['coloraxis', 'ColorAxis'], + ['smith', 'SmithLayout'] +]); + +/** Interface names for layout linked-to-array containers. */ +const LAYOUT_ARRAY_NAMES = new Map([ + ['annotations', 'Annotation'], + ['shapes', 'Shape'], + ['images', 'LayoutImage'], + ['sliders', 'Slider'], + ['updatemenus', 'UpdateMenu'], + ['selections', 'LayoutSelection'] +]); + +// --------------------------------------------------------------------------- +// valType → TS type +// --------------------------------------------------------------------------- + +function serializeValue(v) { + if (typeof v === 'string') { + const escaped = v.replace(/\\/g, '\\\\').replace(/'/g, "\\'"); + return `'${escaped}'`; + } + return String(v); // numbers, booleans +} + +/** + * Try to match a values array to a known common type. + * Returns the type name string or null. + */ +function matchCommonType(values) { + const sorted = values + .slice() + .filter((v) => typeof v === 'string') + .sort(); + const key = JSON.stringify(sorted); + return VALUES_TO_COMMON_TYPE.get(key) ?? null; +} + +/** + * Map an info_array attribute to a TypeScript type. + * + * info_array items in the schema carry an `items` array describing + * each element's valType (e.g. [{valType:'number'}, {valType:'number'}]). + * When all elements share the same valType we can emit a precise tuple + * or array type instead of `unknown[]`. + */ +function infoArrayToTS(attr) { + if (!attr.items) return 'any[]'; + + // items can be an array of item descriptors or a single descriptor + // (single descriptor = freeLength homogeneous array) + if (!Array.isArray(attr.items)) { + const elemType = simpleValType(attr.items.valType); + return `${elemType}[]`; + } + + const elemTypes = attr.items.map((item) => simpleValType(item.valType)); + + if (attr.freeLength) { + // Variable-length — use array of the union of element types + const unique = [...new Set(elemTypes)]; + const union = unique.length === 1 ? unique[0] : unique.join(' | '); + return `${union}[]`; + } + + // Fixed-length — emit tuple + return `[${elemTypes.join(', ')}]`; +} + +/** Map a valType string to a simple TS type (no arrayOk handling). */ +function simpleValType(valType) { + switch (valType) { + case 'number': + case 'integer': + return 'number'; + case 'string': + case 'subplotid': + return 'string'; + case 'boolean': + return 'boolean'; + case 'color': + return 'Color'; + default: + return 'any'; + } +} + +/** + * Format a schema description as a JSDoc comment block. + * Returns an array of lines (including the indent), or an empty array + * if the attribute has no description. + * + * @param {string|undefined} description + * @param {string} indent + * @returns {string[]} + */ +function formatJSDoc(description, indent) { + if (!description) return []; + // Escape stray */ sequences that would close the JSDoc comment + const text = description.replace(/\*\//g, '*\\/'); + return [`${indent}/** ${text} */`]; +} + +/** + * Map a single schema attribute to its TypeScript type string. + * + * @param {object} attr - The attribute object from the schema + * @param {string} attrPath - Dot-separated path for name-based overrides + * @returns {string} TypeScript type expression + */ +function valTypeToTS(attr, attrPath) { + // Check name-based overrides first + for (const [pattern, typeName] of ATTR_NAME_OVERRIDES) { + if (attrPath.endsWith(pattern)) return typeName; + } + + const { valType } = attr; + let base; + + switch (valType) { + case 'data_array': + return 'Datum[] | TypedArray'; + + case 'number': + case 'integer': { + const extras = Array.isArray(attr.extras) ? attr.extras.filter((v) => typeof v === 'string') : []; + if (extras.length > 0) { + base = 'number | ' + extras.map(serializeValue).join(' | '); + } else { + base = 'number'; + } + break; + } + + case 'string': { + if (attr.values && Array.isArray(attr.values)) { + const common = matchCommonType(attr.values); + if (common) { + base = common; + break; + } + base = attr.values.map(serializeValue).join(' | '); + } else { + base = 'string'; + } + break; + } + + case 'boolean': + base = 'boolean'; + break; + + case 'color': + base = 'Color'; + break; + + case 'colorscale': + base = 'ColorScale'; + break; + + case 'colorlist': + return 'Color[]'; + + case 'angle': + base = "number | 'auto'"; + break; + + case 'subplotid': + base = 'string'; + break; + + case 'enumerated': { + if (attr.values && Array.isArray(attr.values)) { + const common = matchCommonType(attr.values); + if (common) { + base = common; + break; + } + base = attr.values.map(serializeValue).join(' | '); + } else { + base = 'any'; + } + break; + } + + case 'flaglist': { + const parts = []; + if (Array.isArray(attr.flags)) { + parts.push(...attr.flags.map(serializeValue)); + } + if (Array.isArray(attr.extras)) { + parts.push(...attr.extras.map(serializeValue)); + } + // Use (string & {}) to allow flag combinations like 'x+y' + // while preserving autocomplete for individual flags. + if (parts.length > 0) { + parts.push('(string & {})'); + base = parts.join(' | '); + } else { + base = 'string'; + } + break; + } + + case 'info_array': + return infoArrayToTS(attr); + + case 'any': + return 'any'; + + default: + return 'any'; + } + + if (attr.arrayOk) { + // Wrap in parens if base contains '|' to avoid ambiguity + const needsParens = base.includes('|'); + return needsParens ? `${base} | (${base})[]` : `${base} | ${base}[]`; + } + + return base; +} + +// --------------------------------------------------------------------------- +// Structural helpers +// --------------------------------------------------------------------------- + +/** + * Returns true if key looks like an auto-generated *src attribute. + * These are created for Chart Studio Cloud and shouldn't appear in types. + */ +function isSrcAttr(key, siblings) { + if (!key.endsWith('src')) return false; + const base = key.slice(0, -3); + return base in siblings; +} + +/** + * Detect a linked-to-array container in the serialized schema. + * + * In the source, these are marked with `_isLinkedToArray`, but that flag + * is stripped during serialization. We detect them structurally: a container + * whose only non-meta keys are `items`, and `items` is an object with exactly + * one child that is itself an object with attribute leaves. + */ +function isLinkedToArrayContainer(obj) { + if (!obj || typeof obj !== 'object' || !obj.items) return false; + // The container should have no other meaningful keys + const meaningful = Object.keys(obj).filter((k) => !META_KEYS.has(k) && k !== 'items'); + if (meaningful.length > 0) return false; + // items should have exactly one named child that is an object + const itemKeys = Object.keys(obj.items); + if (itemKeys.length !== 1) return false; + const child = obj.items[itemKeys[0]]; + return child && typeof child === 'object' && !child.valType; +} + +// --------------------------------------------------------------------------- +// Fingerprinting — canonical representation of container subtree shapes +// --------------------------------------------------------------------------- + +/** + * Compute a canonical fingerprint for a leaf attribute (has valType). + * Two leaves with the same fingerprint produce the same TS type. + */ +function leafFingerprint(attr, attrPath) { + return valTypeToTS(attr, attrPath); +} + +/** + * Compute a canonical fingerprint for a container (no valType). + * Recursively fingerprints nested containers. Two containers with the + * same fingerprint produce identical TypeScript object types. + */ +function containerFingerprint(attrs) { + const parts = []; + + for (const key of Object.keys(attrs).sort()) { + if (META_KEYS.has(key)) continue; + const val = attrs[key]; + if (isSrcAttr(key, attrs)) continue; + if (val == null) continue; + + if (typeof val === 'string') { + parts.push(`${key}:L'${val}'`); + continue; + } + if (typeof val !== 'object') continue; + + if (val.valType) { + parts.push(`${key}:${leafFingerprint(val, key)}`); + continue; + } + + if (isLinkedToArrayContainer(val)) { + const itemChild = Object.values(val.items)[0]; + parts.push(`${key}:Array<${containerFingerprint(itemChild)}>`); + continue; + } + + parts.push(`${key}:{${containerFingerprint(val)}}`); + } + + return parts.join(','); +} + +/** + * Walk an attribute tree and collect fingerprints for every container + * subtree (including nested ones). Records each occurrence with the + * attribute key name (used later for naming). + * + * @param {object} attrs - Attribute object + * @param {Map} collector - Map, attrs}> + */ +function collectFingerprints(attrs, collector) { + for (const key of Object.keys(attrs).sort()) { + if (META_KEYS.has(key)) continue; + const val = attrs[key]; + if (isSrcAttr(key, attrs)) continue; + if (val == null || typeof val !== 'object' || val.valType) continue; + + let containerAttrs; + if (isLinkedToArrayContainer(val)) { + // For linked-to-array containers, fingerprint the inner item, + // not the wrapper. The wrapper itself is always {items:{X:{...}}}. + containerAttrs = Object.values(val.items)[0]; + } else { + containerAttrs = val; + } + + const fp = containerFingerprint(containerAttrs); + + if (!collector.has(fp)) { + collector.set(fp, { count: 0, names: new Map(), attrs: containerAttrs }); + } + const entry = collector.get(fp); + entry.count++; + entry.names.set(key, (entry.names.get(key) || 0) + 1); + + // Recurse into children + collectFingerprints(containerAttrs, collector); + } +} + +// --------------------------------------------------------------------------- +// Shared type selection and naming +// --------------------------------------------------------------------------- + +const MIN_OCCURRENCES = 5; +const MIN_PROPERTIES = 4; + +/** + * Count the number of property lines a container would produce. + */ +function countProperties(attrs) { + let count = 0; + for (const key of Object.keys(attrs)) { + if (META_KEYS.has(key)) continue; + if (isSrcAttr(key, attrs)) continue; + const val = attrs[key]; + if (val == null) continue; + if (typeof val === 'string' || typeof val !== 'object') { + count++; + continue; + } + if (val.valType) { + count++; + continue; + } + count++; // container counts as one property + } + return count; +} + +/** Convert an attribute key to a PascalCase interface name. */ +function keyToInterfaceName(key) { + const override = SHARED_NAME_OVERRIDES.get(key); + if (override) return override; + return key + .split('_') + .map((s) => s.charAt(0).toUpperCase() + s.slice(1)) + .join(''); +} + +/** + * Determine shared types from collected fingerprints. + * + * Returns Map for containers that should + * be extracted into shared interfaces. + */ +function selectSharedTypes(collector) { + /** @type {Map} fingerprint → interface name */ + const shared = new Map(); + /** @type {Map} interface name → canonical fingerprint (largest so far) */ + const nameToCanonFp = new Map(); + + // Sort by count descending so the most common get first pick of names + const candidates = [...collector.entries()] + .filter(([, entry]) => { + if (entry.count < MIN_OCCURRENCES) return false; + if (countProperties(entry.attrs) >= MIN_PROPERTIES) return true; + // Allow explicitly named overrides to bypass MIN_PROPERTIES + for (const name of entry.names.keys()) { + if (SHARED_NAME_OVERRIDES.has(name)) return true; + } + return false; + }) + .sort((a, b) => b[1].count - a[1].count); + + for (const [fp, entry] of candidates) { + // Pick the most common attribute key as the name + let bestKey = ''; + let bestCount = 0; + for (const [name, count] of entry.names) { + if (count > bestCount) { + bestKey = name; + bestCount = count; + } + } + + let interfaceName = keyToInterfaceName(bestKey); + + // Disambiguate font variants by checking if properties have arrayOk + if (interfaceName.toLowerCase().endsWith('font')) { + const hasArrayOk = Object.values(entry.attrs).some( + (v) => v && typeof v === 'object' && v.valType && v.arrayOk + ); + interfaceName = hasArrayOk ? 'FontArray' : 'Font'; + } + + if (nameToCanonFp.has(interfaceName)) { + // Name collision — check subset/superset relationship. + // Since all properties are optional, a superset type safely + // covers all subset variants. + const existingFp = nameToCanonFp.get(interfaceName); + const existingParts = existingFp.split(','); + const newParts = fp.split(','); + const existingSet = new Set(existingParts); + const newSet = new Set(newParts); + + const newSubsetOfExisting = newParts.every((p) => existingSet.has(p)); + const existingSubsetOfNew = existingParts.every((p) => newSet.has(p)); + + if (newSubsetOfExisting) { + // New is a subset of existing — just map to existing name + shared.set(fp, interfaceName); + continue; + } else if (existingSubsetOfNew) { + // Existing is a subset of new — upgrade canonical to the superset + shared.set(fp, interfaceName); + nameToCanonFp.set(interfaceName, fp); + continue; + } else { + // Unrelated — disambiguate with numeric suffix + let suffix = 2; + while (nameToCanonFp.has(interfaceName + suffix)) suffix++; + interfaceName = interfaceName + suffix; + } + } + + nameToCanonFp.set(interfaceName, fp); + shared.set(fp, interfaceName); + } + + return shared; +} + +/** + * Attempt superset merging: if a smaller fingerprint is a strict subset + * of a larger one (same keys minus a few extras), merge the smaller's + * occurrences into the larger. + * + * We do this by checking if the property lines of the subset are a + * prefix-match of the superset (since keys are sorted). + */ +function mergeSubsets(collector, shared) { + // Merge non-shared fingerprints that are strict SUBSETS of a shared + // fingerprint into the same name. Only one direction — we never expand + // a shared type to a superset here (that's handled in selectSharedTypes + // for same-named candidates). Iterate until stable for transitive + // subset chains (if C ⊂ B and B was just merged into A, C should too). + let changed = true; + while (changed) { + changed = false; + for (const [fpA, nameA] of [...shared.entries()]) { + const partsA = new Set(fpA.split(',')); + + for (const [fpB, entryB] of collector.entries()) { + if (fpB === fpA) continue; + if (shared.has(fpB)) continue; + if (entryB.count < 2) continue; + + // Check if B is a strict subset of A + const partsB = fpB.split(','); + const bSubsetOfA = partsB.every((p) => partsA.has(p)); + + if (bSubsetOfA) { + shared.set(fpB, nameA); + changed = true; + } + } + } + } +} + +// --------------------------------------------------------------------------- +// Attribute tree walker (with shared type support) +// --------------------------------------------------------------------------- + +/** + * Walk a schema attribute object and emit TypeScript property lines. + * + * @param {object} attrs - Attribute object from the schema + * @param {string} indent - Current indentation string + * @param {string} pathPrefix - Dot-separated path for name-based overrides + * @param {Map} sharedTypes - fingerprint → interface name + * @returns {string[]} Array of TS property declaration lines + */ +function attrsToProperties(attrs, indent, pathPrefix, sharedTypes) { + const lines = []; + + for (const key of Object.keys(attrs).sort()) { + // Skip meta keys + if (META_KEYS.has(key)) continue; + + const val = attrs[key]; + + // Skip src attributes + if (isSrcAttr(key, attrs)) continue; + + // Skip null/undefined + if (val == null) continue; + + const attrPath = pathPrefix ? `${pathPrefix}.${key}` : key; + + // String literal (e.g. type: "ohlc") + if (typeof val === 'string') { + lines.push(`${indent}${key}?: '${val}';`); + continue; + } + + // Non-object primitive (shouldn't happen, but guard) + if (typeof val !== 'object') continue; + + // Leaf attribute (has valType) + if (val.valType) { + const tsType = valTypeToTS(val, attrPath); + lines.push(...formatJSDoc(val.description, indent)); + lines.push(`${indent}${key}?: ${tsType};`); + continue; + } + + // Linked-to-array container — check if inner item matches a shared type + if (isLinkedToArrayContainer(val)) { + const itemChild = Object.values(val.items)[0]; + const fp = containerFingerprint(itemChild); + const sharedName = sharedTypes.get(fp); + if (sharedName) { + lines.push(...formatJSDoc(val.description, indent)); + lines.push(`${indent}${key}?: ${sharedName}[];`); + continue; + } + const nested = attrsToProperties(itemChild, indent + ' ', attrPath, sharedTypes); + if (nested.length > 0) { + lines.push(...formatJSDoc(val.description, indent)); + lines.push(`${indent}${key}?: Array<{`); + lines.push(...nested); + lines.push(`${indent}}>;`); + continue; + } + } + + // Check if this container matches a shared type + const fp = containerFingerprint(val); + const sharedName = sharedTypes.get(fp); + if (sharedName) { + lines.push(...formatJSDoc(val.description, indent)); + lines.push(`${indent}${key}?: ${sharedName};`); + continue; + } + + // Container object — recurse + const nested = attrsToProperties(val, indent + ' ', attrPath, sharedTypes); + if (nested.length > 0) { + lines.push(...formatJSDoc(val.description, indent)); + lines.push(`${indent}${key}?: {`); + lines.push(...nested); + lines.push(`${indent}};`); + } + } + + return lines; +} + +// --------------------------------------------------------------------------- +// Trace name → interface name +// --------------------------------------------------------------------------- + +function traceNameToInterfaceName(traceName) { + return traceName.charAt(0).toUpperCase() + traceName.slice(1) + 'Data'; +} + +// --------------------------------------------------------------------------- +// Layout generation helpers +// --------------------------------------------------------------------------- + +/** + * Group subplot containers by target interface name and merge their + * attributes into a superset. E.g. xaxis and yaxis both map to LayoutAxis; + * their attributes are merged so the interface covers both. + * + * @param {object} layoutAttrs - schema.layout.layoutAttributes + * @returns {Map} + */ +function buildSubplotGroups(layoutAttrs) { + const groups = new Map(); + for (const [key, val] of Object.entries(layoutAttrs)) { + if (!val || typeof val !== 'object' || !val._isSubplotObj) continue; + const name = LAYOUT_CONTAINER_NAMES.get(key) || keyToInterfaceName(key); + const existing = groups.get(name); + if (existing) { + // Merge: superset of both attribute sets + for (const [k, v] of Object.entries(val)) { + if (!(k in existing.attrs)) existing.attrs[k] = v; + } + existing.keys.push(key); + } else { + groups.set(name, { attrs: { ...val }, keys: [key] }); + } + } + return groups; +} + +/** + * Extract linked-to-array containers from layout attributes. + * Returns a map of interface name → item attributes. + * + * @param {object} layoutAttrs - schema.layout.layoutAttributes + * @returns {Map} name → item child attrs + */ +function extractArrayItems(layoutAttrs) { + const items = new Map(); + for (const [key, val] of Object.entries(layoutAttrs)) { + if (!val || typeof val !== 'object') continue; + if (!isLinkedToArrayContainer(val)) continue; + const name = LAYOUT_ARRAY_NAMES.get(key) || keyToInterfaceName(key); + const itemChild = Object.values(val.items)[0]; + items.set(name, itemChild); + } + return items; +} + +/** + * Generate the Layout interface body. + * + * @param {object} layoutAttrs - schema.layout.layoutAttributes + * @param {Map} sharedTypes - fingerprint → interface name + * @param {Map} subplotGroups - from buildSubplotGroups + * @param {Map} arrayItems - from extractArrayItems + * @returns {string[]} property lines + */ +function generateLayoutProperties(layoutAttrs, sharedTypes, subplotGroups, arrayItems) { + const lines = []; + const subplotEntries = []; // {key, typeName} for index signatures + + // Build reverse maps: layout key → subplot name, layout key → array name + const subplotKeyToName = new Map(); + for (const [name, { keys }] of subplotGroups) { + for (const k of keys) subplotKeyToName.set(k, name); + } + const arrayKeyToName = new Map(); + for (const [key, val] of Object.entries(layoutAttrs)) { + if (isLinkedToArrayContainer(val)) { + arrayKeyToName.set(key, LAYOUT_ARRAY_NAMES.get(key) || keyToInterfaceName(key)); + } + } + + for (const key of Object.keys(layoutAttrs).sort()) { + if (META_KEYS.has(key)) continue; + const val = layoutAttrs[key]; + if (isSrcAttr(key, layoutAttrs)) continue; + if (val == null) continue; + + // String literal + if (typeof val === 'string') { + lines.push(` ${key}?: '${val}';`); + continue; + } + if (typeof val !== 'object') continue; + + // Leaf attribute + if (val.valType) { + const tsType = valTypeToTS(val, key); + lines.push(` ${key}?: ${tsType};`); + continue; + } + + // Subplot container — reference the named interface + if (subplotKeyToName.has(key)) { + const typeName = subplotKeyToName.get(key); + lines.push(` ${key}?: ${typeName};`); + subplotEntries.push({ key, typeName }); + continue; + } + + // Linked-to-array container — reference as array + if (arrayKeyToName.has(key)) { + const typeName = arrayKeyToName.get(key); + lines.push(` ${key}?: ${typeName}[];`); + continue; + } + + // Regular container — check for shared type + const fp = containerFingerprint(val); + const sharedName = sharedTypes.get(fp); + if (sharedName) { + lines.push(` ${key}?: ${sharedName};`); + continue; + } + + // Inline container + const nested = attrsToProperties(val, ' ', key, sharedTypes); + if (nested.length > 0) { + lines.push(` ${key}?: {`); + lines.push(...nested); + lines.push(` };`); + } + } + + // Subplot index signatures for numbered variants (xaxis2, scene3, etc.) + if (subplotEntries.length > 0) { + lines.push(''); + lines.push(' // Subplot index signatures for numbered variants'); + // Dedupe by typeName+key pattern (xaxis and yaxis have separate entries) + for (const { key, typeName } of subplotEntries) { + lines.push(` [key: \`${key}\${number}\`]: ${typeName};`); + } + } + + return lines; +} + +// --------------------------------------------------------------------------- +// Main +// --------------------------------------------------------------------------- + +/** + * Generate type declarations from a plot schema object. + * + * @param {object} schema - The full plot schema (as from Plotly.PlotSchema.get()) + * @param {string} outputPath - Absolute path to write the .d.ts file + */ +export function generateSchemaTypes(schema, outputPath) { + const traceNames = Object.keys(schema.traces).sort(); + const layoutAttrs = schema.layout.layoutAttributes; + + // ----- Phase 1: Fingerprint all container subtrees across traces + layout ----- + const collector = new Map(); + for (const traceName of traceNames) { + collectFingerprints(schema.traces[traceName].attributes, collector); + } + collectFingerprints(layoutAttrs, collector); + + // ----- Phase 2: Select shared types and merge subsets ----- + const sharedTypes = selectSharedTypes(collector); + mergeSubsets(collector, sharedTypes); + + // Build ordered list of shared interfaces. For each name, use the + // LARGEST fingerprint (most properties) so the interface is a superset + // of all variants mapped to that name. + const nameToData = new Map(); + for (const [fp, name] of sharedTypes.entries()) { + const entry = collector.get(fp); + if (!entry) continue; + const propCount = countProperties(entry.attrs); + const existing = nameToData.get(name); + if (!existing || propCount > existing.propCount) { + nameToData.set(name, { fp, attrs: entry.attrs, propCount }); + } + } + const sharedList = [...nameToData.entries()] + .map(([name, { fp, attrs }]) => [name, { fp, attrs }]) + .sort((a, b) => { + // Leaf types first (Font before ColorBar/HoverLabel) + const aDepth = a[1].fp.includes(':{') ? 1 : 0; + const bDepth = b[1].fp.includes(':{') ? 1 : 0; + if (aDepth !== bDepth) return aDepth - bDepth; + return a[0].localeCompare(b[0]); + }); + + // For emitting shared interface bodies, use sharedTypes so nested + // shared types get replaced (e.g. Font inside ColorBar), but exclude + // all fingerprints that map to the same name to avoid circular + // self-references (multiple fps can share a name after merging). + const emitSharedBody = (attrs, selfName) => { + const innerShared = new Map(); + for (const [fp, name] of sharedTypes) { + if (name !== selfName) { + innerShared.set(fp, name); + } + } + return attrsToProperties(attrs, ' ', '', innerShared); + }; + + // ----- Phase 3: Layout-specific interfaces ----- + const subplotGroups = buildSubplotGroups(layoutAttrs); + const arrayItems = extractArrayItems(layoutAttrs); + + // ----- Phase 4: Build output ----- + const chunks = [ + '/**', + ' * Generated from plot-schema.json by tasks/generate_schema_types.mjs.', + ' * Do not edit by hand — run `npm run schema` to regenerate.', + ' */', + '', + "import type { Calendar, Color, ColorScale, Dash, Datum, MarkerSymbol, TypedArray } from '../lib/common';", + '' + ]; + + // Emit shared interfaces + if (sharedList.length > 0) { + chunks.push('// ---------------------------------------------------------------------------'); + chunks.push('// Shared interfaces — extracted from repeated attribute subtrees'); + chunks.push('// ---------------------------------------------------------------------------'); + chunks.push(''); + + for (const [name, { fp, attrs }] of sharedList) { + const properties = emitSharedBody(attrs, name); + chunks.push(`export interface ${name} {`); + chunks.push(...properties); + chunks.push('}'); + chunks.push(''); + } + } + + // Emit per-trace interfaces + chunks.push('// ---------------------------------------------------------------------------'); + chunks.push('// Trace interfaces'); + chunks.push('// ---------------------------------------------------------------------------'); + chunks.push(''); + + for (const traceName of traceNames) { + const trace = schema.traces[traceName]; + const interfaceName = traceNameToInterfaceName(traceName); + + const properties = attrsToProperties(trace.attributes, ' ', '', sharedTypes); + + chunks.push(`export interface ${interfaceName} {`); + chunks.push(...properties); + chunks.push('}'); + chunks.push(''); + } + + // Emit layout-specific interfaces (subplots + array items) + chunks.push('// ---------------------------------------------------------------------------'); + chunks.push('// Layout component interfaces'); + chunks.push('// ---------------------------------------------------------------------------'); + chunks.push(''); + + for (const [name, { attrs }] of [...subplotGroups.entries()].sort((a, b) => a[0].localeCompare(b[0]))) { + const properties = attrsToProperties(attrs, ' ', '', sharedTypes); + chunks.push(`export interface ${name} {`); + chunks.push(...properties); + chunks.push('}'); + chunks.push(''); + } + + for (const [name, attrs] of [...arrayItems.entries()].sort((a, b) => a[0].localeCompare(b[0]))) { + const properties = attrsToProperties(attrs, ' ', '', sharedTypes); + chunks.push(`export interface ${name} {`); + chunks.push(...properties); + chunks.push('}'); + chunks.push(''); + } + + // Emit the Layout interface + chunks.push('// ---------------------------------------------------------------------------'); + chunks.push('// Layout'); + chunks.push('// ---------------------------------------------------------------------------'); + chunks.push(''); + + const layoutProperties = generateLayoutProperties(layoutAttrs, sharedTypes, subplotGroups, arrayItems); + chunks.push('export interface Layout {'); + chunks.push(...layoutProperties); + chunks.push('}'); + chunks.push(''); + + fs.writeFileSync(outputPath, chunks.join('\n')); + + const sharedCount = sharedList.length; + const layoutCount = subplotGroups.size + arrayItems.size + 1; // +1 for Layout itself + console.log( + `Generated ${traceNames.length} trace(s) + ${layoutCount} layout type(s) + ${sharedCount} shared interface(s) → ${outputPath}` + ); + + // Return all exported interface names so callers can verify re-exports + const exportedNames = new Set(); + for (const [name] of sharedList) exportedNames.add(name); + for (const traceName of traceNames) exportedNames.add(traceNameToInterfaceName(traceName)); + for (const name of subplotGroups.keys()) exportedNames.add(name); + for (const name of arrayItems.keys()) exportedNames.add(name); + exportedNames.add('Layout'); + return exportedNames; +} From 227122fa8cd10295db4cef5714960f28a7e1e620 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Thu, 14 May 2026 15:00:11 -0600 Subject: [PATCH 059/241] Switch to schema generated types --- lib/index.d.ts | 193 ++++---- src/types/core/data.d.ts | 117 ++++- src/types/core/events.d.ts | 15 +- src/types/core/graph-div.d.ts | 3 +- src/types/core/layout.d.ts | 826 +--------------------------------- src/types/index.d.ts | 18 +- src/types/lib/common.d.ts | 54 +-- src/types/traces/common.d.ts | 71 --- tasks/schema.mjs | 33 ++ 9 files changed, 253 insertions(+), 1077 deletions(-) delete mode 100644 src/types/traces/common.d.ts diff --git a/lib/index.d.ts b/lib/index.d.ts index 60423313a44..cd2180da202 100644 --- a/lib/index.d.ts +++ b/lib/index.d.ts @@ -37,7 +37,6 @@ export type { ErrorBar, ErrorOptions, MarkerSymbol, - Pattern, PatternShape, TypedArray, XAnchor, @@ -47,60 +46,102 @@ export type { } from '../src/types/lib/common'; // --------------------------------------------------------------------------- -// Layout, axes, components, and supporting shapes +// Schema-generated types (traces, layout, shared interfaces) // --------------------------------------------------------------------------- export type { - Annotations, - AutoRangeOptions, - Axis, - AxisName, - ButtonClickEvent, - Camera, - DataTitle, - Delta, + // Shared interfaces + ColorBar, Domain, Font, - Gauge, - GaugeBar, - GaugeLine, + FontArray, HoverLabel, - Icon, - Image, - Label, + Pattern, + TickFormatStops, + + // Trace interfaces + BarData, + BarpolarData, + BoxData, + CandlestickData, + CarpetData, + ChoroplethData, + ChoroplethmapData, + ChoroplethmapboxData, + ConeData, + ContourData, + ContourcarpetData, + DensitymapData, + DensitymapboxData, + FunnelData, + FunnelareaData, + HeatmapData, + Histogram2dData, + Histogram2dcontourData, + HistogramData, + IcicleData, + ImageData, + IndicatorData, + IsosurfaceData, + Mesh3dData, + OhlcData, + ParcatsData, + ParcoordsData, + PieData, + SankeyData, + Scatter3dData, + ScatterData, + ScattercarpetData, + ScattergeoData, + ScatterglData, + ScattermapData, + ScattermapboxData, + ScatterpolarData, + ScatterpolarglData, + ScattersmithData, + ScatterternaryData, + SplomData, + StreamtubeData, + SunburstData, + SurfaceData, + TableData, + TreemapData, + ViolinData, + VolumeData, + WaterfallData, + + // Layout component interfaces + Annotation, + ColorAxis, + GeoLayout, Layout, LayoutAxis, + LayoutImage, + LayoutSelection, Legend, - LegendTitle, MapLayout, + PolarLayout, + Scene, + Shape, + Slider, + SmithLayout, + TernaryLayout, + UpdateMenu, +} from '../src/types/generated/schema'; + +// --------------------------------------------------------------------------- +// Hand-written layout types (not in schema) +// --------------------------------------------------------------------------- + +export type { + AxisName, + ButtonClickEvent, + Icon, Mapbox, - MapBounds, - MapboxBounds, - MapCenter, - MapboxCenter, - MapLayers, - MapboxLayers, - MapSymbol, - MapboxSymbol, - Margin, - MinorAxisLayout, - ModeBar, ModeBarButton, ModeBarButtonAny, ModeBarDefaultButtons, - Padding, - PlotNumber, - Point, - PolarLayout, - RangeBreak, - RangeSlider, - Scene, - SceneAxis, - Shape, - ShapeLabel, - ShapeLine, Template, - Threshold, XAxisName, YAxisName, } from '../src/types/core/layout'; @@ -111,77 +152,21 @@ export type { export type { Data, + DataTitle, + Delta, + Gauge, + GaugeBar, + GaugeLine, + Padding, PlotData, PlotMarker, + PlotNumber, PlotType, - ScatterData, ScatterLine, - ScatterMarker, ScatterMarkerLine, + Threshold, } from '../src/types/core/data'; -// --------------------------------------------------------------------------- -// Specialized trace types -// --------------------------------------------------------------------------- - -export type { BoxPlotData, BoxPlotMarker } from '../src/types/traces/box'; -export type { CandlestickData } from '../src/types/traces/candlestick'; -export type { OhlcData } from '../src/types/traces/ohlc'; -export type { - PieData, - PieDataTitle, - PieDomain, - PieFont, - PieHoverInfo, - PieHoverLabel, - PieInsideTextOrientation, - PieLine, - PieMarker, - PieTextPosition, -} from '../src/types/traces/pie'; -export type { - SankeyData, - SankeyColorscale, - SankeyDataTitle, - SankeyDomain, - SankeyFont, - SankeyHoverLabel, - SankeyLink, - SankeyNode, - SankeyOrientation, -} from '../src/types/traces/sankey'; -export type { ViolinData } from '../src/types/traces/violin'; - -// --------------------------------------------------------------------------- -// Components -// --------------------------------------------------------------------------- - -export type { - ColorBar, - ColorBarTitle, - ExponentFormat, - LengthMode, - ShowTickLabel, - TickFormatStop, - TickLabelOverflow, - TickLabelPosition, -} from '../src/types/components/colorbar'; - -export type { CurrentValue, Slider, SliderStep } from '../src/types/components/slider'; - -export type { - UpdateMenu, - UpdateMenuButton, - UpdateMenuDirection, - UpdateMenuType, -} from '../src/types/components/updatemenu'; - -export type { - RangeSelector, - RangeSelectorButton, - RangeSelectorStep, -} from '../src/types/components/rangeselector'; - // --------------------------------------------------------------------------- // Animation & template // --------------------------------------------------------------------------- diff --git a/src/types/core/data.d.ts b/src/types/core/data.d.ts index c56644626b4..6522f6411d1 100644 --- a/src/types/core/data.d.ts +++ b/src/types/core/data.d.ts @@ -5,15 +5,93 @@ * and the Data union. */ -import type { ColorBar } from '../components/colorbar'; -import type { Color, ColorScale, Dash, Datum, ErrorBar, MarkerSymbol, Pattern, TypedArray } from '../lib/common'; -import type { BoxPlotData, BoxPlotMarker } from '../traces/box'; -import type { CandlestickData } from '../traces/candlestick'; -import type { OhlcData } from '../traces/ohlc'; -import type { PieData } from '../traces/pie'; -import type { SankeyData } from '../traces/sankey'; -import type { ViolinData } from '../traces/violin'; -import type { DataTitle, Delta, Font, Gauge, HoverLabel, Padding, PlotNumber } from './layout'; +import type { + BoxData, + CandlestickData, + ColorBar, + Font, + HoverLabel, + OhlcData, + Pattern, + PieData, + SankeyData, + ViolinData, +} from '../generated/schema'; +import type { Color, ColorScale, Dash, Datum, ErrorBar, MarkerSymbol, TypedArray } from '../lib/common'; + +// --------------------------------------------------------------------------- +// Trace support types (used by PlotData) +// --------------------------------------------------------------------------- + +export interface DataTitle { + text: string; + font: Partial; + standoff: number; + position: + | 'top left' + | 'top center' + | 'top right' + | 'middle center' + | 'bottom left' + | 'bottom center' + | 'bottom right'; +} + +export interface PlotNumber { + valueformat: string; + font: Partial; + prefix: string; + suffix: string; +} + +export interface Padding { + t: number; + r: number; + b: number; + l: number; +} + +export interface GaugeLine { + color: Color; + width: number; +} + +export interface Threshold { + line: Partial; + value: number; + thickness: number; +} + +export interface GaugeBar { + color: Color; + line: Partial; + thickness: number; +} + +export interface Gauge { + shape: 'angular' | 'bullet'; + bar: Partial; + bgcolor: Color; + bordercolor: Color; + borderwidth: number; + steps: Array<{ range: number[]; color: Color }>; + threshold: Partial; +} + +export interface Delta { + reference: number; + position: 'top' | 'bottom' | 'left' | 'right'; + relative: boolean; + valueformat: string; + increasing: { + symbol: string; + color: Color; + }; + decreasing: { + symbol: string; + color: Color; + }; +} // --------------------------------------------------------------------------- // PlotType @@ -120,8 +198,6 @@ export interface PlotMarker { pattern?: Partial; } -export type ScatterMarker = PlotMarker; - export interface ScatterLine { color: Color; width: number; @@ -158,7 +234,7 @@ export interface PlotData { 'line.shape': 'linear' | 'spline' | 'hv' | 'vh' | 'hvh' | 'vhv'; 'line.smoothing': number; 'line.simplify': boolean; - marker: Partial | Partial; + marker: Partial; 'marker.symbol': MarkerSymbol | MarkerSymbol[]; 'marker.color': Color; 'marker.colorscale': ColorScale | ColorScale[]; @@ -365,15 +441,13 @@ export interface PlotData { uid: string; } -export type ScatterData = PlotData; - // --------------------------------------------------------------------------- // Data union — re-exports specialized trace types from traces/ // --------------------------------------------------------------------------- export type Data = | Partial - | Partial + | Partial | Partial | Partial | Partial @@ -384,6 +458,19 @@ export type Data = // Internal types (not in public API) // --------------------------------------------------------------------------- +/** + * Calculated trace data (internal) + */ +export interface CalcData { + i?: number; + t?: any; + trace?: FullData; + x?: any; + y?: any; + z?: any; + [key: string]: any; +} + /** * Fully processed plot data with defaults applied (internal use) */ diff --git a/src/types/core/events.d.ts b/src/types/core/events.d.ts index 521cbbed47b..26e70f131c5 100644 --- a/src/types/core/events.d.ts +++ b/src/types/core/events.d.ts @@ -5,12 +5,11 @@ * and event-related supporting types. */ -import type { Slider, SliderStep } from '../components/slider'; +import type { Annotation, Layout, LayoutAxis, Slider } from '../generated/schema'; import type { Datum } from '../lib/common'; import type { AnimationFrameOpts, Frame, Transition } from './animation'; import type { Config } from './config'; import type { Data, PlotData } from './data'; -import type { Annotations, Layout, LayoutAxis, Point } from './layout'; // --------------------------------------------------------------------------- // Point / datum types in events @@ -96,6 +95,12 @@ export interface PlotRelayoutEvent extends Partial { // 3D scene / annotation / animation / legend events // --------------------------------------------------------------------------- +interface Point { + x: number; + y: number; + z: number; +} + export interface PlotScene { center: Point; eye: Point; @@ -104,8 +109,8 @@ export interface PlotScene { export interface ClickAnnotationEvent { index: number; - annotation: Annotations; - fullAnnotation: Annotations; + annotation: Annotation; + fullAnnotation: Annotation; event: MouseEvent; } @@ -135,6 +140,8 @@ export interface LegendClickEvent { // Slider events // --------------------------------------------------------------------------- +type SliderStep = NonNullable[number]; + export interface SliderChangeEvent { slider: Slider; step: SliderStep; diff --git a/src/types/core/graph-div.d.ts b/src/types/core/graph-div.d.ts index 8947a1e01f2..25f7fcdcddb 100644 --- a/src/types/core/graph-div.d.ts +++ b/src/types/core/graph-div.d.ts @@ -6,9 +6,8 @@ * Commonly referred to as `gd` in the codebase. */ -import type { CalcData } from '../traces/common'; import type { Config } from './config'; -import type { FullData, PlotData } from './data'; +import type { CalcData, FullData, PlotData } from './data'; import type { FullLayout, Layout } from './layout'; /** diff --git a/src/types/core/layout.d.ts b/src/types/core/layout.d.ts index f1c3a4edbff..f08ffa8496d 100644 --- a/src/types/core/layout.d.ts +++ b/src/types/core/layout.d.ts @@ -1,191 +1,21 @@ /** - * Layout types + * Layout types — hand-written supplements * - * Comprehensive layout, axis, annotation, shape, scene, and supporting types. + * Schema-derived types (Layout, LayoutAxis, Legend, Scene, Shape, Annotation, + * etc.) are generated into src/types/generated/schema.d.ts by + * tasks/generate_schema_types.mjs. This file contains only types the schema + * cannot express: internal runtime state, behavioral/event types, template + * literal utilities, and deprecated aliases. */ import type { Locale, Selection } from 'd3'; -import type { TickFormatStop } from '../components/colorbar'; -import type { RangeSelector } from '../components/rangeselector'; -import type { Slider } from '../components/slider'; -import type { UpdateMenu } from '../components/updatemenu'; -import type { AxisType, Calendar, Color, Dash, Datum, DTickValue } from '../lib/common'; -import type { Transition } from './animation'; +import type { Layout } from '../generated/schema'; +import type { Color } from '../lib/common'; import type { PlotData, PlotType } from './data'; import type { PlotlyHTMLElement } from './events'; // --------------------------------------------------------------------------- -// Font -// --------------------------------------------------------------------------- - -export interface Font { - color: Color; - /** - * HTML font family - the typeface that will be applied by the web browser. - * Provide multiple font families, separated by commas, to indicate preference. - * @default "Arial, sans-serif" - */ - family: string; - /** - * Sets the shape and color of the shadow behind text. - * "auto" places minimal shadow and applies contrast text font color. - * @default "none" - */ - shadow: string; - /** - * @default 13 - */ - size: number; - /** - * Sets the weight (or boldness) of the font. - * @default "normal" - */ - weight: number | 'normal' | 'bold'; - /** - * Sets whether a font should be styled with a normal or italic face from its family. - * @default "normal" - */ - style: 'normal' | 'italic'; - /** - * Sets capitalization of text. - * @default "normal" - */ - textcase: 'normal' | 'word caps' | 'upper' | 'lower'; - /** - * Sets the variant of the font. - * @default "normal" - */ - variant: 'normal' | 'small-caps' | 'all-small-caps' | 'all-petite-caps' | 'petite-caps' | 'unicase'; - /** - * Sets the kind of decoration line(s) with text. - * @default "none" - */ - lineposition: - | 'none' - | 'under' - | 'over' - | 'through' - | 'under+over' - | 'over+under' - | 'over+through' - | 'through+over' - | 'through+under' - | 'under+through' - | 'under+over+through' - | 'under+through+over' - | 'over+under+through' - | 'over+through+under' - | 'through+under+over' - | 'through+over+under'; -} - -// --------------------------------------------------------------------------- -// Padding / Margin / Domain -// --------------------------------------------------------------------------- - -export interface Padding { - t: number; - r: number; - b: number; - l: number; - editType: 'arraydraw'; -} - -export interface Margin { - t: number; - b: number; - l: number; - r: number; - pad: number; -} - -export interface Domain { - x: number[]; - y: number[]; - row: number; - column: number; -} - -// --------------------------------------------------------------------------- -// Label / HoverLabel / Legend -// --------------------------------------------------------------------------- - -export interface Label { - bgcolor: string; - bordercolor: string; - font: Partial; -} - -export interface HoverLabel extends Label { - /** - * Sets the horizontal alignment of the text content within hover label box. - * @default "auto" - */ - align: 'left' | 'right' | 'auto'; - /** - * Sets the default length (in number of characters) of the trace name - * in the hover labels for all traces. -1 shows the whole name. - * @default 15 - */ - namelength: number; -} - -export interface LegendTitle { - font: Partial; - side: 'top' | 'left' | 'top left' | 'top center' | 'top right'; - text: string; -} - -export interface Legend extends Label { - borderwidth: number; - groupclick: 'toggleitem' | 'togglegroup'; - grouptitlefont: Partial; - itemclick: 'toggle' | 'toggleothers' | false; - itemdoubleclick: 'toggle' | 'toggleothers' | false; - itemsizing: 'trace' | 'constant'; - itemwidth: number; - orientation: 'v' | 'h'; - title: Partial; - tracegroupgap: number; - traceorder: 'grouped' | 'normal' | 'reversed' | 'reversed+grouped'; - uirevision: number | string; - uid: string; - valign: 'top' | 'middle' | 'bottom'; - x: number; - xanchor: 'auto' | 'left' | 'center' | 'right'; - xref: 'container' | 'paper'; - y: number; - yanchor: 'auto' | 'top' | 'middle' | 'bottom'; - yref: 'container' | 'paper'; -} - -// --------------------------------------------------------------------------- -// DataTitle / PlotNumber -// --------------------------------------------------------------------------- - -export interface DataTitle { - text: string; - font: Partial; - standoff: number; - position: - | 'top left' - | 'top center' - | 'top right' - | 'middle center' - | 'bottom left' - | 'bottom center' - | 'bottom right'; -} - -export interface PlotNumber { - valueformat: string; - font: Partial; - prefix: string; - suffix: string; -} - -// --------------------------------------------------------------------------- -// Axis name types +// Axis name types (template literal utilities — not in schema) // --------------------------------------------------------------------------- type xYAxisNames = `${ @@ -198,366 +28,7 @@ export type YAxisName = `y${xYAxisNames}`; export type AxisName = XAxisName | YAxisName; // --------------------------------------------------------------------------- -// Axis support types -// --------------------------------------------------------------------------- - -export interface AutoRangeOptions { - clipmax: DTickValue; - clipmin: DTickValue; - include: DTickValue; - maxallowed: DTickValue; - minallowed: DTickValue; -} - -export interface MinorAxisLayout { - dtick: DTickValue; - gridcolor: Color; - griddash: Dash; - gridwidth: number; - nticks: number; - showgrid: boolean; - tick0: DTickValue; - tickcolor: Color; - ticklen: number; - tickmode: 'auto' | 'linear' | 'array'; - ticks: 'outside' | 'inside' | ''; - tickvals: any[]; - tickwidth: number; -} - -export interface RangeBreak { - bounds: any[]; - dvalue: number; - enabled: boolean; - name: string; - pattern: 'day of week' | 'hour' | ''; - templateitemname: string; - values: any[]; -} - -export interface RangeSlider { - visible: boolean; - thickness: number; - range: [Datum, Datum]; - borderwidth: number; - bordercolor: string; - bgcolor: string; -} - -// --------------------------------------------------------------------------- -// Axis (base) -// --------------------------------------------------------------------------- - -export interface Axis { - visible: boolean; - color: Color; - title: Partial; - type: AxisType; - autorange: true | false | 'reversed' | 'min reversed' | 'max reversed' | 'min' | 'max'; - autorangeoptions: Partial; - rangemode: 'normal' | 'tozero' | 'nonnegative'; - range: any[]; - fixedrange: boolean; - - // Ticks - tickmode: 'auto' | 'linear' | 'array' | 'sync'; - nticks: number; - tick0: number | string; - dtick: DTickValue; - tickvals: any[]; - ticktext: string[]; - ticks: 'outside' | 'inside' | ''; - mirror: true | 'ticks' | false | 'all' | 'allticks'; - ticklen: number; - tickwidth: number; - tickcolor: Color; - showticklabels: boolean; - showspikes: boolean; - spikecolor: Color; - spikethickness: number; - categoryorder: - | 'trace' - | 'category ascending' - | 'category descending' - | 'array' - | 'total ascending' - | 'total descending' - | 'min ascending' - | 'min descending' - | 'max ascending' - | 'max descending' - | 'sum ascending' - | 'sum descending' - | 'mean ascending' - | 'mean descending' - | 'median ascending' - | 'median descending'; - categoryarray: any[]; - tickfont: Partial; - tickangle: 'auto' | number; - tickprefix: string; - showtickprefix: 'all' | 'first' | 'last' | 'none'; - ticksuffix: string; - showticksuffix: 'all' | 'first' | 'last' | 'none'; - showexponent: 'all' | 'first' | 'last' | 'none'; - exponentformat: 'none' | 'e' | 'E' | 'power' | 'SI' | 'B'; - minexponent: number; - separatethousands: boolean; - tickformat: string; - hoverformat: string; - calendar: Calendar; - tickformatstops: Array>; - spikedash: string; - spikemode: - | 'toaxis' - | 'across' - | 'marker' - | 'toaxis+across' - | 'toaxis+across+marker' - | 'across+marker' - | 'toaxis+marker'; - spikesnap: 'data' | 'cursor' | 'hovered data'; - - // Lines and Grids - showline: boolean; - linecolor: Color; - linewidth: number; - showgrid: boolean; - gridcolor: Color; - gridwidth: number; - zeroline: boolean; - zerolinecolor: Color; - zerolinewidth: number; - showdividers: boolean; - dividercolor: Color; - dividerwidth: number; - - autotypenumbers: 'convert types' | 'strict'; - labelalias: DTickValue; - maxallowed: DTickValue; - minallowed: DTickValue; -} - -// --------------------------------------------------------------------------- -// LayoutAxis -// --------------------------------------------------------------------------- - -export interface LayoutAxis extends Axis { - fixedrange: boolean; - scaleanchor: AxisName; - scaleratio: number; - constrain: 'range' | 'domain'; - constraintoward: 'left' | 'center' | 'right' | 'top' | 'middle' | 'bottom'; - anchor: 'free' | AxisName; - side: 'top' | 'bottom' | 'left' | 'right' | 'clockwise' | 'counterclockwise'; - overlaying: 'free' | AxisName; - layer: 'above traces' | 'below traces'; - domain: number[]; - position: number; - rotation: number; - direction: 'counterclockwise' | 'clockwise'; - rangeslider: Partial; - rangeselector: Partial; - automargin: boolean; - angle: any; - griddash: Dash; - l2p: (v: Datum) => number; - - autotickangles: number[]; - insiderange: any[]; - matches: AxisName; - minor: Partial; - rangebreaks: Array>; - ticklabelmode: 'instant' | 'period'; - ticklabeloverflow: 'allow' | 'hide past div' | 'hide past domain'; - ticklabelposition: - | 'outside' - | 'inside' - | 'outside top' - | 'inside top' - | 'outside left' - | 'inside left' - | 'outside right' - | 'inside right' - | 'outside bottom' - | 'inside bottom'; - ticklabelstep: number; - tickson: 'labels' | 'boundaries'; - uirevision: DTickValue; -} - -// --------------------------------------------------------------------------- -// SceneAxis (extends Axis for 3D scenes) -// --------------------------------------------------------------------------- - -export interface SceneAxis extends Axis { - spikesides: boolean; - showbackground: boolean; - backgroundcolor: Color; - showaxeslabels: boolean; -} - -// --------------------------------------------------------------------------- -// Camera / Scene -// --------------------------------------------------------------------------- - -export interface Point { - x: number; - y: number; - z: number; -} - -export interface Camera { - up: Partial; - center: Partial; - eye: Partial; -} - -export interface Scene { - bgcolor: string; - camera: Partial; - domain: Partial; - aspectmode: 'auto' | 'cube' | 'data' | 'manual'; - aspectratio: Partial; - xaxis: Partial; - yaxis: Partial; - zaxis: Partial; - dragmode: 'orbit' | 'turntable' | 'zoom' | 'pan' | false; - hovermode: 'closest' | false; - annotations: Partial | Array>; - captureevents: boolean; -} - -// --------------------------------------------------------------------------- -// Shape / ShapeLine / ShapeLabel -// --------------------------------------------------------------------------- - -export interface ShapeLine { - color: string; - width: number; - dash: Dash; -} - -export interface ShapeLabel { - font: Partial; - padding: number; - text: string; - textangle: 'auto' | number; - textposition: - | 'top left' - | 'top center' - | 'top right' - | 'middle left' - | 'middle center' - | 'middle right' - | 'bottom left' - | 'bottom center' - | 'bottom right' - | 'start' - | 'middle' - | 'end'; - texttemplate: string; - xanchor: 'auto' | 'left' | 'center' | 'right'; - yanchor: 'top' | 'middle' | 'bottom'; -} - -export interface Shape { - visible: boolean | 'legendonly'; - layer: 'below' | 'above'; - type: 'rect' | 'circle' | 'line' | 'path'; - path: string; - xref: 'paper' | XAxisName; - xsizemode: 'scaled' | 'pixel'; - xanchor: number | string; - yref: 'paper' | YAxisName; - ysizemode: 'scaled' | 'pixel'; - yanchor: number | string; - x0: Datum; - y0: Datum; - x1: Datum; - y1: Datum; - fillcolor: string; - name: string; - templateitemname: string; - opacity: number; - line: Partial; - label: Partial; - showlegend: boolean; - legendgroup: string; - legendgrouptitle: { - text: string; - font?: Partial; - }; - legendrank: number; -} - -// --------------------------------------------------------------------------- -// Annotations -// --------------------------------------------------------------------------- - -export interface Annotations extends Label { - visible: boolean; - text: string; - textangle: string; - width: number; - height: number; - opacity: number; - align: 'left' | 'center' | 'right'; - valign: 'top' | 'middle' | 'bottom'; - borderpad: number; - borderwidth: number; - showarrow: boolean; - arrowcolor: string; - arrowhead: number; - startarrowhead: number; - arrowside: 'end' | 'start'; - arrowsize: number; - startarrowsize: number; - arrowwidth: number; - standoff: number; - startstandoff: number; - ax: number; - ay: number; - axref: 'pixel' | XAxisName; - ayref: 'pixel' | YAxisName; - xref: 'paper' | XAxisName; - x: number | string; - xanchor: 'auto' | 'left' | 'center' | 'right'; - xshift: number; - yref: 'paper' | YAxisName; - y: number | string; - yanchor: 'auto' | 'top' | 'middle' | 'bottom'; - yshift: number; - clicktoshow: false | 'onoff' | 'onout'; - xclick: any; - yclick: any; - hovertext: string; - hoverlabel: Partial; - captureevents: boolean; -} - -// --------------------------------------------------------------------------- -// Image -// --------------------------------------------------------------------------- - -export interface Image { - visible: boolean; - source: string; - layer: 'above' | 'below'; - sizex: number; - sizey: number; - sizing: 'fill' | 'contain' | 'stretch'; - opacity: number; - x: number | string; - y: number | string; - xanchor: 'left' | 'center' | 'right'; - yanchor: 'top' | 'middle' | 'bottom'; - xref: 'paper' | XAxisName; - yref: 'paper' | YAxisName; -} - -// --------------------------------------------------------------------------- -// ModeBar / Icon +// ModeBar / Icon (behavioral types — not in schema) // --------------------------------------------------------------------------- export type ModeBarDefaultButtons = @@ -628,158 +99,8 @@ export interface ModeBarButton { export type ModeBarButtonAny = ModeBarDefaultButtons | ModeBarButton; -// `ModeBar` is generated from src/components/modebar/attributes.ts. -// See src/types/generated/components/modebar.d.ts. -import type { ModeBar } from '../generated/components/modebar'; -export type { ModeBar }; - -// --------------------------------------------------------------------------- -// Gauge / Delta / Indicator types -// --------------------------------------------------------------------------- - -export interface GaugeLine { - color: Color; - width: number; -} - -export interface Threshold { - line: Partial; - value: number; - thickness: number; -} - -export interface GaugeBar { - color: Color; - line: Partial; - thickness: number; -} - -export interface Gauge { - shape: 'angular' | 'bullet'; - bar: Partial; - bgcolor: Color; - bordercolor: Color; - borderwidth: number; - axis: Partial; - steps: Array<{ range: number[]; color: Color }>; - threshold: Partial; -} - -export interface Delta { - reference: number; - position: 'top' | 'bottom' | 'left' | 'right'; - relative: boolean; - valueformat: string; - increasing: { - symbol: string; - color: Color; - }; - decreasing: { - symbol: string; - color: Color; - }; -} - -// --------------------------------------------------------------------------- -// Map types -// --------------------------------------------------------------------------- - -export interface MapCenter { - lon: number; - lat: number; -} - -export interface MapSymbol { - icon: string; - iconsize: number; - text: string; - placement: 'point' | 'line' | 'line-center'; - textfont: Partial; - textposition: - | 'top left' - | 'top center' - | 'top right' - | 'middle center' - | 'bottom left' - | 'bottom center' - | 'bottom right'; -} - -export interface MapLayers { - visible: boolean; - sourcetype: 'geojson' | 'vector' | 'raster' | 'image'; - source: any; - sourcelayer: string; - sourceattribution: string; - type: 'circle' | 'line' | 'fill' | 'symbol' | 'raster'; - coordinates: number | string; - below: string; - color: Color; - opacity: number; - minzoom: number; - maxzoom: number; - circle: { - radius: number; - }; - line: Partial; - fill: { - outlinecolor: Color; - }; - symbol: Partial; - name: string; - templateitemname: string; -} - -export interface MapBounds { - east: number; - north: number; - south: number; - west: number; -} - -export interface MapLayout { - domain: Partial; - accesstoken: string; - style: number | string; - center: Partial; - zoom: number; - bearing: number; - bounds: MapBounds; - pitch: number; - layers: Array>; - uirevision: number | string; - uid: string; -} - -/** @deprecated Use {@link MapCenter} instead */ -export type MapboxCenter = MapCenter; -/** @deprecated Use {@link MapSymbol} instead */ -export type MapboxSymbol = MapSymbol; -/** @deprecated Use {@link MapLayers} instead */ -export type MapboxLayers = MapLayers; -/** @deprecated Use {@link MapBounds} instead */ -export type MapboxBounds = MapBounds; -/** @deprecated Use {@link MapLayout} instead */ -export type Mapbox = MapLayout; - // --------------------------------------------------------------------------- -// PolarLayout -// --------------------------------------------------------------------------- - -export interface PolarLayout { - domain: Partial; - sector: number[]; - hole: number; - bgcolor: Color; - radialaxis: Partial; - angularaxis: Partial; - gridshape: 'circular' | 'linear'; - uirevision: string | number; - uid: string; -} - -// --------------------------------------------------------------------------- -// Template +// Template (circular reference — schema says `any`) // --------------------------------------------------------------------------- export interface Template { @@ -788,131 +109,10 @@ export interface Template { } // --------------------------------------------------------------------------- -// Layout +// Deprecated aliases // --------------------------------------------------------------------------- -export interface Layout { - colorway: string[]; - title: Partial<{ - text: string; - font: Partial; - xref: 'container' | 'paper'; - yref: 'container' | 'paper'; - x: number; - y: number; - xanchor: 'auto' | 'left' | 'center' | 'right'; - yanchor: 'auto' | 'top' | 'middle' | 'bottom'; - pad: Partial; - subtitle: - | string - | Partial<{ - text: string; - font: Partial; - }>; - }>; - autosize: boolean; - showlegend: boolean; - paper_bgcolor: Color; - plot_bgcolor: Color; - separators: string; - hidesources: boolean; - xaxis: Partial; - [key: `xaxis${number}`]: Partial; - yaxis: Partial; - [key: `yaxis${number}`]: Partial; - margin: Partial; - height: number; - width: number; - hovermode: 'closest' | 'x' | 'y' | 'x unified' | 'y unified' | false; - hoverdistance: number; - hoverlabel: Partial; - /** - * Determines expansion of hover effects to other subplots. - * @default "overlaying" - */ - hoversubplots: 'single' | 'overlaying' | 'axis'; - calendar: Calendar; - - // Dotted property paths for Plotly.relayout convenience - 'xaxis.range': [Datum, Datum]; - 'xaxis.range[0]': Datum; - 'xaxis.range[1]': Datum; - 'yaxis.range': [Datum, Datum]; - 'yaxis.range[0]': Datum; - 'yaxis.range[1]': Datum; - 'yaxis.type': AxisType; - 'xaxis.type': AxisType; - 'xaxis.autorange': boolean; - 'yaxis.autorange': boolean; - 'xaxis.title': Partial; - 'yaxis.title': Partial; - - ternary: {}; - geo: {}; - map: Partial; - mapbox: Partial; - subplot: string; - radialaxis: Partial; - angularaxis: {}; - dragmode: - | 'zoom' - | 'pan' - | 'select' - | 'lasso' - | 'drawclosedpath' - | 'drawopenpath' - | 'drawline' - | 'drawrect' - | 'drawcircle' - | 'orbit' - | 'turntable' - | false; - orientation: number; - annotations: Array>; - shapes: Array>; - images: Array>; - updatemenus: Array>; - sliders: Array>; - legend: Partial; - font: Partial; - scene: Partial; - [key: `scene${number}`]: Partial; - barmode: 'stack' | 'group' | 'overlay' | 'relative'; - barnorm: '' | 'fraction' | 'percent'; - bargap: number; - bargroupgap: number; - boxmode: 'group' | 'overlay'; - selectdirection: 'h' | 'v' | 'd' | 'any'; - hiddenlabels: string[]; - grid: Partial<{ - rows: number; - roworder: 'top to bottom' | 'bottom to top'; - columns: number; - subplots: string[]; - xaxes: string[]; - yaxes: string[]; - pattern: 'independent' | 'coupled'; - xgap: number; - ygap: number; - domain: Partial<{ - x: number[]; - y: number[]; - }>; - xside: 'bottom' | 'bottom plot' | 'top plot' | 'top'; - yside: 'left' | 'left plot' | 'right plot' | 'right'; - }>; - polar: Partial; - [key: `polar${number}`]: Partial; - transition: Transition; - template: Template; - clickmode: 'event' | 'select' | 'event+select' | 'none'; - uirevision: number | string; - uid: string; - datarevision: number | string; - editrevision: number | string; - selectionrevision: number | string; - modebar: Partial; -} +export type { MapLayout as Mapbox } from '../generated/schema'; // --------------------------------------------------------------------------- // Internal types (not in public API types) diff --git a/src/types/index.d.ts b/src/types/index.d.ts index 1a998b100be..6e436cc6eb6 100644 --- a/src/types/index.d.ts +++ b/src/types/index.d.ts @@ -17,19 +17,5 @@ export * from './core/events'; export * from './core/graph-div'; export * from './core/layout'; -// Components -export * from './components/colorbar'; -export * from './components/common'; -export * from './components/rangeselector'; -export * from './components/slider'; -export * from './components/updatemenu'; - -// Plot/trace types -export * from './plots/common'; -export * from './traces/box'; -export * from './traces/candlestick'; -export * from './traces/common'; -export * from './traces/ohlc'; -export * from './traces/pie'; -export * from './traces/sankey'; -export * from './traces/violin'; +// Schema-generated types (traces + layout + shared interfaces) +export * from './generated/schema'; diff --git a/src/types/lib/common.d.ts b/src/types/lib/common.d.ts index 8f19b23a47f..01f9cfc8a57 100644 --- a/src/types/lib/common.d.ts +++ b/src/types/lib/common.d.ts @@ -32,19 +32,19 @@ export type ColorScale = string | string[] | Array<[number, string]>; export type Dash = 'solid' | 'dot' | 'dash' | 'longdash' | 'dashdot' | 'longdashdot'; export type Calendar = - | 'gregorian' | 'chinese' | 'coptic' | 'discworld' | 'ethiopian' + | 'gregorian' | 'hebrew' | 'islamic' + | 'jalali' | 'julian' | 'mayan' | 'nanakshahi' | 'nepali' | 'persian' - | 'jalali' | 'taiwan' | 'thai' | 'ummalqura'; @@ -91,53 +91,3 @@ export type ErrorBar = Partial & // --------------------------------------------------------------------------- export type PatternShape = '' | '/' | '\\' | 'x' | '-' | '|' | '+' | '.'; - -export interface Pattern { - shape?: PatternShape | PatternShape[] | undefined; - path?: string | undefined; - fillmode?: 'replace' | 'overlay' | undefined; - bgcolor?: string | string[] | undefined; - fgcolor?: string | string[] | undefined; - fgopacity?: number | undefined; - size?: number | number[] | undefined; - solidity?: number | number[] | undefined; -} - -// --------------------------------------------------------------------------- -// Internal / lib utility types -// --------------------------------------------------------------------------- - -export type CoerceFn = (attr: string, dflt?: any) => any; - -export type PropertyPath = string | string[]; - -export type DateFormat = string; - -export type NumericArray = number[] | Float32Array | Float64Array; - -export type Arrayable = T | T[]; - -export interface Rect { - left: number; - right: number; - top: number; - bottom: number; - width?: number; - height?: number; -} - -export interface Point2D { - x: number; - y: number; -} - -export interface Point3D extends Point2D { - z: number; -} - -export interface RGBAColor { - r: number; - g: number; - b: number; - a: number; -} diff --git a/src/types/traces/common.d.ts b/src/types/traces/common.d.ts deleted file mode 100644 index 6662d045236..00000000000 --- a/src/types/traces/common.d.ts +++ /dev/null @@ -1,71 +0,0 @@ -/** - * Common trace-related types - * - * Types shared across different trace modules - */ - -import type { FullData } from '../core/data'; - -/** - * Calculated trace data (internal) - */ -export interface CalcData { - i?: number; - t?: any; - trace?: FullData; - x?: any; - y?: any; - z?: any; - [key: string]: any; -} - -/** - * Trace module interface - */ -export interface TraceModule { - name: string; - categories: string[]; - animatable?: boolean; - meta?: any; - - // Lifecycle methods - calc?: (gd: any, trace: any) => CalcData[]; - plot?: (gd: any, subplot: any, cdata: any, transitionOpts?: any) => void; - style?: (gd: any, cd?: any) => void; - hoverPoints?: (pointData: any, xval: any, yval: any, hovermode: any) => any; - selectPoints?: (searchInfo: any, selectionTester: any) => any; - eventData?: (out: any, pt: any, trace: any, cd: any, pointNumber: any) => any; - - // Other methods - crossTraceCalc?: (gd: any, plotinfo: any, traces: any[]) => void; - arraysToCalcdata?: (cd: any, trace: any) => void; -} - -/** - * Trace defaults function signature - */ -export type TraceDefaultsFn = (traceIn: any, traceOut: any, defaultColor: string, layout: any) => void; - -/** - * Trace attributes structure - */ -export interface TraceAttributes { - [key: string]: AttributeDefinition; -} - -/** - * Attribute definition - */ -export interface AttributeDefinition { - arrayOk?: boolean; - description?: string; - dflt?: any; - editType?: string; - flags?: string[]; - max?: number; - min?: number; - role?: string; - valType?: string; - values?: any[]; - [key: string]: any; -} diff --git a/tasks/schema.mjs b/tasks/schema.mjs index 704302d5b30..3c8c9786488 100644 --- a/tasks/schema.mjs +++ b/tasks/schema.mjs @@ -3,6 +3,7 @@ import fs from 'fs'; import path from 'path'; import { localDevConfig } from '../esbuild-config.js'; +import { generateSchemaTypes } from './generate_schema_types.mjs'; import constants from './util/constants.js'; import plotlyNode from './util/plotly_node.mjs'; @@ -70,3 +71,35 @@ await build(localDevConfig); // output plot-schema JSON makeSchema(pathToPlotly, pathToSchema); + +// generate TypeScript types from the schema (traces + layout) +const schema = JSON.parse(fs.readFileSync(pathToSchema, 'utf-8')); +const pathToGeneratedTypes = path.join(constants.pathToSrc, 'types/generated/schema.d.ts'); +const exportedNames = generateSchemaTypes(schema, pathToGeneratedTypes); + +// Warn about generated interfaces not re-exported from the public API. +// Types listed here are intentionally internal-only and won't trigger warnings. +const PUBLIC_API_EXEMPTIONS = new Set([ + 'AutoRangeOptions', + 'ErrorY', + 'LegendGroupTitle', + 'Lighting', +]); + +const pathToPublicTypes = path.join(constants.pathToLib, 'index.d.ts'); +const publicTypes = fs.readFileSync(pathToPublicTypes, 'utf-8'); +const missing = [...exportedNames].filter((name) => !publicTypes.includes(name)).sort(); +if (missing.length > 0) { + const unexempted = missing.filter((name) => !PUBLIC_API_EXEMPTIONS.has(name)); + const exempted = missing.filter((name) => PUBLIC_API_EXEMPTIONS.has(name)); + + if (unexempted.length > 0) { + console.warn(`\n⚠ ${unexempted.length} generated type(s) not re-exported in lib/index.d.ts:`); + for (const name of unexempted) console.warn(` - ${name}`); + } + if (exempted.length > 0) { + console.log(`\n ${exempted.length} exempted (intentionally internal-only):`); + for (const name of exempted) console.log(` - ${name}`); + } + console.log(''); +} From c345826510b0681ec68bf289a12c37ce6b075ca0 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Thu, 14 May 2026 17:22:49 -0600 Subject: [PATCH 060/241] Move internal types to separate files --- src/types/core/data.d.ts | 35 ---- src/types/core/data.internal.d.ts | 40 ++++ ...graph-div.d.ts => graph-div.internal.d.ts} | 8 +- src/types/core/layout.d.ts | 173 ----------------- src/types/core/layout.internal.d.ts | 179 ++++++++++++++++++ src/types/index.d.ts | 8 +- 6 files changed, 230 insertions(+), 213 deletions(-) create mode 100644 src/types/core/data.internal.d.ts rename src/types/core/{graph-div.d.ts => graph-div.internal.d.ts} (80%) create mode 100644 src/types/core/layout.internal.d.ts diff --git a/src/types/core/data.d.ts b/src/types/core/data.d.ts index 6522f6411d1..aaae205cea6 100644 --- a/src/types/core/data.d.ts +++ b/src/types/core/data.d.ts @@ -454,38 +454,3 @@ export type Data = | Partial | Partial; -// --------------------------------------------------------------------------- -// Internal types (not in public API) -// --------------------------------------------------------------------------- - -/** - * Calculated trace data (internal) - */ -export interface CalcData { - i?: number; - t?: any; - trace?: FullData; - x?: any; - y?: any; - z?: any; - [key: string]: any; -} - -/** - * Fully processed plot data with defaults applied (internal use) - */ -export interface FullData extends Partial { - _arrayAttrs?: string[]; - _expandedIndex?: number; - _extremes?: Record; - _fullInput?: any; - _hasCalcTransform?: boolean; - _indexToPoints?: { [key: number]: number[] }; - _input?: any; - _length?: number; - _meta?: { meta?: any; layout?: { meta?: any } }; - _module?: any; - _template?: any; - index?: number; - [key: string]: any; -} diff --git a/src/types/core/data.internal.d.ts b/src/types/core/data.internal.d.ts new file mode 100644 index 00000000000..08dc916ea40 --- /dev/null +++ b/src/types/core/data.internal.d.ts @@ -0,0 +1,40 @@ +/** + * Internal data/trace types (not in public API) + * + * These are runtime-resolved versions of trace data with internal state + * properties. For public trace types, see data.d.ts. + */ + +import type { PlotData } from './data'; + +/** + * Calculated trace data (internal) + */ +export interface CalcData { + i?: number; + t?: any; + trace?: FullData; + x?: any; + y?: any; + z?: any; + [key: string]: any; +} + +/** + * Fully processed plot data with defaults applied (internal use) + */ +export interface FullData extends Partial { + _arrayAttrs?: string[]; + _expandedIndex?: number; + _extremes?: Record; + _fullInput?: any; + _hasCalcTransform?: boolean; + _indexToPoints?: { [key: number]: number[] }; + _input?: any; + _length?: number; + _meta?: { meta?: any; layout?: { meta?: any } }; + _module?: any; + _template?: any; + index?: number; + [key: string]: any; +} diff --git a/src/types/core/graph-div.d.ts b/src/types/core/graph-div.internal.d.ts similarity index 80% rename from src/types/core/graph-div.d.ts rename to src/types/core/graph-div.internal.d.ts index 25f7fcdcddb..67ac87f2776 100644 --- a/src/types/core/graph-div.d.ts +++ b/src/types/core/graph-div.internal.d.ts @@ -1,14 +1,16 @@ /** - * Core GraphDiv types + * Internal GraphDiv types (not in public API) * * The `gd` parameter appears throughout the codebase and represents * the graph div element with plotly-specific properties attached. * Commonly referred to as `gd` in the codebase. */ +import type { Layout } from '../generated/schema'; import type { Config } from './config'; -import type { CalcData, FullData, PlotData } from './data'; -import type { FullLayout, Layout } from './layout'; +import type { PlotData } from './data'; +import type { CalcData, FullData } from './data.internal'; +import type { FullLayout } from './layout.internal'; /** * Graph context containing environment info (mirrors Config for internal storage) diff --git a/src/types/core/layout.d.ts b/src/types/core/layout.d.ts index f08ffa8496d..de52759b3bf 100644 --- a/src/types/core/layout.d.ts +++ b/src/types/core/layout.d.ts @@ -8,9 +8,7 @@ * literal utilities, and deprecated aliases. */ -import type { Locale, Selection } from 'd3'; import type { Layout } from '../generated/schema'; -import type { Color } from '../lib/common'; import type { PlotData, PlotType } from './data'; import type { PlotlyHTMLElement } from './events'; @@ -114,174 +112,3 @@ export interface Template { export type { MapLayout as Mapbox } from '../generated/schema'; -// --------------------------------------------------------------------------- -// Internal types (not in public API types) -// --------------------------------------------------------------------------- - -/** - * Fully processed layout with all defaults applied (internal use) - */ -export interface FullLayout extends Layout { - // Core internal state - _basePlotModules?: any[]; - _calcInverseTransform?: (gd: any) => void; - _initialAutoSizeIsDone?: boolean; - _invTransform?: any; - _legends?: string[]; - _meta?: { meta?: any; layout?: { meta?: any } }; - _modules?: any[]; - _plots?: { [key: string]: any }; - _pushmargin?: { [key: string]: any }; - _size?: LayoutSize; - _subplots?: SubplotInfo; - _template?: any; - _uid?: string; - - // SVG layers - _bgLayer?: Selection; - _cartesianlayer?: Selection; - _clips?: Selection; - _container?: Selection; - _defs?: Selection; - _dragCover?: Selection; - _draggers?: Selection; - _funnelarealayer?: Selection; - _geolayer?: Selection; - _glcanvas?: Selection; - _glcontainer?: Selection; - _glimages?: Selection; - _iciclelayer?: Selection; - _imageLowerLayer?: Selection; - _imageUpperLayer?: Selection; - _indicatorlayer?: Selection; - _infolayer?: Selection; - _menulayer?: Selection; - _modebardiv?: Selection; - _paper?: Selection; - _paperdiv?: Selection; - _pielayer?: Selection; - _polarlayer?: Selection; - _selectionLayer?: Selection; - _shapeLowerLayer?: Selection; - _shapeUpperLayer?: Selection; - _smithlayer?: Selection; - _sunburstlayer?: Selection; - _ternarylayer?: Selection; - _topdefs?: Selection; - _topclips?: Selection; - _toppaper?: Selection; - _treemaplayer?: Selection; - _zoomlayer?: Selection; - - // Hover state - _hoverlayer?: Selection; - _hoverpaper?: Selection; - _hoversubplot?: string | null; - _lasthover?: Selection | null; - _rehover?: (() => void) | null; - - // Modebar - _modeBar?: any; - - // Cross-trace computation state - _alignmentOpts?: Record; - _axisConstraintGroups?: any[]; - _axisMatchGroups?: any[]; - _colorAxes?: Record; - _dataTemplate?: Record; - _extraFormat?: Record; - _firstScatter?: Record; - _funnelareacolormap?: Record; - _histogramBinOpts?: Record; - _iciclecolormap?: Record; - _numBoxes?: number; - _numViolins?: number; - _piecolormap?: Record; - _rangeSliderData?: any[]; - _requestRangeslider?: Record; - _roundFnOpts?: Record; - _scatterStackOpts?: Record; - _splomAxes?: { x: Record; y: Record }; - _splomGrid?: any; - _splomGridDflt?: Record; - _splomScenes?: Record; - _splomSubplots?: Record; - _sunburstcolormap?: Record; - _transformModules?: any[]; - _treemapcolormap?: Record; - _violinScaleGroupStats?: Record; - _visibleModules?: any[]; - - // Scalar flags and values - _cartesianSpikesEnabled?: 'on' | 'off'; - _currentFrame?: string; - _d3locale?: Locale; - _dataLength?: number; - _enablescrollzoom?: boolean; - _dfltTitle?: Record; - _guiEditing?: boolean; - _has?: (category: string) => boolean; - _hasOnlyLargeSploms?: boolean; - _insideTickLabelsUpdaterange?: Record; - _invScaleX?: number; - _invScaleY?: number; - _lastBBox?: DOMRect; - _mapboxAccessToken?: string; - _pushmarginIds?: Record; - _redrawFromAutoMarginCount?: number; - _replotting?: boolean; - _reservedMargin?: Record; - _shouldCreateBgLayer?: boolean; - _skipDefaults?: boolean; - _traceUids?: string[]; - _traceWord?: string; - _zindices?: number[]; - - // Interaction state - _activeSelectionIndex?: number; - _activeShapeIndex?: number; - _deactivateSelection?: (gd: any) => void; - _deactivateShape?: (gd: any) => void; - _deselect?: any; - _hColorbarMoveCBTitle?: number; - _hColorbarMoveTitle?: number; - _lastSelectedSubplot?: string; - _noEmitSelectedAtStart?: boolean; - _outlining?: boolean; - _preGUI?: Record; - _previousSelections?: any[]; - _redrag?: (() => void) | null; - _reselect?: (() => void) | null; - _tracePreGUI?: Record>; - - [key: string]: any; -} - -/** - * Layout size information (internal) - */ -export interface LayoutSize { - b: number; - h: number; - l: number; - p: number; - r: number; - t: number; - w: number; -} - -/** - * Subplot information (internal) - */ -export interface SubplotInfo { - [key: string]: string[] | undefined; - cartesian?: string[]; - geo?: string[]; - gl2d?: string[]; - map?: string[]; - mapbox?: string[]; - pie?: string[]; - polar?: string[]; - sankey?: string[]; - ternary?: string[]; -} diff --git a/src/types/core/layout.internal.d.ts b/src/types/core/layout.internal.d.ts new file mode 100644 index 00000000000..6916feea4c4 --- /dev/null +++ b/src/types/core/layout.internal.d.ts @@ -0,0 +1,179 @@ +/** + * Internal layout types (not in public API) + * + * These are runtime-resolved versions of layout with internal state + * properties. For public layout types, see layout.d.ts and + * generated/schema.d.ts. + */ + +import type { Locale, Selection } from 'd3'; +import type { Layout } from '../generated/schema'; +import type { Color } from '../lib/common'; + +/** + * Fully processed layout with all defaults applied (internal use) + */ +export interface FullLayout extends Layout { + // Core internal state + _basePlotModules?: any[]; + _calcInverseTransform?: (gd: any) => void; + _initialAutoSizeIsDone?: boolean; + _invTransform?: any; + _legends?: string[]; + _meta?: { meta?: any; layout?: { meta?: any } }; + _modules?: any[]; + _plots?: { [key: string]: any }; + _pushmargin?: { [key: string]: any }; + _size?: LayoutSize; + _subplots?: SubplotInfo; + _template?: any; + _uid?: string; + + // SVG layers + _bgLayer?: Selection; + _cartesianlayer?: Selection; + _clips?: Selection; + _container?: Selection; + _defs?: Selection; + _dragCover?: Selection; + _draggers?: Selection; + _funnelarealayer?: Selection; + _geolayer?: Selection; + _glcanvas?: Selection; + _glcontainer?: Selection; + _glimages?: Selection; + _iciclelayer?: Selection; + _imageLowerLayer?: Selection; + _imageUpperLayer?: Selection; + _indicatorlayer?: Selection; + _infolayer?: Selection; + _menulayer?: Selection; + _modebardiv?: Selection; + _paper?: Selection; + _paperdiv?: Selection; + _pielayer?: Selection; + _polarlayer?: Selection; + _selectionLayer?: Selection; + _shapeLowerLayer?: Selection; + _shapeUpperLayer?: Selection; + _smithlayer?: Selection; + _sunburstlayer?: Selection; + _ternarylayer?: Selection; + _topdefs?: Selection; + _topclips?: Selection; + _toppaper?: Selection; + _treemaplayer?: Selection; + _zoomlayer?: Selection; + + // Hover state + _hoverlayer?: Selection; + _hoverpaper?: Selection; + _hoversubplot?: string | null; + _lasthover?: Selection | null; + _rehover?: (() => void) | null; + + // Modebar + _modeBar?: any; + + // Cross-trace computation state + _alignmentOpts?: Record; + _axisConstraintGroups?: any[]; + _axisMatchGroups?: any[]; + _colorAxes?: Record; + _dataTemplate?: Record; + _extraFormat?: Record; + _firstScatter?: Record; + _funnelareacolormap?: Record; + _histogramBinOpts?: Record; + _iciclecolormap?: Record; + _numBoxes?: number; + _numViolins?: number; + _piecolormap?: Record; + _rangeSliderData?: any[]; + _requestRangeslider?: Record; + _roundFnOpts?: Record; + _scatterStackOpts?: Record; + _splomAxes?: { x: Record; y: Record }; + _splomGrid?: any; + _splomGridDflt?: Record; + _splomScenes?: Record; + _splomSubplots?: Record; + _sunburstcolormap?: Record; + _transformModules?: any[]; + _treemapcolormap?: Record; + _violinScaleGroupStats?: Record; + _visibleModules?: any[]; + + // Scalar flags and values + _cartesianSpikesEnabled?: 'on' | 'off'; + _currentFrame?: string; + _d3locale?: Locale; + _dataLength?: number; + _enablescrollzoom?: boolean; + _dfltTitle?: Record; + _guiEditing?: boolean; + _has?: (category: string) => boolean; + _hasOnlyLargeSploms?: boolean; + _insideTickLabelsUpdaterange?: Record; + _invScaleX?: number; + _invScaleY?: number; + _lastBBox?: DOMRect; + _mapboxAccessToken?: string; + _pushmarginIds?: Record; + _redrawFromAutoMarginCount?: number; + _replotting?: boolean; + _reservedMargin?: Record; + _shouldCreateBgLayer?: boolean; + _skipDefaults?: boolean; + _traceUids?: string[]; + _traceWord?: string; + _zindices?: number[]; + + // Interaction state + _activeSelectionIndex?: number; + _activeShapeIndex?: number; + _deactivateSelection?: (gd: any) => void; + _deactivateShape?: (gd: any) => void; + _deselect?: any; + _hColorbarMoveCBTitle?: number; + _hColorbarMoveTitle?: number; + _lastSelectedSubplot?: string; + _noEmitSelectedAtStart?: boolean; + _outlining?: boolean; + _preGUI?: Record; + _previousSelections?: any[]; + _redrag?: (() => void) | null; + _reselect?: (() => void) | null; + _tracePreGUI?: Record>; + + [key: string]: any; +} + +/** + * Layout size information (internal) + */ +export interface LayoutSize { + b: number; + h: number; + l: number; + p: number; + r: number; + t: number; + w: number; +} + +/** + * Subplot information (internal) + */ +export interface SubplotInfo { + [key: string]: string[] | undefined; + cartesian?: string[]; + geo?: string[]; + gl2d?: string[]; + map?: string[]; + mapbox?: string[]; + pie?: string[]; + polar?: string[]; + sankey?: string[]; + ternary?: string[]; +} diff --git a/src/types/index.d.ts b/src/types/index.d.ts index 6e436cc6eb6..59bafd7196d 100644 --- a/src/types/index.d.ts +++ b/src/types/index.d.ts @@ -8,14 +8,18 @@ // Library utilities export * from './lib/common'; -// Core types +// Core types (public) export * from './core/animation'; export * from './core/api'; export * from './core/config'; export * from './core/data'; export * from './core/events'; -export * from './core/graph-div'; export * from './core/layout'; +// Core types (internal — not re-exported in lib/index.d.ts) +export * from './core/data.internal'; +export * from './core/graph-div.internal'; +export * from './core/layout.internal'; + // Schema-generated types (traces + layout + shared interfaces) export * from './generated/schema'; From 36ba55ca0de1c530dd43344ef3907284cc96a0e2 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Thu, 14 May 2026 17:24:50 -0600 Subject: [PATCH 061/241] Tweak public API exemptions logic --- tasks/schema.mjs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tasks/schema.mjs b/tasks/schema.mjs index 3c8c9786488..f151078c326 100644 --- a/tasks/schema.mjs +++ b/tasks/schema.mjs @@ -84,11 +84,15 @@ const PUBLIC_API_EXEMPTIONS = new Set([ 'ErrorY', 'LegendGroupTitle', 'Lighting', + 'Line', + 'Marker', + 'Stream', ]); const pathToPublicTypes = path.join(constants.pathToLib, 'index.d.ts'); const publicTypes = fs.readFileSync(pathToPublicTypes, 'utf-8'); -const missing = [...exportedNames].filter((name) => !publicTypes.includes(name)).sort(); +// Use word-boundary regex to avoid substring false positives (e.g. "Stream" matching "StreamtubeData") +const missing = [...exportedNames].filter((name) => !new RegExp(`\\b${name}\\b`).test(publicTypes)).sort(); if (missing.length > 0) { const unexempted = missing.filter((name) => !PUBLIC_API_EXEMPTIONS.has(name)); const exempted = missing.filter((name) => PUBLIC_API_EXEMPTIONS.has(name)); From 3dbf5345645ec0e4eef3fe57caf44e811ca46953 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Thu, 14 May 2026 17:27:41 -0600 Subject: [PATCH 062/241] Update TS docs --- src/types/ARCHITECTURE.md | 162 +++++++--------- src/types/CONVERTING_ATTRIBUTES.md | 180 +++++------------- src/types/GENERATOR.md | 294 +++++++++-------------------- src/types/README.md | 24 ++- src/types/SETUP.md | 18 +- 5 files changed, 223 insertions(+), 455 deletions(-) diff --git a/src/types/ARCHITECTURE.md b/src/types/ARCHITECTURE.md index 81922868fe9..9c54639a126 100644 --- a/src/types/ARCHITECTURE.md +++ b/src/types/ARCHITECTURE.md @@ -23,39 +23,30 @@ How TypeScript types are organized in plotly.js. │ Hand-written types │ │ Generated types │ │ src/types/core/*.d.ts │ │ src/types/generated/... │ │ src/types/lib/*.d.ts │ │ │ -│ src/types/components/ │ │ Derived from attributes.ts │ -│ src/types/traces/ │ │ via AttrsToType │ -│ src/types/plots/ │ │ │ +│ │ │ schema.d.ts — from schema │ +│ │ │ (traces + layout + shared) │ └──────────────────────────┘ └────────────────────────────────┘ ``` `lib/index.d.ts` deliberately omits internal types (`FullLayout`, -`GraphDiv`, the `AttributeMap`/`AttrsToType` machinery, `*Internal` shapes, -the `TraceModule` lifecycle interface, etc.) so consumers see a clean -public API. The internal types remain accessible to plotly.js's own code -through the `src/types/` re-exports. +`FullData`, `GraphDiv`, the `AttributeMap` machinery, etc.) so consumers +see a clean public API. Internal types live in `.internal.d.ts` files and +remain accessible to plotly.js's own code through the `src/types/` +re-exports. The split: - **Generated types** are the single source of truth for everything in - Plotly's attribute schema. Layout, traces, components — anything you - configure when calling `Plotly.newPlot`. + Plotly's attribute schema. + - **`src/types/generated/schema.d.ts`** — all 49 trace data interfaces, + layout component interfaces (LayoutAxis, Legend, Scene, Annotation, + Shape, Slider, UpdateMenu, etc.), the Layout interface itself, plus + shared sub-interfaces (Font, ColorBar, HoverLabel, etc.). + Generated from `plot-schema.json` by `tasks/generate_schema_types.mjs`. + Run `npm run schema` to regenerate. - **Hand-written types** cover everything the schema doesn't describe: events, internal runtime state, public API function signatures, - utility types. - -When an `attributes.ts` file is converted, its generated type **replaces** -the corresponding hand-written one. The hand-written file gets a re-export: - -```ts -// src/types/core/layout.d.ts -// `ModeBar` is generated from src/components/modebar/attributes.ts. -export type { ModeBar } from '../generated/components/modebar'; -``` - -Consumers don't notice — externally they still write -`import { type ModeBar } from 'plotly.js'`. Internal callers still -import from the same path inside `src/types/`. + utility types, behavioral types (ModeBarButton, Icon, etc.). ## Public vs. private (the underscore convention) @@ -69,9 +60,9 @@ This split is reflected in the types: | User-facing | Internal | Where defined | |---|---|---| -| `Layout` | `FullLayout` | Both hand-written today; `Layout` will be generated once its attributes files are converted | -| `PlotData` | `FullData` | Same pattern | -| (n/a) | `GraphDiv` (the `gd` param) | Hand-written — DOM element with `_fullLayout`, `_fullData`, `calcdata`, etc. | +| `Layout` | `FullLayout` | `Layout` in `generated/schema.d.ts`; `FullLayout` in `core/layout.internal.d.ts` | +| `PlotData` | `FullData` | `PlotData` in `core/data.d.ts`; `FullData` in `core/data.internal.d.ts` | +| (n/a) | `GraphDiv` (the `gd` param) | `core/graph-div.internal.d.ts` — DOM element with `_fullLayout`, `_fullData`, `calcdata`, etc. | Internal types use index signatures (`[key: string]: any`) liberally to allow incremental migration without blocking. As `_` properties get @@ -81,78 +72,67 @@ discovered during JS→TS conversion, add them to `FullLayout`/`FullData`/etc. ``` src/types/ -├── index.d.ts # main re-export hub -├── core/ # public + internal types for the core API -│ ├── layout.d.ts # Layout, FullLayout, axis/annotation/shape types -│ ├── data.d.ts # PlotData, FullData, marker/line types -│ ├── config.d.ts # Config, Edits, ToImgopts -│ ├── events.d.ts # PlotMouseEvent, PlotlyHTMLElement, etc. -│ ├── api.d.ts # public API function signatures (newPlot, etc.) -│ ├── animation.d.ts # Frame, Transition, AnimationOpts -│ ├── template.d.ts # Template, ValidateTemplateResult -│ └── graph-div.d.ts # GraphDiv (gd parameter), GraphContext -│ -├── components/ # public types for layout components -│ ├── colorbar.d.ts -│ ├── slider.d.ts -│ ├── updatemenu.d.ts -│ ├── rangeselector.d.ts -│ └── common.d.ts -│ -├── traces/ # per-trace public types -│ ├── box.d.ts # BoxPlotData, BoxPlotMarker -│ ├── pie.d.ts # PieData, PieMarker, ... -│ ├── sankey.d.ts -│ ├── violin.d.ts -│ ├── ohlc.d.ts -│ ├── candlestick.d.ts -│ └── common.d.ts # internal TraceModule lifecycle +├── index.d.ts # main re-export hub (public + internal) +├── core/ # hand-written types for the core API +│ ├── api.d.ts # public API function signatures (newPlot, etc.) +│ ├── animation.d.ts # Frame, Transition, AnimationOpts +│ ├── config.d.ts # Config, Edits, ToImgopts +│ ├── data.d.ts # PlotData, PlotMarker, ScatterLine, Data union +│ ├── data.internal.d.ts # CalcData, FullData +│ ├── events.d.ts # PlotMouseEvent, PlotlyHTMLElement, etc. +│ ├── graph-div.internal.d.ts # GraphDiv, GraphContext +│ ├── layout.d.ts # AxisName, ModeBar behavioral types, Template +│ └── layout.internal.d.ts # FullLayout, LayoutSize, SubplotInfo │ -├── plots/ # internal subplot types (PlotInfo, etc.) -│ └── common.d.ts +├── lib/ # primitives + the schema-extraction machinery +│ ├── common.d.ts # Color, Datum, TypedArray, MarkerSymbol, ... +│ └── attributes.d.ts # AttributeMap, AttrInfo (compile-time validation) │ -├── lib/ # primitives + the schema-extraction machinery -│ ├── common.d.ts # Color, Datum, TypedArray, MarkerSymbol, ... -│ └── attributes.d.ts # AttributeMap, AttrsToType, ValTypeToTS -│ -└── generated/ # output of `npm run gen:types` - ├── index.d.ts # auto-generated re-export aggregator - ├── components/ - │ └── modebar.d.ts # one .d.ts per converted attributes.ts - └── (more as conversion proceeds) +└── generated/ # machine-generated types + └── schema.d.ts # all traces + layout + shared types (from plot-schema.json) ``` -## How the generation works +### The `.internal.d.ts` convention + +Files with the `.internal.d.ts` suffix contain types that are **not** part of the +public API (not re-exported in `lib/index.d.ts`). These are internal runtime types +used only within plotly.js itself — `FullLayout`, `FullData`, `GraphDiv`, etc. + +If a file has no `.internal` suffix, all its exports are public. + +## How schema type generation works ``` -src/components/modebar/attributes.ts - │ - │ const attributes = { ... } as const satisfies AttributeMap; - │ export type ModeBarAttributes = AttrsToType; - │ export default attributes; +test/plot-schema.json (runtime schema with all 49 traces + full layout) │ ▼ -[ tasks/generate_types.mjs walks attributes.ts files ] +[ tasks/generate_schema_types.mjs ] │ - │ Uses TS Compiler API: checker.typeToTypeNode(checker.getDeclaredTypeOfSymbol(...)) - │ Then ts.createPrinter().printNode() flattens the mapped type + │ 1. Fingerprint every container subtree across ALL traces AND layout + │ 2. Extract shared interfaces (Font, ColorBar, HoverLabel, etc.) + │ 3. Emit per-trace interfaces referencing shared types + │ 4. Emit layout component interfaces (LayoutAxis, Legend, Scene, etc.) + │ 5. Emit the Layout interface with subplot index signatures │ ▼ -src/types/generated/components/modebar.d.ts - │ import type { Color } from '../../lib/common'; - │ - │ export interface ModeBar { - │ orientation?: 'v' | 'h'; - │ bgcolor?: Color; - │ ... - │ } +src/types/generated/schema.d.ts + │ export interface Font { ... } + │ export interface ColorBar { ... } + │ export interface ScatterData { ... } + │ export interface BarData { ... } + │ export interface LayoutAxis { ... } + │ export interface Legend { ... } + │ export interface Layout { ... } + │ // ... 49 traces + layout types + shared interfaces │ ▼ -src/types/core/layout.d.ts re-exports `ModeBar` from generated/. -src/types/index.d.ts re-exports from layout.d.ts (internal). -lib/index.d.ts re-exports `ModeBar` to consumers (public). +src/types/index.d.ts re-exports all types (internal). +lib/index.d.ts re-exports public types to consumers. ``` +Regenerate with `npm run schema` (which rebuilds plot-schema.json +and then runs the schema type generator). + ## What's hand-written and stays that way The schema doesn't describe: @@ -162,12 +142,12 @@ The schema doesn't describe: - **Public API function signatures** — `Plotly.newPlot`, `relayout`, `restyle`, etc. Live in `src/types/core/api.d.ts`. - **Internal runtime state** — `FullLayout._modules`, `GraphDiv._fullData`, - `_calcInverseTransform`, etc. Live alongside the public types but in - separate `Full*`/`*Internal` interfaces. -- **Utility types the mapped type bottoms out on** — `Color`, `Datum`, - `TypedArray`, `MarkerSymbol`, `Pattern`, `ErrorBar`, etc. Live in - `src/types/lib/common.d.ts`. The generator emits `import("../../lib/common").Color` - references that resolve to these hand-written primitives. + `_calcInverseTransform`, etc. Live in `.internal.d.ts` files in `src/types/core/`. +- **Behavioral types** — `ModeBarButton`, `ModeBarDefaultButtons`, `Icon`, + `ButtonClickEvent`, `Template`. These describe runtime behavior patterns + not captured in the attribute schema. +- **Utility types** — `Color`, `Datum`, `TypedArray`, `MarkerSymbol`, etc. + Live in `src/types/lib/common.d.ts`. The generator references these types. ## Adding internal properties @@ -175,7 +155,7 @@ When converting a JS file to TS and discovering an internal property like `fullLayout._someFlag`, add it to the corresponding `Full*` interface: ```ts -// src/types/core/layout.d.ts +// src/types/core/layout.internal.d.ts export interface FullLayout extends Layout { _modules?: any[]; _someFlag?: boolean; // add new ones here @@ -191,4 +171,4 @@ type errors. - [SETUP.md](SETUP.md) — toolchain and npm scripts - [CONVERTING_ATTRIBUTES.md](CONVERTING_ATTRIBUTES.md) — the conversion recipe -- [GENERATOR.md](GENERATOR.md) — internals of `tasks/generate_types.mjs` +- [GENERATOR.md](GENERATOR.md) — internals of the type generators diff --git a/src/types/CONVERTING_ATTRIBUTES.md b/src/types/CONVERTING_ATTRIBUTES.md index d501ea2f6a5..4fa36766ef7 100644 --- a/src/types/CONVERTING_ATTRIBUTES.md +++ b/src/types/CONVERTING_ATTRIBUTES.md @@ -9,8 +9,9 @@ source of truth for both the runtime schema and the public TypeScript type. Today, attribute metadata lives in `src/.../attributes.js` files and the matching TypeScript types live separately in `src/types/`. They drift. -After conversion, the `attributes.ts` file IS the schema, and the TypeScript -type is *derived from it* via a mapped type. Both agree by construction. +After conversion, the `attributes.ts` file is validated against `AttributeMap` +at compile time, catching structural errors and typos before they reach the +runtime schema. ## Recipe @@ -24,9 +25,7 @@ Rename `src//attributes.js` → `src//attributes.ts`. At the top of the file, add: ```ts -'use strict'; - -import type { AttributeMap, AttrsToType } from '../../types/lib/attributes'; +import type { AttributeMap } from '../../types/lib/attributes'; // (adjust the relative path so it points at src/types/lib/attributes) ``` @@ -35,38 +34,20 @@ import type { AttributeMap, AttrsToType } from '../../types/lib/attributes'; Replace `module.exports = { ... };` with: ```ts -/** - * @generates ModeBar - */ const attributes = { // ... existing attribute definitions go here } as const satisfies AttributeMap; -export type ModeBarAttributes = AttrsToType; - export default attributes; ``` -Three things to notice: - -- **`@generates ModeBar`** — declares the public type name. The `.d.ts` - generator uses this to name the output. Naming conventions: - - | Category | Convention | Examples | - |---|---|---| - | Components | PascalCase of the concept | `ModeBar`, `ColorBar`, `Slider`, `RangeSelector` | - | Traces | `Data` | `PieData`, `SankeyData`, `CandlestickData` | - | Layout | `Layout` | | +Two things to notice: - If the generated type needs hand-written refinements, use a `*Generated` - suffix instead (e.g. `@generates ModeBarGenerated`) so the hand-written - file can extend it under the original public name. See - [Layering hand-written refinements](#layering-hand-written-refinements). - **`as const satisfies AttributeMap`** — `as const` preserves literal types like `values: ['v', 'h']`; `satisfies AttributeMap` validates structure without widening. - **`export default`** — runtime consumers (`require('./attributes').default`) - get the object. Co-existing `export type` exposes the derived TS type. + get the object. ### 3. Fix array literals and string literals @@ -98,43 +79,19 @@ var attributes = require('./attributes').default; ESBuild handles the runtime; this update is just for the JS-level CommonJS interop pattern the project already uses for converted files. -### 5. Run the type generator - -```bash -npm run gen:types -``` - -This walks all `attributes.ts` files, resolves their derived types via the -TypeScript Compiler API, writes flattened declaration files into -`src/types/generated/`, and formats the output with biome (so single -quotes, line widths, and other style choices match the rest of the -codebase). +### 5. Verify the schema generator covers the type -### 6. Replace the hand-written type in `src/types/` +Consumer-facing types for traces and layout components are generated from +`plot-schema.json` by `tasks/generate_schema_types.mjs`. After converting +an `attributes.ts` file, verify the corresponding type already exists in +`src/types/generated/schema.d.ts`. If it does, no further action is needed +for the type — the conversion's main value is type-checking the source. -Find the corresponding hand-written type (likely in -`src/types/core/layout.d.ts`, `src/types/core/data.d.ts`, or a component -file). Replace its `interface` or `type` definition with a re-export: +If the schema-generated type is missing properties that the hand-written +type had, those properties are likely runtime-only internal state and +should be added to the corresponding `Full*` interface instead. -```ts -// Before -export interface ModeBar { - activecolor: Color; - add: ModeBarDefaultButtons | ModeBarDefaultButtons[]; - // ... -} - -// After -// `ModeBar` is generated from src/components/modebar/attributes.ts. -export type { ModeBar } from '../generated/components/modebar'; -``` - -If the hand-written type was richer than the schema (e.g. a narrowed union -where the schema says `string`, or extra non-schema fields), don't silently -lose those — see -[Layering hand-written refinements](#layering-hand-written-refinements). - -### 7. Verify +### 6. Verify ```bash npm run typecheck # zero errors @@ -148,7 +105,7 @@ If the schema diff is non-empty, the attribute object's runtime shape changed somewhere — most often a missed `as const` or a typo. Compare character-by-character with the original `.js` file. -### 8. Commit +### 7. Commit ```bash git add src//attributes.ts \ @@ -166,10 +123,14 @@ See [`src/components/modebar/attributes.ts`](../components/modebar/attributes.ts for the canonical example. The full conversion changed: - `src/components/modebar/attributes.js` → `src/components/modebar/attributes.ts` - (with `as const satisfies AttributeMap` and `@generates ModeBar`) + (with `as const satisfies AttributeMap`) - `.default` added to `require('./attributes')` in `index.js` and `defaults.js` -- The hand-written `ModeBar` interface in `src/types/core/layout.d.ts` was - replaced with a re-export from the generated file + +Note: Consumer-facing types for modebar (and all other layout components) +are now generated from `plot-schema.json` by `tasks/generate_schema_types.mjs`, +not from the individual `attributes.ts` files. The `attributes.ts` conversion +still adds value by type-checking the source attribute definitions against +`AttributeMap`. Schema output verified byte-identical (2547 bytes) before and after the conversion. @@ -191,61 +152,30 @@ If you find yourself converting one of these, stop and ask. Almost certainly the hand-written one was wrong, narrowed for ergonomics, or based on an older schema. Order of operations: -1. **Compare**. Print both: `npm run gen:types`, then look at the generated - `.d.ts` next to the hand-written one. +1. **Compare**. Look at the schema-generated type in `schema.d.ts` next to + the hand-written one. 2. **If schema is too loose** (e.g. `string` where the hand-written type had a typed union of valid values), check whether the schema's `values` array could be expanded. The schema is the authoritative truth — fix it there. 3. **If the hand-written type had additional fields** not in the schema, they're probably internal/runtime-only and should stay hand-written - (move them to a separate `*Internal.d.ts` file or a parallel interface). + (add them to the corresponding `.internal.d.ts` file, e.g. `FullLayout` + in `layout.internal.d.ts`). 4. **If the schema has fields the hand-written type lacked**, that's a free coverage win — accept the generated type. -## Layering hand-written refinements +## Schema-generated types -When the generated type is complete, a simple re-export is all you need -(see step 6). But when the hand-written type was richer than the schema — -narrower unions, extra non-schema fields, etc. — use the `*Generated` -suffix pattern so the hand-written file can extend the generated type. +All 49 trace data interfaces, layout component interfaces, and the Layout +interface itself are generated from `plot-schema.json` by +`tasks/generate_schema_types.mjs` (run via `npm run schema`). Individual +trace and layout `attributes.js` files do **not** need to be converted +for their types to appear in the public API — the schema generator +covers them automatically. -First, change the `@generates` tag to use a `*Generated` suffix: - -```ts -// src/components/modebar/attributes.ts -/** - * @generates ModeBarGenerated - */ -``` - -Then in the hand-written file, extend it under the original public name. -The `extends` brings all schema-derived fields along; the body only -contains what the schema can't express: - -```ts -// src/types/core/layout.d.ts -import type { ModeBarGenerated } from '../generated/components/modebar'; - -export interface ModeBar extends ModeBarGenerated { - // Schema says `string`; narrow to the known button set. - remove: ModeBarDefaultButtons | ModeBarDefaultButtons[]; - - // Not in the schema — runtime-only convenience field. - _buttons?: HTMLElement[]; -} -``` - -Consumers still write `import type { ModeBar } from 'plotly.js'` — the -`*Generated` intermediate is an internal detail. - -**When to refine vs. when to fix the schema:** - -- If a field's type is too wide (e.g. `string` instead of a union), prefer - adding `values: [...]` to the schema so the generated type is correct by - construction and the simple re-export path works. -- If the refinement is about non-schema concerns (runtime-only fields, - narrowing for DX, overloaded method signatures), use the `*Generated` - extend pattern. +Converting an `attributes.js` file to TypeScript is still valuable because +it type-checks the source definitions against `AttributeMap`, catching +typos and structural errors at compile time. ## Order of conversion (for parallel work) @@ -262,38 +192,14 @@ Pick from this priority list. Lower-numbered items are smaller / simpler. > but actually just exports color constants. It doesn't follow the schema > pattern and shouldn't be converted with this recipe. -### Tier 2: small traces -- `src/traces/scatterpolargl/attributes.js` -- `src/traces/histogram2dcontour/attributes.js` -- `src/traces/candlestick/attributes.js` -- `src/traces/funnelarea/attributes.js` -- `src/traces/barpolar/attributes.js` - -### Tier 3: medium components and traces +### Tier 2: medium components - Sliders, updatemenus, rangeselector, colorbar attribute files -- `scatter3d`, `scattergl`, `surface`, `mesh3d` -### Tier 4: large traces -- `scatter` (the big one — many modes and shared subobjects) -- `bar`, `histogram`, `box`, `violin` +### Tier 3: layout - Layout itself -### Tier 5: shared subobject attributes -- `font_attributes`, `hover_label_attributes`, etc. -- These are imported by many trace files; conversion needs care so the - imported types remain compatible. - ## Working in parallel -Multiple converters can work on different attribute files in parallel. The -generator is idempotent — every run produces the same output for the same -inputs — so merge conflicts are rare and limited to: - -- `src/types/generated/index.d.ts` (the aggregator) — auto-resolved by - rerunning `npm run gen:types` after merge -- The hand-written type files when removing types — manual conflict if two - converters touch the same file - -Coordinate: claim a file in PR description before starting. Use Tier 1 -files for first-time converters to learn the recipe; reserve Tier 4 for -experienced contributors. +Multiple converters can work on different attribute files in parallel. +Merge conflicts are rare and limited to the hand-written type files when +removing types — manual conflict if two converters touch the same file. diff --git a/src/types/GENERATOR.md b/src/types/GENERATOR.md index 7e6660168e3..9a764da1ed9 100644 --- a/src/types/GENERATOR.md +++ b/src/types/GENERATOR.md @@ -1,188 +1,91 @@ # Type Generator Internals -`tasks/generate_types.mjs` walks `src/**/attributes.ts` files and emits -flat `.d.ts` declarations into `src/types/generated/`. This document -describes how it works for maintainers who want to extend or debug it. +The **schema-based generator** (`tasks/generate_schema_types.mjs`) +reads `plot-schema.json` and emits all 49 trace data interfaces, +layout component interfaces, the Layout interface, and shared +sub-interfaces into `src/types/generated/schema.d.ts`. +Run via `npm run schema`. -## Pipeline +## How it works -``` -1. Discover find all src/**/attributes.ts files -2. Parse create a TS Program with the project's tsconfig -3. Extract for each file, find `export type *Attributes = ...` -4. Resolve use TypeChecker to compute the concrete type -5. Print use ts.createPrinter to render members -6. Rewrite turn absolute import("...") paths into relative -7. Hoist inline import("...").Name → top-of-file `import type` -8. Decide object-literal type → `interface`, otherwise `type` alias -9. Emit write per-file .d.ts files + an aggregator index -10. Format `biome format --write` (chained from npm script, not the script itself) -``` - -## Key TypeScript Compiler API calls - -The trick to flattening a mapped type like `AttrsToType` -is to convert the resolved `Type` back to a `TypeNode` (an AST node), then -print that node: - -```js -const sym = checker.getSymbolAtLocation(typeAliasDecl.name); -const type = checker.getDeclaredTypeOfSymbol(sym); - -const typeNode = checker.typeToTypeNode(type, typeAliasDecl, nodeBuilderFlags); -const text = printer.printNode(ts.EmitHint.Unspecified, typeNode, dummySourceFile); -``` - -Without `typeToTypeNode`, you'd get `checker.typeToString` output which is -single-line and harder to format. - -## Node builder flags - -```js -ts.NodeBuilderFlags.NoTruncation -| ts.NodeBuilderFlags.MultilineObjectLiterals -| ts.NodeBuilderFlags.WriteClassExpressionAsTypeLiteral -| ts.NodeBuilderFlags.UseFullyQualifiedType -| ts.NodeBuilderFlags.InTypeAlias -``` - -- **NoTruncation** — print full union/intersection without `...` ellipsis -- **MultilineObjectLiterals** — one property per line -- **UseFullyQualifiedType** — emit `import("/abs/path").TypeName` for - external references, which we then rewrite to relative paths -- **InTypeAlias** — render as if writing a type alias body - -## The `@generates` marker +`tasks/generate_schema_types.mjs` is called by `tasks/schema.mjs` after +writing `plot-schema.json`. It walks both `schema.traces` and +`schema.layout.layoutAttributes`, mapping each attribute's `valType` +metadata to TypeScript types. -Each `attributes.ts` declares its canonical public type name via JSDoc: - -```ts -/** - * @generates ModeBar - */ -const attributes = { ... } as const satisfies AttributeMap; -export type ModeBarAttributes = AttrsToType; -``` +### Phase 1: Fingerprinting -The generator regex-greps each source file for `@generates X` and uses `X` -as the canonical name. This lets the generated type take a different name -from the local `*Attributes` alias, which matters because the public API -type names (`ModeBar`, `Slider`, `Layout`) follow a different convention -than the per-attribute-file naming. +The generator fingerprints every container subtree across **all traces +and layout** simultaneously. Two containers are considered identical when +their sorted keys and leaf `valType`s produce the same fingerprint string. +Containers that appear in 2+ locations become shared interfaces (Font, +ColorBar, HoverLabel, etc.). -## Import path rewriting +### Phase 2: Shared interface extraction -`UseFullyQualifiedType` produces output like -`import("/abs/path/src/types/lib/common").Color`. The generator rewrites -these to relative paths from the output file's directory: +Shared containers are extracted as named interfaces. The generator uses +override maps to ensure correct PascalCase naming: ```js -text = text.replace(/import\("([^"]+)"\)/g, (_, absPath) => { - let rel = path.relative(outputDir, absPath); - if (!rel.startsWith('.')) rel = './' + rel; - rel = rel.replace(/\.d\.ts$|\.ts$/, ''); - return `import("${rel}")`; -}); +const SHARED_NAME_OVERRIDES = new Map([ + ['colorbar', 'ColorBar'], + ['hoverlabel', 'HoverLabel'], + ['tickformatstops', 'TickFormatStops'], + ['stream', 'Stream'], + // ... +]); ``` -Result: `import("../../lib/common").Color` — portable across machines. +Containers listed in `SHARED_NAME_OVERRIDES` bypass the `MIN_PROPERTIES` +threshold, so small containers like `Stream` (2 properties, 49 occurrences) +can be explicitly opted in as shared interfaces. -## Import hoisting +### Phase 3: Trace interfaces -Inline `import("path").Name` references are valid TypeScript but read -poorly. After path rewriting, the generator collects every reference and -emits a single `import type` block at the top of the file: +Each trace gets an interface (`ScatterData`, `BarData`, etc.) whose +properties reference shared types where fingerprints match. -```ts -// Before hoisting (TS Compiler default): -export interface ModeBar { - bgcolor?: import("../../lib/common").Color; - color?: import("../../lib/common").Color; -} - -// After hoisting: -import type { Color } from '../../lib/common'; - -export interface ModeBar { - bgcolor?: Color; - color?: Color; -} -``` - -The hoister deduplicates names, groups by path, and sorts alphabetically -within each import statement. A self-reference (where the imported name -matches the type being declared) is left as inline `import("...")` to -avoid colliding with the local declaration. +### Phase 4: Layout types -## interface vs type alias - -When the resolved type is an object shape (`TypeLiteralNode`), the -generator emits an `interface`: - -```ts -export interface ModeBar { ... } -``` +Layout generation handles three categories: -For unions, intersections, tuples, or primitives — anything that isn't -an object literal — it falls back to a `type` alias: +- **Subplot containers** (`_isSubplotObj` flag) — grouped by target name + and merged into supersets. E.g., `xaxis` and `yaxis` both map to + `LayoutAxis` with the union of all their keys. +- **Linked-to-array containers** (detected via `{items: {name: {...}}}`) + — extracted as named interfaces (Annotation, Shape, Slider, etc.). + In the Layout interface they appear as arrays: `annotations?: Annotation[]`. +- **Regular containers** — inlined or referenced as shared types. +The Layout interface includes subplot index signatures: ```ts -export type ScatterMode = 'lines' | 'markers' | 'lines+markers'; +[key: `xaxis${number}`]: LayoutAxis; +[key: `yaxis${number}`]: LayoutAxis; +// etc. ``` -Interfaces give better error messages, support declaration merging, and -match the project's hand-written types. The discrimination happens via -`ts.isTypeLiteralNode(typeNode)` before printing. - -## Why generated types are mutable - -The source attribute objects use `as const` for literal-type preservation, -which makes `typeof attributes` deeply `Readonly<...>`. To prevent that -`readonly` from leaking into the user-facing type, `AttrsToType` uses -the `-readonly` modifier in its mapped type: - -```ts -export type AttrsToType = { - -readonly [K in keyof T as K extends ReservedKey ? never : K]?: ... -}; -``` +### JSDoc descriptions -So consumers get plain mutable properties even though the source is -locked-in literal types. This happens at the type level — the generator -itself doesn't manipulate readonly modifiers. +Every property with a `description` field in the schema gets a single-line +JSDoc comment in the output. Plotly's `*emphasis*` markers are preserved +as-is (they render as italics in IDE hover tooltips). Any `*/` sequences +in descriptions are escaped to prevent prematurely closing the comment. -## Output structure +### Output structure ``` -src/types/generated/ -├── index.d.ts # aggregator (re-exports each canonical name) -└── components/ - └── modebar.d.ts # one file per converted attribute file -``` - -The output directory mirrors the source: `src/components/modebar/attributes.ts` -becomes `src/types/generated/components/modebar.d.ts`. - -## Aggregator - -The aggregator (`src/types/generated/index.d.ts`) is a one-line-per-type -re-export: - -```ts -export type { ModeBar } from './components/modebar'; -export type { Slider } from './components/sliders'; -// ... one line per canonical name, sorted alphabetically +src/types/generated/schema.d.ts +├── Shared interfaces (Font, FontArray, ColorBar, HoverLabel, etc.) +├── Trace interfaces (ScatterData, BarData, ... — 49 traces) +├── Layout component interfaces (LayoutAxis, Legend, Scene, Annotation, etc.) +└── Layout interface (references all of the above) ``` -It exists so consumers can `import type { ModeBar, Slider } from '../types/generated'` -without knowing the file structure. In practice, the hand-written -`src/types/core/*.d.ts` files re-export from the per-file generated -declarations directly, so the aggregator is mostly for ad-hoc consumers. +Regenerate with `npm run schema`. -## valType → TypeScript +## valType → TypeScript mapping -The leaf-type mapping lives in `src/types/lib/attributes.d.ts` as the -`ValTypeToTS` mapped type. Summary: +Summary: | valType | TS produced | |---|---| @@ -205,15 +108,17 @@ The leaf-type mapping lives in `src/types/lib/attributes.d.ts` as the Reserved keys stripped from the output: `editType`, `role`, `_isLinkedToArray`, `_isSubplotObj`, `_arrayAttrRegexps`, `_deprecated`. -## Extending the generator +## Extending the schema generator -### Adding a new valType +### Adding a new layout container -1. Add an interface to `src/types/lib/attributes.d.ts` (e.g. `interface FooAttr extends BaseAttrInfo { valType: 'foo'; ... }`) -2. Add it to the `AttrInfo` union -3. Add a branch to `ValTypeToTS` mapping it to the desired TS type -4. Run `npm run gen:types` to verify output -5. Run `npm run typecheck` to ensure no regressions +If a new subplot type or array container is added to the schema: + +1. Add an entry to `LAYOUT_CONTAINER_NAMES` (for subplots) or + `LAYOUT_ARRAY_NAMES` (for linked-to-array containers) in + `generate_schema_types.mjs` +2. Run `npm run schema` to regenerate +3. Run `npm run typecheck` to ensure no regressions ### Improving flaglist support @@ -227,61 +132,34 @@ type Combinations = ... // template literal magic This is doable but produces large unions (15+ members for `hoverinfo`). Consider whether the type-check cost is worth the autocomplete win. -### Supporting nested attribute objects with metadata - -Some attribute files have shapes like: - -```ts -{ - role: 'object', - editType: 'calc', - foo: { valType: 'number', ... }, - bar: { valType: 'string', ... }, -} -``` - -The mapped type's reserved-key stripping handles `role`/`editType` at the -top level via `ReservedKey`. If a new metadata key gets introduced, -add it to the `ReservedKey` union in `src/types/lib/attributes.d.ts`. - ## Debugging -If the generator emits `unknown` for a type that should be concrete: +If the schema generator emits unexpected types: ```bash -node tasks/generate_types.mjs # see the generated output -npm run typecheck # see what tsc thinks the type is +npm run schema # regenerate and inspect schema.d.ts +npm run typecheck # see what tsc thinks ``` -Inspect with the TS Compiler API directly: +Inspect the schema directly: ```js -node -e ' -const ts = require("typescript"); -const program = ts.createProgram(["path/to/attributes.ts"], { /* tsconfig opts */ }); -const checker = program.getTypeChecker(); -// ... probe symbols and types -' +const s = require("test/plot-schema.json"); +console.log(s.layout.layoutAttributes.xaxis); // inspect layout attrs +console.log(s.traces.scatter.attributes); // inspect trace attrs ``` -The `formatDeclaration` function in `tasks/generate_types.mjs` can be -invoked on any `TypeAliasDeclaration` to see what would be emitted. - -## CI integration - -`npm run gen:types:check` runs the generator and then -`git diff --exit-code src/types/generated/`. If the working tree differs, -exit code 1 — meaning a developer changed an attributes.ts file but -didn't commit the regenerated declarations. - -This is wired into `.github/workflows/ci.yml` as the `generated-types-drift` -job, alongside a sibling `typecheck` job. Both gate on the root -`install-and-cibuild` job and run in parallel on every PR. +## Public API re-export check -A drift failure typically means one of: +After generation, `tasks/schema.mjs` compares the exported interface +names against `lib/index.d.ts`. Any generated type not re-exported +triggers a warning in the console output. Types that are intentionally +internal-only are listed in `PUBLIC_API_EXEMPTIONS` and shown separately +as exempted rather than warned about. -- An `attributes.ts` file was edited without re-running `npm run gen:types` -- Biome's formatter config changed and existing generated files would re-format -- The generator itself changed in a way that affects existing output +## CI integration -All three are legitimate signals worth investigating. +`npm run schema-typegen-diff-check` runs the generator and then verifies the output +hasn't drifted via `git diff --exit-code`. If the working tree differs, +exit code 1 — meaning a developer changed the schema but didn't commit +the regenerated declarations. diff --git a/src/types/README.md b/src/types/README.md index 699aca3cd0c..02c4800986f 100644 --- a/src/types/README.md +++ b/src/types/README.md @@ -13,26 +13,34 @@ This directory documents the TypeScript conversion in progress. - TypeScript build infrastructure: ✅ done - Public type surface in `src/types/`: ✅ done -- `AttributeMap` / `AttrsToType` machinery: ✅ done -- `.d.ts` generator (TS Compiler API + biome format): ✅ done +- `AttributeMap` validation machinery: ✅ done +- **Schema-based type generator**: ✅ done — all 49 trace types + layout + shared interfaces - Consumer entry point (`lib/index.d.ts`, wired via `package.json#types`): ✅ done -- CI gates (`typecheck` + `generated-types-drift`): ✅ done +- CI gates (`typecheck` + `schema-typegen-diff-check`): ✅ done - First attribute file converted (modebar): ✅ done -- Conversion of remaining attribute files: 🚧 in progress +- Conversion of remaining component attribute files: 🚧 in progress The published consumer surface lives at [`lib/index.d.ts`](../../lib/index.d.ts). This `src/types/` directory is the authoring location — internal types live here, public types are re-exported through `lib/index.d.ts` to consumers. +## Generated types + +All 49 trace data interfaces, layout component interfaces (LayoutAxis, +Legend, Scene, Annotation, Shape, Slider, UpdateMenu, etc.), the Layout +interface itself, and shared sub-interfaces (Font, ColorBar, HoverLabel, +etc.) are **auto-generated from `plot-schema.json`** by +`tasks/generate_schema_types.mjs`. Run `npm run schema` to regenerate. +The output lives at `src/types/generated/schema.d.ts`. + ## How to help -If you want to convert an attribute file: +If you want to convert a component attribute file: 1. Read [CONVERTING_ATTRIBUTES.md](CONVERTING_ATTRIBUTES.md) -2. Pick a file from the priority list at the bottom of that doc +2. Pick a component file from the priority list at the bottom of that doc 3. Claim it in a PR description 4. Follow the recipe 5. Submit a PR -Each conversion is a single self-contained commit and takes 10-60 minutes -depending on file size. +Each conversion is a single self-contained commit. diff --git a/src/types/SETUP.md b/src/types/SETUP.md index e2875dc4918..f8540e7f23b 100644 --- a/src/types/SETUP.md +++ b/src/types/SETUP.md @@ -5,7 +5,7 @@ Quick reference for the TypeScript toolchain in plotly.js. ## What's installed - **TypeScript** (`typescript ^5.9.3`) — type checker only, never emits JS -- **ts-node** (`^10.9.2`) — runs TS scripts directly (build helpers, generator) +- **ts-node** (`^10.9.2`) — runs TS scripts directly (build helpers) - **@types/node**, **@types/d3** — third-party type definitions - esbuild handles `.ts` natively for bundling — no plugins needed @@ -29,12 +29,10 @@ Both target ES2016. Strict mode is currently **off** (`strict: false`) for incre ```bash npm run typecheck # tsc --noEmit, errors reported, no output -npm run typecheck:watch # incremental rechecking on change +npm run typecheck-watch # incremental rechecking on change -npm run gen:types # walk attributes.ts files → src/types/generated/, then biome format -npm run gen:types:check # generate then `git diff --exit-code` (CI drift check) - -npm run schema # rebuild test/plot-schema.json from source attributes +npm run schema # rebuild test/plot-schema.json + regenerate types +npm run schema-typegen-diff-check # regenerate + verify no uncommitted drift in schema.d.ts npm run bundle # esbuild → dist/plotly.js npm run build # full production build ``` @@ -45,7 +43,7 @@ npm run build # full production build ```bash # Terminal 1 -npm run typecheck:watch +npm run typecheck-watch # Terminal 2 — bundle/dev server npm start @@ -55,15 +53,14 @@ npm start ```bash npm run typecheck -npm run gen:types # if you converted an attribute file npm run schema # if attribute files changed ``` **CI** runs both checks as separate jobs (see `.github/workflows/ci.yml`): ```bash -npm run typecheck # validates the type system is internally consistent -npm run gen:types:check # fails if generated types are stale or unformatted +npm run typecheck # validates the type system is internally consistent +npm run schema-typegen-diff-check # verifies generated types match the schema ``` ## How esbuild handles `.ts` @@ -89,4 +86,3 @@ For a codebase of ~750 source files: | `tsc --noEmit` cold | ~2-5s | | `tsc --noEmit --watch` incremental | ~100ms | | esbuild full bundle | ~450ms | -| `npm run gen:types` | <1s for current converted set | From 994f32ffea29daf2949ce25eb1d4a6ef6de73d38 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Thu, 14 May 2026 17:28:46 -0600 Subject: [PATCH 063/241] Update npm scripts --- package.json | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index a11ed3f616e..d82dcc62bf0 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,7 @@ "extra-bundles": "node tasks/extra_bundles.mjs", "locales": "node tasks/locales.js", "schema": "node tasks/schema.mjs", + "schema-typegen-diff-check": "npm run schema && git diff --exit-code src/types/generated/", "stats": "node tasks/stats.js", "find-strings": "node tasks/find_locale_strings.js", "preprocess": "ts-node tasks/preprocess.js", @@ -42,9 +43,7 @@ "lint": "npx @biomejs/biome lint", "lint-fix": "npx @biomejs/biome format ./test/image/mocks --write; npx @biomejs/biome lint --write || true", "typecheck": "tsc --noEmit", - "typecheck:watch": "tsc --noEmit --watch", - "gen:types": "node tasks/generate_types.mjs && npx @biomejs/biome format --write src/types/generated", - "gen:types:check": "npm run gen:types && git diff --exit-code src/types/generated/", + "typecheck-watch": "tsc --noEmit --watch", "pretest": "node tasks/pretest.js", "test-jasmine": "karma start test/jasmine/karma.conf.js", "test-mock": "node tasks/test_mock.mjs", From 737935c2a2a9e53f2786852777c43abe7af33762 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Thu, 14 May 2026 17:29:15 -0600 Subject: [PATCH 064/241] Update CI to check for generated types diff --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index aeedff98cf4..5b6b0ba9932 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -589,8 +589,8 @@ jobs: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: ./.github/actions/setup-workspace - - name: Verify generated types are in sync with attribute sources - run: npm run gen:types:check + - name: Verify generated types are in sync with schema + run: npm run schema-typegen-diff-check # ============================================================ # Standalone jobs (no dependencies on install-and-cibuild) From 9716705bc8dbc090fecf741cddfd0700df15111f Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Thu, 14 May 2026 17:39:02 -0600 Subject: [PATCH 065/241] Update schema types with latest attributes --- src/types/generated/schema.d.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/types/generated/schema.d.ts b/src/types/generated/schema.d.ts index e7d7f9162ee..d52216da953 100644 --- a/src/types/generated/schema.d.ts +++ b/src/types/generated/schema.d.ts @@ -8925,6 +8925,7 @@ export interface Layout { showarrow?: boolean; }; hovermode?: 'x' | 'y' | 'closest' | false | 'x unified' | 'y unified'; + hoversort?: 'trace' | 'value descending' | 'value ascending'; hoversubplots?: 'single' | 'overlaying' | 'axis'; images?: LayoutImage[]; legend?: Legend; From 1c0f706f073e8a5c7549803192641482dd9ebd04 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Mon, 18 May 2026 12:02:15 -0600 Subject: [PATCH 066/241] Fix description reference and update schema/types --- src/traces/ohlc/attributes.js | 2 +- src/types/generated/schema.d.ts | 2 +- test/plot-schema.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/traces/ohlc/attributes.js b/src/traces/ohlc/attributes.js index df0f3e100ee..cfc5199f10c 100644 --- a/src/traces/ohlc/attributes.js +++ b/src/traces/ohlc/attributes.js @@ -65,7 +65,7 @@ module.exports = { line: { width: extendFlat({}, lineAttrs.width, { description: [ - lineAttrs.width, + lineAttrs.width.description, 'Note that this style setting can also be set per', 'direction via `increasing.line.width` and', '`decreasing.line.width`.' diff --git a/src/types/generated/schema.d.ts b/src/types/generated/schema.d.ts index d52216da953..0fa27236a77 100644 --- a/src/types/generated/schema.d.ts +++ b/src/types/generated/schema.d.ts @@ -3588,7 +3588,7 @@ export interface OhlcData { line?: { /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). Note that this style setting can also be set per direction via `increasing.line.dash` and `decreasing.line.dash`. */ dash?: Dash; - /** [object Object] Note that this style setting can also be set per direction via `increasing.line.width` and `decreasing.line.width`. */ + /** Sets the line width (in px). Note that this style setting can also be set per direction via `increasing.line.width` and `decreasing.line.width`. */ width?: number; }; /** Sets the low values. */ diff --git a/test/plot-schema.json b/test/plot-schema.json index 318c0578d92..f049205f62e 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -53190,7 +53190,7 @@ "editType": "style", "role": "object", "width": { - "description": "[object Object] Note that this style setting can also be set per direction via `increasing.line.width` and `decreasing.line.width`.", + "description": "Sets the line width (in px). Note that this style setting can also be set per direction via `increasing.line.width` and `decreasing.line.width`.", "dflt": 2, "editType": "style", "min": 0, From 0c08ea7d0c09fff59a052355f63c56797a1f8b16 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Mon, 18 May 2026 12:33:42 -0600 Subject: [PATCH 067/241] Fix typos in attributes/schema/types --- src/components/colorbar/attributes.js | 2 +- src/constants/axis_placeable_objects.js | 2 +- src/plots/cartesian/axis_format_attributes.js | 2 +- src/plots/cartesian/layout_attributes.js | 2 +- src/plots/domain.js | 6 +- src/traces/candlestick/index.js | 2 +- src/traces/histogram/bin_attributes.js | 2 +- src/traces/mesh3d/attributes.js | 4 +- src/traces/ohlc/index.js | 2 +- src/traces/scattercarpet/attributes.js | 4 +- src/traces/scatterternary/attributes.js | 4 +- src/traces/treemap/attributes.js | 2 +- src/traces/violin/attributes.js | 2 +- src/traces/violin/index.js | 2 +- src/types/generated/schema.d.ts | 176 +++++----- test/plot-schema.json | 324 +++++++++--------- 16 files changed, 269 insertions(+), 269 deletions(-) diff --git a/src/components/colorbar/attributes.js b/src/components/colorbar/attributes.js index 3a562b516a0..4063ab3ce73 100644 --- a/src/components/colorbar/attributes.js +++ b/src/components/colorbar/attributes.js @@ -223,7 +223,7 @@ module.exports = overrideAll({ description: [ 'Determines the location of color bar\'s title', 'with respect to the color bar.', - 'Defaults to *top* when `orientation` if *v* and ', + 'Defaults to *top* when `orientation` if *v* and', 'defaults to *right* when `orientation` if *h*.', ].join(' ') } diff --git a/src/constants/axis_placeable_objects.js b/src/constants/axis_placeable_objects.js index 090a23d3766..66bffdd77fa 100644 --- a/src/constants/axis_placeable_objects.js +++ b/src/constants/axis_placeable_objects.js @@ -13,7 +13,7 @@ module.exports = { '*paper*, but refers to the distance in fractions of the domain', 'length from the', lower, 'of the domain of that axis: e.g.,', '*' + axisname + '2 domain* refers to the domain of the second', - axisname, ' axis and a', axisname, 'position of 0.5 refers to the', + axisname, 'axis and a', axisname, 'position of 0.5 refers to the', 'point between the', lower, 'and the', upper, 'of the domain of the', 'second', axisname, 'axis.', ].join(' '); diff --git a/src/plots/cartesian/axis_format_attributes.js b/src/plots/cartesian/axis_format_attributes.js index d64a495a20f..ed1a4cfeb8e 100644 --- a/src/plots/cartesian/axis_format_attributes.js +++ b/src/plots/cartesian/axis_format_attributes.js @@ -23,7 +23,7 @@ function axisHoverFormat(x, noDates) { function descriptionOnlyNumbers(label, x) { return [ - 'Sets the ' + label + ' formatting rule' + (x ? 'for `' + x + '` ' : ''), + 'Sets the ' + label + ' formatting rule' + (x ? ' for `' + x + '`' : ''), 'using d3 formatting mini-languages', 'which are very similar to those in Python. For numbers, see: ' + FORMAT_LINK + '.' ].join(' '); diff --git a/src/plots/cartesian/layout_attributes.js b/src/plots/cartesian/layout_attributes.js index 25b60cfa28e..91417573d23 100644 --- a/src/plots/cartesian/layout_attributes.js +++ b/src/plots/cartesian/layout_attributes.js @@ -821,7 +821,7 @@ module.exports = { editType: 'none', description: [ 'Determines the drawing mode for the spike line', - 'If *toaxis*, the line is drawn from the data point to the axis the ', + 'If *toaxis*, the line is drawn from the data point to the axis the', 'series is plotted on.', 'If *across*, the line is drawn across the entire plot area, and', diff --git a/src/plots/domain.js b/src/plots/domain.js index 55a63c53e11..0897e70cae2 100644 --- a/src/plots/domain.js +++ b/src/plots/domain.js @@ -38,7 +38,7 @@ exports.attributes = function(opts, extra) { }; var namePart = opts.name ? opts.name + ' ' : ''; - var contPart = opts.trace ? 'trace ' : 'subplot '; + var contPart = opts.trace ? 'trace' : 'subplot'; var descPart = extra.description ? ' ' + extra.description : ''; var out = { @@ -47,7 +47,7 @@ exports.attributes = function(opts, extra) { 'Sets the horizontal domain of this ', namePart, contPart, - '(in plot fraction).', + ' (in plot fraction).', descPart ].join('') }), @@ -56,7 +56,7 @@ exports.attributes = function(opts, extra) { 'Sets the vertical domain of this ', namePart, contPart, - '(in plot fraction).', + ' (in plot fraction).', descPart ].join('') }), diff --git a/src/traces/candlestick/index.js b/src/traces/candlestick/index.js index fd621fbd66a..6a729f596b5 100644 --- a/src/traces/candlestick/index.js +++ b/src/traces/candlestick/index.js @@ -13,7 +13,7 @@ module.exports = { 'The boxes represent the spread between the `open` and `close` values and', 'the lines represent the spread between the `low` and `high` values', - 'Sample points where the close value is higher (lower) then the open', + 'Sample points where the close value is higher (lower) than the open', 'value are called increasing (decreasing).', 'By default, increasing candles are drawn in green whereas', diff --git a/src/traces/histogram/bin_attributes.js b/src/traces/histogram/bin_attributes.js index ab6e49b5835..a0714de6c10 100644 --- a/src/traces/histogram/bin_attributes.js +++ b/src/traces/histogram/bin_attributes.js @@ -53,7 +53,7 @@ module.exports = function makeBinAttrs(axLetter, match) { (match ? ( 'If multiple non-overlaying histograms share a subplot, ' + 'the first explicit `size` is used and all others discarded. ' + - 'If no `size` is provided,the sample data from all traces ' + + 'If no `size` is provided, the sample data from all traces ' + 'is combined to determine `size` as described above.' ) : '') ].join(' ') diff --git a/src/traces/mesh3d/attributes.js b/src/traces/mesh3d/attributes.js index 05da8a66992..5386ae9c911 100644 --- a/src/traces/mesh3d/attributes.js +++ b/src/traces/mesh3d/attributes.js @@ -51,7 +51,7 @@ module.exports = extendFlat( editType: 'calc', description: [ 'A vector of vertex indices, i.e. integer values between 0 and the length of the vertex', - 'vectors, representing the *second* vertex of a triangle. For example, `{i[m], j[m], k[m]}` ', + 'vectors, representing the *second* vertex of a triangle. For example, `{i[m], j[m], k[m]}`', 'together represent face m (triangle m) in the mesh, where `j[m] = n` points to the triplet', '`{x[n], y[n], z[n]}` in the vertex arrays. Therefore, each element in `j` represents a', 'point in space, which is the second vertex of a triangle.' @@ -63,7 +63,7 @@ module.exports = extendFlat( description: [ 'A vector of vertex indices, i.e. integer values between 0 and the length of the vertex', 'vectors, representing the *third* vertex of a triangle. For example, `{i[m], j[m], k[m]}`', - 'together represent face m (triangle m) in the mesh, where `k[m] = n` points to the triplet ', + 'together represent face m (triangle m) in the mesh, where `k[m] = n` points to the triplet', '`{x[n], y[n], z[n]}` in the vertex arrays. Therefore, each element in `k` represents a', 'point in space, which is the third vertex of a triangle.' ].join(' ') diff --git a/src/traces/ohlc/index.js b/src/traces/ohlc/index.js index dea32e3b0b8..3fb3220d94f 100644 --- a/src/traces/ohlc/index.js +++ b/src/traces/ohlc/index.js @@ -13,7 +13,7 @@ module.exports = { 'The tip of the lines represent the `low` and `high` values and', 'the horizontal segments represent the `open` and `close` values.', - 'Sample points where the close value is higher (lower) then the open', + 'Sample points where the close value is higher (lower) than the open', 'value are called increasing (decreasing).', 'By default, increasing items are drawn in green whereas', diff --git a/src/traces/scattercarpet/attributes.js b/src/traces/scattercarpet/attributes.js index ded94305d8a..e5ea51d82cd 100644 --- a/src/traces/scattercarpet/attributes.js +++ b/src/traces/scattercarpet/attributes.js @@ -38,7 +38,7 @@ module.exports = { 'Sets text elements associated with each (a,b) point.', 'If a single string, the same string appears over', 'all the data points.', - 'If an array of strings, the items are mapped in order to the', + 'If an array of strings, the items are mapped in order to', 'the data points in (a,b).', 'If trace `hoverinfo` contains a *text* flag and *hovertext* is not set,', 'these elements will be seen in the hover labels.' @@ -51,7 +51,7 @@ module.exports = { 'Sets hover text elements associated with each (a,b) point.', 'If a single string, the same string appears over', 'all the data points.', - 'If an array of strings, the items are mapped in order to the', + 'If an array of strings, the items are mapped in order to', 'the data points in (a,b).', 'To be seen, trace `hoverinfo` must contain a *text* flag.' ].join(' ') diff --git a/src/traces/scatterternary/attributes.js b/src/traces/scatterternary/attributes.js index c51c1abdfbb..315c04c4144 100644 --- a/src/traces/scatterternary/attributes.js +++ b/src/traces/scatterternary/attributes.js @@ -66,7 +66,7 @@ module.exports = { 'Sets text elements associated with each (a,b,c) point.', 'If a single string, the same string appears over', 'all the data points.', - 'If an array of strings, the items are mapped in order to the', + 'If an array of strings, the items are mapped in order to', 'the data points in (a,b,c).', 'If trace `hoverinfo` contains a *text* flag and *hovertext* is not set,', 'these elements will be seen in the hover labels.' @@ -79,7 +79,7 @@ module.exports = { 'Sets hover text elements associated with each (a,b,c) point.', 'If a single string, the same string appears over', 'all the data points.', - 'If an array of strings, the items are mapped in order to the', + 'If an array of strings, the items are mapped in order to', 'the data points in (a,b,c).', 'To be seen, trace `hoverinfo` must contain a *text* flag.' ].join(' ') diff --git a/src/traces/treemap/attributes.js b/src/traces/treemap/attributes.js index 8beb2f409c0..b076242b36c 100644 --- a/src/traces/treemap/attributes.js +++ b/src/traces/treemap/attributes.js @@ -155,7 +155,7 @@ module.exports = { values: ['top', 'bottom'], dflt: 'top', editType: 'plot', - description: ['Determines on which side of the the treemap the', '`pathbar` should be presented.'].join(' ') + description: ['Determines on which side of the treemap the', '`pathbar` should be presented.'].join(' ') }, edgeshape: { diff --git a/src/traces/violin/attributes.js b/src/traces/violin/attributes.js index fc1e1f35fb7..d0acc3e8af7 100644 --- a/src/traces/violin/attributes.js +++ b/src/traces/violin/attributes.js @@ -47,7 +47,7 @@ module.exports = { dflt: '', editType: 'calc', description: [ - 'If there are multiple violins that should be sized according to', + 'If there are multiple violins that should be sized according', 'to some metric (see `scalemode`), link them by providing a non-empty group id here', 'shared by every trace in the same group.', "If a violin's `width` is undefined, `scalegroup` will default to the trace's name.", diff --git a/src/traces/violin/index.js b/src/traces/violin/index.js index 93661d7d56b..85df000b88e 100644 --- a/src/traces/violin/index.js +++ b/src/traces/violin/index.js @@ -25,7 +25,7 @@ module.exports = { 'By supplying an `x` (`y`) array, one violin per distinct x (y) value', 'is drawn', 'If no `x` (`y`) {array} is provided, a single violin is drawn.', - 'That violin position is then positioned with', + 'That violin position is then positioned', 'with `name` or with `x0` (`y0`) if provided.' ].join(' ') } diff --git a/src/types/generated/schema.d.ts b/src/types/generated/schema.d.ts index 0fa27236a77..ec39a154780 100644 --- a/src/types/generated/schema.d.ts +++ b/src/types/generated/schema.d.ts @@ -23,9 +23,9 @@ export interface AutoRangeOptions { } export interface Domain { - /** If there is a layout grid, use the domain for this column in the grid for this funnelarea trace . */ + /** If there is a layout grid, use the domain for this column in the grid for this funnelarea trace. */ column?: number; - /** If there is a layout grid, use the domain for this row in the grid for this funnelarea trace . */ + /** If there is a layout grid, use the domain for this row in the grid for this funnelarea trace. */ row?: number; /** Sets the horizontal domain of this funnelarea trace (in plot fraction). */ x?: [number, number]; @@ -254,7 +254,7 @@ export interface ColorBar { title?: { /** Sets this color bar's title font. */ font?: Font; - /** Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*. */ + /** Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*. */ side?: 'right' | 'top' | 'bottom'; /** Sets the title of the color bar. */ text?: string; @@ -515,7 +515,7 @@ export interface BarData { xaxis?: string; /** Sets the calendar system to use with `x` date data. */ xcalendar?: Calendar; - /** Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ xperiod?: any; @@ -531,7 +531,7 @@ export interface BarData { yaxis?: string; /** Sets the calendar system to use with `y` date data. */ ycalendar?: Calendar; - /** Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ yhoverformat?: string; /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the y axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ yperiod?: any; @@ -806,7 +806,7 @@ export interface BoxData { xaxis?: string; /** Sets the calendar system to use with `x` date data. */ xcalendar?: Calendar; - /** Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ xperiod?: any; @@ -822,7 +822,7 @@ export interface BoxData { yaxis?: string; /** Sets the calendar system to use with `y` date data. */ ycalendar?: Calendar; - /** Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ yhoverformat?: string; /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the y axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ yperiod?: any; @@ -922,7 +922,7 @@ export interface CandlestickData { xaxis?: string; /** Sets the calendar system to use with `x` date data. */ xcalendar?: Calendar; - /** Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ xperiod?: any; @@ -932,7 +932,7 @@ export interface CandlestickData { xperiodalignment?: 'start' | 'middle' | 'end'; /** Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. */ yaxis?: string; - /** Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ yhoverformat?: string; /** Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. */ zorder?: number; @@ -1566,7 +1566,7 @@ export interface ConeData { type?: 'cone'; /** Sets the x components of the vector field. */ u?: Datum[] | TypedArray; - /** Sets the hover text formatting rulefor `u` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ + /** Sets the hover text formatting rule for `u` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ uhoverformat?: string; /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ uid?: string; @@ -1574,25 +1574,25 @@ export interface ConeData { uirevision?: any; /** Sets the y components of the vector field. */ v?: Datum[] | TypedArray; - /** Sets the hover text formatting rulefor `v` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ + /** Sets the hover text formatting rule for `v` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ vhoverformat?: string; /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ visible?: true | false | 'legendonly'; /** Sets the z components of the vector field. */ w?: Datum[] | TypedArray; - /** Sets the hover text formatting rulefor `w` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ + /** Sets the hover text formatting rule for `w` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ whoverformat?: string; /** Sets the x coordinates of the vector field and of the displayed cones. */ x?: Datum[] | TypedArray; - /** Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; /** Sets the y coordinates of the vector field and of the displayed cones. */ y?: Datum[] | TypedArray; - /** Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ yhoverformat?: string; /** Sets the z coordinates of the vector field and of the displayed cones. */ z?: Datum[] | TypedArray; - /** Sets the hover text formatting rulefor `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`. */ zhoverformat?: string; } @@ -1712,7 +1712,7 @@ export interface ContourData { xaxis?: string; /** Sets the calendar system to use with `x` date data. */ xcalendar?: Calendar; - /** Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ xperiod?: any; @@ -1730,7 +1730,7 @@ export interface ContourData { yaxis?: string; /** Sets the calendar system to use with `y` date data. */ ycalendar?: Calendar; - /** Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ yhoverformat?: string; /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the y axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ yperiod?: any; @@ -1744,7 +1744,7 @@ export interface ContourData { z?: Datum[] | TypedArray; /** Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. */ zauto?: boolean; - /** Sets the hover text formatting rulefor `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ + /** Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ zhoverformat?: string; /** Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well. */ zmax?: number; @@ -2152,7 +2152,7 @@ export interface FunnelData { x0?: any; /** Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. */ xaxis?: string; - /** Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ xperiod?: any; @@ -2166,7 +2166,7 @@ export interface FunnelData { y0?: any; /** Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. */ yaxis?: string; - /** Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ yhoverformat?: string; /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the y axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ yperiod?: any; @@ -2341,7 +2341,7 @@ export interface HeatmapData { xcalendar?: Calendar; /** Sets the horizontal gap (in pixels) between bricks. */ xgap?: number; - /** Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ xperiod?: any; @@ -2361,7 +2361,7 @@ export interface HeatmapData { ycalendar?: Calendar; /** Sets the vertical gap (in pixels) between bricks. */ ygap?: number; - /** Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ yhoverformat?: string; /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the y axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ yperiod?: any; @@ -2375,7 +2375,7 @@ export interface HeatmapData { z?: Datum[] | TypedArray; /** Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. */ zauto?: boolean; - /** Sets the hover text formatting rulefor `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ + /** Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ zhoverformat?: string; /** Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well. */ zmax?: number; @@ -2561,14 +2561,14 @@ export interface HistogramData { xbins?: { /** Sets the end value for the x axis bins. The last bin may not end exactly at this value, we increment the bin edge by `size` from `start` until we reach or exceed `end`. Defaults to the maximum data value. Like `start`, for dates use a date string, and for category data `end` is based on the category serial numbers. */ end?: any; - /** Sets the size of each x axis bin. Default behavior: If `nbinsx` is 0 or omitted, we choose a nice round bin size such that the number of bins is about the same as the typical number of samples in each bin. If `nbinsx` is provided, we choose a nice round bin size giving no more than that many bins. For date data, use milliseconds or *M* for months, as in `axis.dtick`. For category data, the number of categories to bin together (always defaults to 1). If multiple non-overlaying histograms share a subplot, the first explicit `size` is used and all others discarded. If no `size` is provided,the sample data from all traces is combined to determine `size` as described above. */ + /** Sets the size of each x axis bin. Default behavior: If `nbinsx` is 0 or omitted, we choose a nice round bin size such that the number of bins is about the same as the typical number of samples in each bin. If `nbinsx` is provided, we choose a nice round bin size giving no more than that many bins. For date data, use milliseconds or *M* for months, as in `axis.dtick`. For category data, the number of categories to bin together (always defaults to 1). If multiple non-overlaying histograms share a subplot, the first explicit `size` is used and all others discarded. If no `size` is provided, the sample data from all traces is combined to determine `size` as described above. */ size?: any; /** Sets the starting value for the x axis bins. Defaults to the minimum data value, shifted down if necessary to make nice round values and to remove ambiguous bin edges. For example, if most of the data is integers we shift the bin edges 0.5 down, so a `size` of 5 would have a default `start` of -0.5, so it is clear that 0-4 are in the first bin, 5-9 in the second, but continuous data gets a start of 0 and bins [0,5), [5,10) etc. Dates behave similarly, and `start` should be a date string. For category data, `start` is based on the category serial numbers, and defaults to -0.5. If multiple non-overlaying histograms share a subplot, the first explicit `start` is used exactly and all others are shifted down (if necessary) to differ from that one by an integer number of bins. */ start?: any; }; /** Sets the calendar system to use with `x` date data. */ xcalendar?: Calendar; - /** Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; /** Sets the sample data to be binned on the y axis. */ y?: Datum[] | TypedArray; @@ -2577,14 +2577,14 @@ export interface HistogramData { ybins?: { /** Sets the end value for the y axis bins. The last bin may not end exactly at this value, we increment the bin edge by `size` from `start` until we reach or exceed `end`. Defaults to the maximum data value. Like `start`, for dates use a date string, and for category data `end` is based on the category serial numbers. */ end?: any; - /** Sets the size of each y axis bin. Default behavior: If `nbinsy` is 0 or omitted, we choose a nice round bin size such that the number of bins is about the same as the typical number of samples in each bin. If `nbinsy` is provided, we choose a nice round bin size giving no more than that many bins. For date data, use milliseconds or *M* for months, as in `axis.dtick`. For category data, the number of categories to bin together (always defaults to 1). If multiple non-overlaying histograms share a subplot, the first explicit `size` is used and all others discarded. If no `size` is provided,the sample data from all traces is combined to determine `size` as described above. */ + /** Sets the size of each y axis bin. Default behavior: If `nbinsy` is 0 or omitted, we choose a nice round bin size such that the number of bins is about the same as the typical number of samples in each bin. If `nbinsy` is provided, we choose a nice round bin size giving no more than that many bins. For date data, use milliseconds or *M* for months, as in `axis.dtick`. For category data, the number of categories to bin together (always defaults to 1). If multiple non-overlaying histograms share a subplot, the first explicit `size` is used and all others discarded. If no `size` is provided, the sample data from all traces is combined to determine `size` as described above. */ size?: any; /** Sets the starting value for the y axis bins. Defaults to the minimum data value, shifted down if necessary to make nice round values and to remove ambiguous bin edges. For example, if most of the data is integers we shift the bin edges 0.5 down, so a `size` of 5 would have a default `start` of -0.5, so it is clear that 0-4 are in the first bin, 5-9 in the second, but continuous data gets a start of 0 and bins [0,5), [5,10) etc. Dates behave similarly, and `start` should be a date string. For category data, `start` is based on the category serial numbers, and defaults to -0.5. If multiple non-overlaying histograms share a subplot, the first explicit `start` is used exactly and all others are shifted down (if necessary) to differ from that one by an integer number of bins. */ start?: any; }; /** Sets the calendar system to use with `y` date data. */ ycalendar?: Calendar; - /** Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ yhoverformat?: string; /** Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. */ zorder?: number; @@ -2680,7 +2680,7 @@ export interface Histogram2dData { xcalendar?: Calendar; /** Sets the horizontal gap (in pixels) between bricks. */ xgap?: number; - /** Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; /** Sets the sample data to be binned on the y axis. */ y?: Datum[] | TypedArray; @@ -2700,13 +2700,13 @@ export interface Histogram2dData { ycalendar?: Calendar; /** Sets the vertical gap (in pixels) between bricks. */ ygap?: number; - /** Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ yhoverformat?: string; /** Sets the aggregation data. */ z?: Datum[] | TypedArray; /** Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. */ zauto?: boolean; - /** Sets the hover text formatting rulefor `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ + /** Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ zhoverformat?: string; /** Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well. */ zmax?: number; @@ -2844,7 +2844,7 @@ export interface Histogram2dcontourData { }; /** Sets the calendar system to use with `x` date data. */ xcalendar?: Calendar; - /** Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; /** Sets the sample data to be binned on the y axis. */ y?: Datum[] | TypedArray; @@ -2862,13 +2862,13 @@ export interface Histogram2dcontourData { }; /** Sets the calendar system to use with `y` date data. */ ycalendar?: Calendar; - /** Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ yhoverformat?: string; /** Sets the aggregation data. */ z?: Datum[] | TypedArray; /** Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. */ zauto?: boolean; - /** Sets the hover text formatting rulefor `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ + /** Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ zhoverformat?: string; /** Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well. */ zmax?: number; @@ -2955,7 +2955,7 @@ export interface IcicleData { pathbar?: { /** Determines which shape is used for edges between `barpath` labels. */ edgeshape?: '>' | '<' | '|' | '/' | '\\'; - /** Determines on which side of the the treemap the `pathbar` should be presented. */ + /** Determines on which side of the treemap the `pathbar` should be presented. */ side?: 'top' | 'bottom'; /** Sets the font used inside `pathbar`. */ textfont?: FontArray; @@ -3384,21 +3384,21 @@ export interface IsosurfaceData { uirevision?: any; /** Sets the 4th dimension (value) of the vertices. */ value?: Datum[] | TypedArray; - /** Sets the hover text formatting rulefor `value` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ + /** Sets the hover text formatting rule for `value` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ valuehoverformat?: string; /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ visible?: true | false | 'legendonly'; /** Sets the X coordinates of the vertices on X axis. */ x?: Datum[] | TypedArray; - /** Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; /** Sets the Y coordinates of the vertices on Y axis. */ y?: Datum[] | TypedArray; - /** Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ yhoverformat?: string; /** Sets the Z coordinates of the vertices on Z axis. */ z?: Datum[] | TypedArray; - /** Sets the hover text formatting rulefor `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`. */ zhoverformat?: string; } @@ -3455,9 +3455,9 @@ export interface Mesh3dData { intensity?: Datum[] | TypedArray; /** Determines the source of `intensity` values. */ intensitymode?: 'vertex' | 'cell'; - /** A vector of vertex indices, i.e. integer values between 0 and the length of the vertex vectors, representing the *second* vertex of a triangle. For example, `{i[m], j[m], k[m]}` together represent face m (triangle m) in the mesh, where `j[m] = n` points to the triplet `{x[n], y[n], z[n]}` in the vertex arrays. Therefore, each element in `j` represents a point in space, which is the second vertex of a triangle. */ + /** A vector of vertex indices, i.e. integer values between 0 and the length of the vertex vectors, representing the *second* vertex of a triangle. For example, `{i[m], j[m], k[m]}` together represent face m (triangle m) in the mesh, where `j[m] = n` points to the triplet `{x[n], y[n], z[n]}` in the vertex arrays. Therefore, each element in `j` represents a point in space, which is the second vertex of a triangle. */ j?: Datum[] | TypedArray; - /** A vector of vertex indices, i.e. integer values between 0 and the length of the vertex vectors, representing the *third* vertex of a triangle. For example, `{i[m], j[m], k[m]}` together represent face m (triangle m) in the mesh, where `k[m] = n` points to the triplet `{x[n], y[n], z[n]}` in the vertex arrays. Therefore, each element in `k` represents a point in space, which is the third vertex of a triangle. */ + /** A vector of vertex indices, i.e. integer values between 0 and the length of the vertex vectors, representing the *third* vertex of a triangle. For example, `{i[m], j[m], k[m]}` together represent face m (triangle m) in the mesh, where `k[m] = n` points to the triplet `{x[n], y[n], z[n]}` in the vertex arrays. Therefore, each element in `k` represents a point in space, which is the third vertex of a triangle. */ k?: Datum[] | TypedArray; /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ legend?: string; @@ -3507,19 +3507,19 @@ export interface Mesh3dData { x?: Datum[] | TypedArray; /** Sets the calendar system to use with `x` date data. */ xcalendar?: Calendar; - /** Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; /** Sets the Y coordinates of the vertices. The nth element of vectors `x`, `y` and `z` jointly represent the X, Y and Z coordinates of the nth vertex. */ y?: Datum[] | TypedArray; /** Sets the calendar system to use with `y` date data. */ ycalendar?: Calendar; - /** Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ yhoverformat?: string; /** Sets the Z coordinates of the vertices. The nth element of vectors `x`, `y` and `z` jointly represent the X, Y and Z coordinates of the nth vertex. */ z?: Datum[] | TypedArray; /** Sets the calendar system to use with `z` date data. */ zcalendar?: Calendar; - /** Sets the hover text formatting rulefor `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`. */ zhoverformat?: string; } @@ -3623,7 +3623,7 @@ export interface OhlcData { xaxis?: string; /** Sets the calendar system to use with `x` date data. */ xcalendar?: Calendar; - /** Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ xperiod?: any; @@ -3633,7 +3633,7 @@ export interface OhlcData { xperiodalignment?: 'start' | 'middle' | 'end'; /** Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. */ yaxis?: string; - /** Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ yhoverformat?: string; /** Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. */ zorder?: number; @@ -4189,7 +4189,7 @@ export interface ScatterData { xaxis?: string; /** Sets the calendar system to use with `x` date data. */ xcalendar?: Calendar; - /** Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ xperiod?: any; @@ -4205,7 +4205,7 @@ export interface ScatterData { yaxis?: string; /** Sets the calendar system to use with `y` date data. */ ycalendar?: Calendar; - /** Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ yhoverformat?: string; /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the y axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ yperiod?: any; @@ -4452,19 +4452,19 @@ export interface Scatter3dData { x?: Datum[] | TypedArray; /** Sets the calendar system to use with `x` date data. */ xcalendar?: Calendar; - /** Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; /** Sets the y coordinates. */ y?: Datum[] | TypedArray; /** Sets the calendar system to use with `y` date data. */ ycalendar?: Calendar; - /** Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ yhoverformat?: string; /** Sets the z coordinates. */ z?: Datum[] | TypedArray; /** Sets the calendar system to use with `z` date data. */ zcalendar?: Calendar; - /** Sets the hover text formatting rulefor `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`. */ zhoverformat?: string; } @@ -4492,7 +4492,7 @@ export interface ScattercarpetData { hovertemplate?: string | string[]; /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ hovertemplatefallback?: any; - /** Sets hover text elements associated with each (a,b) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the the data points in (a,b). To be seen, trace `hoverinfo` must contain a *text* flag. */ + /** Sets hover text elements associated with each (a,b) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the data points in (a,b). To be seen, trace `hoverinfo` must contain a *text* flag. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ ids?: Datum[] | TypedArray; @@ -4544,7 +4544,7 @@ export interface ScattercarpetData { /** Determines whether or not an item corresponding to this trace is shown in the legend. */ showlegend?: boolean; stream?: Stream; - /** Sets text elements associated with each (a,b) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the the data points in (a,b). If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + /** Sets text elements associated with each (a,b) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the data points in (a,b). If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ text?: string | string[]; /** Sets the text font. */ textfont?: FontArray; @@ -4874,7 +4874,7 @@ export interface ScatterglData { xaxis?: string; /** Sets the calendar system to use with `x` date data. */ xcalendar?: Calendar; - /** Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ xperiod?: any; @@ -4890,7 +4890,7 @@ export interface ScatterglData { yaxis?: string; /** Sets the calendar system to use with `y` date data. */ ycalendar?: Calendar; - /** Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ yhoverformat?: string; /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the y axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ yperiod?: any; @@ -5557,7 +5557,7 @@ export interface ScatterternaryData { hovertemplate?: string | string[]; /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ hovertemplatefallback?: any; - /** Sets hover text elements associated with each (a,b,c) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the the data points in (a,b,c). To be seen, trace `hoverinfo` must contain a *text* flag. */ + /** Sets hover text elements associated with each (a,b,c) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the data points in (a,b,c). To be seen, trace `hoverinfo` must contain a *text* flag. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ ids?: Datum[] | TypedArray; @@ -5613,7 +5613,7 @@ export interface ScatterternaryData { subplot?: string; /** The number each triplet should sum to, if only two of `a`, `b`, and `c` are provided. This overrides `ternary.sum` to normalize this specific trace, but does not affect the values displayed on the axes. 0 (or missing) means to use ternary.sum */ sum?: number; - /** Sets text elements associated with each (a,b,c) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the the data points in (a,b,c). If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ + /** Sets text elements associated with each (a,b,c) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the data points in (a,b,c). If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ text?: string | string[]; /** Sets the text font. */ textfont?: FontArray; @@ -5735,11 +5735,11 @@ export interface SplomData { visible?: true | false | 'legendonly'; /** Sets the list of x axes corresponding to dimensions of this splom trace. By default, a splom will match the first N xaxes where N is the number of input dimensions. Note that, in case where `diagonal.visible` is false and `showupperhalf` or `showlowerhalf` is false, this splom trace will generate one less x-axis and one less y-axis. */ xaxes?: string[]; - /** Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; /** Sets the list of y axes corresponding to dimensions of this splom trace. By default, a splom will match the first N yaxes where N is the number of input dimensions. Note that, in case where `diagonal.visible` is false and `showupperhalf` or `showlowerhalf` is false, this splom trace will generate one less x-axis and one less y-axis. */ yaxes?: string[]; - /** Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ yhoverformat?: string; } @@ -5822,7 +5822,7 @@ export interface StreamtubeData { type?: 'streamtube'; /** Sets the x components of the vector field. */ u?: Datum[] | TypedArray; - /** Sets the hover text formatting rulefor `u` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ + /** Sets the hover text formatting rule for `u` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ uhoverformat?: string; /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ uid?: string; @@ -5830,25 +5830,25 @@ export interface StreamtubeData { uirevision?: any; /** Sets the y components of the vector field. */ v?: Datum[] | TypedArray; - /** Sets the hover text formatting rulefor `v` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ + /** Sets the hover text formatting rule for `v` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ vhoverformat?: string; /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ visible?: true | false | 'legendonly'; /** Sets the z components of the vector field. */ w?: Datum[] | TypedArray; - /** Sets the hover text formatting rulefor `w` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ + /** Sets the hover text formatting rule for `w` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ whoverformat?: string; /** Sets the x coordinates of the vector field. */ x?: Datum[] | TypedArray; - /** Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; /** Sets the y coordinates of the vector field. */ y?: Datum[] | TypedArray; - /** Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ yhoverformat?: string; /** Sets the z coordinates of the vector field. */ z?: Datum[] | TypedArray; - /** Sets the hover text formatting rulefor `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`. */ zhoverformat?: string; } @@ -6141,19 +6141,19 @@ export interface SurfaceData { x?: Datum[] | TypedArray; /** Sets the calendar system to use with `x` date data. */ xcalendar?: Calendar; - /** Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; /** Sets the y coordinates. */ y?: Datum[] | TypedArray; /** Sets the calendar system to use with `y` date data. */ ycalendar?: Calendar; - /** Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ yhoverformat?: string; /** Sets the z coordinates. */ z?: Datum[] | TypedArray; /** Sets the calendar system to use with `z` date data. */ zcalendar?: Calendar; - /** Sets the hover text formatting rulefor `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`. */ zhoverformat?: string; } @@ -6312,7 +6312,7 @@ export interface TreemapData { pathbar?: { /** Determines which shape is used for edges between `barpath` labels. */ edgeshape?: '>' | '<' | '|' | '/' | '\\'; - /** Determines on which side of the the treemap the `pathbar` should be presented. */ + /** Determines on which side of the treemap the `pathbar` should be presented. */ side?: 'top' | 'bottom'; /** Sets the font used inside `pathbar`. */ textfont?: FontArray; @@ -6449,7 +6449,7 @@ export interface ViolinData { points?: 'all' | 'outliers' | 'suspectedoutliers' | false; /** Sets the method used to compute the sample's Q1 and Q3 quartiles. The *linear* method uses the 25th percentile for Q1 and 75th percentile for Q3 as computed using method #10 (listed on http://jse.amstat.org/v14n3/langford.html). The *exclusive* method uses the median to divide the ordered dataset into two halves if the sample is odd, it does not include the median in either half - Q1 is then the median of the lower half and Q3 the median of the upper half. The *inclusive* method also uses the median to divide the ordered dataset into two halves but if the sample is odd, it includes the median in both halves - Q1 is then the median of the lower half and Q3 the median of the upper half. */ quartilemethod?: 'linear' | 'exclusive' | 'inclusive'; - /** If there are multiple violins that should be sized according to to some metric (see `scalemode`), link them by providing a non-empty group id here shared by every trace in the same group. If a violin's `width` is undefined, `scalegroup` will default to the trace's name. In this case, violins with the same names will be linked together */ + /** If there are multiple violins that should be sized according to some metric (see `scalemode`), link them by providing a non-empty group id here shared by every trace in the same group. If a violin's `width` is undefined, `scalegroup` will default to the trace's name. In this case, violins with the same names will be linked together */ scalegroup?: string; /** Sets the metric by which the width of each violin is determined. *width* means each violin has the same (max) width *count* means the violins are scaled by the number of sample points making up each violin. */ scalemode?: 'width' | 'count'; @@ -6501,7 +6501,7 @@ export interface ViolinData { x0?: any; /** Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. */ xaxis?: string; - /** Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; /** Sets the y sample data or coordinates. See overview for more info. */ y?: Datum[] | TypedArray; @@ -6509,7 +6509,7 @@ export interface ViolinData { y0?: any; /** Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. */ yaxis?: string; - /** Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ yhoverformat?: string; /** Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. */ zorder?: number; @@ -6664,21 +6664,21 @@ export interface VolumeData { uirevision?: any; /** Sets the 4th dimension (value) of the vertices. */ value?: Datum[] | TypedArray; - /** Sets the hover text formatting rulefor `value` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ + /** Sets the hover text formatting rule for `value` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ valuehoverformat?: string; /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ visible?: true | false | 'legendonly'; /** Sets the X coordinates of the vertices on X axis. */ x?: Datum[] | TypedArray; - /** Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; /** Sets the Y coordinates of the vertices on Y axis. */ y?: Datum[] | TypedArray; - /** Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ yhoverformat?: string; /** Sets the Z coordinates of the vertices on Z axis. */ z?: Datum[] | TypedArray; - /** Sets the hover text formatting rulefor `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`. */ zhoverformat?: string; } @@ -6806,7 +6806,7 @@ export interface WaterfallData { x0?: any; /** Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. */ xaxis?: string; - /** Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ xperiod?: any; @@ -6820,7 +6820,7 @@ export interface WaterfallData { y0?: any; /** Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. */ yaxis?: string; - /** Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ yhoverformat?: string; /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the y axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ yperiod?: any; @@ -7186,7 +7186,7 @@ export interface LayoutAxis { spikecolor?: Color; /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ spikedash?: Dash; - /** Determines the drawing mode for the spike line If *toaxis*, the line is drawn from the data point to the axis the series is plotted on. If *across*, the line is drawn across the entire plot area, and supercedes *toaxis*. If *marker*, then a marker dot is drawn on the axis the series is plotted on */ + /** Determines the drawing mode for the spike line If *toaxis*, the line is drawn from the data point to the axis the series is plotted on. If *across*, the line is drawn across the entire plot area, and supercedes *toaxis*. If *marker*, then a marker dot is drawn on the axis the series is plotted on */ spikemode?: 'toaxis' | 'across' | 'marker' | (string & {}); /** Determines whether spikelines are stuck to the cursor or to the closest datapoints. */ spikesnap?: 'data' | 'cursor' | 'hovered data'; @@ -8447,11 +8447,11 @@ export interface Annotation { arrowwidth?: number; /** Sets the x component of the arrow tail about the arrow head. If `axref` is `pixel`, a positive (negative) component corresponds to an arrow pointing from right to left (left to right). If `axref` is not `pixel` and is exactly the same as `xref`, this is an absolute value on that axis, like `x`, specified in the same coordinates as `xref`. */ ax?: any; - /** Indicates in what coordinates the tail of the annotation (ax,ay) is specified. If set to a x axis id (e.g. *x* or *x2*), the `x` position refers to a x coordinate. If set to *paper*, the `x` position refers to the distance from the left of the plotting area in normalized coordinates where *0* (*1*) corresponds to the left (right). If set to a x axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the left of the domain of that axis: e.g., *x2 domain* refers to the domain of the second x axis and a x position of 0.5 refers to the point between the left and the right of the domain of the second x axis. In order for absolute positioning of the arrow to work, *axref* must be exactly the same as *xref*, otherwise *axref* will revert to *pixel* (explained next). For relative positioning, *axref* can be set to *pixel*, in which case the *ax* value is specified in pixels relative to *x*. Absolute positioning is useful for trendline annotations which should continue to indicate the correct trend when zoomed. Relative positioning is useful for specifying the text offset for an annotated point. */ + /** Indicates in what coordinates the tail of the annotation (ax,ay) is specified. If set to a x axis id (e.g. *x* or *x2*), the `x` position refers to a x coordinate. If set to *paper*, the `x` position refers to the distance from the left of the plotting area in normalized coordinates where *0* (*1*) corresponds to the left (right). If set to a x axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the left of the domain of that axis: e.g., *x2 domain* refers to the domain of the second x axis and a x position of 0.5 refers to the point between the left and the right of the domain of the second x axis. In order for absolute positioning of the arrow to work, *axref* must be exactly the same as *xref*, otherwise *axref* will revert to *pixel* (explained next). For relative positioning, *axref* can be set to *pixel*, in which case the *ax* value is specified in pixels relative to *x*. Absolute positioning is useful for trendline annotations which should continue to indicate the correct trend when zoomed. Relative positioning is useful for specifying the text offset for an annotated point. */ axref?: 'pixel' | '/^x([2-9]|[1-9][0-9]+)?( domain)?$/'; /** Sets the y component of the arrow tail about the arrow head. If `ayref` is `pixel`, a positive (negative) component corresponds to an arrow pointing from bottom to top (top to bottom). If `ayref` is not `pixel` and is exactly the same as `yref`, this is an absolute value on that axis, like `y`, specified in the same coordinates as `yref`. */ ay?: any; - /** Indicates in what coordinates the tail of the annotation (ax,ay) is specified. If set to a y axis id (e.g. *y* or *y2*), the `y` position refers to a y coordinate. If set to *paper*, the `y` position refers to the distance from the bottom of the plotting area in normalized coordinates where *0* (*1*) corresponds to the bottom (top). If set to a y axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the bottom of the domain of that axis: e.g., *y2 domain* refers to the domain of the second y axis and a y position of 0.5 refers to the point between the bottom and the top of the domain of the second y axis. In order for absolute positioning of the arrow to work, *ayref* must be exactly the same as *yref*, otherwise *ayref* will revert to *pixel* (explained next). For relative positioning, *ayref* can be set to *pixel*, in which case the *ay* value is specified in pixels relative to *y*. Absolute positioning is useful for trendline annotations which should continue to indicate the correct trend when zoomed. Relative positioning is useful for specifying the text offset for an annotated point. */ + /** Indicates in what coordinates the tail of the annotation (ax,ay) is specified. If set to a y axis id (e.g. *y* or *y2*), the `y` position refers to a y coordinate. If set to *paper*, the `y` position refers to the distance from the bottom of the plotting area in normalized coordinates where *0* (*1*) corresponds to the bottom (top). If set to a y axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the bottom of the domain of that axis: e.g., *y2 domain* refers to the domain of the second y axis and a y position of 0.5 refers to the point between the bottom and the top of the domain of the second y axis. In order for absolute positioning of the arrow to work, *ayref* must be exactly the same as *yref*, otherwise *ayref* will revert to *pixel* (explained next). For relative positioning, *ayref* can be set to *pixel*, in which case the *ay* value is specified in pixels relative to *y*. Absolute positioning is useful for trendline annotations which should continue to indicate the correct trend when zoomed. Relative positioning is useful for specifying the text offset for an annotated point. */ ayref?: 'pixel' | '/^y([2-9]|[1-9][0-9]+)?( domain)?$/'; /** Sets the background color of the annotation. */ bgcolor?: Color; @@ -8511,7 +8511,7 @@ export interface Annotation { xanchor?: 'auto' | 'left' | 'center' | 'right'; /** Toggle this annotation when clicking a data point whose `x` value is `xclick` rather than the annotation's `x` value. */ xclick?: any; - /** Sets the annotation's x coordinate axis. If set to a x axis id (e.g. *x* or *x2*), the `x` position refers to a x coordinate. If set to *paper*, the `x` position refers to the distance from the left of the plotting area in normalized coordinates where *0* (*1*) corresponds to the left (right). If set to a x axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the left of the domain of that axis: e.g., *x2 domain* refers to the domain of the second x axis and a x position of 0.5 refers to the point between the left and the right of the domain of the second x axis. */ + /** Sets the annotation's x coordinate axis. If set to a x axis id (e.g. *x* or *x2*), the `x` position refers to a x coordinate. If set to *paper*, the `x` position refers to the distance from the left of the plotting area in normalized coordinates where *0* (*1*) corresponds to the left (right). If set to a x axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the left of the domain of that axis: e.g., *x2 domain* refers to the domain of the second x axis and a x position of 0.5 refers to the point between the left and the right of the domain of the second x axis. */ xref?: 'paper' | '/^x([2-9]|[1-9][0-9]+)?( domain)?$/'; /** Shifts the position of the whole annotation and arrow to the right (positive) or left (negative) by this many pixels. */ xshift?: number; @@ -8521,7 +8521,7 @@ export interface Annotation { yanchor?: 'auto' | 'top' | 'middle' | 'bottom'; /** Toggle this annotation when clicking a data point whose `y` value is `yclick` rather than the annotation's `y` value. */ yclick?: any; - /** Sets the annotation's y coordinate axis. If set to a y axis id (e.g. *y* or *y2*), the `y` position refers to a y coordinate. If set to *paper*, the `y` position refers to the distance from the bottom of the plotting area in normalized coordinates where *0* (*1*) corresponds to the bottom (top). If set to a y axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the bottom of the domain of that axis: e.g., *y2 domain* refers to the domain of the second y axis and a y position of 0.5 refers to the point between the bottom and the top of the domain of the second y axis. */ + /** Sets the annotation's y coordinate axis. If set to a y axis id (e.g. *y* or *y2*), the `y` position refers to a y coordinate. If set to *paper*, the `y` position refers to the distance from the bottom of the plotting area in normalized coordinates where *0* (*1*) corresponds to the bottom (top). If set to a y axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the bottom of the domain of that axis: e.g., *y2 domain* refers to the domain of the second y axis and a y position of 0.5 refers to the point between the bottom and the top of the domain of the second y axis. */ yref?: 'paper' | '/^y([2-9]|[1-9][0-9]+)?( domain)?$/'; /** Shifts the position of the whole annotation and arrow up (positive) or down (negative) by this many pixels. */ yshift?: number; @@ -8550,13 +8550,13 @@ export interface LayoutImage { x?: any; /** Sets the anchor for the x position */ xanchor?: 'left' | 'center' | 'right'; - /** Sets the images's x coordinate axis. If set to a x axis id (e.g. *x* or *x2*), the `x` position refers to a x coordinate. If set to *paper*, the `x` position refers to the distance from the left of the plotting area in normalized coordinates where *0* (*1*) corresponds to the left (right). If set to a x axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the left of the domain of that axis: e.g., *x2 domain* refers to the domain of the second x axis and a x position of 0.5 refers to the point between the left and the right of the domain of the second x axis. */ + /** Sets the images's x coordinate axis. If set to a x axis id (e.g. *x* or *x2*), the `x` position refers to a x coordinate. If set to *paper*, the `x` position refers to the distance from the left of the plotting area in normalized coordinates where *0* (*1*) corresponds to the left (right). If set to a x axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the left of the domain of that axis: e.g., *x2 domain* refers to the domain of the second x axis and a x position of 0.5 refers to the point between the left and the right of the domain of the second x axis. */ xref?: 'paper' | '/^x([2-9]|[1-9][0-9]+)?( domain)?$/'; /** Sets the image's y position. When `yref` is set to `paper`, units are sized relative to the plot height. See `yref` for more info */ y?: any; /** Sets the anchor for the y position. */ yanchor?: 'top' | 'middle' | 'bottom'; - /** Sets the images's y coordinate axis. If set to a y axis id (e.g. *y* or *y2*), the `y` position refers to a y coordinate. If set to *paper*, the `y` position refers to the distance from the bottom of the plotting area in normalized coordinates where *0* (*1*) corresponds to the bottom (top). If set to a y axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the bottom of the domain of that axis: e.g., *y2 domain* refers to the domain of the second y axis and a y position of 0.5 refers to the point between the bottom and the top of the domain of the second y axis. */ + /** Sets the images's y coordinate axis. If set to a y axis id (e.g. *y* or *y2*), the `y` position refers to a y coordinate. If set to *paper*, the `y` position refers to the distance from the bottom of the plotting area in normalized coordinates where *0* (*1*) corresponds to the bottom (top). If set to a y axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the bottom of the domain of that axis: e.g., *y2 domain* refers to the domain of the second y axis and a y position of 0.5 refers to the point between the bottom and the top of the domain of the second y axis. */ yref?: 'paper' | '/^y([2-9]|[1-9][0-9]+)?( domain)?$/'; } @@ -8583,13 +8583,13 @@ export interface LayoutSelection { x0?: any; /** Sets the selection's end x position. */ x1?: any; - /** Sets the selection's x coordinate axis. If set to a x axis id (e.g. *x* or *x2*), the `x` position refers to a x coordinate. If set to *paper*, the `x` position refers to the distance from the left of the plotting area in normalized coordinates where *0* (*1*) corresponds to the left (right). If set to a x axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the left of the domain of that axis: e.g., *x2 domain* refers to the domain of the second x axis and a x position of 0.5 refers to the point between the left and the right of the domain of the second x axis. */ + /** Sets the selection's x coordinate axis. If set to a x axis id (e.g. *x* or *x2*), the `x` position refers to a x coordinate. If set to *paper*, the `x` position refers to the distance from the left of the plotting area in normalized coordinates where *0* (*1*) corresponds to the left (right). If set to a x axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the left of the domain of that axis: e.g., *x2 domain* refers to the domain of the second x axis and a x position of 0.5 refers to the point between the left and the right of the domain of the second x axis. */ xref?: 'paper' | '/^x([2-9]|[1-9][0-9]+)?( domain)?$/'; /** Sets the selection's starting y position. */ y0?: any; /** Sets the selection's end y position. */ y1?: any; - /** Sets the selection's x coordinate axis. If set to a y axis id (e.g. *y* or *y2*), the `y` position refers to a y coordinate. If set to *paper*, the `y` position refers to the distance from the bottom of the plotting area in normalized coordinates where *0* (*1*) corresponds to the bottom (top). If set to a y axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the bottom of the domain of that axis: e.g., *y2 domain* refers to the domain of the second y axis and a y position of 0.5 refers to the point between the bottom and the top of the domain of the second y axis. */ + /** Sets the selection's x coordinate axis. If set to a y axis id (e.g. *y* or *y2*), the `y` position refers to a y coordinate. If set to *paper*, the `y` position refers to the distance from the bottom of the plotting area in normalized coordinates where *0* (*1*) corresponds to the bottom (top). If set to a y axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the bottom of the domain of that axis: e.g., *y2 domain* refers to the domain of the second y axis and a y position of 0.5 refers to the point between the bottom and the top of the domain of the second y axis. */ yref?: 'paper' | '/^y([2-9]|[1-9][0-9]+)?( domain)?$/'; } @@ -8663,7 +8663,7 @@ export interface Shape { x1shift?: number; /** Only relevant in conjunction with `xsizemode` set to *pixel*. Specifies the anchor point on the x axis to which `x0`, `x1` and x coordinates within `path` are relative to. E.g. useful to attach a pixel sized shape to a certain data value. No effect when `xsizemode` not set to *pixel*. */ xanchor?: any; - /** Sets the shape's x coordinate axis. If set to a x axis id (e.g. *x* or *x2*), the `x` position refers to a x coordinate. If set to *paper*, the `x` position refers to the distance from the left of the plotting area in normalized coordinates where *0* (*1*) corresponds to the left (right). If set to a x axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the left of the domain of that axis: e.g., *x2 domain* refers to the domain of the second x axis and a x position of 0.5 refers to the point between the left and the right of the domain of the second x axis. If an array of axis IDs is provided, each `x` value will refer to the corresponding axis, e.g., ['x', 'x2'] for a rectangle, line, or circle means `x0` uses the `x` axis and `x1` uses the `x2` axis. Path shapes using an array should have one entry for each x coordinate in the string. */ + /** Sets the shape's x coordinate axis. If set to a x axis id (e.g. *x* or *x2*), the `x` position refers to a x coordinate. If set to *paper*, the `x` position refers to the distance from the left of the plotting area in normalized coordinates where *0* (*1*) corresponds to the left (right). If set to a x axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the left of the domain of that axis: e.g., *x2 domain* refers to the domain of the second x axis and a x position of 0.5 refers to the point between the left and the right of the domain of the second x axis. If an array of axis IDs is provided, each `x` value will refer to the corresponding axis, e.g., ['x', 'x2'] for a rectangle, line, or circle means `x0` uses the `x` axis and `x1` uses the `x2` axis. Path shapes using an array should have one entry for each x coordinate in the string. */ xref?: 'paper' | '/^x([2-9]|[1-9][0-9]+)?( domain)?$/' | ('paper' | '/^x([2-9]|[1-9][0-9]+)?( domain)?$/')[]; /** Sets the shapes's sizing mode along the x axis. If set to *scaled*, `x0`, `x1` and x coordinates within `path` refer to data values on the x axis or a fraction of the plot area's width (`xref` set to *paper*). If set to *pixel*, `xanchor` specifies the x position in terms of data or plot fraction but `x0`, `x1` and x coordinates within `path` are pixels relative to `xanchor`. This way, the shape can have a fixed width while maintaining a position relative to data or plot fraction. Note: `xsizemode` *pixel* is not supported when `xref` is an array. */ xsizemode?: 'scaled' | 'pixel'; @@ -8677,7 +8677,7 @@ export interface Shape { y1shift?: number; /** Only relevant in conjunction with `ysizemode` set to *pixel*. Specifies the anchor point on the y axis to which `y0`, `y1` and y coordinates within `path` are relative to. E.g. useful to attach a pixel sized shape to a certain data value. No effect when `ysizemode` not set to *pixel*. */ yanchor?: any; - /** Sets the shape's y coordinate axis. If set to a y axis id (e.g. *y* or *y2*), the `y` position refers to a y coordinate. If set to *paper*, the `y` position refers to the distance from the bottom of the plotting area in normalized coordinates where *0* (*1*) corresponds to the bottom (top). If set to a y axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the bottom of the domain of that axis: e.g., *y2 domain* refers to the domain of the second y axis and a y position of 0.5 refers to the point between the bottom and the top of the domain of the second y axis. If an array of axis IDs is provided, each `y` value will refer to the corresponding axis, e.g., ['y', 'y2'] for a rectangle, line, or circle means `y0` uses the `y` axis and `y1` uses the `y2` axis. Path shapes using an array should have one entry for each y coordinate in the string. */ + /** Sets the shape's y coordinate axis. If set to a y axis id (e.g. *y* or *y2*), the `y` position refers to a y coordinate. If set to *paper*, the `y` position refers to the distance from the bottom of the plotting area in normalized coordinates where *0* (*1*) corresponds to the bottom (top). If set to a y axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the bottom of the domain of that axis: e.g., *y2 domain* refers to the domain of the second y axis and a y position of 0.5 refers to the point between the bottom and the top of the domain of the second y axis. If an array of axis IDs is provided, each `y` value will refer to the corresponding axis, e.g., ['y', 'y2'] for a rectangle, line, or circle means `y0` uses the `y` axis and `y1` uses the `y2` axis. Path shapes using an array should have one entry for each y coordinate in the string. */ yref?: 'paper' | '/^y([2-9]|[1-9][0-9]+)?( domain)?$/' | ('paper' | '/^y([2-9]|[1-9][0-9]+)?( domain)?$/')[]; /** Sets the shapes's sizing mode along the y axis. If set to *scaled*, `y0`, `y1` and y coordinates within `path` refer to data values on the y axis or a fraction of the plot area's height (`yref` set to *paper*). If set to *pixel*, `yanchor` specifies the y position in terms of data or plot fraction but `y0`, `y1` and y coordinates within `path` are pixels relative to `yanchor`. This way, the shape can have a fixed height while maintaining a position relative to data or plot fraction. Note: `ysizemode` *pixel* is not supported when `yref` is an array. */ ysizemode?: 'scaled' | 'pixel'; diff --git a/test/plot-schema.json b/test/plot-schema.json index f049205f62e..489ad866c06 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -693,7 +693,7 @@ "valType": "any" }, "axref": { - "description": "Indicates in what coordinates the tail of the annotation (ax,ay) is specified. If set to a x axis id (e.g. *x* or *x2*), the `x` position refers to a x coordinate. If set to *paper*, the `x` position refers to the distance from the left of the plotting area in normalized coordinates where *0* (*1*) corresponds to the left (right). If set to a x axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the left of the domain of that axis: e.g., *x2 domain* refers to the domain of the second x axis and a x position of 0.5 refers to the point between the left and the right of the domain of the second x axis. In order for absolute positioning of the arrow to work, *axref* must be exactly the same as *xref*, otherwise *axref* will revert to *pixel* (explained next). For relative positioning, *axref* can be set to *pixel*, in which case the *ax* value is specified in pixels relative to *x*. Absolute positioning is useful for trendline annotations which should continue to indicate the correct trend when zoomed. Relative positioning is useful for specifying the text offset for an annotated point.", + "description": "Indicates in what coordinates the tail of the annotation (ax,ay) is specified. If set to a x axis id (e.g. *x* or *x2*), the `x` position refers to a x coordinate. If set to *paper*, the `x` position refers to the distance from the left of the plotting area in normalized coordinates where *0* (*1*) corresponds to the left (right). If set to a x axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the left of the domain of that axis: e.g., *x2 domain* refers to the domain of the second x axis and a x position of 0.5 refers to the point between the left and the right of the domain of the second x axis. In order for absolute positioning of the arrow to work, *axref* must be exactly the same as *xref*, otherwise *axref* will revert to *pixel* (explained next). For relative positioning, *axref* can be set to *pixel*, in which case the *ax* value is specified in pixels relative to *x*. Absolute positioning is useful for trendline annotations which should continue to indicate the correct trend when zoomed. Relative positioning is useful for specifying the text offset for an annotated point.", "dflt": "pixel", "editType": "calc", "valType": "enumerated", @@ -708,7 +708,7 @@ "valType": "any" }, "ayref": { - "description": "Indicates in what coordinates the tail of the annotation (ax,ay) is specified. If set to a y axis id (e.g. *y* or *y2*), the `y` position refers to a y coordinate. If set to *paper*, the `y` position refers to the distance from the bottom of the plotting area in normalized coordinates where *0* (*1*) corresponds to the bottom (top). If set to a y axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the bottom of the domain of that axis: e.g., *y2 domain* refers to the domain of the second y axis and a y position of 0.5 refers to the point between the bottom and the top of the domain of the second y axis. In order for absolute positioning of the arrow to work, *ayref* must be exactly the same as *yref*, otherwise *ayref* will revert to *pixel* (explained next). For relative positioning, *ayref* can be set to *pixel*, in which case the *ay* value is specified in pixels relative to *y*. Absolute positioning is useful for trendline annotations which should continue to indicate the correct trend when zoomed. Relative positioning is useful for specifying the text offset for an annotated point.", + "description": "Indicates in what coordinates the tail of the annotation (ax,ay) is specified. If set to a y axis id (e.g. *y* or *y2*), the `y` position refers to a y coordinate. If set to *paper*, the `y` position refers to the distance from the bottom of the plotting area in normalized coordinates where *0* (*1*) corresponds to the bottom (top). If set to a y axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the bottom of the domain of that axis: e.g., *y2 domain* refers to the domain of the second y axis and a y position of 0.5 refers to the point between the bottom and the top of the domain of the second y axis. In order for absolute positioning of the arrow to work, *ayref* must be exactly the same as *yref*, otherwise *ayref* will revert to *pixel* (explained next). For relative positioning, *ayref* can be set to *pixel*, in which case the *ay* value is specified in pixels relative to *y*. Absolute positioning is useful for trendline annotations which should continue to indicate the correct trend when zoomed. Relative positioning is useful for specifying the text offset for an annotated point.", "dflt": "pixel", "editType": "calc", "valType": "enumerated", @@ -1076,7 +1076,7 @@ "valType": "any" }, "xref": { - "description": "Sets the annotation's x coordinate axis. If set to a x axis id (e.g. *x* or *x2*), the `x` position refers to a x coordinate. If set to *paper*, the `x` position refers to the distance from the left of the plotting area in normalized coordinates where *0* (*1*) corresponds to the left (right). If set to a x axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the left of the domain of that axis: e.g., *x2 domain* refers to the domain of the second x axis and a x position of 0.5 refers to the point between the left and the right of the domain of the second x axis.", + "description": "Sets the annotation's x coordinate axis. If set to a x axis id (e.g. *x* or *x2*), the `x` position refers to a x coordinate. If set to *paper*, the `x` position refers to the distance from the left of the plotting area in normalized coordinates where *0* (*1*) corresponds to the left (right). If set to a x axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the left of the domain of that axis: e.g., *x2 domain* refers to the domain of the second x axis and a x position of 0.5 refers to the point between the left and the right of the domain of the second x axis.", "editType": "calc", "valType": "enumerated", "values": [ @@ -1113,7 +1113,7 @@ "valType": "any" }, "yref": { - "description": "Sets the annotation's y coordinate axis. If set to a y axis id (e.g. *y* or *y2*), the `y` position refers to a y coordinate. If set to *paper*, the `y` position refers to the distance from the bottom of the plotting area in normalized coordinates where *0* (*1*) corresponds to the bottom (top). If set to a y axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the bottom of the domain of that axis: e.g., *y2 domain* refers to the domain of the second y axis and a y position of 0.5 refers to the point between the bottom and the top of the domain of the second y axis.", + "description": "Sets the annotation's y coordinate axis. If set to a y axis id (e.g. *y* or *y2*), the `y` position refers to a y coordinate. If set to *paper*, the `y` position refers to the distance from the bottom of the plotting area in normalized coordinates where *0* (*1*) corresponds to the bottom (top). If set to a y axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the bottom of the domain of that axis: e.g., *y2 domain* refers to the domain of the second y axis and a y position of 0.5 refers to the point between the bottom and the top of the domain of the second y axis.", "editType": "calc", "valType": "enumerated", "values": [ @@ -1758,7 +1758,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -2147,7 +2147,7 @@ }, "domain": { "column": { - "description": "If there is a layout grid, use the domain for this column in the grid for this geo subplot . Note that geo subplots are constrained by domain. In general, when `projection.scale` is set to 1. a map will fit either its x or y domain, but not both.", + "description": "If there is a layout grid, use the domain for this column in the grid for this geo subplot. Note that geo subplots are constrained by domain. In general, when `projection.scale` is set to 1. a map will fit either its x or y domain, but not both.", "dflt": 0, "editType": "plot", "min": 0, @@ -2156,7 +2156,7 @@ "editType": "plot", "role": "object", "row": { - "description": "If there is a layout grid, use the domain for this row in the grid for this geo subplot . Note that geo subplots are constrained by domain. In general, when `projection.scale` is set to 1. a map will fit either its x or y domain, but not both.", + "description": "If there is a layout grid, use the domain for this row in the grid for this geo subplot. Note that geo subplots are constrained by domain. In general, when `projection.scale` is set to 1. a map will fit either its x or y domain, but not both.", "dflt": 0, "editType": "plot", "min": 0, @@ -3170,7 +3170,7 @@ ] }, "xref": { - "description": "Sets the images's x coordinate axis. If set to a x axis id (e.g. *x* or *x2*), the `x` position refers to a x coordinate. If set to *paper*, the `x` position refers to the distance from the left of the plotting area in normalized coordinates where *0* (*1*) corresponds to the left (right). If set to a x axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the left of the domain of that axis: e.g., *x2 domain* refers to the domain of the second x axis and a x position of 0.5 refers to the point between the left and the right of the domain of the second x axis.", + "description": "Sets the images's x coordinate axis. If set to a x axis id (e.g. *x* or *x2*), the `x` position refers to a x coordinate. If set to *paper*, the `x` position refers to the distance from the left of the plotting area in normalized coordinates where *0* (*1*) corresponds to the left (right). If set to a x axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the left of the domain of that axis: e.g., *x2 domain* refers to the domain of the second x axis and a x position of 0.5 refers to the point between the left and the right of the domain of the second x axis.", "dflt": "paper", "editType": "arraydraw", "valType": "enumerated", @@ -3197,7 +3197,7 @@ ] }, "yref": { - "description": "Sets the images's y coordinate axis. If set to a y axis id (e.g. *y* or *y2*), the `y` position refers to a y coordinate. If set to *paper*, the `y` position refers to the distance from the bottom of the plotting area in normalized coordinates where *0* (*1*) corresponds to the bottom (top). If set to a y axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the bottom of the domain of that axis: e.g., *y2 domain* refers to the domain of the second y axis and a y position of 0.5 refers to the point between the bottom and the top of the domain of the second y axis.", + "description": "Sets the images's y coordinate axis. If set to a y axis id (e.g. *y* or *y2*), the `y` position refers to a y coordinate. If set to *paper*, the `y` position refers to the distance from the bottom of the plotting area in normalized coordinates where *0* (*1*) corresponds to the bottom (top). If set to a y axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the bottom of the domain of that axis: e.g., *y2 domain* refers to the domain of the second y axis and a y position of 0.5 refers to the point between the bottom and the top of the domain of the second y axis.", "dflt": "paper", "editType": "arraydraw", "valType": "enumerated", @@ -3777,7 +3777,7 @@ }, "domain": { "column": { - "description": "If there is a layout grid, use the domain for this column in the grid for this map subplot .", + "description": "If there is a layout grid, use the domain for this column in the grid for this map subplot.", "dflt": 0, "editType": "plot", "min": 0, @@ -3786,7 +3786,7 @@ "editType": "plot", "role": "object", "row": { - "description": "If there is a layout grid, use the domain for this row in the grid for this map subplot .", + "description": "If there is a layout grid, use the domain for this row in the grid for this map subplot.", "dflt": 0, "editType": "plot", "min": 0, @@ -4183,7 +4183,7 @@ }, "domain": { "column": { - "description": "If there is a layout grid, use the domain for this column in the grid for this mapbox subplot .", + "description": "If there is a layout grid, use the domain for this column in the grid for this mapbox subplot.", "dflt": 0, "editType": "plot", "min": 0, @@ -4192,7 +4192,7 @@ "editType": "plot", "role": "object", "row": { - "description": "If there is a layout grid, use the domain for this row in the grid for this mapbox subplot .", + "description": "If there is a layout grid, use the domain for this row in the grid for this mapbox subplot.", "dflt": 0, "editType": "plot", "min": 0, @@ -5628,7 +5628,7 @@ }, "domain": { "column": { - "description": "If there is a layout grid, use the domain for this column in the grid for this polar subplot .", + "description": "If there is a layout grid, use the domain for this column in the grid for this polar subplot.", "dflt": 0, "editType": "plot", "min": 0, @@ -5637,7 +5637,7 @@ "editType": "plot", "role": "object", "row": { - "description": "If there is a layout grid, use the domain for this row in the grid for this polar subplot .", + "description": "If there is a layout grid, use the domain for this row in the grid for this polar subplot.", "dflt": 0, "editType": "plot", "min": 0, @@ -7060,7 +7060,7 @@ }, "domain": { "column": { - "description": "If there is a layout grid, use the domain for this column in the grid for this scene subplot .", + "description": "If there is a layout grid, use the domain for this column in the grid for this scene subplot.", "dflt": 0, "editType": "plot", "min": 0, @@ -7069,7 +7069,7 @@ "editType": "plot", "role": "object", "row": { - "description": "If there is a layout grid, use the domain for this row in the grid for this scene subplot .", + "description": "If there is a layout grid, use the domain for this row in the grid for this scene subplot.", "dflt": 0, "editType": "plot", "min": 0, @@ -9469,7 +9469,7 @@ "valType": "any" }, "xref": { - "description": "Sets the selection's x coordinate axis. If set to a x axis id (e.g. *x* or *x2*), the `x` position refers to a x coordinate. If set to *paper*, the `x` position refers to the distance from the left of the plotting area in normalized coordinates where *0* (*1*) corresponds to the left (right). If set to a x axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the left of the domain of that axis: e.g., *x2 domain* refers to the domain of the second x axis and a x position of 0.5 refers to the point between the left and the right of the domain of the second x axis.", + "description": "Sets the selection's x coordinate axis. If set to a x axis id (e.g. *x* or *x2*), the `x` position refers to a x coordinate. If set to *paper*, the `x` position refers to the distance from the left of the plotting area in normalized coordinates where *0* (*1*) corresponds to the left (right). If set to a x axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the left of the domain of that axis: e.g., *x2 domain* refers to the domain of the second x axis and a x position of 0.5 refers to the point between the left and the right of the domain of the second x axis.", "editType": "arraydraw", "valType": "enumerated", "values": [ @@ -9488,7 +9488,7 @@ "valType": "any" }, "yref": { - "description": "Sets the selection's x coordinate axis. If set to a y axis id (e.g. *y* or *y2*), the `y` position refers to a y coordinate. If set to *paper*, the `y` position refers to the distance from the bottom of the plotting area in normalized coordinates where *0* (*1*) corresponds to the bottom (top). If set to a y axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the bottom of the domain of that axis: e.g., *y2 domain* refers to the domain of the second y axis and a y position of 0.5 refers to the point between the bottom and the top of the domain of the second y axis.", + "description": "Sets the selection's x coordinate axis. If set to a y axis id (e.g. *y* or *y2*), the `y` position refers to a y coordinate. If set to *paper*, the `y` position refers to the distance from the bottom of the plotting area in normalized coordinates where *0* (*1*) corresponds to the bottom (top). If set to a y axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the bottom of the domain of that axis: e.g., *y2 domain* refers to the domain of the second y axis and a y position of 0.5 refers to the point between the bottom and the top of the domain of the second y axis.", "editType": "arraydraw", "valType": "enumerated", "values": [ @@ -9947,7 +9947,7 @@ }, "xref": { "arrayOk": true, - "description": "Sets the shape's x coordinate axis. If set to a x axis id (e.g. *x* or *x2*), the `x` position refers to a x coordinate. If set to *paper*, the `x` position refers to the distance from the left of the plotting area in normalized coordinates where *0* (*1*) corresponds to the left (right). If set to a x axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the left of the domain of that axis: e.g., *x2 domain* refers to the domain of the second x axis and a x position of 0.5 refers to the point between the left and the right of the domain of the second x axis. If an array of axis IDs is provided, each `x` value will refer to the corresponding axis, e.g., ['x', 'x2'] for a rectangle, line, or circle means `x0` uses the `x` axis and `x1` uses the `x2` axis. Path shapes using an array should have one entry for each x coordinate in the string.", + "description": "Sets the shape's x coordinate axis. If set to a x axis id (e.g. *x* or *x2*), the `x` position refers to a x coordinate. If set to *paper*, the `x` position refers to the distance from the left of the plotting area in normalized coordinates where *0* (*1*) corresponds to the left (right). If set to a x axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the left of the domain of that axis: e.g., *x2 domain* refers to the domain of the second x axis and a x position of 0.5 refers to the point between the left and the right of the domain of the second x axis. If an array of axis IDs is provided, each `x` value will refer to the corresponding axis, e.g., ['x', 'x2'] for a rectangle, line, or circle means `x0` uses the `x` axis and `x1` uses the `x2` axis. Path shapes using an array should have one entry for each x coordinate in the string.", "editType": "calc", "valType": "enumerated", "values": [ @@ -10003,7 +10003,7 @@ }, "yref": { "arrayOk": true, - "description": "Sets the shape's y coordinate axis. If set to a y axis id (e.g. *y* or *y2*), the `y` position refers to a y coordinate. If set to *paper*, the `y` position refers to the distance from the bottom of the plotting area in normalized coordinates where *0* (*1*) corresponds to the bottom (top). If set to a y axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the bottom of the domain of that axis: e.g., *y2 domain* refers to the domain of the second y axis and a y position of 0.5 refers to the point between the bottom and the top of the domain of the second y axis. If an array of axis IDs is provided, each `y` value will refer to the corresponding axis, e.g., ['y', 'y2'] for a rectangle, line, or circle means `y0` uses the `y` axis and `y1` uses the `y2` axis. Path shapes using an array should have one entry for each y coordinate in the string.", + "description": "Sets the shape's y coordinate axis. If set to a y axis id (e.g. *y* or *y2*), the `y` position refers to a y coordinate. If set to *paper*, the `y` position refers to the distance from the bottom of the plotting area in normalized coordinates where *0* (*1*) corresponds to the bottom (top). If set to a y axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the bottom of the domain of that axis: e.g., *y2 domain* refers to the domain of the second y axis and a y position of 0.5 refers to the point between the bottom and the top of the domain of the second y axis. If an array of axis IDs is provided, each `y` value will refer to the corresponding axis, e.g., ['y', 'y2'] for a rectangle, line, or circle means `y0` uses the `y` axis and `y1` uses the `y2` axis. Path shapes using an array should have one entry for each y coordinate in the string.", "editType": "calc", "valType": "enumerated", "values": [ @@ -10559,7 +10559,7 @@ }, "domain": { "column": { - "description": "If there is a layout grid, use the domain for this column in the grid for this smith subplot .", + "description": "If there is a layout grid, use the domain for this column in the grid for this smith subplot.", "dflt": 0, "editType": "plot", "min": 0, @@ -10568,7 +10568,7 @@ "editType": "plot", "role": "object", "row": { - "description": "If there is a layout grid, use the domain for this row in the grid for this smith subplot .", + "description": "If there is a layout grid, use the domain for this row in the grid for this smith subplot.", "dflt": 0, "editType": "plot", "min": 0, @@ -12745,7 +12745,7 @@ }, "domain": { "column": { - "description": "If there is a layout grid, use the domain for this column in the grid for this ternary subplot .", + "description": "If there is a layout grid, use the domain for this column in the grid for this ternary subplot.", "dflt": 0, "editType": "plot", "min": 0, @@ -12754,7 +12754,7 @@ "editType": "plot", "role": "object", "row": { - "description": "If there is a layout grid, use the domain for this row in the grid for this ternary subplot .", + "description": "If there is a layout grid, use the domain for this row in the grid for this ternary subplot.", "dflt": 0, "editType": "plot", "min": 0, @@ -14629,7 +14629,7 @@ ] }, "spikemode": { - "description": "Determines the drawing mode for the spike line If *toaxis*, the line is drawn from the data point to the axis the series is plotted on. If *across*, the line is drawn across the entire plot area, and supercedes *toaxis*. If *marker*, then a marker dot is drawn on the axis the series is plotted on", + "description": "Determines the drawing mode for the spike line If *toaxis*, the line is drawn from the data point to the axis the series is plotted on. If *across*, the line is drawn across the entire plot area, and supercedes *toaxis*. If *marker*, then a marker dot is drawn on the axis the series is plotted on", "dflt": "toaxis", "editType": "none", "flags": [ @@ -15908,7 +15908,7 @@ ] }, "spikemode": { - "description": "Determines the drawing mode for the spike line If *toaxis*, the line is drawn from the data point to the axis the series is plotted on. If *across*, the line is drawn across the entire plot area, and supercedes *toaxis*. If *marker*, then a marker dot is drawn on the axis the series is plotted on", + "description": "Determines the drawing mode for the spike line If *toaxis*, the line is drawn from the data point to the axis the series is plotted on. If *across*, the line is drawn across the entire plot area, and supercedes *toaxis*. If *marker*, then a marker dot is drawn on the axis the series is plotted on", "dflt": "toaxis", "editType": "none", "flags": [ @@ -17784,7 +17784,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -18665,7 +18665,7 @@ ] }, "xhoverformat": { - "description": "Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -18741,7 +18741,7 @@ ] }, "yhoverformat": { - "description": "Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -19847,7 +19847,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -21805,7 +21805,7 @@ ] }, "xhoverformat": { - "description": "Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -21878,7 +21878,7 @@ ] }, "yhoverformat": { - "description": "Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -22606,7 +22606,7 @@ ] }, "xhoverformat": { - "description": "Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -22645,7 +22645,7 @@ "valType": "subplotid" }, "yhoverformat": { - "description": "Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -22693,7 +22693,7 @@ } }, "meta": { - "description": "The candlestick is a style of financial chart describing open, high, low and close for a given `x` coordinate (most likely time). The boxes represent the spread between the `open` and `close` values and the lines represent the spread between the `low` and `high` values Sample points where the close value is higher (lower) then the open value are called increasing (decreasing). By default, increasing candles are drawn in green whereas decreasing are drawn in red." + "description": "The candlestick is a style of financial chart describing open, high, low and close for a given `x` coordinate (most likely time). The boxes represent the spread between the `open` and `close` values and the lines represent the spread between the `low` and `high` values Sample points where the close value is higher (lower) than the open value are called increasing (decreasing). By default, increasing candles are drawn in green whereas decreasing are drawn in red." }, "type": "candlestick" }, @@ -24967,7 +24967,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -26267,7 +26267,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -27557,7 +27557,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -28886,7 +28886,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -29572,7 +29572,7 @@ "valType": "data_array" }, "uhoverformat": { - "description": "Sets the hover text formatting rulefor `u` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", + "description": "Sets the hover text formatting rule for `u` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", "dflt": "", "editType": "none", "valType": "string" @@ -29598,7 +29598,7 @@ "valType": "data_array" }, "vhoverformat": { - "description": "Sets the hover text formatting rulefor `v` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", + "description": "Sets the hover text formatting rule for `v` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", "dflt": "", "editType": "none", "valType": "string" @@ -29625,7 +29625,7 @@ "valType": "data_array" }, "whoverformat": { - "description": "Sets the hover text formatting rulefor `w` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", + "description": "Sets the hover text formatting rule for `w` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", "dflt": "", "editType": "none", "valType": "string" @@ -29641,7 +29641,7 @@ "valType": "data_array" }, "xhoverformat": { - "description": "Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -29657,7 +29657,7 @@ "valType": "data_array" }, "yhoverformat": { - "description": "Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -29673,7 +29673,7 @@ "valType": "data_array" }, "zhoverformat": { - "description": "Sets the hover text formatting rulefor `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -30244,7 +30244,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -31253,7 +31253,7 @@ ] }, "xhoverformat": { - "description": "Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -31348,7 +31348,7 @@ ] }, "yhoverformat": { - "description": "Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -31408,7 +31408,7 @@ "valType": "boolean" }, "zhoverformat": { - "description": "Sets the hover text formatting rulefor `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", + "description": "Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", "dflt": "", "editType": "none", "valType": "string" @@ -32080,7 +32080,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -33307,7 +33307,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -34535,7 +34535,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -36437,7 +36437,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -37130,7 +37130,7 @@ "valType": "subplotid" }, "xhoverformat": { - "description": "Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -37180,7 +37180,7 @@ "valType": "subplotid" }, "yhoverformat": { - "description": "Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -37296,7 +37296,7 @@ }, "domain": { "column": { - "description": "If there is a layout grid, use the domain for this column in the grid for this funnelarea trace .", + "description": "If there is a layout grid, use the domain for this column in the grid for this funnelarea trace.", "dflt": 0, "editType": "calc", "min": 0, @@ -37305,7 +37305,7 @@ "editType": "calc", "role": "object", "row": { - "description": "If there is a layout grid, use the domain for this row in the grid for this funnelarea trace .", + "description": "If there is a layout grid, use the domain for this row in the grid for this funnelarea trace.", "dflt": 0, "editType": "calc", "min": 0, @@ -39086,7 +39086,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -39861,7 +39861,7 @@ "valType": "number" }, "xhoverformat": { - "description": "Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -39966,7 +39966,7 @@ "valType": "number" }, "yhoverformat": { - "description": "Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -40029,7 +40029,7 @@ "valType": "boolean" }, "zhoverformat": { - "description": "Sets the hover text formatting rulefor `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", + "description": "Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", "dflt": "", "editType": "none", "valType": "string" @@ -41459,7 +41459,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -42184,7 +42184,7 @@ }, "role": "object", "size": { - "description": "Sets the size of each x axis bin. Default behavior: If `nbinsx` is 0 or omitted, we choose a nice round bin size such that the number of bins is about the same as the typical number of samples in each bin. If `nbinsx` is provided, we choose a nice round bin size giving no more than that many bins. For date data, use milliseconds or *M* for months, as in `axis.dtick`. For category data, the number of categories to bin together (always defaults to 1). If multiple non-overlaying histograms share a subplot, the first explicit `size` is used and all others discarded. If no `size` is provided,the sample data from all traces is combined to determine `size` as described above.", + "description": "Sets the size of each x axis bin. Default behavior: If `nbinsx` is 0 or omitted, we choose a nice round bin size such that the number of bins is about the same as the typical number of samples in each bin. If `nbinsx` is provided, we choose a nice round bin size giving no more than that many bins. For date data, use milliseconds or *M* for months, as in `axis.dtick`. For category data, the number of categories to bin together (always defaults to 1). If multiple non-overlaying histograms share a subplot, the first explicit `size` is used and all others discarded. If no `size` is provided, the sample data from all traces is combined to determine `size` as described above.", "editType": "calc", "valType": "any" }, @@ -42219,7 +42219,7 @@ ] }, "xhoverformat": { - "description": "Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -42249,7 +42249,7 @@ }, "role": "object", "size": { - "description": "Sets the size of each y axis bin. Default behavior: If `nbinsy` is 0 or omitted, we choose a nice round bin size such that the number of bins is about the same as the typical number of samples in each bin. If `nbinsy` is provided, we choose a nice round bin size giving no more than that many bins. For date data, use milliseconds or *M* for months, as in `axis.dtick`. For category data, the number of categories to bin together (always defaults to 1). If multiple non-overlaying histograms share a subplot, the first explicit `size` is used and all others discarded. If no `size` is provided,the sample data from all traces is combined to determine `size` as described above.", + "description": "Sets the size of each y axis bin. Default behavior: If `nbinsy` is 0 or omitted, we choose a nice round bin size such that the number of bins is about the same as the typical number of samples in each bin. If `nbinsy` is provided, we choose a nice round bin size giving no more than that many bins. For date data, use milliseconds or *M* for months, as in `axis.dtick`. For category data, the number of categories to bin together (always defaults to 1). If multiple non-overlaying histograms share a subplot, the first explicit `size` is used and all others discarded. If no `size` is provided, the sample data from all traces is combined to determine `size` as described above.", "editType": "calc", "valType": "any" }, @@ -42284,7 +42284,7 @@ ] }, "yhoverformat": { - "description": "Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -42923,7 +42923,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -43710,7 +43710,7 @@ "valType": "number" }, "xhoverformat": { - "description": "Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -43788,7 +43788,7 @@ "valType": "number" }, "yhoverformat": { - "description": "Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -43811,7 +43811,7 @@ "valType": "boolean" }, "zhoverformat": { - "description": "Sets the hover text formatting rulefor `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", + "description": "Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", "dflt": "", "editType": "none", "valType": "string" @@ -44440,7 +44440,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -45457,7 +45457,7 @@ ] }, "xhoverformat": { - "description": "Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -45528,7 +45528,7 @@ ] }, "yhoverformat": { - "description": "Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -45551,7 +45551,7 @@ "valType": "boolean" }, "zhoverformat": { - "description": "Sets the hover text formatting rulefor `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", + "description": "Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", "dflt": "", "editType": "none", "valType": "string" @@ -45636,7 +45636,7 @@ }, "domain": { "column": { - "description": "If there is a layout grid, use the domain for this column in the grid for this icicle trace .", + "description": "If there is a layout grid, use the domain for this column in the grid for this icicle trace.", "dflt": 0, "editType": "calc", "min": 0, @@ -45645,7 +45645,7 @@ "editType": "calc", "role": "object", "row": { - "description": "If there is a layout grid, use the domain for this row in the grid for this icicle trace .", + "description": "If there is a layout grid, use the domain for this row in the grid for this icicle trace.", "dflt": 0, "editType": "calc", "min": 0, @@ -46832,7 +46832,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -47279,7 +47279,7 @@ "editType": "calc", "role": "object", "side": { - "description": "Determines on which side of the the treemap the `pathbar` should be presented.", + "description": "Determines on which side of the treemap the `pathbar` should be presented.", "dflt": "top", "editType": "plot", "valType": "enumerated", @@ -48568,7 +48568,7 @@ }, "domain": { "column": { - "description": "If there is a layout grid, use the domain for this column in the grid for this indicator trace .", + "description": "If there is a layout grid, use the domain for this column in the grid for this indicator trace.", "dflt": 0, "editType": "calc", "min": 0, @@ -48577,7 +48577,7 @@ "editType": "calc", "role": "object", "row": { - "description": "If there is a layout grid, use the domain for this row in the grid for this indicator trace .", + "description": "If there is a layout grid, use the domain for this row in the grid for this indicator trace.", "dflt": 0, "editType": "calc", "min": 0, @@ -50217,7 +50217,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", "editType": "calc", "valType": "enumerated", "values": [ @@ -51084,7 +51084,7 @@ "valType": "data_array" }, "valuehoverformat": { - "description": "Sets the hover text formatting rulefor `value` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", + "description": "Sets the hover text formatting rule for `value` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", "dflt": "", "editType": "calc", "valType": "string" @@ -51111,7 +51111,7 @@ "valType": "data_array" }, "xhoverformat": { - "description": "Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", "dflt": "", "editType": "calc", "valType": "string" @@ -51127,7 +51127,7 @@ "valType": "data_array" }, "yhoverformat": { - "description": "Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", "dflt": "", "editType": "calc", "valType": "string" @@ -51143,7 +51143,7 @@ "valType": "data_array" }, "zhoverformat": { - "description": "Sets the hover text formatting rulefor `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`.", "dflt": "", "editType": "calc", "valType": "string" @@ -51750,7 +51750,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -52200,7 +52200,7 @@ "valType": "string" }, "j": { - "description": "A vector of vertex indices, i.e. integer values between 0 and the length of the vertex vectors, representing the *second* vertex of a triangle. For example, `{i[m], j[m], k[m]}` together represent face m (triangle m) in the mesh, where `j[m] = n` points to the triplet `{x[n], y[n], z[n]}` in the vertex arrays. Therefore, each element in `j` represents a point in space, which is the second vertex of a triangle.", + "description": "A vector of vertex indices, i.e. integer values between 0 and the length of the vertex vectors, representing the *second* vertex of a triangle. For example, `{i[m], j[m], k[m]}` together represent face m (triangle m) in the mesh, where `j[m] = n` points to the triplet `{x[n], y[n], z[n]}` in the vertex arrays. Therefore, each element in `j` represents a point in space, which is the second vertex of a triangle.", "editType": "calc", "valType": "data_array" }, @@ -52210,7 +52210,7 @@ "valType": "string" }, "k": { - "description": "A vector of vertex indices, i.e. integer values between 0 and the length of the vertex vectors, representing the *third* vertex of a triangle. For example, `{i[m], j[m], k[m]}` together represent face m (triangle m) in the mesh, where `k[m] = n` points to the triplet `{x[n], y[n], z[n]}` in the vertex arrays. Therefore, each element in `k` represents a point in space, which is the third vertex of a triangle.", + "description": "A vector of vertex indices, i.e. integer values between 0 and the length of the vertex vectors, representing the *third* vertex of a triangle. For example, `{i[m], j[m], k[m]}` together represent face m (triangle m) in the mesh, where `k[m] = n` points to the triplet `{x[n], y[n], z[n]}` in the vertex arrays. Therefore, each element in `k` represents a point in space, which is the third vertex of a triangle.", "editType": "calc", "valType": "data_array" }, @@ -52571,7 +52571,7 @@ ] }, "xhoverformat": { - "description": "Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -52611,7 +52611,7 @@ ] }, "yhoverformat": { - "description": "Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -52651,7 +52651,7 @@ ] }, "zhoverformat": { - "description": "Sets the hover text formatting rulefor `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -53349,7 +53349,7 @@ ] }, "xhoverformat": { - "description": "Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -53388,7 +53388,7 @@ "valType": "subplotid" }, "yhoverformat": { - "description": "Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -53406,7 +53406,7 @@ "showLegend" ], "meta": { - "description": "The ohlc (short for Open-High-Low-Close) is a style of financial chart describing open, high, low and close for a given `x` coordinate (most likely time). The tip of the lines represent the `low` and `high` values and the horizontal segments represent the `open` and `close` values. Sample points where the close value is higher (lower) then the open value are called increasing (decreasing). By default, increasing items are drawn in green whereas decreasing are drawn in red." + "description": "The ohlc (short for Open-High-Low-Close) is a style of financial chart describing open, high, low and close for a given `x` coordinate (most likely time). The tip of the lines represent the `low` and `high` values and the horizontal segments represent the `open` and `close` values. Sample points where the close value is higher (lower) than the open value are called increasing (decreasing). By default, increasing items are drawn in green whereas decreasing are drawn in red." }, "type": "ohlc" }, @@ -53514,7 +53514,7 @@ }, "domain": { "column": { - "description": "If there is a layout grid, use the domain for this column in the grid for this parcats trace .", + "description": "If there is a layout grid, use the domain for this column in the grid for this parcats trace.", "dflt": 0, "editType": "calc", "min": 0, @@ -53523,7 +53523,7 @@ "editType": "calc", "role": "object", "row": { - "description": "If there is a layout grid, use the domain for this row in the grid for this parcats trace .", + "description": "If there is a layout grid, use the domain for this row in the grid for this parcats trace.", "dflt": 0, "editType": "calc", "min": 0, @@ -54389,7 +54389,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -54805,7 +54805,7 @@ }, "domain": { "column": { - "description": "If there is a layout grid, use the domain for this column in the grid for this parcoords trace .", + "description": "If there is a layout grid, use the domain for this column in the grid for this parcoords trace.", "dflt": 0, "editType": "plot", "min": 0, @@ -54814,7 +54814,7 @@ "editType": "plot", "role": "object", "row": { - "description": "If there is a layout grid, use the domain for this row in the grid for this parcoords trace .", + "description": "If there is a layout grid, use the domain for this row in the grid for this parcoords trace.", "dflt": 0, "editType": "plot", "min": 0, @@ -55679,7 +55679,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -56163,7 +56163,7 @@ }, "domain": { "column": { - "description": "If there is a layout grid, use the domain for this column in the grid for this pie trace .", + "description": "If there is a layout grid, use the domain for this column in the grid for this pie trace.", "dflt": 0, "editType": "calc", "min": 0, @@ -56172,7 +56172,7 @@ "editType": "calc", "role": "object", "row": { - "description": "If there is a layout grid, use the domain for this row in the grid for this pie trace .", + "description": "If there is a layout grid, use the domain for this row in the grid for this pie trace.", "dflt": 0, "editType": "calc", "min": 0, @@ -57648,7 +57648,7 @@ }, "domain": { "column": { - "description": "If there is a layout grid, use the domain for this column in the grid for this sankey trace .", + "description": "If there is a layout grid, use the domain for this column in the grid for this sankey trace.", "dflt": 0, "editType": "calc", "min": 0, @@ -57657,7 +57657,7 @@ "editType": "calc", "role": "object", "row": { - "description": "If there is a layout grid, use the domain for this row in the grid for this sankey trace .", + "description": "If there is a layout grid, use the domain for this row in the grid for this sankey trace.", "dflt": 0, "editType": "calc", "min": 0, @@ -60483,7 +60483,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -61738,7 +61738,7 @@ ] }, "xhoverformat": { - "description": "Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -61814,7 +61814,7 @@ ] }, "yhoverformat": { - "description": "Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -63152,7 +63152,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", "editType": "calc", "valType": "enumerated", "values": [ @@ -63862,7 +63862,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", "editType": "calc", "valType": "enumerated", "values": [ @@ -64482,7 +64482,7 @@ ] }, "xhoverformat": { - "description": "Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", "dflt": "", "editType": "calc", "valType": "string" @@ -64522,7 +64522,7 @@ ] }, "yhoverformat": { - "description": "Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", "dflt": "", "editType": "calc", "valType": "string" @@ -64562,7 +64562,7 @@ ] }, "zhoverformat": { - "description": "Sets the hover text formatting rulefor `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`.", "dflt": "", "editType": "calc", "valType": "string" @@ -64902,7 +64902,7 @@ }, "hovertext": { "arrayOk": true, - "description": "Sets hover text elements associated with each (a,b) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the the data points in (a,b). To be seen, trace `hoverinfo` must contain a *text* flag.", + "description": "Sets hover text elements associated with each (a,b) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the data points in (a,b). To be seen, trace `hoverinfo` must contain a *text* flag.", "dflt": "", "editType": "style", "valType": "string" @@ -65708,7 +65708,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -66632,7 +66632,7 @@ }, "text": { "arrayOk": true, - "description": "Sets text elements associated with each (a,b) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the the data points in (a,b). If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", + "description": "Sets text elements associated with each (a,b) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the data points in (a,b). If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", "dflt": "", "editType": "calc", "valType": "string" @@ -68034,7 +68034,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", "editType": "calc", "valType": "enumerated", "values": [ @@ -70475,7 +70475,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", "editType": "calc", "valType": "enumerated", "values": [ @@ -71562,7 +71562,7 @@ ] }, "xhoverformat": { - "description": "Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", "dflt": "", "editType": "calc", "valType": "string" @@ -71636,7 +71636,7 @@ ] }, "yhoverformat": { - "description": "Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", "dflt": "", "editType": "calc", "valType": "string" @@ -72816,7 +72816,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", "editType": "calc", "valType": "enumerated", "values": [ @@ -74372,7 +74372,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", "editType": "calc", "valType": "enumerated", "values": [ @@ -75911,7 +75911,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -78210,7 +78210,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", "editType": "calc", "valType": "enumerated", "values": [ @@ -80433,7 +80433,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -81965,7 +81965,7 @@ }, "hovertext": { "arrayOk": true, - "description": "Sets hover text elements associated with each (a,b,c) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the the data points in (a,b,c). To be seen, trace `hoverinfo` must contain a *text* flag.", + "description": "Sets hover text elements associated with each (a,b,c) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the data points in (a,b,c). To be seen, trace `hoverinfo` must contain a *text* flag.", "dflt": "", "editType": "style", "valType": "string" @@ -82771,7 +82771,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -83708,7 +83708,7 @@ }, "text": { "arrayOk": true, - "description": "Sets text elements associated with each (a,b,c) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the the data points in (a,b,c). If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", + "description": "Sets text elements associated with each (a,b,c) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the data points in (a,b,c). If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", "dflt": "", "editType": "calc", "valType": "string" @@ -85040,7 +85040,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -85950,7 +85950,7 @@ "valType": "info_array" }, "xhoverformat": { - "description": "Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -85967,7 +85967,7 @@ "valType": "info_array" }, "yhoverformat": { - "description": "Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -86562,7 +86562,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -87268,7 +87268,7 @@ "valType": "data_array" }, "uhoverformat": { - "description": "Sets the hover text formatting rulefor `u` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", + "description": "Sets the hover text formatting rule for `u` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", "dflt": "", "editType": "none", "valType": "string" @@ -87294,7 +87294,7 @@ "valType": "data_array" }, "vhoverformat": { - "description": "Sets the hover text formatting rulefor `v` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", + "description": "Sets the hover text formatting rule for `v` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", "dflt": "", "editType": "none", "valType": "string" @@ -87321,7 +87321,7 @@ "valType": "data_array" }, "whoverformat": { - "description": "Sets the hover text formatting rulefor `w` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", + "description": "Sets the hover text formatting rule for `w` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", "dflt": "", "editType": "none", "valType": "string" @@ -87337,7 +87337,7 @@ "valType": "data_array" }, "xhoverformat": { - "description": "Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -87353,7 +87353,7 @@ "valType": "data_array" }, "yhoverformat": { - "description": "Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -87369,7 +87369,7 @@ "valType": "data_array" }, "zhoverformat": { - "description": "Sets the hover text formatting rulefor `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -87424,7 +87424,7 @@ }, "domain": { "column": { - "description": "If there is a layout grid, use the domain for this column in the grid for this sunburst trace .", + "description": "If there is a layout grid, use the domain for this column in the grid for this sunburst trace.", "dflt": 0, "editType": "calc", "min": 0, @@ -87433,7 +87433,7 @@ "editType": "calc", "role": "object", "row": { - "description": "If there is a layout grid, use the domain for this row in the grid for this sunburst trace .", + "description": "If there is a layout grid, use the domain for this row in the grid for this sunburst trace.", "dflt": 0, "editType": "calc", "min": 0, @@ -88632,7 +88632,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -89920,7 +89920,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", "editType": "calc", "valType": "enumerated", "values": [ @@ -90918,7 +90918,7 @@ ] }, "xhoverformat": { - "description": "Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", "dflt": "", "editType": "calc", "valType": "string" @@ -90958,7 +90958,7 @@ ] }, "yhoverformat": { - "description": "Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", "dflt": "", "editType": "calc", "valType": "string" @@ -90998,7 +90998,7 @@ ] }, "zhoverformat": { - "description": "Sets the hover text formatting rulefor `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`.", "dflt": "", "editType": "calc", "valType": "string" @@ -91314,7 +91314,7 @@ }, "domain": { "column": { - "description": "If there is a layout grid, use the domain for this column in the grid for this table trace .", + "description": "If there is a layout grid, use the domain for this column in the grid for this table trace.", "dflt": 0, "editType": "calc", "min": 0, @@ -91323,7 +91323,7 @@ "editType": "calc", "role": "object", "row": { - "description": "If there is a layout grid, use the domain for this row in the grid for this table trace .", + "description": "If there is a layout grid, use the domain for this row in the grid for this table trace.", "dflt": 0, "editType": "calc", "min": 0, @@ -92092,7 +92092,7 @@ }, "domain": { "column": { - "description": "If there is a layout grid, use the domain for this column in the grid for this treemap trace .", + "description": "If there is a layout grid, use the domain for this column in the grid for this treemap trace.", "dflt": 0, "editType": "calc", "min": 0, @@ -92101,7 +92101,7 @@ "editType": "calc", "role": "object", "row": { - "description": "If there is a layout grid, use the domain for this row in the grid for this treemap trace .", + "description": "If there is a layout grid, use the domain for this row in the grid for this treemap trace.", "dflt": 0, "editType": "calc", "min": 0, @@ -93277,7 +93277,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -93769,7 +93769,7 @@ "editType": "calc", "role": "object", "side": { - "description": "Determines on which side of the the treemap the `pathbar` should be presented.", + "description": "Determines on which side of the treemap the `pathbar` should be presented.", "dflt": "top", "editType": "plot", "valType": "enumerated", @@ -95422,7 +95422,7 @@ ] }, "scalegroup": { - "description": "If there are multiple violins that should be sized according to to some metric (see `scalemode`), link them by providing a non-empty group id here shared by every trace in the same group. If a violin's `width` is undefined, `scalegroup` will default to the trace's name. In this case, violins with the same names will be linked together", + "description": "If there are multiple violins that should be sized according to some metric (see `scalemode`), link them by providing a non-empty group id here shared by every trace in the same group. If a violin's `width` is undefined, `scalegroup` will default to the trace's name. In this case, violins with the same names will be linked together", "dflt": "", "editType": "calc", "valType": "string" @@ -95614,7 +95614,7 @@ "valType": "subplotid" }, "xhoverformat": { - "description": "Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -95641,7 +95641,7 @@ "valType": "subplotid" }, "yhoverformat": { - "description": "Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -95697,7 +95697,7 @@ } }, "meta": { - "description": "In vertical (horizontal) violin plots, statistics are computed using `y` (`x`) values. By supplying an `x` (`y`) array, one violin per distinct x (y) value is drawn If no `x` (`y`) {array} is provided, a single violin is drawn. That violin position is then positioned with with `name` or with `x0` (`y0`) if provided." + "description": "In vertical (horizontal) violin plots, statistics are computed using `y` (`x`) values. By supplying an `x` (`y`) array, one violin per distinct x (y) value is drawn If no `x` (`y`) {array} is provided, a single violin is drawn. That violin position is then positioned with `name` or with `x0` (`y0`) if provided." }, "type": "violin" }, @@ -96335,7 +96335,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", "editType": "calc", "valType": "enumerated", "values": [ @@ -97207,7 +97207,7 @@ "valType": "data_array" }, "valuehoverformat": { - "description": "Sets the hover text formatting rulefor `value` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", + "description": "Sets the hover text formatting rule for `value` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", "dflt": "", "editType": "calc", "valType": "string" @@ -97234,7 +97234,7 @@ "valType": "data_array" }, "xhoverformat": { - "description": "Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", "dflt": "", "editType": "calc", "valType": "string" @@ -97250,7 +97250,7 @@ "valType": "data_array" }, "yhoverformat": { - "description": "Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", "dflt": "", "editType": "calc", "valType": "string" @@ -97266,7 +97266,7 @@ "valType": "data_array" }, "zhoverformat": { - "description": "Sets the hover text formatting rulefor `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`.", "dflt": "", "editType": "calc", "valType": "string" @@ -98538,7 +98538,7 @@ "valType": "subplotid" }, "xhoverformat": { - "description": "Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" @@ -98588,7 +98588,7 @@ "valType": "subplotid" }, "yhoverformat": { - "description": "Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" From 5ebe107fa08ad91ab75651c4617f72bd99746646 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Thu, 21 May 2026 15:38:45 -0600 Subject: [PATCH 068/241] Generate more types from schema --- lib/index.d.ts | 37 +++--- src/types/ARCHITECTURE.md | 3 +- src/types/core/animation.d.ts | 149 ------------------------ src/types/core/api.d.ts | 2 +- src/types/core/config.d.ts | 58 +--------- src/types/core/data.d.ts | 61 +--------- src/types/core/events.d.ts | 11 +- src/types/generated/schema.d.ts | 118 ++++++++++++++++--- src/types/index.d.ts | 1 - src/types/lib/common.d.ts | 30 ----- tasks/generate_schema_types.mjs | 198 +++++++++++++++++++++++++++----- 11 files changed, 305 insertions(+), 363 deletions(-) delete mode 100644 src/types/core/animation.d.ts diff --git a/lib/index.d.ts b/lib/index.d.ts index cd2180da202..342576b4da3 100644 --- a/lib/index.d.ts +++ b/lib/index.d.ts @@ -27,22 +27,16 @@ export as namespace Plotly; // --------------------------------------------------------------------------- export type { - AxisType, - Calendar, Color, ColorScale, - Dash, Datum, DTickValue, ErrorBar, ErrorOptions, MarkerSymbol, - PatternShape, TypedArray, XAnchor, - XRef, YAnchor, - YRef, } from '../src/types/lib/common'; // --------------------------------------------------------------------------- @@ -50,6 +44,23 @@ export type { // --------------------------------------------------------------------------- export type { + // Common enum types + AxisType, + Calendar, + Dash, + PatternShape, + PlotType, + TransitionEasing, + XRef, + YRef, + + // Animation, frames, and config interfaces + AnimationFrameOpts, + AnimationOpts, + Edits, + Frame, + Transition, + // Shared interfaces ColorBar, Domain, @@ -161,24 +172,11 @@ export type { PlotData, PlotMarker, PlotNumber, - PlotType, ScatterLine, ScatterMarkerLine, Threshold, } from '../src/types/core/data'; -// --------------------------------------------------------------------------- -// Animation & template -// --------------------------------------------------------------------------- - -export type { - AnimationFrameOpts, - AnimationOpts, - Frame, - Transition, - TransitionEasing, -} from '../src/types/core/animation'; - // --------------------------------------------------------------------------- // Configuration // --------------------------------------------------------------------------- @@ -186,7 +184,6 @@ export type { export type { Config, DownloadImgopts, - Edits, ToImageButtonOptions, ToImgopts, } from '../src/types/core/config'; diff --git a/src/types/ARCHITECTURE.md b/src/types/ARCHITECTURE.md index 9c54639a126..3c9f60fbd96 100644 --- a/src/types/ARCHITECTURE.md +++ b/src/types/ARCHITECTURE.md @@ -75,8 +75,7 @@ src/types/ ├── index.d.ts # main re-export hub (public + internal) ├── core/ # hand-written types for the core API │ ├── api.d.ts # public API function signatures (newPlot, etc.) -│ ├── animation.d.ts # Frame, Transition, AnimationOpts -│ ├── config.d.ts # Config, Edits, ToImgopts +│ ├── config.d.ts # Config, ToImgopts (Edits re-exported from generated) │ ├── data.d.ts # PlotData, PlotMarker, ScatterLine, Data union │ ├── data.internal.d.ts # CalcData, FullData │ ├── events.d.ts # PlotMouseEvent, PlotlyHTMLElement, etc. diff --git a/src/types/core/animation.d.ts b/src/types/core/animation.d.ts deleted file mode 100644 index 3a93c229212..00000000000 --- a/src/types/core/animation.d.ts +++ /dev/null @@ -1,149 +0,0 @@ -/** - * Animation types - * - * Defines animation and transition types for Plotly. - */ - -import type { Data } from './data'; -import type { Layout } from './layout'; - -/** - * Transition easing type - */ -export type TransitionEasing = - | 'linear' - | 'quad' - | 'cubic' - | 'sin' - | 'exp' - | 'circle' - | 'elastic' - | 'back' - | 'bounce' - | 'linear-in' - | 'quad-in' - | 'cubic-in' - | 'sin-in' - | 'exp-in' - | 'circle-in' - | 'elastic-in' - | 'back-in' - | 'bounce-in' - | 'linear-out' - | 'quad-out' - | 'cubic-out' - | 'sin-out' - | 'exp-out' - | 'circle-out' - | 'elastic-out' - | 'back-out' - | 'bounce-out' - | 'linear-in-out' - | 'quad-in-out' - | 'cubic-in-out' - | 'sin-in-out' - | 'exp-in-out' - | 'circle-in-out' - | 'elastic-in-out' - | 'back-in-out' - | 'bounce-in-out'; - -/** - * Transition configuration - */ -export interface Transition { - /** - * Duration of the transition in milliseconds - */ - duration?: number; - - /** - * Easing function for the transition - */ - easing?: TransitionEasing; - - /** - * Ordering of the transition - */ - ordering?: 'layout first' | 'traces first'; -} - -/** - * Animation frame options - */ -export interface AnimationFrameOpts { - /** - * Duration of the frame in milliseconds - */ - duration?: number; - - /** - * Whether to redraw the plot - */ - redraw?: boolean; -} - -/** - * Animation options - */ -export interface AnimationOpts { - /** - * Animation mode - */ - mode?: 'immediate' | 'next' | 'afterall'; - - /** - * Animation direction - */ - direction?: 'forward' | 'reverse'; - - /** - * Start from current state - */ - fromcurrent?: boolean; - - /** - * Transition configuration - */ - transition?: Partial | Array>; - - /** - * Frame configuration - */ - frame?: Partial | Array>; -} - -/** - * Animation frame - */ -export interface Frame { - /** - * Frame group - */ - group?: string; - - /** - * Frame name - */ - name: string; - - /** - * Trace indices this frame applies to - */ - traces?: number[]; - - /** - * Base frame to inherit from - */ - baseframe?: string; - - /** - * Data updates for this frame - */ - data?: Data[]; - - /** - * Layout updates for this frame - */ - layout?: Partial; -} diff --git a/src/types/core/api.d.ts b/src/types/core/api.d.ts index c328c55fa14..d410f46bc70 100644 --- a/src/types/core/api.d.ts +++ b/src/types/core/api.d.ts @@ -2,7 +2,7 @@ * Public API function types for Plotly.js */ -import type { AnimationOpts, Frame } from './animation'; +import type { AnimationOpts, Frame } from '../generated/schema'; import type { Config, DownloadImgopts, ToImgopts } from './config'; import type { Data } from './data'; import type { PlotlyHTMLElement } from './events'; diff --git a/src/types/core/config.d.ts b/src/types/core/config.d.ts index 55cb9f4891b..9a02fcfa89d 100644 --- a/src/types/core/config.d.ts +++ b/src/types/core/config.d.ts @@ -4,65 +4,11 @@ * Plotly configuration options and edit settings. */ +import type { Edits } from '../generated/schema'; import type { PlotlyHTMLElement } from './events'; import type { ModeBarButtonAny, ModeBarDefaultButtons } from './layout'; -// --------------------------------------------------------------------------- -// Edits -// --------------------------------------------------------------------------- - -export interface Edits { - /** - * Determines if the main anchor of the annotation is editable. - * @default false - */ - annotationPosition: boolean; - /** - * Has only an effect for annotations with arrows. - * @default false - */ - annotationTail: boolean; - /** - * Enables editing annotation text. - * @default false - */ - annotationText: boolean; - /** - * Enables editing axis title text. - * @default false - */ - axisTitleText: boolean; - /** - * Enables moving colorbars. - * @default false - */ - colorbarPosition: boolean; - /** - * Enables editing colorbar title text. - * @default false - */ - colorbarTitleText: boolean; - /** - * Enables moving the legend. - * @default false - */ - legendPosition: boolean; - /** - * Enables editing trace name fields from the legend. - * @default false - */ - legendText: boolean; - /** - * Enables moving shapes. - * @default false - */ - shapePosition: boolean; - /** - * Enables editing the global layout title. - * @default false - */ - titleText: boolean; -} +export type { Edits }; // --------------------------------------------------------------------------- // Image export options diff --git a/src/types/core/data.d.ts b/src/types/core/data.d.ts index aaae205cea6..1ab2a38d309 100644 --- a/src/types/core/data.d.ts +++ b/src/types/core/data.d.ts @@ -9,15 +9,19 @@ import type { BoxData, CandlestickData, ColorBar, + Dash, Font, HoverLabel, OhlcData, Pattern, PieData, + PlotType, SankeyData, ViolinData, } from '../generated/schema'; -import type { Color, ColorScale, Dash, Datum, ErrorBar, MarkerSymbol, TypedArray } from '../lib/common'; +import type { Color, ColorScale, Datum, ErrorBar, MarkerSymbol, TypedArray } from '../lib/common'; + +export type { PlotType }; // --------------------------------------------------------------------------- // Trace support types (used by PlotData) @@ -93,61 +97,6 @@ export interface Delta { }; } -// --------------------------------------------------------------------------- -// PlotType -// --------------------------------------------------------------------------- - -export type PlotType = - | 'bar' - | 'barpolar' - | 'box' - | 'candlestick' - | 'carpet' - | 'choropleth' - | 'choroplethmap' - | 'choroplethmapbox' - | 'cone' - | 'contour' - | 'contourcarpet' - | 'densitymap' - | 'densitymapbox' - | 'funnel' - | 'funnelarea' - | 'heatmap' - | 'histogram' - | 'histogram2d' - | 'histogram2dcontour' - | 'icicle' - | 'image' - | 'indicator' - | 'isosurface' - | 'mesh3d' - | 'ohlc' - | 'parcats' - | 'parcoords' - | 'pie' - | 'sankey' - | 'scatter' - | 'scatter3d' - | 'scattercarpet' - | 'scattergeo' - | 'scattergl' - | 'scattermap' - | 'scattermapbox' - | 'scatterpolar' - | 'scatterpolargl' - | 'scattersmith' - | 'scatterternary' - | 'splom' - | 'streamtube' - | 'sunburst' - | 'surface' - | 'table' - | 'treemap' - | 'violin' - | 'volume' - | 'waterfall'; - // --------------------------------------------------------------------------- // Marker / Line types // --------------------------------------------------------------------------- diff --git a/src/types/core/events.d.ts b/src/types/core/events.d.ts index 26e70f131c5..0d38adaa607 100644 --- a/src/types/core/events.d.ts +++ b/src/types/core/events.d.ts @@ -5,9 +5,16 @@ * and event-related supporting types. */ -import type { Annotation, Layout, LayoutAxis, Slider } from '../generated/schema'; +import type { + AnimationFrameOpts, + Annotation, + Frame, + Layout, + LayoutAxis, + Slider, + Transition, +} from '../generated/schema'; import type { Datum } from '../lib/common'; -import type { AnimationFrameOpts, Frame, Transition } from './animation'; import type { Config } from './config'; import type { Data, PlotData } from './data'; diff --git a/src/types/generated/schema.d.ts b/src/types/generated/schema.d.ts index ec39a154780..dd7b681b8fb 100644 --- a/src/types/generated/schema.d.ts +++ b/src/types/generated/schema.d.ts @@ -3,12 +3,39 @@ * Do not edit by hand — run `npm run schema` to regenerate. */ -import type { Calendar, Color, ColorScale, Dash, Datum, MarkerSymbol, TypedArray } from '../lib/common'; +import type { Color, ColorScale, Datum, MarkerSymbol, TypedArray } from '../lib/common'; + +// --------------------------------------------------------------------------- +// Common enum types — value sets discovered from the schema +// --------------------------------------------------------------------------- + +export type Calendar = 'chinese' | 'coptic' | 'discworld' | 'ethiopian' | 'gregorian' | 'hebrew' | 'islamic' | 'jalali' | 'julian' | 'mayan' | 'nanakshahi' | 'nepali' | 'persian' | 'taiwan' | 'thai' | 'ummalqura'; + +export type Dash = 'dash' | 'dashdot' | 'dot' | 'longdash' | 'longdashdot' | 'solid'; + +export type AxisType = '-' | 'linear' | 'log' | 'date' | 'category' | 'multicategory'; + +export type XRef = 'container' | 'paper'; + +export type YRef = 'container' | 'paper'; + +export type PatternShape = '' | '/' | '\\' | 'x' | '-' | '|' | '+' | '.'; + +export type TransitionEasing = 'linear' | 'quad' | 'cubic' | 'sin' | 'exp' | 'circle' | 'elastic' | 'back' | 'bounce' | 'linear-in' | 'quad-in' | 'cubic-in' | 'sin-in' | 'exp-in' | 'circle-in' | 'elastic-in' | 'back-in' | 'bounce-in' | 'linear-out' | 'quad-out' | 'cubic-out' | 'sin-out' | 'exp-out' | 'circle-out' | 'elastic-out' | 'back-out' | 'bounce-out' | 'linear-in-out' | 'quad-in-out' | 'cubic-in-out' | 'sin-in-out' | 'exp-in-out' | 'circle-in-out' | 'elastic-in-out' | 'back-in-out' | 'bounce-in-out'; + +export type PlotType = 'bar' | 'barpolar' | 'box' | 'candlestick' | 'carpet' | 'choropleth' | 'choroplethmap' | 'choroplethmapbox' | 'cone' | 'contour' | 'contourcarpet' | 'densitymap' | 'densitymapbox' | 'funnel' | 'funnelarea' | 'heatmap' | 'histogram' | 'histogram2d' | 'histogram2dcontour' | 'icicle' | 'image' | 'indicator' | 'isosurface' | 'mesh3d' | 'ohlc' | 'parcats' | 'parcoords' | 'pie' | 'sankey' | 'scatter' | 'scatter3d' | 'scattercarpet' | 'scattergeo' | 'scattergl' | 'scattermap' | 'scattermapbox' | 'scatterpolar' | 'scatterpolargl' | 'scattersmith' | 'scatterternary' | 'splom' | 'streamtube' | 'sunburst' | 'surface' | 'table' | 'treemap' | 'violin' | 'volume' | 'waterfall'; // --------------------------------------------------------------------------- // Shared interfaces — extracted from repeated attribute subtrees // --------------------------------------------------------------------------- +export interface AnimationFrameOpts { + /** The duration in milliseconds of each frame. If greater than the frame duration, it will be limited to the frame duration. */ + duration?: number; + /** Redraw the plot at completion of the transition. This is desirable for transitions that include properties that cannot be transitioned, but may significantly slow down updates that do not require a full redraw of the plot */ + redraw?: boolean; +} + export interface AutoRangeOptions { /** Clip autorange maximum if it goes beyond this value. Has no effect when `autorangeoptions.maxallowed` is provided. */ clipmax?: any; @@ -150,7 +177,7 @@ export interface Pattern { /** Sets a custom path for pattern fill. Use with no `shape` or `solidity`, provide an SVG path string for the regions of the square from (0,0) to (`size`,`size`) to color. */ path?: string | string[]; /** Sets the shape of the pattern fill. By default, no pattern is used for filling the area. */ - shape?: '' | '/' | '\\' | 'x' | '-' | '|' | '+' | '.' | ('' | '/' | '\\' | 'x' | '-' | '|' | '+' | '.')[]; + shape?: PatternShape | PatternShape[]; /** Sets the size of unit squares of the pattern fill in pixels, which corresponds to the interval of repetition of the pattern. */ size?: number | number[]; /** Sets the solidity of the pattern fill. Solidity is roughly the fraction of the area filled by the pattern. Solidity of 0 shows only the background color without pattern and solidty of 1 shows only the foreground color without pattern. */ @@ -177,6 +204,15 @@ export interface TickFormatStops { value?: string; } +export interface Transition { + /** The duration of the transition, in milliseconds. If equal to zero, updates are synchronous. */ + duration?: number; + /** The easing function used for the transition */ + easing?: TransitionEasing; + /** Determines whether the figure's layout or traces smoothly transitions during updates that make both traces and layout change. */ + ordering?: 'layout first' | 'traces first'; +} + export interface ColorBar { /** Sets the color of padded area. */ bgcolor?: Color; @@ -266,7 +302,7 @@ export interface ColorBar { /** Sets the amount of padding (in px) along the x direction. */ xpad?: number; /** Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only. */ - xref?: 'container' | 'paper'; + xref?: YRef; /** Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*. */ y?: number; /** Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*. */ @@ -274,7 +310,7 @@ export interface ColorBar { /** Sets the amount of padding (in px) along the y direction. */ ypad?: number; /** Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only. */ - yref?: 'container' | 'paper'; + yref?: YRef; } export interface HoverLabel { @@ -7244,7 +7280,7 @@ export interface LayoutAxis { text?: string; }; /** Sets the axis type. By default, plotly attempts to determined the axis type by looking into the data of the traces that referenced the axis in question. */ - type?: '-' | 'linear' | 'log' | 'date' | 'category' | 'multicategory'; + type?: AxisType; /** Controls persistence of user-driven changes in axis `range`, `autorange`, and `title` if in `editable: true` configuration. Defaults to `layout.uirevision`. */ uirevision?: any; unifiedhovertitle?: LegendGroupTitle; @@ -7318,13 +7354,13 @@ export interface Legend { /** Sets the legend's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the legend. Value *auto* anchors legends to the right for `x` values greater than or equal to 2/3, anchors legends to the left for `x` values less than or equal to 1/3 and anchors legends with respect to their center otherwise. */ xanchor?: 'auto' | 'left' | 'center' | 'right'; /** Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only. */ - xref?: 'container' | 'paper'; + xref?: YRef; /** Sets the y position with respect to `yref` (in normalized coordinates) of the legend. When `yref` is *paper*, defaults to *1* for vertical legends, defaults to *-0.1* for horizontal legends on graphs w/o range sliders and defaults to *1.1* for horizontal legends on graph with one or multiple range sliders. When `yref` is *container*, defaults to *1*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*. */ y?: number; /** Sets the legend's vertical position anchor. This anchor binds the `y` position to the *top*, *middle* or *bottom* of the legend. Value *auto* anchors legends at their bottom for `y` values less than or equal to 1/3, anchors legends to at their top for `y` values greater than or equal to 2/3 and anchors legends with respect to their middle otherwise. */ yanchor?: 'auto' | 'top' | 'middle' | 'bottom'; /** Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only. */ - yref?: 'container' | 'paper'; + yref?: YRef; } export interface MapLayout { @@ -8759,7 +8795,7 @@ export interface Slider { /** Sets the duration of the slider transition */ duration?: number; /** Sets the easing function of the slider transition */ - easing?: 'linear' | 'quad' | 'cubic' | 'sin' | 'exp' | 'circle' | 'elastic' | 'back' | 'bounce' | 'linear-in' | 'quad-in' | 'cubic-in' | 'sin-in' | 'exp-in' | 'circle-in' | 'elastic-in' | 'back-in' | 'bounce-in' | 'linear-out' | 'quad-out' | 'cubic-out' | 'sin-out' | 'exp-out' | 'circle-out' | 'elastic-out' | 'back-out' | 'bounce-out' | 'linear-in-out' | 'quad-in-out' | 'cubic-in-out' | 'sin-in-out' | 'exp-in-out' | 'circle-in-out' | 'elastic-in-out' | 'back-in-out' | 'bounce-in-out'; + easing?: TransitionEasing; }; /** Determines whether or not the slider is visible. */ visible?: boolean; @@ -9070,22 +9106,15 @@ export interface Layout { /** Sets the title's horizontal alignment with respect to its x position. *left* means that the title starts at x, *right* means that the title ends at x and *center* means that the title's center is at x. *auto* divides `xref` by three and calculates the `xanchor` value automatically based on the value of `x`. */ xanchor?: 'auto' | 'left' | 'center' | 'right'; /** Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only. */ - xref?: 'container' | 'paper'; + xref?: YRef; /** Sets the y position with respect to `yref` in normalized coordinates from *0* (bottom) to *1* (top). *auto* places the baseline of the title onto the vertical center of the top margin. */ y?: number; /** Sets the title's vertical alignment with respect to its y position. *top* means that the title's cap line is at y, *bottom* means that the title's baseline is at y and *middle* means that the title's midline is at y. *auto* divides `yref` by three and calculates the `yanchor` value automatically based on the value of `y`. */ yanchor?: 'auto' | 'top' | 'middle' | 'bottom'; /** Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only. */ - yref?: 'container' | 'paper'; - }; - transition?: { - /** The duration of the transition, in milliseconds. If equal to zero, updates are synchronous. */ - duration?: number; - /** The easing function used for the transition */ - easing?: 'linear' | 'quad' | 'cubic' | 'sin' | 'exp' | 'circle' | 'elastic' | 'back' | 'bounce' | 'linear-in' | 'quad-in' | 'cubic-in' | 'sin-in' | 'exp-in' | 'circle-in' | 'elastic-in' | 'back-in' | 'bounce-in' | 'linear-out' | 'quad-out' | 'cubic-out' | 'sin-out' | 'exp-out' | 'circle-out' | 'elastic-out' | 'back-out' | 'bounce-out' | 'linear-in-out' | 'quad-in-out' | 'cubic-in-out' | 'sin-in-out' | 'exp-in-out' | 'circle-in-out' | 'elastic-in-out' | 'back-in-out' | 'bounce-in-out'; - /** Determines whether the figure's layout or traces smoothly transitions during updates that make both traces and layout change. */ - ordering?: 'layout first' | 'traces first'; + yref?: YRef; }; + transition?: Transition; uirevision?: any; uniformtext?: { /** Sets the minimum text size between traces of the same type. */ @@ -9111,3 +9140,56 @@ export interface Layout { [key: `xaxis${number}`]: LayoutAxis; [key: `yaxis${number}`]: LayoutAxis; } + +// --------------------------------------------------------------------------- +// Animation, frames, and config interfaces +// --------------------------------------------------------------------------- + +export interface AnimationOpts { + /** The direction in which to play the frames triggered by the animation call */ + direction?: 'forward' | 'reverse'; + frame?: AnimationFrameOpts; + /** Play frames starting at the current frame instead of the beginning. */ + fromcurrent?: boolean; + /** Describes how a new animate call interacts with currently-running animations. If `immediate`, current animations are interrupted and the new animation is started. If `next`, the current frame is allowed to complete, after which the new animation is started. If `afterall` all existing frames are animated to completion before the new animation is started. */ + mode?: 'immediate' | 'next' | 'afterall'; + transition?: Transition; +} + +export interface Frame { + /** The name of the frame into which this frame's properties are merged before applying. This is used to unify properties and avoid needing to specify the same values for the same properties in multiple frames. */ + baseframe?: string; + /** A list of traces this frame modifies. The format is identical to the normal trace definition. */ + data?: any[]; + /** An identifier that specifies the group to which the frame belongs, used by animate to select a subset of frames. */ + group?: string; + /** Layout properties which this frame modifies. The format is identical to the normal layout definition. */ + layout?: Partial; + /** A label by which to identify the frame */ + name?: string; + /** A list of trace indices that identify the respective traces in the data attribute */ + traces?: any; +} + +export interface Edits { + /** Determines if the main anchor of the annotation is editable. The main anchor corresponds to the text (if no arrow) or the arrow (which drags the whole thing leaving the arrow length & direction unchanged). */ + annotationPosition?: boolean; + /** Has only an effect for annotations with arrows. Enables changing the length and direction of the arrow. */ + annotationTail?: boolean; + /** Enables editing annotation text. */ + annotationText?: boolean; + /** Enables editing axis title text. */ + axisTitleText?: boolean; + /** Enables moving colorbars. */ + colorbarPosition?: boolean; + /** Enables editing colorbar title text. */ + colorbarTitleText?: boolean; + /** Enables moving the legend. */ + legendPosition?: boolean; + /** Enables editing the trace name fields from the legend */ + legendText?: boolean; + /** Enables moving shapes. */ + shapePosition?: boolean; + /** Enables editing the global layout title. */ + titleText?: boolean; +} diff --git a/src/types/index.d.ts b/src/types/index.d.ts index 59bafd7196d..8233cd051b7 100644 --- a/src/types/index.d.ts +++ b/src/types/index.d.ts @@ -9,7 +9,6 @@ export * from './lib/common'; // Core types (public) -export * from './core/animation'; export * from './core/api'; export * from './core/config'; export * from './core/data'; diff --git a/src/types/lib/common.d.ts b/src/types/lib/common.d.ts index 01f9cfc8a57..15764df875f 100644 --- a/src/types/lib/common.d.ts +++ b/src/types/lib/common.d.ts @@ -29,36 +29,12 @@ export type Color = export type ColorScale = string | string[] | Array<[number, string]>; -export type Dash = 'solid' | 'dot' | 'dash' | 'longdash' | 'dashdot' | 'longdashdot'; - -export type Calendar = - | 'chinese' - | 'coptic' - | 'discworld' - | 'ethiopian' - | 'gregorian' - | 'hebrew' - | 'islamic' - | 'jalali' - | 'julian' - | 'mayan' - | 'nanakshahi' - | 'nepali' - | 'persian' - | 'taiwan' - | 'thai' - | 'ummalqura'; - -export type AxisType = '-' | 'linear' | 'log' | 'date' | 'category' | 'multicategory'; - export type DTickValue = number | string; export type MarkerSymbol = string | number | Array; export type XAnchor = 'auto' | 'left' | 'center' | 'right'; export type YAnchor = 'auto' | 'top' | 'middle' | 'bottom'; -export type XRef = 'container' | 'paper'; -export type YRef = 'container' | 'paper'; // --------------------------------------------------------------------------- // Error bars @@ -85,9 +61,3 @@ export type ErrorBar = Partial & arrayminus?: Datum[] | undefined; } ); - -// --------------------------------------------------------------------------- -// Pattern -// --------------------------------------------------------------------------- - -export type PatternShape = '' | '/' | '\\' | 'x' | '-' | '|' | '+' | '.'; diff --git a/tasks/generate_schema_types.mjs b/tasks/generate_schema_types.mjs index fb5b4f70615..1c0f00cb9d7 100644 --- a/tasks/generate_schema_types.mjs +++ b/tasks/generate_schema_types.mjs @@ -31,39 +31,96 @@ const META_KEYS = new Set([ ]); // --------------------------------------------------------------------------- -// Common type reuse — map known value sets to types from lib/common.d.ts +// Common enum types — discovered from the schema at generation time and +// emitted as named type aliases in the output. Each anchor specifies a +// PascalCase type name and a `match(key, path, values)` predicate. The first +// enumerated attribute whose match returns true defines the alias's values. // --------------------------------------------------------------------------- -const CALENDAR_VALUES = [ - 'chinese', - 'coptic', - 'discworld', - 'ethiopian', - 'gregorian', - 'hebrew', - 'islamic', - 'jalali', - 'julian', - 'mayan', - 'nanakshahi', - 'nepali', - 'persian', - 'taiwan', - 'thai', - 'ummalqura' +const COMMON_TYPE_ANCHORS = [ + { name: 'Calendar', match: (key) => /^[xyz]?calendar$/.test(key) }, + { name: 'Dash', match: (key) => key === 'dash' }, + { name: 'AxisType', match: (key, path) => key === 'type' && /[xyz]axis\.type$/.test(path) }, + { + name: 'XRef', + match: (key, _path, values) => key === 'xref' && values.length === 2 && values.includes('container') + }, + { + name: 'YRef', + match: (key, _path, values) => key === 'yref' && values.length === 2 && values.includes('container') + }, + { name: 'PatternShape', match: (key, path) => key === 'shape' && /\.pattern\.shape$/.test(path) }, + { name: 'TransitionEasing', match: (key) => key === 'easing' } ]; -const DASH_VALUES = ['dash', 'dashdot', 'dot', 'longdash', 'longdashdot', 'solid']; - -/** Map of sorted-JSON-stringified values → common type name. */ -const VALUES_TO_COMMON_TYPE = new Map([ - [JSON.stringify(CALENDAR_VALUES), 'Calendar'], - [JSON.stringify(DASH_VALUES), 'Dash'] -]); +/** + * Module-level map populated by `discoverCommonTypes` before generation. + * Sorted-JSON-stringified values → common type name. + */ +const VALUES_TO_COMMON_TYPE = new Map(); /** Attribute name patterns that should use a specific common type. */ const ATTR_NAME_OVERRIDES = new Map([['marker.symbol', 'MarkerSymbol']]); +/** + * Walk the schema to find the canonical `values` array for each anchor in + * `COMMON_TYPE_ANCHORS`. The first matching enumerated attribute wins. + * Also emits a `PlotType` alias derived from the trace-names list. + * + * Populates `VALUES_TO_COMMON_TYPE` and returns `Map` for + * emitting type aliases. + */ +function discoverCommonTypes(schema) { + // Collect every match for each anchor — we'll pick the superset at the end. + const candidates = new Map(COMMON_TYPE_ANCHORS.map((a) => [a.name, []])); + + function visit(node, path) { + if (!node || typeof node !== 'object') return; + for (const [key, val] of Object.entries(node)) { + if (val && typeof val === 'object') { + const childPath = path ? `${path}.${key}` : key; + if ( + val.valType === 'enumerated' && + Array.isArray(val.values) && + val.values.every((v) => typeof v === 'string') + ) { + for (const anchor of COMMON_TYPE_ANCHORS) { + if (anchor.match(key, childPath, val.values)) { + candidates.get(anchor.name).push(val.values.slice()); + } + } + } + visit(val, childPath); + } + } + } + visit(schema.traces, 'traces'); + visit(schema.layout, 'layout'); + if (schema.animation) visit(schema.animation, 'animation'); + + // For each anchor, pick the largest value set. When sizes tie, the first + // match wins. The superset rule handles axis-type-style cases where + // different axis kinds (cartesian vs 3D scene) have different value sets. + const found = new Map(); + for (const anchor of COMMON_TYPE_ANCHORS) { + const matches = candidates.get(anchor.name); + if (matches.length === 0) { + throw new Error( + `Could not find an enumerated schema attribute for common type '${anchor.name}'. ` + + `Either the schema no longer exposes a matching attribute, or the anchor's match predicate needs updating.` + ); + } + const best = matches.reduce((a, b) => (b.length > a.length ? b : a)); + found.set(anchor.name, { values: best }); + VALUES_TO_COMMON_TYPE.set(JSON.stringify(best.slice().sort()), anchor.name); + } + + // PlotType — derived from the list of trace names, not from an attribute. + found.set('PlotType', { values: Object.keys(schema.traces).sort() }); + + return found; +} + // --------------------------------------------------------------------------- // Layout naming maps // --------------------------------------------------------------------------- @@ -612,9 +669,13 @@ function mergeSubsets(collector, shared) { * @param {string} indent - Current indentation string * @param {string} pathPrefix - Dot-separated path for name-based overrides * @param {Map} sharedTypes - fingerprint → interface name + * @param {Object} [fieldOverrides] - field-name → TS type to + * force, bypassing schema-derived types. Used for fields whose schema + * valType is intentionally `any` because the schema is recursive (e.g. + * Frame.layout points to the entire Layout shape). * @returns {string[]} Array of TS property declaration lines */ -function attrsToProperties(attrs, indent, pathPrefix, sharedTypes) { +function attrsToProperties(attrs, indent, pathPrefix, sharedTypes, fieldOverrides) { const lines = []; for (const key of Object.keys(attrs).sort()) { @@ -631,6 +692,15 @@ function attrsToProperties(attrs, indent, pathPrefix, sharedTypes) { const attrPath = pathPrefix ? `${pathPrefix}.${key}` : key; + // Field-level override — bypass schema typing entirely + if (fieldOverrides && Object.prototype.hasOwnProperty.call(fieldOverrides, key)) { + if (val && typeof val === 'object' && val.description) { + lines.push(...formatJSDoc(val.description, indent)); + } + lines.push(`${indent}${key}?: ${fieldOverrides[key]};`); + continue; + } + // String literal (e.g. type: "ohlc") if (typeof val === 'string') { lines.push(`${indent}${key}?: '${val}';`); @@ -852,6 +922,9 @@ export function generateSchemaTypes(schema, outputPath) { const traceNames = Object.keys(schema.traces).sort(); const layoutAttrs = schema.layout.layoutAttributes; + // ----- Phase 0: Discover common enum types (Calendar, Dash, ...) ----- + const commonTypes = discoverCommonTypes(schema); + // ----- Phase 1: Fingerprint all container subtrees across traces + layout ----- const collector = new Map(); for (const traceName of traceNames) { @@ -876,6 +949,24 @@ export function generateSchemaTypes(schema, outputPath) { nameToData.set(name, { fp, attrs: entry.attrs, propCount }); } } + + // Inject animation subtree types as shared interfaces so AnimationOpts + // and any other site referencing the same shape gets a named reference + // instead of an inlined object. These occur fewer than MIN_OCCURRENCES + // times so the automatic fingerprint extraction skips them. + if (schema.animation) { + const injectShared = (attrs, name) => { + if (!attrs || typeof attrs !== 'object') return; + const fp = containerFingerprint(attrs); + if (!sharedTypes.has(fp)) { + sharedTypes.set(fp, name); + nameToData.set(name, { fp, attrs, propCount: countProperties(attrs) }); + } + }; + injectShared(schema.animation.transition, 'Transition'); + injectShared(schema.animation.frame, 'AnimationFrameOpts'); + } + const sharedList = [...nameToData.entries()] .map(([name, { fp, attrs }]) => [name, { fp, attrs }]) .sort((a, b) => { @@ -911,10 +1002,21 @@ export function generateSchemaTypes(schema, outputPath) { ' * Do not edit by hand — run `npm run schema` to regenerate.', ' */', '', - "import type { Calendar, Color, ColorScale, Dash, Datum, MarkerSymbol, TypedArray } from '../lib/common';", + "import type { Color, ColorScale, Datum, MarkerSymbol, TypedArray } from '../lib/common';", '' ]; + // Emit common enum type aliases discovered from the schema + chunks.push('// ---------------------------------------------------------------------------'); + chunks.push('// Common enum types — value sets discovered from the schema'); + chunks.push('// ---------------------------------------------------------------------------'); + chunks.push(''); + for (const [name, { values }] of commonTypes) { + const union = values.map(serializeValue).join(' | '); + chunks.push(`export type ${name} = ${union};`); + chunks.push(''); + } + // Emit shared interfaces if (sharedList.length > 0) { chunks.push('// ---------------------------------------------------------------------------'); @@ -983,20 +1085,60 @@ export function generateSchemaTypes(schema, outputPath) { chunks.push('}'); chunks.push(''); + // ----- Phase 5: Animation, Frame, and Edits interfaces ----- + const extraInterfaces = []; + if (schema.animation) { + const animProps = attrsToProperties(schema.animation, ' ', 'animation', sharedTypes); + extraInterfaces.push({ name: 'AnimationOpts', properties: animProps }); + } + if (schema.frames && schema.frames.items) { + const frameEntry = Object.values(schema.frames.items)[0]; + if (frameEntry) { + // `data` and `layout` are `valType: 'any'` in the schema because they + // recursively reference the schema's own top-level shapes — schema + // can't self-reference, so override here at the type-generation layer. + const frameProps = attrsToProperties(frameEntry, ' ', 'frame', sharedTypes, { + data: 'any[]', + layout: 'Partial' + }); + extraInterfaces.push({ name: 'Frame', properties: frameProps }); + } + } + if (schema.config && schema.config.edits) { + const editsProps = attrsToProperties(schema.config.edits, ' ', 'edits', sharedTypes); + extraInterfaces.push({ name: 'Edits', properties: editsProps }); + } + + if (extraInterfaces.length > 0) { + chunks.push('// ---------------------------------------------------------------------------'); + chunks.push('// Animation, frames, and config interfaces'); + chunks.push('// ---------------------------------------------------------------------------'); + chunks.push(''); + for (const { name, properties } of extraInterfaces) { + chunks.push(`export interface ${name} {`); + chunks.push(...properties); + chunks.push('}'); + chunks.push(''); + } + } + fs.writeFileSync(outputPath, chunks.join('\n')); const sharedCount = sharedList.length; const layoutCount = subplotGroups.size + arrayItems.size + 1; // +1 for Layout itself + const extraCount = extraInterfaces.length; console.log( - `Generated ${traceNames.length} trace(s) + ${layoutCount} layout type(s) + ${sharedCount} shared interface(s) → ${outputPath}` + `Generated ${traceNames.length} trace(s) + ${layoutCount} layout type(s) + ${sharedCount} shared interface(s) + ${extraCount} animation/config interface(s) → ${outputPath}` ); // Return all exported interface names so callers can verify re-exports const exportedNames = new Set(); + for (const name of commonTypes.keys()) exportedNames.add(name); for (const [name] of sharedList) exportedNames.add(name); for (const traceName of traceNames) exportedNames.add(traceNameToInterfaceName(traceName)); for (const name of subplotGroups.keys()) exportedNames.add(name); for (const name of arrayItems.keys()) exportedNames.add(name); exportedNames.add('Layout'); + for (const { name } of extraInterfaces) exportedNames.add(name); return exportedNames; } From 63d32aedbaef1239d3894abf9f0aaa943b15fd31 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Tue, 26 May 2026 15:02:29 -0600 Subject: [PATCH 069/241] Refactor types to use schema generated types; add more type metadata --- lib/index.d.ts | 125 +- src/types/core/api.d.ts | 4 +- src/types/core/data.d.ts | 481 +- src/types/core/data.internal.d.ts | 18 +- src/types/core/events.d.ts | 6 +- src/types/core/graph-div.internal.d.ts | 4 +- src/types/core/layout.d.ts | 4 +- src/types/generated/schema.d.ts | 12568 ++++++++++++++++++----- tasks/generate_schema_types.mjs | 171 +- tasks/schema.mjs | 42 +- 10 files changed, 10339 insertions(+), 3084 deletions(-) diff --git a/lib/index.d.ts b/lib/index.d.ts index 342576b4da3..d7673612d64 100644 --- a/lib/index.d.ts +++ b/lib/index.d.ts @@ -36,109 +36,14 @@ export type { MarkerSymbol, TypedArray, XAnchor, - YAnchor, + YAnchor } from '../src/types/lib/common'; // --------------------------------------------------------------------------- // Schema-generated types (traces, layout, shared interfaces) // --------------------------------------------------------------------------- -export type { - // Common enum types - AxisType, - Calendar, - Dash, - PatternShape, - PlotType, - TransitionEasing, - XRef, - YRef, - - // Animation, frames, and config interfaces - AnimationFrameOpts, - AnimationOpts, - Edits, - Frame, - Transition, - - // Shared interfaces - ColorBar, - Domain, - Font, - FontArray, - HoverLabel, - Pattern, - TickFormatStops, - - // Trace interfaces - BarData, - BarpolarData, - BoxData, - CandlestickData, - CarpetData, - ChoroplethData, - ChoroplethmapData, - ChoroplethmapboxData, - ConeData, - ContourData, - ContourcarpetData, - DensitymapData, - DensitymapboxData, - FunnelData, - FunnelareaData, - HeatmapData, - Histogram2dData, - Histogram2dcontourData, - HistogramData, - IcicleData, - ImageData, - IndicatorData, - IsosurfaceData, - Mesh3dData, - OhlcData, - ParcatsData, - ParcoordsData, - PieData, - SankeyData, - Scatter3dData, - ScatterData, - ScattercarpetData, - ScattergeoData, - ScatterglData, - ScattermapData, - ScattermapboxData, - ScatterpolarData, - ScatterpolarglData, - ScattersmithData, - ScatterternaryData, - SplomData, - StreamtubeData, - SunburstData, - SurfaceData, - TableData, - TreemapData, - ViolinData, - VolumeData, - WaterfallData, - - // Layout component interfaces - Annotation, - ColorAxis, - GeoLayout, - Layout, - LayoutAxis, - LayoutImage, - LayoutSelection, - Legend, - MapLayout, - PolarLayout, - Scene, - Shape, - Slider, - SmithLayout, - TernaryLayout, - UpdateMenu, -} from '../src/types/generated/schema'; +export type * from '../src/types/generated/schema'; // --------------------------------------------------------------------------- // Hand-written layout types (not in schema) @@ -154,28 +59,14 @@ export type { ModeBarDefaultButtons, Template, XAxisName, - YAxisName, + YAxisName } from '../src/types/core/layout'; // --------------------------------------------------------------------------- // Trace data // --------------------------------------------------------------------------- -export type { - Data, - DataTitle, - Delta, - Gauge, - GaugeBar, - GaugeLine, - Padding, - PlotData, - PlotMarker, - PlotNumber, - ScatterLine, - ScatterMarkerLine, - Threshold, -} from '../src/types/core/data'; +export type { Data } from '../src/types/core/data'; // --------------------------------------------------------------------------- // Configuration @@ -185,7 +76,7 @@ export type { Config, DownloadImgopts, ToImageButtonOptions, - ToImgopts, + ToImgopts } from '../src/types/core/config'; // --------------------------------------------------------------------------- @@ -215,7 +106,7 @@ export type { SliderEndEvent, SliderStartEvent, SunburstClickEvent, - SunburstPlotDatum, + SunburstPlotDatum } from '../src/types/core/events'; // --------------------------------------------------------------------------- @@ -246,7 +137,7 @@ export { toImage, update, validate, - validateTemplate, + validateTemplate } from '../src/types/core/api'; export type { @@ -259,7 +150,7 @@ export type { StaticPlots, TemplateFigure, ValidateResult, - ValidateTemplateResult, + ValidateTemplateResult } from '../src/types/core/api'; // --------------------------------------------------------------------------- diff --git a/src/types/core/api.d.ts b/src/types/core/api.d.ts index d410f46bc70..d871f6b03e6 100644 --- a/src/types/core/api.d.ts +++ b/src/types/core/api.d.ts @@ -2,11 +2,11 @@ * Public API function types for Plotly.js */ -import type { AnimationOpts, Frame } from '../generated/schema'; +import type { AnimationOpts, Frame, Layout } from '../generated/schema'; import type { Config, DownloadImgopts, ToImgopts } from './config'; import type { Data } from './data'; import type { PlotlyHTMLElement } from './events'; -import type { Icon, Layout, Template } from './layout'; +import type { Icon, Template } from './layout'; // --------------------------------------------------------------------------- // Roots and request shapes diff --git a/src/types/core/data.d.ts b/src/types/core/data.d.ts index 1ab2a38d309..e68ef1d040e 100644 --- a/src/types/core/data.d.ts +++ b/src/types/core/data.d.ts @@ -1,405 +1,118 @@ /** * Data/Trace types * - * Comprehensive trace data types covering all plot types, markers, lines, - * and the Data union. + * The `Data` union covers every trace type from the schema. Use the trace's + * `type` field as the discriminator to narrow to a specific trace shape: + * + * if (trace.type === 'bar') { trace.marker?.cornerradius } + * if (trace.type === 'pie') { trace.marker?.colors } + * + * Per-trace interfaces (BarData, PieData, IndicatorData, etc.) are generated + * directly from the schema and re-exported from `generated/schema`. */ import type { + BarData, + BarpolarData, BoxData, CandlestickData, - ColorBar, - Dash, - Font, - HoverLabel, + CarpetData, + ChoroplethData, + ChoroplethmapboxData, + ChoroplethmapData, + ConeData, + ContourcarpetData, + ContourData, + DensitymapboxData, + DensitymapData, + FunnelareaData, + FunnelData, + HeatmapData, + Histogram2dcontourData, + Histogram2dData, + HistogramData, + IcicleData, + ImageData, + IndicatorData, + IsosurfaceData, + Mesh3dData, OhlcData, - Pattern, + ParcatsData, + ParcoordsData, PieData, PlotType, SankeyData, + Scatter3dData, + ScattercarpetData, + ScatterData, + ScattergeoData, + ScatterglData, + ScattermapboxData, + ScattermapData, + ScatterpolarData, + ScatterpolarglData, + ScattersmithData, + ScatterternaryData, + SplomData, + StreamtubeData, + SunburstData, + SurfaceData, + TableData, + TreemapData, ViolinData, + VolumeData, + WaterfallData } from '../generated/schema'; -import type { Color, ColorScale, Datum, ErrorBar, MarkerSymbol, TypedArray } from '../lib/common'; export type { PlotType }; -// --------------------------------------------------------------------------- -// Trace support types (used by PlotData) -// --------------------------------------------------------------------------- - -export interface DataTitle { - text: string; - font: Partial; - standoff: number; - position: - | 'top left' - | 'top center' - | 'top right' - | 'middle center' - | 'bottom left' - | 'bottom center' - | 'bottom right'; -} - -export interface PlotNumber { - valueformat: string; - font: Partial; - prefix: string; - suffix: string; -} - -export interface Padding { - t: number; - r: number; - b: number; - l: number; -} - -export interface GaugeLine { - color: Color; - width: number; -} - -export interface Threshold { - line: Partial; - value: number; - thickness: number; -} - -export interface GaugeBar { - color: Color; - line: Partial; - thickness: number; -} - -export interface Gauge { - shape: 'angular' | 'bullet'; - bar: Partial; - bgcolor: Color; - bordercolor: Color; - borderwidth: number; - steps: Array<{ range: number[]; color: Color }>; - threshold: Partial; -} - -export interface Delta { - reference: number; - position: 'top' | 'bottom' | 'left' | 'right'; - relative: boolean; - valueformat: string; - increasing: { - symbol: string; - color: Color; - }; - decreasing: { - symbol: string; - color: Color; - }; -} - -// --------------------------------------------------------------------------- -// Marker / Line types -// --------------------------------------------------------------------------- - -export interface ScatterMarkerLine { - width: number | number[]; - color: Color; - cauto?: boolean | undefined; - cmax?: number | undefined; - cmin?: number | undefined; - cmid?: number | undefined; - colorscale?: ColorScale | undefined; - autocolorscale?: boolean | undefined; - reversescale?: boolean | undefined; - coloraxis?: string | undefined; -} - -export interface PlotMarker { - symbol: MarkerSymbol; - color?: Color | Color[] | undefined; - colors?: Color[] | undefined; - colorscale?: ColorScale | undefined; - cauto?: boolean | undefined; - cmax?: number | undefined; - cmin?: number | undefined; - autocolorscale?: boolean | undefined; - reversescale?: boolean | undefined; - opacity: number | number[]; - size: number | number[]; - maxdisplayed?: number | undefined; - sizeref?: number | undefined; - sizemax?: number | undefined; - sizemin?: number | undefined; - sizemode?: 'diameter' | 'area' | undefined; - showscale?: boolean | undefined; - line: Partial; - pad?: Partial | undefined; - width?: number | undefined; - colorbar?: Partial | undefined; - gradient?: - | { - type: 'radial' | 'horizontal' | 'vertical' | 'none'; - color: Color; - typesrc: any; - colorsrc: any; - } - | undefined; - pattern?: Partial; -} - -export interface ScatterLine { - color: Color; - width: number; - dash: Dash; - shape: 'linear' | 'spline' | 'hv' | 'vh' | 'hvh' | 'vhv'; - smoothing: number; - simplify: boolean; -} - -// --------------------------------------------------------------------------- -// PlotData -// --------------------------------------------------------------------------- - -export interface PlotData { - type: PlotType; - x: Datum[] | Datum[][] | TypedArray; - y: Datum[] | Datum[][] | TypedArray; - z: Datum[] | Datum[][] | Datum[][][] | TypedArray; - i: TypedArray; - j: TypedArray; - k: TypedArray; - xy: Float32Array; - error_x: ErrorBar; - error_y: ErrorBar; - xaxis: string; - yaxis: string; - text: string | string[]; - lat: Datum[]; - lon: Datum[]; - line: Partial; - 'line.color': Color; - 'line.width': number; - 'line.dash': Dash; - 'line.shape': 'linear' | 'spline' | 'hv' | 'vh' | 'hvh' | 'vhv'; - 'line.smoothing': number; - 'line.simplify': boolean; - marker: Partial; - 'marker.symbol': MarkerSymbol | MarkerSymbol[]; - 'marker.color': Color; - 'marker.colorscale': ColorScale | ColorScale[]; - 'marker.opacity': number | number[]; - 'marker.size': number | number[] | number[][]; - 'marker.maxdisplayed': number; - 'marker.sizeref': number; - 'marker.sizemax': number; - 'marker.sizemin': number; - 'marker.sizemode': 'diameter' | 'area'; - 'marker.showscale': boolean; - 'marker.line': Partial; - 'marker.line.color': Color; - 'marker.line.colorscale': ColorScale | ColorScale[]; - 'marker.colorbar': {}; - 'marker.pad.t': number; - 'marker.pad.b': number; - 'marker.pad.l': number; - 'marker.pad.r': number; - mode: - | 'lines' - | 'markers' - | 'text' - | 'lines+markers' - | 'text+markers' - | 'text+lines' - | 'text+lines+markers' - | 'none' - | 'gauge' - | 'number' - | 'delta' - | 'number+delta' - | 'gauge+number' - | 'gauge+number+delta' - | 'gauge+delta'; - histfunc: 'count' | 'sum' | 'avg' | 'min' | 'max'; - histnorm: '' | 'percent' | 'probability' | 'density' | 'probability density'; - hoveron: 'points' | 'fills'; - hoverinfo: - | 'all' - | 'name' - | 'none' - | 'skip' - | 'text' - | 'x' - | 'x+text' - | 'x+name' - | 'x+y' - | 'x+y+text' - | 'x+y+name' - | 'x+y+z' - | 'x+y+z+text' - | 'x+y+z+name' - | 'y' - | 'y+name' - | 'y+x' - | 'y+text' - | 'y+x+text' - | 'y+x+name' - | 'y+z' - | 'y+z+text' - | 'y+z+name' - | 'y+x+z' - | 'y+x+z+text' - | 'y+x+z+name' - | 'z' - | 'z+x' - | 'z+x+text' - | 'z+x+name' - | 'z+y+x' - | 'z+y+x+text' - | 'z+y+x+name' - | 'z+x+y' - | 'z+x+y+text' - | 'z+x+y+name'; - hoverlabel: Partial; - hovertemplate: string | string[]; - hovertext: string | string[]; - hoverongaps: boolean; - xhoverformat: string; - yhoverformat: string; - zhoverformat: string; - texttemplate: string | string[]; - textinfo: - | 'label' - | 'label+text' - | 'label+value' - | 'label+percent' - | 'label+text+value' - | 'label+text+percent' - | 'label+value+percent' - | 'text' - | 'text+value' - | 'text+percent' - | 'text+value+percent' - | 'value' - | 'value+percent' - | 'percent' - | 'none'; - textposition: - | 'top left' - | 'top center' - | 'top right' - | 'middle left' - | 'middle center' - | 'middle right' - | 'bottom left' - | 'bottom center' - | 'bottom right' - | 'inside' - | 'outside' - | 'auto' - | 'none'; - textfont: Partial; - textangle: 'auto' | number; - insidetextanchor: 'end' | 'middle' | 'start'; - constraintext: 'inside' | 'outside' | 'both' | 'none'; - fill: 'none' | 'tozeroy' | 'tozerox' | 'tonexty' | 'tonextx' | 'toself' | 'tonext'; - fillcolor: string; - fillpattern: Partial; - showlegend: boolean; - legendgroup: string; - legendgrouptitle: { - text: string; - font?: Partial; - }; - legendrank: number; - parents: string[]; - name: string; - stackgroup: string; - groupnorm: '' | 'fraction' | 'percent'; - stackgaps: 'infer zero' | 'interpolate'; - connectgaps: boolean; - visible: boolean | 'legendonly'; - delta: Partial; - gauge: Partial; - number: Partial; - orientation: 'v' | 'h'; - width: number | number[]; - boxmean: boolean | 'sd'; - boxpoints: 'all' | 'outliers' | 'suspectedoutliers' | false; - jitter: number; - pointpos: number; - opacity: number; - showscale: boolean; - colorscale: ColorScale; - zsmooth: 'fast' | 'best' | false; - zmin: number; - zmax: number; - zorder: number; - ygap: number; - xgap: number; - transpose: boolean; - autobinx: boolean; - xbins: { - start: number | string; - end: number | string; - size: number | string; - }; - value: number; - values: Datum[]; - labels: Datum[]; - direction: 'clockwise' | 'counterclockwise'; - hole: number; - rotation: number; - theta: Datum[]; - r: Datum[]; - customdata: Datum[] | Datum[][]; - selectedpoints: Datum[]; - domain: Partial<{ - row: number; - column: number; - x: number[]; - y: number[]; - }>; - title: Partial; - branchvalues: 'total' | 'remainder'; - ids: string[]; - level: string; - cliponaxis: boolean; - automargin: boolean; - locationmode: 'ISO-3' | 'USA-states' | 'country names' | 'geojson-id'; - locations: Datum[]; - reversescale: boolean; - colorbar: Partial; - offset: number | number[]; - contours: Partial<{ - coloring: 'fill' | 'heatmap' | 'lines' | 'none'; - end: number; - labelfont: Partial; - labelformat: string; - operation: '=' | '<' | '>=' | '>' | '<=' | '[]' | '()' | '[)' | '(]' | '][' | ')(' | '](' | ')['; - showlabels: boolean; - showlines: boolean; - size: number; - start: number; - type: 'levels' | 'constraint'; - value: number | [lowerBound: number, upperBound: number]; - }>; - autocontour: boolean; - ncontours: number; - maxdepth: number; - uirevision: string | number; - uid: string; -} - -// --------------------------------------------------------------------------- -// Data union — re-exports specialized trace types from traces/ -// --------------------------------------------------------------------------- - export type Data = - | Partial + | Partial + | Partial | Partial - | Partial - | Partial | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial | Partial - | Partial; - + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial; diff --git a/src/types/core/data.internal.d.ts b/src/types/core/data.internal.d.ts index 08dc916ea40..68c800f7231 100644 --- a/src/types/core/data.internal.d.ts +++ b/src/types/core/data.internal.d.ts @@ -5,7 +5,7 @@ * properties. For public trace types, see data.d.ts. */ -import type { PlotData } from './data'; +import type { Data } from './data'; /** * Calculated trace data (internal) @@ -21,9 +21,11 @@ export interface CalcData { } /** - * Fully processed plot data with defaults applied (internal use) + * Internal `_`-prefixed fields added to traces during defaults supply. + * Combined with the user-facing trace shape via `FullData`. Not exported — + * internal helpers should use `FullData` rather than this directly. */ -export interface FullData extends Partial { +interface FullDataInternals { _arrayAttrs?: string[]; _expandedIndex?: number; _extremes?: Record; @@ -38,3 +40,13 @@ export interface FullData extends Partial { index?: number; [key: string]: any; } + +/** + * Fully processed plot data with defaults applied (internal use). + * + * `FullData` is the `Data` discriminated union intersected with internal state. + * That means narrowing on `trace.type` gives you the right trace-specific + * fields (`if (trace.type === 'bar') trace.marker?.cornerradius`) while + * `_`-prefixed internal fields are always accessible. + */ +export type FullData = Data & FullDataInternals; diff --git a/src/types/core/events.d.ts b/src/types/core/events.d.ts index 0d38adaa607..d915445fa9b 100644 --- a/src/types/core/events.d.ts +++ b/src/types/core/events.d.ts @@ -16,7 +16,7 @@ import type { } from '../generated/schema'; import type { Datum } from '../lib/common'; import type { Config } from './config'; -import type { Data, PlotData } from './data'; +import type { Data } from './data'; // --------------------------------------------------------------------------- // Point / datum types in events @@ -24,7 +24,7 @@ import type { Data, PlotData } from './data'; export interface PlotScatterDataPoint { curveNumber: number; - data: PlotData; + data: Data; pointIndex: number; pointNumber: number; x: number; @@ -35,7 +35,7 @@ export interface PlotScatterDataPoint { export interface PlotDatum { curveNumber: number; - data: PlotData; + data: Data; customdata: Datum; pointIndex: number; pointNumber: number; diff --git a/src/types/core/graph-div.internal.d.ts b/src/types/core/graph-div.internal.d.ts index 67ac87f2776..49632fda473 100644 --- a/src/types/core/graph-div.internal.d.ts +++ b/src/types/core/graph-div.internal.d.ts @@ -8,7 +8,7 @@ import type { Layout } from '../generated/schema'; import type { Config } from './config'; -import type { PlotData } from './data'; +import type { Data } from './data'; import type { CalcData, FullData } from './data.internal'; import type { FullLayout } from './layout.internal'; @@ -35,7 +35,7 @@ export interface GraphDiv extends HTMLDivElement { _transitioning?: boolean; calcdata?: CalcData[][]; config?: Partial; - data?: Array>; + data?: Data[]; emit?: (event: string, ...args: any[]) => void; layout?: Partial; [key: string]: any; diff --git a/src/types/core/layout.d.ts b/src/types/core/layout.d.ts index de52759b3bf..e904649e2d2 100644 --- a/src/types/core/layout.d.ts +++ b/src/types/core/layout.d.ts @@ -9,7 +9,7 @@ */ import type { Layout } from '../generated/schema'; -import type { PlotData, PlotType } from './data'; +import type { Data, PlotType } from './data'; import type { PlotlyHTMLElement } from './events'; // --------------------------------------------------------------------------- @@ -102,7 +102,7 @@ export type ModeBarButtonAny = ModeBarDefaultButtons | ModeBarButton; // --------------------------------------------------------------------------- export interface Template { - data?: { [type in PlotType]?: Array> } | undefined; + data?: { [type in PlotType]?: Data[] } | undefined; layout?: Partial | undefined; } diff --git a/src/types/generated/schema.d.ts b/src/types/generated/schema.d.ts index dd7b681b8fb..96a4ae3637c 100644 --- a/src/types/generated/schema.d.ts +++ b/src/types/generated/schema.d.ts @@ -30,77 +30,82 @@ export type PlotType = 'bar' | 'barpolar' | 'box' | 'candlestick' | 'carpet' | ' // --------------------------------------------------------------------------- export interface AnimationFrameOpts { - /** The duration in milliseconds of each frame. If greater than the frame duration, it will be limited to the frame duration. */ + /** + * The duration in milliseconds of each frame. If greater than the frame duration, it will be limited to the frame duration. + * @default 500 + * Minimum: 0 + */ duration?: number; - /** Redraw the plot at completion of the transition. This is desirable for transitions that include properties that cannot be transitioned, but may significantly slow down updates that do not require a full redraw of the plot */ + /** + * Redraw the plot at completion of the transition. This is desirable for transitions that include properties that cannot be transitioned, but may significantly slow down updates that do not require a full redraw of the plot + * @default true + */ redraw?: boolean; } -export interface AutoRangeOptions { - /** Clip autorange maximum if it goes beyond this value. Has no effect when `autorangeoptions.maxallowed` is provided. */ - clipmax?: any; - /** Clip autorange minimum if it goes beyond this value. Has no effect when `autorangeoptions.minallowed` is provided. */ - clipmin?: any; - /** Ensure this value is included in autorange. */ - include?: any; - /** Use this value exactly as autorange maximum. */ - maxallowed?: any; - /** Use this value exactly as autorange minimum. */ - minallowed?: any; -} - export interface Domain { - /** If there is a layout grid, use the domain for this column in the grid for this funnelarea trace. */ + /** + * If there is a layout grid, use the domain for this column in the grid for this funnelarea trace. + * @default 0 + * Minimum: 0 + */ column?: number; - /** If there is a layout grid, use the domain for this row in the grid for this funnelarea trace. */ + /** + * If there is a layout grid, use the domain for this row in the grid for this funnelarea trace. + * @default 0 + * Minimum: 0 + */ row?: number; - /** Sets the horizontal domain of this funnelarea trace (in plot fraction). */ + /** + * Sets the horizontal domain of this funnelarea trace (in plot fraction). + * @default [0,1] + */ x?: [number, number]; - /** Sets the vertical domain of this funnelarea trace (in plot fraction). */ + /** + * Sets the vertical domain of this funnelarea trace (in plot fraction). + * @default [0,1] + */ y?: [number, number]; } -export interface ErrorY { - /** Sets the data corresponding the length of each error bar. Values are plotted relative to the underlying data. */ - array?: Datum[] | TypedArray; - /** Sets the data corresponding the length of each error bar in the bottom (left) direction for vertical (horizontal) bars Values are plotted relative to the underlying data. */ - arrayminus?: Datum[] | TypedArray; - /** Sets the stroke color of the error bars. */ - color?: Color; - /** Determines whether or not the error bars have the same length in both direction (top/bottom for vertical bars, left/right for horizontal bars. */ - symmetric?: boolean; - /** Sets the thickness (in px) of the error bars. */ - thickness?: number; - traceref?: number; - tracerefminus?: number; - /** Determines the rule used to generate the error bars. If *constant*, the bar lengths are of a constant value. Set this constant in `value`. If *percent*, the bar lengths correspond to a percentage of underlying data. Set this percentage in `value`. If *sqrt*, the bar lengths correspond to the square of the underlying data. If *data*, the bar lengths are set with data set `array`. */ - type?: 'percent' | 'constant' | 'sqrt' | 'data'; - /** Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars. */ - value?: number; - /** Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars in the bottom (left) direction for vertical (horizontal) bars */ - valueminus?: number; - /** Determines whether or not this set of error bars is visible. */ - visible?: boolean; - /** Sets the width (in px) of the cross-bar at both ends of the error bars. */ - width?: number; -} - export interface Font { color?: Color; /** HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available. */ family?: string; - /** Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc. */ + /** + * Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc. + * @default 'none' + */ lineposition?: 'under' | 'over' | 'through' | 'none' | (string & {}); - /** Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options. */ + /** + * Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options. + * @default 'none' + */ shadow?: string; + /** + * Minimum: 1 + */ size?: number; - /** Sets whether a font should be styled with a normal or italic face from its family. */ + /** + * Sets whether a font should be styled with a normal or italic face from its family. + * @default 'normal' + */ style?: 'normal' | 'italic'; - /** Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized. */ + /** + * Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized. + * @default 'normal' + */ textcase?: 'normal' | 'word caps' | 'upper' | 'lower'; - /** Sets the variant of the font. */ + /** + * Sets the variant of the font. + * @default 'normal' + */ variant?: 'normal' | 'small-caps' | 'all-small-caps' | 'all-petite-caps' | 'petite-caps' | 'unicase'; - /** Sets the weight (or boldness) of the font. */ + /** + * Sets the weight (or boldness) of the font. + * @default 'normal' + * Range: [1, 1000] + */ weight?: number | 'normal' | 'bold'; } @@ -108,93 +113,83 @@ export interface FontArray { color?: Color | Color[]; /** HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available. */ family?: string | string[]; - /** Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc. */ + /** + * Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc. + * @default 'none' + */ lineposition?: 'under' | 'over' | 'through' | 'none' | (string & {}) | ('under' | 'over' | 'through' | 'none' | (string & {}))[]; - /** Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options. */ + /** + * Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options. + * @default 'none' + */ shadow?: string | string[]; + /** + * Minimum: 1 + */ size?: number | number[]; - /** Sets whether a font should be styled with a normal or italic face from its family. */ + /** + * Sets whether a font should be styled with a normal or italic face from its family. + * @default 'normal' + */ style?: 'normal' | 'italic' | ('normal' | 'italic')[]; - /** Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized. */ + /** + * Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized. + * @default 'normal' + */ textcase?: 'normal' | 'word caps' | 'upper' | 'lower' | ('normal' | 'word caps' | 'upper' | 'lower')[]; - /** Sets the variant of the font. */ + /** + * Sets the variant of the font. + * @default 'normal' + */ variant?: 'normal' | 'small-caps' | 'all-small-caps' | 'all-petite-caps' | 'petite-caps' | 'unicase' | ('normal' | 'small-caps' | 'all-small-caps' | 'all-petite-caps' | 'petite-caps' | 'unicase')[]; - /** Sets the weight (or boldness) of the font. */ + /** + * Sets the weight (or boldness) of the font. + * @default 'normal' + * Range: [1, 1000] + */ weight?: number | 'normal' | 'bold' | (number | 'normal' | 'bold')[]; } -export interface Lighting { - /** Ambient light increases overall color visibility but can wash out the image. */ - ambient?: number; - /** Represents the extent that incident rays are reflected in a range of angles. */ - diffuse?: number; - /** Epsilon for face normals calculation avoids math issues arising from degenerate geometry. */ - facenormalsepsilon?: number; - /** Represents the reflectance as a dependency of the viewing angle; e.g. paper is reflective when viewing it from the edge of the paper (almost 90 degrees), causing shine. */ - fresnel?: number; - /** Alters specular reflection; the rougher the surface, the wider and less contrasty the shine. */ - roughness?: number; - /** Represents the level that incident rays are reflected in a single direction, causing shine. */ - specular?: number; - /** Epsilon for vertex normals calculation avoids math issues arising from degenerate geometry. */ - vertexnormalsepsilon?: number; -} - -export interface Line { - /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. Has an effect only if in `marker.line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ - autocolorscale?: boolean; - /** Determines whether or not the color domain is computed with respect to the input data (here in `marker.line.color`) or the bounds set in `marker.line.cmin` and `marker.line.cmax` Has an effect only if in `marker.line.color` is set to a numerical array. Defaults to `false` when `marker.line.cmin` and `marker.line.cmax` are set by the user. */ - cauto?: boolean; - /** Sets the upper bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmin` must be set as well. */ - cmax?: number; - /** Sets the mid-point of the color domain by scaling `marker.line.cmin` and/or `marker.line.cmax` to be equidistant to this point. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color`. Has no effect when `marker.line.cauto` is `false`. */ - cmid?: number; - /** Sets the lower bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmax` must be set as well. */ - cmin?: number; - /** Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set. */ - color?: Color | Color[]; - /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ - coloraxis?: string; - /** Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ - colorscale?: ColorScale; - /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ - dash?: Dash | Dash[]; - /** Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color. */ - reversescale?: boolean; - /** Sets the width (in px) of the lines bounding the marker points. */ - width?: number | number[]; -} - export interface Pattern { /** When there is no colorscale sets the color of background pattern fill. Defaults to a `marker.color` background when `fillmode` is *overlay*. Otherwise, defaults to a transparent background. */ bgcolor?: Color | Color[]; /** When there is no colorscale sets the color of foreground pattern fill. Defaults to a `marker.color` background when `fillmode` is *replace*. Otherwise, defaults to dark grey or white to increase contrast with the `bgcolor`. */ fgcolor?: Color | Color[]; - /** Sets the opacity of the foreground pattern fill. Defaults to a 0.5 when `fillmode` is *overlay*. Otherwise, defaults to 1. */ + /** + * Sets the opacity of the foreground pattern fill. Defaults to a 0.5 when `fillmode` is *overlay*. Otherwise, defaults to 1. + * Range: [0, 1] + */ fgopacity?: number; - /** Determines whether `marker.color` should be used as a default to `bgcolor` or a `fgcolor`. */ + /** + * Determines whether `marker.color` should be used as a default to `bgcolor` or a `fgcolor`. + * @default 'replace' + */ fillmode?: 'replace' | 'overlay'; /** Sets a custom path for pattern fill. Use with no `shape` or `solidity`, provide an SVG path string for the regions of the square from (0,0) to (`size`,`size`) to color. */ path?: string | string[]; /** Sets the shape of the pattern fill. By default, no pattern is used for filling the area. */ shape?: PatternShape | PatternShape[]; - /** Sets the size of unit squares of the pattern fill in pixels, which corresponds to the interval of repetition of the pattern. */ + /** + * Sets the size of unit squares of the pattern fill in pixels, which corresponds to the interval of repetition of the pattern. + * @default 8 + * Minimum: 0 + */ size?: number | number[]; - /** Sets the solidity of the pattern fill. Solidity is roughly the fraction of the area filled by the pattern. Solidity of 0 shows only the background color without pattern and solidty of 1 shows only the foreground color without pattern. */ + /** + * Sets the solidity of the pattern fill. Solidity is roughly the fraction of the area filled by the pattern. Solidity of 0 shows only the background color without pattern and solidty of 1 shows only the foreground color without pattern. + * @default 0.3 + * Range: [0, 1] + */ solidity?: number | number[]; } -export interface Stream { - /** Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot. */ - maxpoints?: number; - /** The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details. */ - token?: string; -} - export interface TickFormatStops { /** range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null* */ dtickrange?: [any, any]; - /** Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`. */ + /** + * Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`. + * @default true + */ enabled?: boolean; /** When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template. */ name?: string; @@ -205,60 +200,145 @@ export interface TickFormatStops { } export interface Transition { - /** The duration of the transition, in milliseconds. If equal to zero, updates are synchronous. */ + /** + * The duration of the transition, in milliseconds. If equal to zero, updates are synchronous. + * @default 500 + * Minimum: 0 + */ duration?: number; - /** The easing function used for the transition */ + /** + * The easing function used for the transition + * @default 'cubic-in-out' + */ easing?: TransitionEasing; - /** Determines whether the figure's layout or traces smoothly transitions during updates that make both traces and layout change. */ + /** + * Determines whether the figure's layout or traces smoothly transitions during updates that make both traces and layout change. + * @default 'layout first' + */ ordering?: 'layout first' | 'traces first'; } export interface ColorBar { - /** Sets the color of padded area. */ + /** + * Sets the color of padded area. + * @default 'rgba(0,0,0,0)' + */ bgcolor?: Color; - /** Sets the axis line color. */ + /** + * Sets the axis line color. + * @default '#444' + */ bordercolor?: Color; - /** Sets the width (in px) or the border enclosing this color bar. */ + /** + * Sets the width (in px) or the border enclosing this color bar. + * @default 0 + * Minimum: 0 + */ borderwidth?: number; - /** Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48* */ + /** + * Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48* + * Setting this also sets: tickmode = "linear" + */ dtick?: any; - /** Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from "femto" f (10^-15) to "tera" T (10^12). *SI extended* covers instead the full SI range from "quecto" q (10^-30) to "quetta" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation. */ + /** + * Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from "femto" f (10^-15) to "tera" T (10^12). *SI extended* covers instead the full SI range from "quecto" q (10^-30) to "quetta" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation. + * @default 'B' + */ exponentformat?: 'none' | 'e' | 'E' | 'power' | 'SI' | 'B' | 'SI extended'; - /** Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. */ + /** + * Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. + * @default false + */ labelalias?: any; - /** Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends. */ + /** + * Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends. + * @default 1 + * Minimum: 0 + */ len?: number; - /** Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value. */ + /** + * Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value. + * @default 'fraction' + */ lenmode?: 'fraction' | 'pixels'; - /** Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*. */ + /** + * Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*. + * @default 3 + * Minimum: 0 + */ minexponent?: number; - /** Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. */ + /** + * Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. + * @default 0 + * Minimum: 0 + */ nticks?: number; - /** Sets the orientation of the colorbar. */ + /** + * Sets the orientation of the colorbar. + * @default 'v' + */ orientation?: 'h' | 'v'; - /** Sets the axis line color. */ + /** + * Sets the axis line color. + * @default '#444' + */ outlinecolor?: Color; - /** Sets the width (in px) of the axis line. */ + /** + * Sets the width (in px) of the axis line. + * @default 1 + * Minimum: 0 + */ outlinewidth?: number; - /** If "true", even 4-digit integers are separated */ + /** + * If "true", even 4-digit integers are separated + * @default false + */ separatethousands?: boolean; - /** If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. */ + /** + * If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. + * @default 'all' + */ showexponent?: 'all' | 'first' | 'last' | 'none'; - /** Determines whether or not the tick labels are drawn. */ + /** + * Determines whether or not the tick labels are drawn. + * @default true + */ showticklabels?: boolean; - /** If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. */ + /** + * If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. + * @default 'all' + */ showtickprefix?: 'all' | 'first' | 'last' | 'none'; - /** Same as `showtickprefix` but for tick suffixes. */ + /** + * Same as `showtickprefix` but for tick suffixes. + * @default 'all' + */ showticksuffix?: 'all' | 'first' | 'last' | 'none'; - /** Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels. */ + /** + * Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels. + * @default 30 + * Minimum: 0 + */ thickness?: number; - /** Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value. */ + /** + * Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value. + * @default 'pixels' + */ thicknessmode?: 'fraction' | 'pixels'; - /** Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears. */ + /** + * Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears. + * Setting this also sets: tickmode = "linear" + */ tick0?: any; - /** Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. */ + /** + * Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. + * @default 'auto' + */ tickangle?: number | 'auto'; - /** Sets the tick color. */ + /** + * Sets the tick color. + * @default '#444' + */ tickcolor?: Color; /** Sets the color bar's tick label font */ tickfont?: Font; @@ -267,11 +347,22 @@ export interface ColorBar { tickformatstops?: TickFormatStops[]; /** Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*. */ ticklabeloverflow?: 'allow' | 'hide past div' | 'hide past domain'; - /** Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*. */ + /** + * Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*. + * @default 'outside' + */ ticklabelposition?: 'outside' | 'inside' | 'outside top' | 'inside top' | 'outside left' | 'inside left' | 'outside right' | 'inside right' | 'outside bottom' | 'inside bottom'; - /** Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*. */ + /** + * Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*. + * @default 1 + * Minimum: 1 + */ ticklabelstep?: number; - /** Sets the tick length (in px). */ + /** + * Sets the tick length (in px). + * @default 5 + * Minimum: 0 + */ ticklen?: number; /** Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). */ tickmode?: 'auto' | 'linear' | 'array'; @@ -285,7 +376,11 @@ export interface ColorBar { ticktext?: Datum[] | TypedArray; /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ tickvals?: Datum[] | TypedArray; - /** Sets the tick width (in px). */ + /** + * Sets the tick width (in px). + * @default 1 + * Minimum: 0 + */ tickwidth?: number; title?: { /** Sets this color bar's title font. */ @@ -299,22 +394,39 @@ export interface ColorBar { x?: number; /** Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*. */ xanchor?: 'left' | 'center' | 'right'; - /** Sets the amount of padding (in px) along the x direction. */ + /** + * Sets the amount of padding (in px) along the x direction. + * @default 10 + * Minimum: 0 + */ xpad?: number; - /** Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only. */ + /** + * Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only. + * @default 'paper' + */ xref?: YRef; /** Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*. */ y?: number; /** Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*. */ yanchor?: 'top' | 'middle' | 'bottom'; - /** Sets the amount of padding (in px) along the y direction. */ + /** + * Sets the amount of padding (in px) along the y direction. + * @default 10 + * Minimum: 0 + */ ypad?: number; - /** Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only. */ + /** + * Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only. + * @default 'paper' + */ yref?: YRef; } export interface HoverLabel { - /** Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines */ + /** + * Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines + * @default 'auto' + */ align?: 'left' | 'right' | 'auto' | ('left' | 'right' | 'auto')[]; /** Sets the background color of the hover labels for this trace */ bgcolor?: Color | Color[]; @@ -322,9 +434,16 @@ export interface HoverLabel { bordercolor?: Color | Color[]; /** Sets the font used in hover labels. */ font?: FontArray; - /** Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis. */ + /** + * Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis. + * @default 15 + * Minimum: -1 + */ namelength?: number | number[]; - /** Sets whether or not to show the hover label arrow/triangle pointing to the data point. */ + /** + * Sets whether or not to show the hover label arrow/triangle pointing to the data point. + * @default true + */ showarrow?: boolean; } @@ -335,55 +454,288 @@ export interface LegendGroupTitle { text?: string; } -export interface Marker { - /** Sets the marker angle in respect to `angleref`. */ - angle?: number | 'auto' | (number | 'auto')[]; - /** Sets the reference for marker angle. With *previous*, angle 0 points along the line from the previous point to this one. With *up*, angle 0 points toward the top of the screen. */ - angleref?: 'previous' | 'up'; - /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ - autocolorscale?: boolean; - /** Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. */ - cauto?: boolean; - /** Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well. */ - cmax?: number; - /** Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`. */ - cmid?: number; - /** Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well. */ - cmin?: number; - /** Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set. */ - color?: Color | Color[]; - /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ - coloraxis?: string; - colorbar?: ColorBar; - /** Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ - colorscale?: ColorScale; - gradient?: { - /** Sets the final color of the gradient fill: the center color for radial, the right for horizontal, or the bottom for vertical. */ +// --------------------------------------------------------------------------- +// Internal shared interfaces — schema helpers or types whose direct names +// would mislead consumers. Reach them via `_internal.X` or, preferably, +// through indexed access on the parent type (e.g. `ScatterData["marker"]`). +// --------------------------------------------------------------------------- + +export namespace _internal { + export interface AutoRangeOptions { + /** Clip autorange maximum if it goes beyond this value. Has no effect when `autorangeoptions.maxallowed` is provided. */ + clipmax?: any; + /** Clip autorange minimum if it goes beyond this value. Has no effect when `autorangeoptions.minallowed` is provided. */ + clipmin?: any; + /** Ensure this value is included in autorange. */ + include?: any; + /** Use this value exactly as autorange maximum. */ + maxallowed?: any; + /** Use this value exactly as autorange minimum. */ + minallowed?: any; + } + + export interface ErrorY { + /** Sets the data corresponding the length of each error bar. Values are plotted relative to the underlying data. */ + array?: Datum[] | TypedArray; + /** Sets the data corresponding the length of each error bar in the bottom (left) direction for vertical (horizontal) bars Values are plotted relative to the underlying data. */ + arrayminus?: Datum[] | TypedArray; + /** Sets the stroke color of the error bars. */ + color?: Color; + /** Determines whether or not the error bars have the same length in both direction (top/bottom for vertical bars, left/right for horizontal bars. */ + symmetric?: boolean; + /** + * Sets the thickness (in px) of the error bars. + * @default 2 + * Minimum: 0 + */ + thickness?: number; + /** + * @default 0 + * Minimum: 0 + */ + traceref?: number; + /** + * @default 0 + * Minimum: 0 + */ + tracerefminus?: number; + /** Determines the rule used to generate the error bars. If *constant*, the bar lengths are of a constant value. Set this constant in `value`. If *percent*, the bar lengths correspond to a percentage of underlying data. Set this percentage in `value`. If *sqrt*, the bar lengths correspond to the square of the underlying data. If *data*, the bar lengths are set with data set `array`. */ + type?: 'percent' | 'constant' | 'sqrt' | 'data'; + /** + * Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars. + * @default 10 + * Minimum: 0 + */ + value?: number; + /** + * Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars in the bottom (left) direction for vertical (horizontal) bars + * @default 10 + * Minimum: 0 + */ + valueminus?: number; + /** Determines whether or not this set of error bars is visible. */ + visible?: boolean; + /** + * Sets the width (in px) of the cross-bar at both ends of the error bars. + * Minimum: 0 + */ + width?: number; + } + + export interface Lighting { + /** + * Ambient light increases overall color visibility but can wash out the image. + * @default 0.8 + * Range: [0, 1] + */ + ambient?: number; + /** + * Represents the extent that incident rays are reflected in a range of angles. + * @default 0.8 + * Range: [0, 1] + */ + diffuse?: number; + /** + * Epsilon for face normals calculation avoids math issues arising from degenerate geometry. + * @default 0.000001 + * Range: [0, 1] + */ + facenormalsepsilon?: number; + /** + * Represents the reflectance as a dependency of the viewing angle; e.g. paper is reflective when viewing it from the edge of the paper (almost 90 degrees), causing shine. + * @default 0.2 + * Range: [0, 5] + */ + fresnel?: number; + /** + * Alters specular reflection; the rougher the surface, the wider and less contrasty the shine. + * @default 0.5 + * Range: [0, 1] + */ + roughness?: number; + /** + * Represents the level that incident rays are reflected in a single direction, causing shine. + * @default 0.05 + * Range: [0, 2] + */ + specular?: number; + /** + * Epsilon for vertex normals calculation avoids math issues arising from degenerate geometry. + * @default 1e-12 + * Range: [0, 1] + */ + vertexnormalsepsilon?: number; + } + + export interface Line { + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. Has an effect only if in `marker.line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ + autocolorscale?: boolean; + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `marker.line.color`) or the bounds set in `marker.line.cmin` and `marker.line.cmax` Has an effect only if in `marker.line.color` is set to a numerical array. Defaults to `false` when `marker.line.cmin` and `marker.line.cmax` are set by the user. + * @default true + */ + cauto?: boolean; + /** + * Sets the upper bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmin` must be set as well. + * Setting this also sets: cauto = false + */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `marker.line.cmin` and/or `marker.line.cmax` to be equidistant to this point. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color`. Has no effect when `marker.line.cauto` is `false`. */ + cmid?: number; + /** + * Sets the lower bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmax` must be set as well. + * Setting this also sets: cauto = false + */ + cmin?: number; + /** Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set. */ color?: Color | Color[]; - /** Sets the type of gradient used to fill the markers */ - type?: 'radial' | 'horizontal' | 'vertical' | 'none' | ('radial' | 'horizontal' | 'vertical' | 'none')[]; - }; - line?: Line; - /** Sets a maximum number of points to be drawn on the graph. *0* corresponds to no limit. */ - maxdisplayed?: number; - /** Sets the marker opacity. */ - opacity?: number | number[]; - /** Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. */ - reversescale?: boolean; - /** Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array. */ - showscale?: boolean; - /** Sets the marker size (in px). */ - size?: number | number[]; - /** Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points. */ - sizemin?: number; - /** Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels. */ - sizemode?: 'diameter' | 'area'; - /** Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`. */ - sizeref?: number; - /** Moves the marker away from the data point in the direction of `angle` (in px). This can be useful for example if you have another marker at this location and you want to point an arrowhead marker at it. */ - standoff?: number | number[]; - /** Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name. */ - symbol?: 0 | '0' | 'circle' | 100 | '100' | 'circle-open' | 200 | '200' | 'circle-dot' | 300 | '300' | 'circle-open-dot' | 1 | '1' | 'square' | 101 | '101' | 'square-open' | 201 | '201' | 'square-dot' | 301 | '301' | 'square-open-dot' | 2 | '2' | 'diamond' | 102 | '102' | 'diamond-open' | 202 | '202' | 'diamond-dot' | 302 | '302' | 'diamond-open-dot' | 3 | '3' | 'cross' | 103 | '103' | 'cross-open' | 203 | '203' | 'cross-dot' | 303 | '303' | 'cross-open-dot' | 4 | '4' | 'x' | 104 | '104' | 'x-open' | 204 | '204' | 'x-dot' | 304 | '304' | 'x-open-dot' | 5 | '5' | 'triangle-up' | 105 | '105' | 'triangle-up-open' | 205 | '205' | 'triangle-up-dot' | 305 | '305' | 'triangle-up-open-dot' | 6 | '6' | 'triangle-down' | 106 | '106' | 'triangle-down-open' | 206 | '206' | 'triangle-down-dot' | 306 | '306' | 'triangle-down-open-dot' | 7 | '7' | 'triangle-left' | 107 | '107' | 'triangle-left-open' | 207 | '207' | 'triangle-left-dot' | 307 | '307' | 'triangle-left-open-dot' | 8 | '8' | 'triangle-right' | 108 | '108' | 'triangle-right-open' | 208 | '208' | 'triangle-right-dot' | 308 | '308' | 'triangle-right-open-dot' | 9 | '9' | 'triangle-ne' | 109 | '109' | 'triangle-ne-open' | 209 | '209' | 'triangle-ne-dot' | 309 | '309' | 'triangle-ne-open-dot' | 10 | '10' | 'triangle-se' | 110 | '110' | 'triangle-se-open' | 210 | '210' | 'triangle-se-dot' | 310 | '310' | 'triangle-se-open-dot' | 11 | '11' | 'triangle-sw' | 111 | '111' | 'triangle-sw-open' | 211 | '211' | 'triangle-sw-dot' | 311 | '311' | 'triangle-sw-open-dot' | 12 | '12' | 'triangle-nw' | 112 | '112' | 'triangle-nw-open' | 212 | '212' | 'triangle-nw-dot' | 312 | '312' | 'triangle-nw-open-dot' | 13 | '13' | 'pentagon' | 113 | '113' | 'pentagon-open' | 213 | '213' | 'pentagon-dot' | 313 | '313' | 'pentagon-open-dot' | 14 | '14' | 'hexagon' | 114 | '114' | 'hexagon-open' | 214 | '214' | 'hexagon-dot' | 314 | '314' | 'hexagon-open-dot' | 15 | '15' | 'hexagon2' | 115 | '115' | 'hexagon2-open' | 215 | '215' | 'hexagon2-dot' | 315 | '315' | 'hexagon2-open-dot' | 16 | '16' | 'octagon' | 116 | '116' | 'octagon-open' | 216 | '216' | 'octagon-dot' | 316 | '316' | 'octagon-open-dot' | 17 | '17' | 'star' | 117 | '117' | 'star-open' | 217 | '217' | 'star-dot' | 317 | '317' | 'star-open-dot' | 18 | '18' | 'hexagram' | 118 | '118' | 'hexagram-open' | 218 | '218' | 'hexagram-dot' | 318 | '318' | 'hexagram-open-dot' | 19 | '19' | 'star-triangle-up' | 119 | '119' | 'star-triangle-up-open' | 219 | '219' | 'star-triangle-up-dot' | 319 | '319' | 'star-triangle-up-open-dot' | 20 | '20' | 'star-triangle-down' | 120 | '120' | 'star-triangle-down-open' | 220 | '220' | 'star-triangle-down-dot' | 320 | '320' | 'star-triangle-down-open-dot' | 21 | '21' | 'star-square' | 121 | '121' | 'star-square-open' | 221 | '221' | 'star-square-dot' | 321 | '321' | 'star-square-open-dot' | 22 | '22' | 'star-diamond' | 122 | '122' | 'star-diamond-open' | 222 | '222' | 'star-diamond-dot' | 322 | '322' | 'star-diamond-open-dot' | 23 | '23' | 'diamond-tall' | 123 | '123' | 'diamond-tall-open' | 223 | '223' | 'diamond-tall-dot' | 323 | '323' | 'diamond-tall-open-dot' | 24 | '24' | 'diamond-wide' | 124 | '124' | 'diamond-wide-open' | 224 | '224' | 'diamond-wide-dot' | 324 | '324' | 'diamond-wide-open-dot' | 25 | '25' | 'hourglass' | 125 | '125' | 'hourglass-open' | 26 | '26' | 'bowtie' | 126 | '126' | 'bowtie-open' | 27 | '27' | 'circle-cross' | 127 | '127' | 'circle-cross-open' | 28 | '28' | 'circle-x' | 128 | '128' | 'circle-x-open' | 29 | '29' | 'square-cross' | 129 | '129' | 'square-cross-open' | 30 | '30' | 'square-x' | 130 | '130' | 'square-x-open' | 31 | '31' | 'diamond-cross' | 131 | '131' | 'diamond-cross-open' | 32 | '32' | 'diamond-x' | 132 | '132' | 'diamond-x-open' | 33 | '33' | 'cross-thin' | 133 | '133' | 'cross-thin-open' | 34 | '34' | 'x-thin' | 134 | '134' | 'x-thin-open' | 35 | '35' | 'asterisk' | 135 | '135' | 'asterisk-open' | 36 | '36' | 'hash' | 136 | '136' | 'hash-open' | 236 | '236' | 'hash-dot' | 336 | '336' | 'hash-open-dot' | 37 | '37' | 'y-up' | 137 | '137' | 'y-up-open' | 38 | '38' | 'y-down' | 138 | '138' | 'y-down-open' | 39 | '39' | 'y-left' | 139 | '139' | 'y-left-open' | 40 | '40' | 'y-right' | 140 | '140' | 'y-right-open' | 41 | '41' | 'line-ew' | 141 | '141' | 'line-ew-open' | 42 | '42' | 'line-ns' | 142 | '142' | 'line-ns-open' | 43 | '43' | 'line-ne' | 143 | '143' | 'line-ne-open' | 44 | '44' | 'line-nw' | 144 | '144' | 'line-nw-open' | 45 | '45' | 'arrow-up' | 145 | '145' | 'arrow-up-open' | 46 | '46' | 'arrow-down' | 146 | '146' | 'arrow-down-open' | 47 | '47' | 'arrow-left' | 147 | '147' | 'arrow-left-open' | 48 | '48' | 'arrow-right' | 148 | '148' | 'arrow-right-open' | 49 | '49' | 'arrow-bar-up' | 149 | '149' | 'arrow-bar-up-open' | 50 | '50' | 'arrow-bar-down' | 150 | '150' | 'arrow-bar-down-open' | 51 | '51' | 'arrow-bar-left' | 151 | '151' | 'arrow-bar-left-open' | 52 | '52' | 'arrow-bar-right' | 152 | '152' | 'arrow-bar-right-open' | 53 | '53' | 'arrow' | 153 | '153' | 'arrow-open' | 54 | '54' | 'arrow-wide' | 154 | '154' | 'arrow-wide-open' | (0 | '0' | 'circle' | 100 | '100' | 'circle-open' | 200 | '200' | 'circle-dot' | 300 | '300' | 'circle-open-dot' | 1 | '1' | 'square' | 101 | '101' | 'square-open' | 201 | '201' | 'square-dot' | 301 | '301' | 'square-open-dot' | 2 | '2' | 'diamond' | 102 | '102' | 'diamond-open' | 202 | '202' | 'diamond-dot' | 302 | '302' | 'diamond-open-dot' | 3 | '3' | 'cross' | 103 | '103' | 'cross-open' | 203 | '203' | 'cross-dot' | 303 | '303' | 'cross-open-dot' | 4 | '4' | 'x' | 104 | '104' | 'x-open' | 204 | '204' | 'x-dot' | 304 | '304' | 'x-open-dot' | 5 | '5' | 'triangle-up' | 105 | '105' | 'triangle-up-open' | 205 | '205' | 'triangle-up-dot' | 305 | '305' | 'triangle-up-open-dot' | 6 | '6' | 'triangle-down' | 106 | '106' | 'triangle-down-open' | 206 | '206' | 'triangle-down-dot' | 306 | '306' | 'triangle-down-open-dot' | 7 | '7' | 'triangle-left' | 107 | '107' | 'triangle-left-open' | 207 | '207' | 'triangle-left-dot' | 307 | '307' | 'triangle-left-open-dot' | 8 | '8' | 'triangle-right' | 108 | '108' | 'triangle-right-open' | 208 | '208' | 'triangle-right-dot' | 308 | '308' | 'triangle-right-open-dot' | 9 | '9' | 'triangle-ne' | 109 | '109' | 'triangle-ne-open' | 209 | '209' | 'triangle-ne-dot' | 309 | '309' | 'triangle-ne-open-dot' | 10 | '10' | 'triangle-se' | 110 | '110' | 'triangle-se-open' | 210 | '210' | 'triangle-se-dot' | 310 | '310' | 'triangle-se-open-dot' | 11 | '11' | 'triangle-sw' | 111 | '111' | 'triangle-sw-open' | 211 | '211' | 'triangle-sw-dot' | 311 | '311' | 'triangle-sw-open-dot' | 12 | '12' | 'triangle-nw' | 112 | '112' | 'triangle-nw-open' | 212 | '212' | 'triangle-nw-dot' | 312 | '312' | 'triangle-nw-open-dot' | 13 | '13' | 'pentagon' | 113 | '113' | 'pentagon-open' | 213 | '213' | 'pentagon-dot' | 313 | '313' | 'pentagon-open-dot' | 14 | '14' | 'hexagon' | 114 | '114' | 'hexagon-open' | 214 | '214' | 'hexagon-dot' | 314 | '314' | 'hexagon-open-dot' | 15 | '15' | 'hexagon2' | 115 | '115' | 'hexagon2-open' | 215 | '215' | 'hexagon2-dot' | 315 | '315' | 'hexagon2-open-dot' | 16 | '16' | 'octagon' | 116 | '116' | 'octagon-open' | 216 | '216' | 'octagon-dot' | 316 | '316' | 'octagon-open-dot' | 17 | '17' | 'star' | 117 | '117' | 'star-open' | 217 | '217' | 'star-dot' | 317 | '317' | 'star-open-dot' | 18 | '18' | 'hexagram' | 118 | '118' | 'hexagram-open' | 218 | '218' | 'hexagram-dot' | 318 | '318' | 'hexagram-open-dot' | 19 | '19' | 'star-triangle-up' | 119 | '119' | 'star-triangle-up-open' | 219 | '219' | 'star-triangle-up-dot' | 319 | '319' | 'star-triangle-up-open-dot' | 20 | '20' | 'star-triangle-down' | 120 | '120' | 'star-triangle-down-open' | 220 | '220' | 'star-triangle-down-dot' | 320 | '320' | 'star-triangle-down-open-dot' | 21 | '21' | 'star-square' | 121 | '121' | 'star-square-open' | 221 | '221' | 'star-square-dot' | 321 | '321' | 'star-square-open-dot' | 22 | '22' | 'star-diamond' | 122 | '122' | 'star-diamond-open' | 222 | '222' | 'star-diamond-dot' | 322 | '322' | 'star-diamond-open-dot' | 23 | '23' | 'diamond-tall' | 123 | '123' | 'diamond-tall-open' | 223 | '223' | 'diamond-tall-dot' | 323 | '323' | 'diamond-tall-open-dot' | 24 | '24' | 'diamond-wide' | 124 | '124' | 'diamond-wide-open' | 224 | '224' | 'diamond-wide-dot' | 324 | '324' | 'diamond-wide-open-dot' | 25 | '25' | 'hourglass' | 125 | '125' | 'hourglass-open' | 26 | '26' | 'bowtie' | 126 | '126' | 'bowtie-open' | 27 | '27' | 'circle-cross' | 127 | '127' | 'circle-cross-open' | 28 | '28' | 'circle-x' | 128 | '128' | 'circle-x-open' | 29 | '29' | 'square-cross' | 129 | '129' | 'square-cross-open' | 30 | '30' | 'square-x' | 130 | '130' | 'square-x-open' | 31 | '31' | 'diamond-cross' | 131 | '131' | 'diamond-cross-open' | 32 | '32' | 'diamond-x' | 132 | '132' | 'diamond-x-open' | 33 | '33' | 'cross-thin' | 133 | '133' | 'cross-thin-open' | 34 | '34' | 'x-thin' | 134 | '134' | 'x-thin-open' | 35 | '35' | 'asterisk' | 135 | '135' | 'asterisk-open' | 36 | '36' | 'hash' | 136 | '136' | 'hash-open' | 236 | '236' | 'hash-dot' | 336 | '336' | 'hash-open-dot' | 37 | '37' | 'y-up' | 137 | '137' | 'y-up-open' | 38 | '38' | 'y-down' | 138 | '138' | 'y-down-open' | 39 | '39' | 'y-left' | 139 | '139' | 'y-left-open' | 40 | '40' | 'y-right' | 140 | '140' | 'y-right-open' | 41 | '41' | 'line-ew' | 141 | '141' | 'line-ew-open' | 42 | '42' | 'line-ns' | 142 | '142' | 'line-ns-open' | 43 | '43' | 'line-ne' | 143 | '143' | 'line-ne-open' | 44 | '44' | 'line-nw' | 144 | '144' | 'line-nw-open' | 45 | '45' | 'arrow-up' | 145 | '145' | 'arrow-up-open' | 46 | '46' | 'arrow-down' | 146 | '146' | 'arrow-down-open' | 47 | '47' | 'arrow-left' | 147 | '147' | 'arrow-left-open' | 48 | '48' | 'arrow-right' | 148 | '148' | 'arrow-right-open' | 49 | '49' | 'arrow-bar-up' | 149 | '149' | 'arrow-bar-up-open' | 50 | '50' | 'arrow-bar-down' | 150 | '150' | 'arrow-bar-down-open' | 51 | '51' | 'arrow-bar-left' | 151 | '151' | 'arrow-bar-left-open' | 52 | '52' | 'arrow-bar-right' | 152 | '152' | 'arrow-bar-right-open' | 53 | '53' | 'arrow' | 153 | '153' | 'arrow-open' | 54 | '54' | 'arrow-wide' | 154 | '154' | 'arrow-wide-open')[]; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + /** + * Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ + colorscale?: ColorScale; + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ + dash?: Dash | Dash[]; + /** + * Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color. + * @default false + */ + reversescale?: boolean; + /** + * Sets the width (in px) of the lines bounding the marker points. + * Minimum: 0 + */ + width?: number | number[]; + } + + export interface Stream { + /** + * Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot. + * @default 500 + * Range: [0, 10000] + */ + maxpoints?: number; + /** The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details. */ + token?: string; + } + + export interface Marker { + /** + * Sets the marker angle in respect to `angleref`. + * @default 0 + */ + angle?: number | 'auto' | (number | 'auto')[]; + /** + * Sets the reference for marker angle. With *previous*, angle 0 points along the line from the previous point to this one. With *up*, angle 0 points toward the top of the screen. + * @default 'up' + */ + angleref?: 'previous' | 'up'; + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ + autocolorscale?: boolean; + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. + * @default true + */ + cauto?: boolean; + /** + * Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well. + * Setting this also sets: cauto = false + */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`. */ + cmid?: number; + /** + * Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well. + * Setting this also sets: cauto = false + */ + cmin?: number; + /** Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set. */ + color?: Color | Color[]; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** + * Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ + colorscale?: ColorScale; + gradient?: { + /** Sets the final color of the gradient fill: the center color for radial, the right for horizontal, or the bottom for vertical. */ + color?: Color | Color[]; + /** + * Sets the type of gradient used to fill the markers + * @default 'none' + */ + type?: 'radial' | 'horizontal' | 'vertical' | 'none' | ('radial' | 'horizontal' | 'vertical' | 'none')[]; + }; + line?: Line; + /** + * Sets a maximum number of points to be drawn on the graph. *0* corresponds to no limit. + * @default 0 + * Minimum: 0 + */ + maxdisplayed?: number; + /** + * Sets the marker opacity. + * Range: [0, 1] + */ + opacity?: number | number[]; + /** + * Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. + * @default false + */ + reversescale?: boolean; + /** + * Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array. + * @default false + */ + showscale?: boolean; + /** + * Sets the marker size (in px). + * @default 6 + * Minimum: 0 + */ + size?: number | number[]; + /** + * Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points. + * @default 0 + * Minimum: 0 + */ + sizemin?: number; + /** + * Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels. + * @default 'diameter' + */ + sizemode?: 'diameter' | 'area'; + /** + * Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`. + * @default 1 + */ + sizeref?: number; + /** + * Moves the marker away from the data point in the direction of `angle` (in px). This can be useful for example if you have another marker at this location and you want to point an arrowhead marker at it. + * @default 0 + * Minimum: 0 + */ + standoff?: number | number[]; + /** + * Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name. + * @default 'circle' + */ + symbol?: 0 | '0' | 'circle' | 100 | '100' | 'circle-open' | 200 | '200' | 'circle-dot' | 300 | '300' | 'circle-open-dot' | 1 | '1' | 'square' | 101 | '101' | 'square-open' | 201 | '201' | 'square-dot' | 301 | '301' | 'square-open-dot' | 2 | '2' | 'diamond' | 102 | '102' | 'diamond-open' | 202 | '202' | 'diamond-dot' | 302 | '302' | 'diamond-open-dot' | 3 | '3' | 'cross' | 103 | '103' | 'cross-open' | 203 | '203' | 'cross-dot' | 303 | '303' | 'cross-open-dot' | 4 | '4' | 'x' | 104 | '104' | 'x-open' | 204 | '204' | 'x-dot' | 304 | '304' | 'x-open-dot' | 5 | '5' | 'triangle-up' | 105 | '105' | 'triangle-up-open' | 205 | '205' | 'triangle-up-dot' | 305 | '305' | 'triangle-up-open-dot' | 6 | '6' | 'triangle-down' | 106 | '106' | 'triangle-down-open' | 206 | '206' | 'triangle-down-dot' | 306 | '306' | 'triangle-down-open-dot' | 7 | '7' | 'triangle-left' | 107 | '107' | 'triangle-left-open' | 207 | '207' | 'triangle-left-dot' | 307 | '307' | 'triangle-left-open-dot' | 8 | '8' | 'triangle-right' | 108 | '108' | 'triangle-right-open' | 208 | '208' | 'triangle-right-dot' | 308 | '308' | 'triangle-right-open-dot' | 9 | '9' | 'triangle-ne' | 109 | '109' | 'triangle-ne-open' | 209 | '209' | 'triangle-ne-dot' | 309 | '309' | 'triangle-ne-open-dot' | 10 | '10' | 'triangle-se' | 110 | '110' | 'triangle-se-open' | 210 | '210' | 'triangle-se-dot' | 310 | '310' | 'triangle-se-open-dot' | 11 | '11' | 'triangle-sw' | 111 | '111' | 'triangle-sw-open' | 211 | '211' | 'triangle-sw-dot' | 311 | '311' | 'triangle-sw-open-dot' | 12 | '12' | 'triangle-nw' | 112 | '112' | 'triangle-nw-open' | 212 | '212' | 'triangle-nw-dot' | 312 | '312' | 'triangle-nw-open-dot' | 13 | '13' | 'pentagon' | 113 | '113' | 'pentagon-open' | 213 | '213' | 'pentagon-dot' | 313 | '313' | 'pentagon-open-dot' | 14 | '14' | 'hexagon' | 114 | '114' | 'hexagon-open' | 214 | '214' | 'hexagon-dot' | 314 | '314' | 'hexagon-open-dot' | 15 | '15' | 'hexagon2' | 115 | '115' | 'hexagon2-open' | 215 | '215' | 'hexagon2-dot' | 315 | '315' | 'hexagon2-open-dot' | 16 | '16' | 'octagon' | 116 | '116' | 'octagon-open' | 216 | '216' | 'octagon-dot' | 316 | '316' | 'octagon-open-dot' | 17 | '17' | 'star' | 117 | '117' | 'star-open' | 217 | '217' | 'star-dot' | 317 | '317' | 'star-open-dot' | 18 | '18' | 'hexagram' | 118 | '118' | 'hexagram-open' | 218 | '218' | 'hexagram-dot' | 318 | '318' | 'hexagram-open-dot' | 19 | '19' | 'star-triangle-up' | 119 | '119' | 'star-triangle-up-open' | 219 | '219' | 'star-triangle-up-dot' | 319 | '319' | 'star-triangle-up-open-dot' | 20 | '20' | 'star-triangle-down' | 120 | '120' | 'star-triangle-down-open' | 220 | '220' | 'star-triangle-down-dot' | 320 | '320' | 'star-triangle-down-open-dot' | 21 | '21' | 'star-square' | 121 | '121' | 'star-square-open' | 221 | '221' | 'star-square-dot' | 321 | '321' | 'star-square-open-dot' | 22 | '22' | 'star-diamond' | 122 | '122' | 'star-diamond-open' | 222 | '222' | 'star-diamond-dot' | 322 | '322' | 'star-diamond-open-dot' | 23 | '23' | 'diamond-tall' | 123 | '123' | 'diamond-tall-open' | 223 | '223' | 'diamond-tall-dot' | 323 | '323' | 'diamond-tall-open-dot' | 24 | '24' | 'diamond-wide' | 124 | '124' | 'diamond-wide-open' | 224 | '224' | 'diamond-wide-dot' | 324 | '324' | 'diamond-wide-open-dot' | 25 | '25' | 'hourglass' | 125 | '125' | 'hourglass-open' | 26 | '26' | 'bowtie' | 126 | '126' | 'bowtie-open' | 27 | '27' | 'circle-cross' | 127 | '127' | 'circle-cross-open' | 28 | '28' | 'circle-x' | 128 | '128' | 'circle-x-open' | 29 | '29' | 'square-cross' | 129 | '129' | 'square-cross-open' | 30 | '30' | 'square-x' | 130 | '130' | 'square-x-open' | 31 | '31' | 'diamond-cross' | 131 | '131' | 'diamond-cross-open' | 32 | '32' | 'diamond-x' | 132 | '132' | 'diamond-x-open' | 33 | '33' | 'cross-thin' | 133 | '133' | 'cross-thin-open' | 34 | '34' | 'x-thin' | 134 | '134' | 'x-thin-open' | 35 | '35' | 'asterisk' | 135 | '135' | 'asterisk-open' | 36 | '36' | 'hash' | 136 | '136' | 'hash-open' | 236 | '236' | 'hash-dot' | 336 | '336' | 'hash-open-dot' | 37 | '37' | 'y-up' | 137 | '137' | 'y-up-open' | 38 | '38' | 'y-down' | 138 | '138' | 'y-down-open' | 39 | '39' | 'y-left' | 139 | '139' | 'y-left-open' | 40 | '40' | 'y-right' | 140 | '140' | 'y-right-open' | 41 | '41' | 'line-ew' | 141 | '141' | 'line-ew-open' | 42 | '42' | 'line-ns' | 142 | '142' | 'line-ns-open' | 43 | '43' | 'line-ne' | 143 | '143' | 'line-ne-open' | 44 | '44' | 'line-nw' | 144 | '144' | 'line-nw-open' | 45 | '45' | 'arrow-up' | 145 | '145' | 'arrow-up-open' | 46 | '46' | 'arrow-down' | 146 | '146' | 'arrow-down-open' | 47 | '47' | 'arrow-left' | 147 | '147' | 'arrow-left-open' | 48 | '48' | 'arrow-right' | 148 | '148' | 'arrow-right-open' | 49 | '49' | 'arrow-bar-up' | 149 | '149' | 'arrow-bar-up-open' | 50 | '50' | 'arrow-bar-down' | 150 | '150' | 'arrow-bar-down-open' | 51 | '51' | 'arrow-bar-left' | 151 | '151' | 'arrow-bar-left-open' | 52 | '52' | 'arrow-bar-right' | 152 | '152' | 'arrow-bar-right-open' | 53 | '53' | 'arrow' | 153 | '153' | 'arrow-open' | 54 | '54' | 'arrow-wide' | 154 | '154' | 'arrow-wide-open' | (0 | '0' | 'circle' | 100 | '100' | 'circle-open' | 200 | '200' | 'circle-dot' | 300 | '300' | 'circle-open-dot' | 1 | '1' | 'square' | 101 | '101' | 'square-open' | 201 | '201' | 'square-dot' | 301 | '301' | 'square-open-dot' | 2 | '2' | 'diamond' | 102 | '102' | 'diamond-open' | 202 | '202' | 'diamond-dot' | 302 | '302' | 'diamond-open-dot' | 3 | '3' | 'cross' | 103 | '103' | 'cross-open' | 203 | '203' | 'cross-dot' | 303 | '303' | 'cross-open-dot' | 4 | '4' | 'x' | 104 | '104' | 'x-open' | 204 | '204' | 'x-dot' | 304 | '304' | 'x-open-dot' | 5 | '5' | 'triangle-up' | 105 | '105' | 'triangle-up-open' | 205 | '205' | 'triangle-up-dot' | 305 | '305' | 'triangle-up-open-dot' | 6 | '6' | 'triangle-down' | 106 | '106' | 'triangle-down-open' | 206 | '206' | 'triangle-down-dot' | 306 | '306' | 'triangle-down-open-dot' | 7 | '7' | 'triangle-left' | 107 | '107' | 'triangle-left-open' | 207 | '207' | 'triangle-left-dot' | 307 | '307' | 'triangle-left-open-dot' | 8 | '8' | 'triangle-right' | 108 | '108' | 'triangle-right-open' | 208 | '208' | 'triangle-right-dot' | 308 | '308' | 'triangle-right-open-dot' | 9 | '9' | 'triangle-ne' | 109 | '109' | 'triangle-ne-open' | 209 | '209' | 'triangle-ne-dot' | 309 | '309' | 'triangle-ne-open-dot' | 10 | '10' | 'triangle-se' | 110 | '110' | 'triangle-se-open' | 210 | '210' | 'triangle-se-dot' | 310 | '310' | 'triangle-se-open-dot' | 11 | '11' | 'triangle-sw' | 111 | '111' | 'triangle-sw-open' | 211 | '211' | 'triangle-sw-dot' | 311 | '311' | 'triangle-sw-open-dot' | 12 | '12' | 'triangle-nw' | 112 | '112' | 'triangle-nw-open' | 212 | '212' | 'triangle-nw-dot' | 312 | '312' | 'triangle-nw-open-dot' | 13 | '13' | 'pentagon' | 113 | '113' | 'pentagon-open' | 213 | '213' | 'pentagon-dot' | 313 | '313' | 'pentagon-open-dot' | 14 | '14' | 'hexagon' | 114 | '114' | 'hexagon-open' | 214 | '214' | 'hexagon-dot' | 314 | '314' | 'hexagon-open-dot' | 15 | '15' | 'hexagon2' | 115 | '115' | 'hexagon2-open' | 215 | '215' | 'hexagon2-dot' | 315 | '315' | 'hexagon2-open-dot' | 16 | '16' | 'octagon' | 116 | '116' | 'octagon-open' | 216 | '216' | 'octagon-dot' | 316 | '316' | 'octagon-open-dot' | 17 | '17' | 'star' | 117 | '117' | 'star-open' | 217 | '217' | 'star-dot' | 317 | '317' | 'star-open-dot' | 18 | '18' | 'hexagram' | 118 | '118' | 'hexagram-open' | 218 | '218' | 'hexagram-dot' | 318 | '318' | 'hexagram-open-dot' | 19 | '19' | 'star-triangle-up' | 119 | '119' | 'star-triangle-up-open' | 219 | '219' | 'star-triangle-up-dot' | 319 | '319' | 'star-triangle-up-open-dot' | 20 | '20' | 'star-triangle-down' | 120 | '120' | 'star-triangle-down-open' | 220 | '220' | 'star-triangle-down-dot' | 320 | '320' | 'star-triangle-down-open-dot' | 21 | '21' | 'star-square' | 121 | '121' | 'star-square-open' | 221 | '221' | 'star-square-dot' | 321 | '321' | 'star-square-open-dot' | 22 | '22' | 'star-diamond' | 122 | '122' | 'star-diamond-open' | 222 | '222' | 'star-diamond-dot' | 322 | '322' | 'star-diamond-open-dot' | 23 | '23' | 'diamond-tall' | 123 | '123' | 'diamond-tall-open' | 223 | '223' | 'diamond-tall-dot' | 323 | '323' | 'diamond-tall-open-dot' | 24 | '24' | 'diamond-wide' | 124 | '124' | 'diamond-wide-open' | 224 | '224' | 'diamond-wide-dot' | 324 | '324' | 'diamond-wide-open-dot' | 25 | '25' | 'hourglass' | 125 | '125' | 'hourglass-open' | 26 | '26' | 'bowtie' | 126 | '126' | 'bowtie-open' | 27 | '27' | 'circle-cross' | 127 | '127' | 'circle-cross-open' | 28 | '28' | 'circle-x' | 128 | '128' | 'circle-x-open' | 29 | '29' | 'square-cross' | 129 | '129' | 'square-cross-open' | 30 | '30' | 'square-x' | 130 | '130' | 'square-x-open' | 31 | '31' | 'diamond-cross' | 131 | '131' | 'diamond-cross-open' | 32 | '32' | 'diamond-x' | 132 | '132' | 'diamond-x-open' | 33 | '33' | 'cross-thin' | 133 | '133' | 'cross-thin-open' | 34 | '34' | 'x-thin' | 134 | '134' | 'x-thin-open' | 35 | '35' | 'asterisk' | 135 | '135' | 'asterisk-open' | 36 | '36' | 'hash' | 136 | '136' | 'hash-open' | 236 | '236' | 'hash-dot' | 336 | '336' | 'hash-open-dot' | 37 | '37' | 'y-up' | 137 | '137' | 'y-up-open' | 38 | '38' | 'y-down' | 138 | '138' | 'y-down-open' | 39 | '39' | 'y-left' | 139 | '139' | 'y-left-open' | 40 | '40' | 'y-right' | 140 | '140' | 'y-right-open' | 41 | '41' | 'line-ew' | 141 | '141' | 'line-ew-open' | 42 | '42' | 'line-ns' | 142 | '142' | 'line-ns-open' | 43 | '43' | 'line-ne' | 143 | '143' | 'line-ne-open' | 44 | '44' | 'line-nw' | 144 | '144' | 'line-nw-open' | 45 | '45' | 'arrow-up' | 145 | '145' | 'arrow-up-open' | 46 | '46' | 'arrow-down' | 146 | '146' | 'arrow-down-open' | 47 | '47' | 'arrow-left' | 147 | '147' | 'arrow-left-open' | 48 | '48' | 'arrow-right' | 148 | '148' | 'arrow-right-open' | 49 | '49' | 'arrow-bar-up' | 149 | '149' | 'arrow-bar-up-open' | 50 | '50' | 'arrow-bar-down' | 150 | '150' | 'arrow-bar-down-open' | 51 | '51' | 'arrow-bar-left' | 151 | '151' | 'arrow-bar-left-open' | 52 | '52' | 'arrow-bar-right' | 152 | '152' | 'arrow-bar-right-open' | 53 | '53' | 'arrow' | 153 | '153' | 'arrow-open' | 54 | '54' | 'arrow-wide' | 154 | '154' | 'arrow-wide-open')[]; + } + } // --------------------------------------------------------------------------- @@ -395,15 +747,27 @@ export interface BarData { alignmentgroup?: string; /** Sets where the bar base is drawn (in position axis units). In *stack* or *relative* barmode, traces that set *base* will be excluded and drawn in *overlay* mode instead. */ base?: any; - /** Determines whether the text nodes are clipped about the subplot axes. To show the text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*. */ + /** + * Determines whether the text nodes are clipped about the subplot axes. To show the text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*. + * @default true + */ cliponaxis?: boolean; - /** Constrain the size of text inside or outside a bar to be no larger than the bar itself. */ + /** + * Constrain the size of text inside or outside a bar to be no larger than the bar itself. + * @default 'both' + */ constraintext?: 'inside' | 'outside' | 'both' | 'none'; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ customdata?: Datum[] | TypedArray; - /** Sets the x coordinate step. See `x0` for more info. */ + /** + * Sets the x coordinate step. See `x0` for more info. + * @default 1 + */ dx?: number; - /** Sets the y coordinate step. See `y0` for more info. */ + /** + * Sets the y coordinate step. See `y0` for more info. + * @default 1 + */ dy?: number; error_x?: { /** Sets the data corresponding the length of each error bar. Values are plotted relative to the underlying data. */ @@ -415,74 +779,140 @@ export interface BarData { copy_ystyle?: boolean; /** Determines whether or not the error bars have the same length in both direction (top/bottom for vertical bars, left/right for horizontal bars. */ symmetric?: boolean; - /** Sets the thickness (in px) of the error bars. */ + /** + * Sets the thickness (in px) of the error bars. + * @default 2 + * Minimum: 0 + */ thickness?: number; + /** + * @default 0 + * Minimum: 0 + */ traceref?: number; + /** + * @default 0 + * Minimum: 0 + */ tracerefminus?: number; /** Determines the rule used to generate the error bars. If *constant*, the bar lengths are of a constant value. Set this constant in `value`. If *percent*, the bar lengths correspond to a percentage of underlying data. Set this percentage in `value`. If *sqrt*, the bar lengths correspond to the square of the underlying data. If *data*, the bar lengths are set with data set `array`. */ type?: 'percent' | 'constant' | 'sqrt' | 'data'; - /** Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars. */ + /** + * Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars. + * @default 10 + * Minimum: 0 + */ value?: number; - /** Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars in the bottom (left) direction for vertical (horizontal) bars */ + /** + * Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars in the bottom (left) direction for vertical (horizontal) bars + * @default 10 + * Minimum: 0 + */ valueminus?: number; /** Determines whether or not this set of error bars is visible. */ visible?: boolean; - /** Sets the width (in px) of the cross-bar at both ends of the error bars. */ + /** + * Sets the width (in px) of the cross-bar at both ends of the error bars. + * Minimum: 0 + */ width?: number; }; - error_y?: ErrorY; - /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + error_y?: _internal.ErrorY; + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; hoverlabel?: HoverLabel; /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `value` and `label`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ hovertemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ hovertemplatefallback?: any; /** Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ ids?: Datum[] | TypedArray; - /** Determines if texts are kept at center or start/end points in `textposition` *inside* mode. */ + /** + * Determines if texts are kept at center or start/end points in `textposition` *inside* mode. + * @default 'end' + */ insidetextanchor?: 'end' | 'middle' | 'start'; /** Sets the font used for `text` lying inside the bar. */ insidetextfont?: FontArray; - /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string; /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ legendgroup?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ legendrank?: number; - /** Sets the width (in px or fraction) of the legend for this trace. */ + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ legendwidth?: number; marker?: { - /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ autocolorscale?: boolean; - /** Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. */ + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. + * @default true + */ cauto?: boolean; - /** Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well. */ + /** + * Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well. + * Setting this also sets: cauto = false + */ cmax?: number; /** Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`. */ cmid?: number; - /** Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well. */ + /** + * Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well. + * Setting this also sets: cauto = false + */ cmin?: number; /** Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set. */ color?: Color | Color[]; /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ coloraxis?: string; colorbar?: ColorBar; - /** Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + /** + * Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ colorscale?: ColorScale; /** Sets the rounding of corners. May be an integer number of pixels, or a percentage of bar width (as a string ending in %). Defaults to `layout.barcornerradius`. In stack or relative barmode, the first trace to set cornerradius is used for the whole stack. */ cornerradius?: any; - line?: Line; - /** Sets the opacity of the bars. */ + line?: _internal.Line; + /** + * Sets the opacity of the bars. + * @default 1 + * Range: [0, 1] + */ opacity?: number | number[]; /** Sets the pattern within the marker. */ pattern?: Pattern; - /** Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. */ + /** + * Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. + * @default false + */ reversescale?: boolean; - /** Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array. */ + /** + * Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array. + * @default false + */ showscale?: boolean; }; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ @@ -493,7 +923,11 @@ export interface BarData { offset?: number | number[]; /** Set several traces linked to the same position axis or matching axes to the same offsetgroup where bars of the same position coordinate will line up. */ offsetgroup?: string; - /** Sets the opacity of the trace. */ + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ opacity?: number; /** Sets the orientation of the bars. With *v* (*h*), the value of the each bar spans along the vertical (horizontal). */ orientation?: 'v' | 'h'; @@ -503,27 +937,42 @@ export interface BarData { marker?: { /** Sets the marker color of selected points. */ color?: Color; - /** Sets the marker opacity of selected points. */ + /** + * Sets the marker opacity of selected points. + * Range: [0, 1] + */ opacity?: number; }; textfont?: Font; }; /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ selectedpoints?: any; - /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ showlegend?: boolean; - stream?: Stream; + stream?: _internal.Stream; /** Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ text?: string | string[]; - /** Sets the angle of the tick labels with respect to the bar. For example, a `tickangle` of -90 draws the tick labels vertically. With *auto* the texts may automatically be rotated to fit with the maximum size in bars. */ + /** + * Sets the angle of the tick labels with respect to the bar. For example, a `tickangle` of -90 draws the tick labels vertically. With *auto* the texts may automatically be rotated to fit with the maximum size in bars. + * @default 'auto' + */ textangle?: number | 'auto'; /** Sets the font used for `text`. */ textfont?: FontArray; - /** Specifies the location of the `text`. *inside* positions `text` inside, next to the bar end (rotated and scaled if needed). *outside* positions `text` outside, next to the bar end (scaled if needed), unless there is another bar stacked on this one, then the text gets pushed inside. *auto* tries to position `text` inside the bar, but if the bar is too small and no bar is stacked on this one the text is moved outside. If *none*, no text appears. */ + /** + * Specifies the location of the `text`. *inside* positions `text` inside, next to the bar end (rotated and scaled if needed). *outside* positions `text` outside, next to the bar end (scaled if needed), unless there is another bar stacked on this one, then the text gets pushed inside. *auto* tries to position `text` inside the bar, but if the bar is too small and no bar is stacked on this one the text is moved outside. If *none*, no text appears. + * @default 'auto' + */ textposition?: 'inside' | 'outside' | 'auto' | 'none' | ('inside' | 'outside' | 'auto' | 'none')[]; /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `value` and `label`. */ texttemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ texttemplatefallback?: any; type?: 'bar'; /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ @@ -534,48 +983,90 @@ export interface BarData { marker?: { /** Sets the marker color of unselected points, applied only when a selection exists. */ color?: Color; - /** Sets the marker opacity of unselected points, applied only when a selection exists. */ + /** + * Sets the marker opacity of unselected points, applied only when a selection exists. + * Range: [0, 1] + */ opacity?: number; }; textfont?: Font; }; - /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; - /** Sets the bar width (in position axis units). */ + /** + * Sets the bar width (in position axis units). + * Minimum: 0 + */ width?: number | number[]; /** Sets the x coordinates. */ x?: Datum[] | TypedArray; - /** Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step. */ + /** + * Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step. + * @default 0 + */ x0?: any; - /** Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. */ + /** + * Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. + * @default 'x' + */ xaxis?: string; - /** Sets the calendar system to use with `x` date data. */ + /** + * Sets the calendar system to use with `x` date data. + * @default 'gregorian' + */ xcalendar?: Calendar; /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; - /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ + /** + * Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. + * @default 0 + */ xperiod?: any; /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the x0 axis. When `x0period` is round number of weeks, the `x0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ xperiod0?: any; - /** Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis. */ + /** + * Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis. + * @default 'middle' + */ xperiodalignment?: 'start' | 'middle' | 'end'; /** Sets the y coordinates. */ y?: Datum[] | TypedArray; - /** Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step. */ + /** + * Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step. + * @default 0 + */ y0?: any; - /** Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. */ + /** + * Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. + * @default 'y' + */ yaxis?: string; - /** Sets the calendar system to use with `y` date data. */ + /** + * Sets the calendar system to use with `y` date data. + * @default 'gregorian' + */ ycalendar?: Calendar; /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ yhoverformat?: string; - /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the y axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ + /** + * Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the y axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. + * @default 0 + */ yperiod?: any; /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the y0 axis. When `y0period` is round number of weeks, the `y0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ yperiod0?: any; - /** Only relevant when the axis `type` is *date*. Sets the alignment of data points on the y axis. */ + /** + * Only relevant when the axis `type` is *date*. Sets the alignment of data points on the y axis. + * @default 'middle' + */ yperiodalignment?: 'start' | 'middle' | 'end'; - /** Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. */ + /** + * Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. + * @default 0 + */ zorder?: number; } @@ -584,56 +1075,99 @@ export interface BarpolarData { base?: any; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ customdata?: Datum[] | TypedArray; - /** Sets the r coordinate step. */ + /** + * Sets the r coordinate step. + * @default 1 + */ dr?: number; /** Sets the theta coordinate step. By default, the `dtheta` step equals the subplot's period divided by the length of the `r` coordinates. */ dtheta?: number; - /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ hoverinfo?: 'r' | 'theta' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('r' | 'theta' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; hoverlabel?: HoverLabel; /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ hovertemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ hovertemplatefallback?: any; /** Same as `text`. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ ids?: Datum[] | TypedArray; - /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string; /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ legendgroup?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ legendrank?: number; - /** Sets the width (in px or fraction) of the legend for this trace. */ + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ legendwidth?: number; marker?: { - /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ autocolorscale?: boolean; - /** Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. */ + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. + * @default true + */ cauto?: boolean; - /** Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well. */ + /** + * Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well. + * Setting this also sets: cauto = false + */ cmax?: number; /** Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`. */ cmid?: number; - /** Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well. */ + /** + * Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well. + * Setting this also sets: cauto = false + */ cmin?: number; /** Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set. */ color?: Color | Color[]; /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ coloraxis?: string; colorbar?: ColorBar; - /** Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + /** + * Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ colorscale?: ColorScale; - line?: Line; - /** Sets the opacity of the bars. */ + line?: _internal.Line; + /** + * Sets the opacity of the bars. + * @default 1 + * Range: [0, 1] + */ opacity?: number | number[]; /** Sets the pattern within the marker. */ pattern?: Pattern; - /** Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. */ + /** + * Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. + * @default false + */ reversescale?: boolean; - /** Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array. */ + /** + * Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array. + * @default false + */ showscale?: boolean; }; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ @@ -642,35 +1176,57 @@ export interface BarpolarData { name?: string; /** Shifts the angular position where the bar is drawn (in *thetatunit* units). */ offset?: number | number[]; - /** Sets the opacity of the trace. */ + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ opacity?: number; /** Sets the radial coordinates */ r?: Datum[] | TypedArray; - /** Alternate to `r`. Builds a linear space of r coordinates. Use with `dr` where `r0` is the starting coordinate and `dr` the step. */ + /** + * Alternate to `r`. Builds a linear space of r coordinates. Use with `dr` where `r0` is the starting coordinate and `dr` the step. + * @default 0 + */ r0?: any; selected?: { marker?: { /** Sets the marker color of selected points. */ color?: Color; - /** Sets the marker opacity of selected points. */ + /** + * Sets the marker opacity of selected points. + * Range: [0, 1] + */ opacity?: number; }; textfont?: Font; }; /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ selectedpoints?: any; - /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ showlegend?: boolean; - stream?: Stream; - /** Sets a reference between this trace's data coordinates and a polar subplot. If *polar* (the default value), the data refer to `layout.polar`. If *polar2*, the data refer to `layout.polar2`, and so on. */ + stream?: _internal.Stream; + /** + * Sets a reference between this trace's data coordinates and a polar subplot. If *polar* (the default value), the data refer to `layout.polar`. If *polar2*, the data refer to `layout.polar2`, and so on. + * @default 'polar' + */ subplot?: string; /** Sets hover text elements associated with each bar. If a single string, the same string appears over all bars. If an array of string, the items are mapped in order to the this trace's coordinates. */ text?: string | string[]; /** Sets the angular coordinates */ theta?: Datum[] | TypedArray; - /** Alternate to `theta`. Builds a linear space of theta coordinates. Use with `dtheta` where `theta0` is the starting coordinate and `dtheta` the step. */ + /** + * Alternate to `theta`. Builds a linear space of theta coordinates. Use with `dtheta` where `theta0` is the starting coordinate and `dtheta` the step. + * @default 0 + */ theta0?: any; - /** Sets the unit of input *theta* values. Has an effect only when on *linear* angular axes. */ + /** + * Sets the unit of input *theta* values. Has an effect only when on *linear* angular axes. + * @default 'degrees' + */ thetaunit?: 'radians' | 'degrees' | 'gradians'; type?: 'barpolar'; /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ @@ -681,14 +1237,23 @@ export interface BarpolarData { marker?: { /** Sets the marker color of unselected points, applied only when a selection exists. */ color?: Color; - /** Sets the marker opacity of unselected points, applied only when a selection exists. */ + /** + * Sets the marker opacity of unselected points, applied only when a selection exists. + * Range: [0, 1] + */ opacity?: number; }; textfont?: Font; }; - /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; - /** Sets the bar angular width (in *thetaunit* units). */ + /** + * Sets the bar angular width (in *thetaunit* units). + * Minimum: 0 + */ width?: number | number[]; } @@ -707,55 +1272,104 @@ export interface BoxData { dy?: number; /** Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. */ fillcolor?: Color; - /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; hoverlabel?: HoverLabel; - /** Do the hover effects highlight individual boxes or sample points or both? */ + /** + * Do the hover effects highlight individual boxes or sample points or both? + * @default 'boxes+points' + */ hoveron?: 'boxes' | 'points' | (string & {}); /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ hovertemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ hovertemplatefallback?: any; /** Same as `text`. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ ids?: Datum[] | TypedArray; - /** Sets the amount of jitter in the sample points drawn. If *0*, the sample points align along the distribution axis. If *1*, the sample points are drawn in a random jitter of width equal to the width of the box(es). */ + /** + * Sets the amount of jitter in the sample points drawn. If *0*, the sample points align along the distribution axis. If *1*, the sample points are drawn in a random jitter of width equal to the width of the box(es). + * Range: [0, 1] + */ jitter?: number; - /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string; /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ legendgroup?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ legendrank?: number; - /** Sets the width (in px or fraction) of the legend for this trace. */ + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ legendwidth?: number; - line?: ErrorY; + line?: _internal.ErrorY; /** Sets the lower fence values. There should be as many items as the number of boxes desired. This attribute has effect only under the q1/median/q3 signature. If `lowerfence` is not provided but a sample (in `y` or `x`) is set, we compute the lower as the last sample point below 1.5 times the IQR. */ lowerfence?: Datum[] | TypedArray; marker?: { - /** Sets the marker angle in respect to `angleref`. */ + /** + * Sets the marker angle in respect to `angleref`. + * @default 0 + */ angle?: number | 'auto'; /** Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set. */ color?: Color; line?: { - /** Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set. */ + /** + * Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set. + * @default '#444' + */ color?: Color; /** Sets the border line color of the outlier sample points. Defaults to marker.color */ outliercolor?: Color; - /** Sets the border line width (in px) of the outlier sample points. */ + /** + * Sets the border line width (in px) of the outlier sample points. + * @default 1 + * Minimum: 0 + */ outlierwidth?: number; - /** Sets the width (in px) of the lines bounding the marker points. */ + /** + * Sets the width (in px) of the lines bounding the marker points. + * @default 0 + * Minimum: 0 + */ width?: number; }; - /** Sets the marker opacity. */ + /** + * Sets the marker opacity. + * @default 1 + * Range: [0, 1] + */ opacity?: number; - /** Sets the color of the outlier sample points. */ + /** + * Sets the color of the outlier sample points. + * @default 'rgba(0, 0, 0, 0)' + */ outliercolor?: Color; - /** Sets the marker size (in px). */ + /** + * Sets the marker size (in px). + * @default 6 + * Minimum: 0 + */ size?: number; - /** Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name. */ + /** + * Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name. + * @default 'circle' + */ symbol?: MarkerSymbol; }; /** Sets the mean values. There should be as many items as the number of boxes desired. This attribute has effect only under the q1/median/q3 signature. If `mean` is not provided but a sample (in `y` or `x`) is set, we compute the mean for each box using the sample values. */ @@ -770,45 +1384,75 @@ export interface BoxData { notched?: boolean; /** Sets the notch span from the boxes' `median` values. There should be as many items as the number of boxes desired. This attribute has effect only under the q1/median/q3 signature. If `notchspan` is not provided but a sample (in `y` or `x`) is set, we compute it as 1.57 * IQR / sqrt(N), where N is the sample size. */ notchspan?: Datum[] | TypedArray; - /** Sets the width of the notches relative to the box width. For example, with 0, the notches are as wide as the box(es). */ + /** + * Sets the width of the notches relative to the box width. For example, with 0, the notches are as wide as the box(es). + * @default 0.25 + * Range: [0, 0.5] + */ notchwidth?: number; /** Set several traces linked to the same position axis or matching axes to the same offsetgroup where bars of the same position coordinate will line up. */ offsetgroup?: string; - /** Sets the opacity of the trace. */ + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ opacity?: number; /** Sets the orientation of the box(es). If *v* (*h*), the distribution is visualized along the vertical (horizontal). */ orientation?: 'v' | 'h'; - /** Sets the position of the sample points in relation to the box(es). If *0*, the sample points are places over the center of the box(es). Positive (negative) values correspond to positions to the right (left) for vertical boxes and above (below) for horizontal boxes */ + /** + * Sets the position of the sample points in relation to the box(es). If *0*, the sample points are places over the center of the box(es). Positive (negative) values correspond to positions to the right (left) for vertical boxes and above (below) for horizontal boxes + * Range: [-2, 2] + */ pointpos?: number; /** Sets the Quartile 1 values. There should be as many items as the number of boxes desired. */ q1?: Datum[] | TypedArray; /** Sets the Quartile 3 values. There should be as many items as the number of boxes desired. */ q3?: Datum[] | TypedArray; - /** Sets the method used to compute the sample's Q1 and Q3 quartiles. The *linear* method uses the 25th percentile for Q1 and 75th percentile for Q3 as computed using method #10 (listed on http://jse.amstat.org/v14n3/langford.html). The *exclusive* method uses the median to divide the ordered dataset into two halves if the sample is odd, it does not include the median in either half - Q1 is then the median of the lower half and Q3 the median of the upper half. The *inclusive* method also uses the median to divide the ordered dataset into two halves but if the sample is odd, it includes the median in both halves - Q1 is then the median of the lower half and Q3 the median of the upper half. */ + /** + * Sets the method used to compute the sample's Q1 and Q3 quartiles. The *linear* method uses the 25th percentile for Q1 and 75th percentile for Q3 as computed using method #10 (listed on http://jse.amstat.org/v14n3/langford.html). The *exclusive* method uses the median to divide the ordered dataset into two halves if the sample is odd, it does not include the median in either half - Q1 is then the median of the lower half and Q3 the median of the upper half. The *inclusive* method also uses the median to divide the ordered dataset into two halves but if the sample is odd, it includes the median in both halves - Q1 is then the median of the lower half and Q3 the median of the upper half. + * @default 'linear' + */ quartilemethod?: 'linear' | 'exclusive' | 'inclusive'; /** Sets the standard deviation values. There should be as many items as the number of boxes desired. This attribute has effect only under the q1/median/q3 signature. If `sd` is not provided but a sample (in `y` or `x`) is set, we compute the standard deviation for each box using the sample values. */ sd?: Datum[] | TypedArray; - /** Scales the box size when sizemode=sd Allowing boxes to be drawn across any stddev range For example 1-stddev, 3-stddev, 5-stddev */ + /** + * Scales the box size when sizemode=sd Allowing boxes to be drawn across any stddev range For example 1-stddev, 3-stddev, 5-stddev + * @default 1 + * Minimum: 0 + */ sdmultiple?: number; selected?: { marker?: { /** Sets the marker color of selected points. */ color?: Color; - /** Sets the marker opacity of selected points. */ + /** + * Sets the marker opacity of selected points. + * Range: [0, 1] + */ opacity?: number; - /** Sets the marker size of selected points. */ + /** + * Sets the marker size of selected points. + * Minimum: 0 + */ size?: number; }; }; /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ selectedpoints?: any; - /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ showlegend?: boolean; /** Determines whether or not whiskers are visible. Defaults to true for `sizemode` *quartiles*, false for *sd*. */ showwhiskers?: boolean; - /** Sets the upper and lower bound for the boxes quartiles means box is drawn between Q1 and Q3 SD means the box is drawn between Mean +- Standard Deviation Argument sdmultiple (default 1) to scale the box size So it could be drawn 1-stddev, 3-stddev etc */ + /** + * Sets the upper and lower bound for the boxes quartiles means box is drawn between Q1 and Q3 SD means the box is drawn between Mean +- Standard Deviation Argument sdmultiple (default 1) to scale the box size So it could be drawn 1-stddev, 3-stddev etc + * @default 'quartiles' + */ sizemode?: 'quartiles' | 'sd'; - stream?: Stream; + stream?: _internal.Stream; /** Sets the text elements associated with each sample value. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ text?: string | string[]; type?: 'box'; @@ -820,53 +1464,97 @@ export interface BoxData { marker?: { /** Sets the marker color of unselected points, applied only when a selection exists. */ color?: Color; - /** Sets the marker opacity of unselected points, applied only when a selection exists. */ + /** + * Sets the marker opacity of unselected points, applied only when a selection exists. + * Range: [0, 1] + */ opacity?: number; - /** Sets the marker size of unselected points, applied only when a selection exists. */ + /** + * Sets the marker size of unselected points, applied only when a selection exists. + * Minimum: 0 + */ size?: number; }; }; /** Sets the upper fence values. There should be as many items as the number of boxes desired. This attribute has effect only under the q1/median/q3 signature. If `upperfence` is not provided but a sample (in `y` or `x`) is set, we compute the upper as the last sample point above 1.5 times the IQR. */ upperfence?: Datum[] | TypedArray; - /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; - /** Sets the width of the whiskers relative to the box width. For example, with 1, the whiskers are as wide as the box(es). */ + /** + * Sets the width of the whiskers relative to the box width. For example, with 1, the whiskers are as wide as the box(es). + * @default 0.5 + * Range: [0, 1] + */ whiskerwidth?: number; - /** Sets the width of the box in data coordinate If *0* (default value) the width is automatically selected based on the positions of other box traces in the same subplot. */ + /** + * Sets the width of the box in data coordinate If *0* (default value) the width is automatically selected based on the positions of other box traces in the same subplot. + * @default 0 + * Minimum: 0 + */ width?: number; /** Sets the x sample data or coordinates. See overview for more info. */ x?: Datum[] | TypedArray; /** Sets the x coordinate for single-box traces or the starting coordinate for multi-box traces set using q1/median/q3. See overview for more info. */ x0?: any; - /** Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. */ + /** + * Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. + * @default 'x' + */ xaxis?: string; - /** Sets the calendar system to use with `x` date data. */ + /** + * Sets the calendar system to use with `x` date data. + * @default 'gregorian' + */ xcalendar?: Calendar; /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; - /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ + /** + * Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. + * @default 0 + */ xperiod?: any; /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the x0 axis. When `x0period` is round number of weeks, the `x0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ xperiod0?: any; - /** Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis. */ + /** + * Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis. + * @default 'middle' + */ xperiodalignment?: 'start' | 'middle' | 'end'; /** Sets the y sample data or coordinates. See overview for more info. */ y?: Datum[] | TypedArray; /** Sets the y coordinate for single-box traces or the starting coordinate for multi-box traces set using q1/median/q3. See overview for more info. */ y0?: any; - /** Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. */ + /** + * Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. + * @default 'y' + */ yaxis?: string; - /** Sets the calendar system to use with `y` date data. */ + /** + * Sets the calendar system to use with `y` date data. + * @default 'gregorian' + */ ycalendar?: Calendar; /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ yhoverformat?: string; - /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the y axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ + /** + * Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the y axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. + * @default 0 + */ yperiod?: any; /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the y0 axis. When `y0period` is round number of weeks, the `y0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ yperiod0?: any; - /** Only relevant when the axis `type` is *date*. Sets the alignment of data points on the y axis. */ + /** + * Only relevant when the axis `type` is *date*. Sets the alignment of data points on the y axis. + * @default 'middle' + */ yperiodalignment?: 'start' | 'middle' | 'end'; - /** Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. */ + /** + * Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. + * @default 0 + */ zorder?: number; } @@ -878,14 +1566,20 @@ export interface CandlestickData { decreasing?: { /** Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. */ fillcolor?: Color; - line?: ErrorY; + line?: _internal.ErrorY; }; /** Sets the high values. */ high?: Datum[] | TypedArray; - /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; hoverlabel?: { - /** Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines */ + /** + * Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines + * @default 'auto' + */ align?: 'left' | 'right' | 'auto' | ('left' | 'right' | 'auto')[]; /** Sets the background color of the hover labels for this trace */ bgcolor?: Color | Color[]; @@ -893,16 +1587,29 @@ export interface CandlestickData { bordercolor?: Color | Color[]; /** Sets the font used in hover labels. */ font?: FontArray; - /** Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis. */ + /** + * Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis. + * @default 15 + * Minimum: -1 + */ namelength?: number | number[]; - /** Sets whether or not to show the hover label arrow/triangle pointing to the data point. */ + /** + * Sets whether or not to show the hover label arrow/triangle pointing to the data point. + * @default true + */ showarrow?: boolean; - /** Show hover information (open, close, high, low) in separate labels, rather than a single unified label. Default: *false*. When set to *true*, `hovertemplate` is ignored. */ + /** + * Show hover information (open, close, high, low) in separate labels, rather than a single unified label. Default: *false*. When set to *true*, `hovertemplate` is ignored. + * @default false + */ split?: boolean; }; /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `open`, `high`, `low` and `close`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ hovertemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ hovertemplatefallback?: any; /** Same as `text`. */ hovertext?: string | string[]; @@ -911,19 +1618,32 @@ export interface CandlestickData { increasing?: { /** Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. */ fillcolor?: Color; - line?: ErrorY; + line?: _internal.ErrorY; }; - /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string; /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ legendgroup?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ legendrank?: number; - /** Sets the width (in px or fraction) of the legend for this trace. */ + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ legendwidth?: number; line?: { - /** Sets the width (in px) of line bounding the box(es). Note that this style setting can also be set per direction via `increasing.line.width` and `decreasing.line.width`. */ + /** + * Sets the width (in px) of line bounding the box(es). Note that this style setting can also be set per direction via `increasing.line.width` and `decreasing.line.width`. + * @default 2 + * Minimum: 0 + */ width?: number; }; /** Sets the low values. */ @@ -932,15 +1652,22 @@ export interface CandlestickData { meta?: any; /** Sets the trace name. The trace name appears as the legend item and on hover. */ name?: string; - /** Sets the opacity of the trace. */ + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ opacity?: number; /** Sets the open values. */ open?: Datum[] | TypedArray; /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ selectedpoints?: any; - /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ showlegend?: boolean; - stream?: Stream; + stream?: _internal.Stream; /** Sets hover text elements associated with each sample point. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to this trace's sample points. */ text?: string | string[]; type?: 'candlestick'; @@ -948,129 +1675,273 @@ export interface CandlestickData { uid?: string; /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ uirevision?: any; - /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; - /** Sets the width of the whiskers relative to the box width. For example, with 1, the whiskers are as wide as the box(es). */ + /** + * Sets the width of the whiskers relative to the box width. For example, with 1, the whiskers are as wide as the box(es). + * @default 0 + * Range: [0, 1] + */ whiskerwidth?: number; /** Sets the x coordinates. If absent, linear coordinate will be generated. */ x?: Datum[] | TypedArray; - /** Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. */ + /** + * Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. + * @default 'x' + */ xaxis?: string; - /** Sets the calendar system to use with `x` date data. */ + /** + * Sets the calendar system to use with `x` date data. + * @default 'gregorian' + */ xcalendar?: Calendar; /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; - /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ + /** + * Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. + * @default 0 + */ xperiod?: any; /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the x0 axis. When `x0period` is round number of weeks, the `x0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ xperiod0?: any; - /** Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis. */ + /** + * Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis. + * @default 'middle' + */ xperiodalignment?: 'start' | 'middle' | 'end'; - /** Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. */ + /** + * Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. + * @default 'y' + */ yaxis?: string; /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ yhoverformat?: string; - /** Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. */ + /** + * Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. + * @default 0 + */ zorder?: number; } export interface CarpetData { /** An array containing values of the first parameter value */ a?: Datum[] | TypedArray; - /** Alternate to `a`. Builds a linear space of a coordinates. Use with `da` where `a0` is the starting coordinate and `da` the step. */ + /** + * Alternate to `a`. Builds a linear space of a coordinates. Use with `da` where `a0` is the starting coordinate and `da` the step. + * @default 0 + */ a0?: number; aaxis?: { - /** The stride between grid lines along the axis */ + /** + * The stride between grid lines along the axis + * @default 1 + * Minimum: 1 + */ arraydtick?: number; - /** The starting index of grid lines along the axis */ + /** + * The starting index of grid lines along the axis + * @default 0 + * Minimum: 0 + */ arraytick0?: number; - /** Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided, then `autorange` is set to *false*. */ + /** + * Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided, then `autorange` is set to *false*. + * @default true + */ autorange?: true | false | 'reversed'; - /** Using *strict* a numeric string in trace data is not converted to a number. Using *convert types* a numeric string in trace data may be treated as a number during automatic axis `type` detection. Defaults to layout.autotypenumbers. */ + /** + * Using *strict* a numeric string in trace data is not converted to a number. Using *convert types* a numeric string in trace data may be treated as a number during automatic axis `type` detection. Defaults to layout.autotypenumbers. + * @default 'convert types' + */ autotypenumbers?: 'convert types' | 'strict'; /** Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`. */ categoryarray?: Datum[] | TypedArray; - /** Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. */ + /** + * Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. + * @default 'trace' + */ categoryorder?: 'trace' | 'category ascending' | 'category descending' | 'array'; + /** + * @default 'value' + */ cheatertype?: 'index' | 'value'; /** Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. */ color?: Color; - /** The stride between grid lines along the axis */ + /** + * The stride between grid lines along the axis + * @default 1 + * Minimum: 0 + */ dtick?: number; /** Determines whether or not a line is drawn at along the final value of this axis. If *true*, the end line is drawn on top of the grid lines. */ endline?: boolean; /** Sets the line color of the end line. */ endlinecolor?: Color; - /** Sets the width (in px) of the end line. */ + /** + * Sets the width (in px) of the end line. + * @default 1 + */ endlinewidth?: number; - /** Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. */ + /** + * Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. + * @default 'B' + */ exponentformat?: 'none' | 'e' | 'E' | 'power' | 'SI' | 'B' | 'SI extended'; - /** Determines whether or not this axis is zoom-able. If true, then zoom is disabled. */ + /** + * Determines whether or not this axis is zoom-able. If true, then zoom is disabled. + * @default false + */ fixedrange?: boolean; /** Sets the axis line color. */ gridcolor?: Color; - /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ griddash?: Dash; - /** Sets the width (in px) of the axis line. */ + /** + * Sets the width (in px) of the axis line. + * @default 1 + * Minimum: 0 + */ gridwidth?: number; - /** Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. */ + /** + * Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. + * @default false + */ labelalias?: any; - /** Extra padding between label and the axis */ + /** + * Extra padding between label and the axis + * @default 10 + */ labelpadding?: number; /** Sets a axis label prefix. */ labelprefix?: string; /** Sets a axis label suffix. */ labelsuffix?: string; - /** Sets the axis line color. */ + /** + * Sets the axis line color. + * @default '#444' + */ linecolor?: Color; - /** Sets the width (in px) of the axis line. */ + /** + * Sets the width (in px) of the axis line. + * @default 1 + * Minimum: 0 + */ linewidth?: number; - /** Hide SI prefix for 10^n if |n| is below this number */ + /** + * Hide SI prefix for 10^n if |n| is below this number + * @default 3 + * Minimum: 0 + */ minexponent?: number; - /** Sets the color of the grid lines. */ + /** + * Sets the color of the grid lines. + * @default '#eee' + */ minorgridcolor?: Color; - /** Sets the number of minor grid ticks per major grid tick */ + /** + * Sets the number of minor grid ticks per major grid tick + * @default 0 + * Minimum: 0 + */ minorgridcount?: number; - /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ minorgriddash?: Dash; - /** Sets the width (in px) of the grid lines. */ + /** + * Sets the width (in px) of the grid lines. + * @default 1 + * Minimum: 0 + */ minorgridwidth?: number; - /** Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. */ + /** + * Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. + * @default 0 + * Minimum: 0 + */ nticks?: number; /** Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears. */ range?: [any, any]; - /** If *normal*, the range is computed in relation to the extrema of the input data. If *tozero*, the range extends to 0, regardless of the input data If *nonnegative*, the range is non-negative, regardless of the input data. */ + /** + * If *normal*, the range is computed in relation to the extrema of the input data. If *tozero*, the range extends to 0, regardless of the input data If *nonnegative*, the range is non-negative, regardless of the input data. + * @default 'normal' + */ rangemode?: 'normal' | 'tozero' | 'nonnegative'; - /** If "true", even 4-digit integers are separated */ + /** + * If "true", even 4-digit integers are separated + * @default false + */ separatethousands?: boolean; - /** If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. */ + /** + * If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. + * @default 'all' + */ showexponent?: 'all' | 'first' | 'last' | 'none'; - /** Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. */ + /** + * Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. + * @default true + */ showgrid?: boolean; - /** Determines whether or not a line bounding this axis is drawn. */ + /** + * Determines whether or not a line bounding this axis is drawn. + * @default false + */ showline?: boolean; - /** Determines whether axis labels are drawn on the low side, the high side, both, or neither side of the axis. */ + /** + * Determines whether axis labels are drawn on the low side, the high side, both, or neither side of the axis. + * @default 'start' + */ showticklabels?: 'start' | 'end' | 'both' | 'none'; - /** If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. */ + /** + * If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. + * @default 'all' + */ showtickprefix?: 'all' | 'first' | 'last' | 'none'; - /** Same as `showtickprefix` but for tick suffixes. */ + /** + * Same as `showtickprefix` but for tick suffixes. + * @default 'all' + */ showticksuffix?: 'all' | 'first' | 'last' | 'none'; + /** + * @default 1 + * Range: [0, 1.3] + */ smoothing?: number; /** Determines whether or not a line is drawn at along the starting value of this axis. If *true*, the start line is drawn on top of the grid lines. */ startline?: boolean; /** Sets the line color of the start line. */ startlinecolor?: Color; - /** Sets the width (in px) of the start line. */ + /** + * Sets the width (in px) of the start line. + * @default 1 + */ startlinewidth?: number; - /** The starting index of grid lines along the axis */ + /** + * The starting index of grid lines along the axis + * @default 0 + * Minimum: 0 + */ tick0?: number; - /** Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. */ + /** + * Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. + * @default 'auto' + */ tickangle?: number | 'auto'; /** Sets the tick font. */ tickfont?: Font; /** Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ tickformat?: string; tickformatstops?: TickFormatStops[]; + /** + * @default 'array' + */ tickmode?: 'linear' | 'array'; /** Sets a tick label prefix. */ tickprefix?: string; @@ -1083,110 +1954,235 @@ export interface CarpetData { title?: { /** Sets this axis' title font. */ font?: Font; - /** An additional amount by which to offset the title from the tick labels, given in pixels. */ + /** + * An additional amount by which to offset the title from the tick labels, given in pixels. + * @default 10 + */ offset?: number; /** Sets the title of this axis. */ text?: string; }; - /** Sets the axis type. By default, plotly attempts to determined the axis type by looking into the data of the traces that referenced the axis in question. */ + /** + * Sets the axis type. By default, plotly attempts to determined the axis type by looking into the data of the traces that referenced the axis in question. + * @default '-' + */ type?: '-' | 'linear' | 'date' | 'category'; }; /** A two dimensional array of y coordinates at each carpet point. */ b?: Datum[] | TypedArray; - /** Alternate to `b`. Builds a linear space of a coordinates. Use with `db` where `b0` is the starting coordinate and `db` the step. */ + /** + * Alternate to `b`. Builds a linear space of a coordinates. Use with `db` where `b0` is the starting coordinate and `db` the step. + * @default 0 + */ b0?: number; baxis?: { - /** The stride between grid lines along the axis */ + /** + * The stride between grid lines along the axis + * @default 1 + * Minimum: 1 + */ arraydtick?: number; - /** The starting index of grid lines along the axis */ + /** + * The starting index of grid lines along the axis + * @default 0 + * Minimum: 0 + */ arraytick0?: number; - /** Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided, then `autorange` is set to *false*. */ + /** + * Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided, then `autorange` is set to *false*. + * @default true + */ autorange?: true | false | 'reversed'; - /** Using *strict* a numeric string in trace data is not converted to a number. Using *convert types* a numeric string in trace data may be treated as a number during automatic axis `type` detection. Defaults to layout.autotypenumbers. */ + /** + * Using *strict* a numeric string in trace data is not converted to a number. Using *convert types* a numeric string in trace data may be treated as a number during automatic axis `type` detection. Defaults to layout.autotypenumbers. + * @default 'convert types' + */ autotypenumbers?: 'convert types' | 'strict'; /** Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`. */ categoryarray?: Datum[] | TypedArray; - /** Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. */ + /** + * Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. + * @default 'trace' + */ categoryorder?: 'trace' | 'category ascending' | 'category descending' | 'array'; + /** + * @default 'value' + */ cheatertype?: 'index' | 'value'; /** Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. */ color?: Color; - /** The stride between grid lines along the axis */ + /** + * The stride between grid lines along the axis + * @default 1 + * Minimum: 0 + */ dtick?: number; /** Determines whether or not a line is drawn at along the final value of this axis. If *true*, the end line is drawn on top of the grid lines. */ endline?: boolean; /** Sets the line color of the end line. */ endlinecolor?: Color; - /** Sets the width (in px) of the end line. */ + /** + * Sets the width (in px) of the end line. + * @default 1 + */ endlinewidth?: number; - /** Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. */ + /** + * Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. + * @default 'B' + */ exponentformat?: 'none' | 'e' | 'E' | 'power' | 'SI' | 'B' | 'SI extended'; - /** Determines whether or not this axis is zoom-able. If true, then zoom is disabled. */ + /** + * Determines whether or not this axis is zoom-able. If true, then zoom is disabled. + * @default false + */ fixedrange?: boolean; /** Sets the axis line color. */ gridcolor?: Color; - /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ griddash?: Dash; - /** Sets the width (in px) of the axis line. */ + /** + * Sets the width (in px) of the axis line. + * @default 1 + * Minimum: 0 + */ gridwidth?: number; - /** Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. */ + /** + * Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. + * @default false + */ labelalias?: any; - /** Extra padding between label and the axis */ + /** + * Extra padding between label and the axis + * @default 10 + */ labelpadding?: number; /** Sets a axis label prefix. */ labelprefix?: string; /** Sets a axis label suffix. */ labelsuffix?: string; - /** Sets the axis line color. */ + /** + * Sets the axis line color. + * @default '#444' + */ linecolor?: Color; - /** Sets the width (in px) of the axis line. */ + /** + * Sets the width (in px) of the axis line. + * @default 1 + * Minimum: 0 + */ linewidth?: number; - /** Hide SI prefix for 10^n if |n| is below this number */ + /** + * Hide SI prefix for 10^n if |n| is below this number + * @default 3 + * Minimum: 0 + */ minexponent?: number; - /** Sets the color of the grid lines. */ + /** + * Sets the color of the grid lines. + * @default '#eee' + */ minorgridcolor?: Color; - /** Sets the number of minor grid ticks per major grid tick */ + /** + * Sets the number of minor grid ticks per major grid tick + * @default 0 + * Minimum: 0 + */ minorgridcount?: number; - /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ minorgriddash?: Dash; - /** Sets the width (in px) of the grid lines. */ + /** + * Sets the width (in px) of the grid lines. + * @default 1 + * Minimum: 0 + */ minorgridwidth?: number; - /** Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. */ + /** + * Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. + * @default 0 + * Minimum: 0 + */ nticks?: number; /** Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears. */ range?: [any, any]; - /** If *normal*, the range is computed in relation to the extrema of the input data. If *tozero*, the range extends to 0, regardless of the input data If *nonnegative*, the range is non-negative, regardless of the input data. */ + /** + * If *normal*, the range is computed in relation to the extrema of the input data. If *tozero*, the range extends to 0, regardless of the input data If *nonnegative*, the range is non-negative, regardless of the input data. + * @default 'normal' + */ rangemode?: 'normal' | 'tozero' | 'nonnegative'; - /** If "true", even 4-digit integers are separated */ + /** + * If "true", even 4-digit integers are separated + * @default false + */ separatethousands?: boolean; - /** If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. */ + /** + * If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. + * @default 'all' + */ showexponent?: 'all' | 'first' | 'last' | 'none'; - /** Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. */ + /** + * Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. + * @default true + */ showgrid?: boolean; - /** Determines whether or not a line bounding this axis is drawn. */ + /** + * Determines whether or not a line bounding this axis is drawn. + * @default false + */ showline?: boolean; - /** Determines whether axis labels are drawn on the low side, the high side, both, or neither side of the axis. */ + /** + * Determines whether axis labels are drawn on the low side, the high side, both, or neither side of the axis. + * @default 'start' + */ showticklabels?: 'start' | 'end' | 'both' | 'none'; - /** If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. */ + /** + * If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. + * @default 'all' + */ showtickprefix?: 'all' | 'first' | 'last' | 'none'; - /** Same as `showtickprefix` but for tick suffixes. */ + /** + * Same as `showtickprefix` but for tick suffixes. + * @default 'all' + */ showticksuffix?: 'all' | 'first' | 'last' | 'none'; + /** + * @default 1 + * Range: [0, 1.3] + */ smoothing?: number; /** Determines whether or not a line is drawn at along the starting value of this axis. If *true*, the start line is drawn on top of the grid lines. */ startline?: boolean; /** Sets the line color of the start line. */ startlinecolor?: Color; - /** Sets the width (in px) of the start line. */ + /** + * Sets the width (in px) of the start line. + * @default 1 + */ startlinewidth?: number; - /** The starting index of grid lines along the axis */ + /** + * The starting index of grid lines along the axis + * @default 0 + * Minimum: 0 + */ tick0?: number; - /** Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. */ + /** + * Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. + * @default 'auto' + */ tickangle?: number | 'auto'; /** Sets the tick font. */ tickfont?: Font; /** Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ tickformat?: string; tickformatstops?: TickFormatStops[]; + /** + * @default 'array' + */ tickmode?: 'linear' | 'array'; /** Sets a tick label prefix. */ tickprefix?: string; @@ -1199,127 +2195,216 @@ export interface CarpetData { title?: { /** Sets this axis' title font. */ font?: Font; - /** An additional amount by which to offset the title from the tick labels, given in pixels. */ + /** + * An additional amount by which to offset the title from the tick labels, given in pixels. + * @default 10 + */ offset?: number; /** Sets the title of this axis. */ text?: string; }; - /** Sets the axis type. By default, plotly attempts to determined the axis type by looking into the data of the traces that referenced the axis in question. */ + /** + * Sets the axis type. By default, plotly attempts to determined the axis type by looking into the data of the traces that referenced the axis in question. + * @default '-' + */ type?: '-' | 'linear' | 'date' | 'category'; }; /** An identifier for this carpet, so that `scattercarpet` and `contourcarpet` traces can specify a carpet plot on which they lie */ carpet?: string; - /** The shift applied to each successive row of data in creating a cheater plot. Only used if `x` is been omitted. */ + /** + * The shift applied to each successive row of data in creating a cheater plot. Only used if `x` is been omitted. + * @default 1 + */ cheaterslope?: number; - /** Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. */ + /** + * Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. + * @default '#444' + */ color?: Color; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ customdata?: Datum[] | TypedArray; - /** Sets the a coordinate step. See `a0` for more info. */ + /** + * Sets the a coordinate step. See `a0` for more info. + * @default 1 + */ da?: number; - /** Sets the b coordinate step. See `b0` for more info. */ + /** + * Sets the b coordinate step. See `b0` for more info. + * @default 1 + */ db?: number; /** The default font used for axis & tick labels on this carpet */ font?: Font; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ ids?: Datum[] | TypedArray; - /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ legendrank?: number; - /** Sets the width (in px or fraction) of the legend for this trace. */ + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ legendwidth?: number; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ meta?: any; /** Sets the trace name. The trace name appears as the legend item and on hover. */ name?: string; - /** Sets the opacity of the trace. */ + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ opacity?: number; - stream?: Stream; + stream?: _internal.Stream; type?: 'carpet'; /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ uid?: string; /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ uirevision?: any; - /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; /** A two dimensional array of x coordinates at each carpet point. If omitted, the plot is a cheater plot and the xaxis is hidden by default. */ x?: Datum[] | TypedArray; - /** Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. */ + /** + * Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. + * @default 'x' + */ xaxis?: string; /** A two dimensional array of y coordinates at each carpet point. */ y?: Datum[] | TypedArray; - /** Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. */ + /** + * Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. + * @default 'y' + */ yaxis?: string; - /** Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. */ + /** + * Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. + * @default 0 + */ zorder?: number; } export interface ChoroplethData { - /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ autocolorscale?: boolean; /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ coloraxis?: string; colorbar?: ColorBar; - /** Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + /** + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ colorscale?: ColorScale; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ customdata?: Datum[] | TypedArray; - /** Sets the key in GeoJSON features which is used as id to match the items included in the `locations` array. Only has an effect when `geojson` is set. Support nested property, for example *properties.name*. */ + /** + * Sets the key in GeoJSON features which is used as id to match the items included in the `locations` array. Only has an effect when `geojson` is set. Support nested property, for example *properties.name*. + * @default 'id' + */ featureidkey?: string; - /** Sets a reference between this trace's geospatial coordinates and a geographic map. If *geo* (the default value), the geospatial coordinates refer to `layout.geo`. If *geo2*, the geospatial coordinates refer to `layout.geo2`, and so on. */ + /** + * Sets a reference between this trace's geospatial coordinates and a geographic map. If *geo* (the default value), the geospatial coordinates refer to `layout.geo`. If *geo2*, the geospatial coordinates refer to `layout.geo2`, and so on. + * @default 'geo' + */ geo?: string; /** Sets optional GeoJSON data associated with this trace. If not given, the features on the base map are used. It can be set as a valid GeoJSON object or as a URL string. Note that we only accept GeoJSONs of type *FeatureCollection* or *Feature* with geometries of type *Polygon* or *MultiPolygon*. */ geojson?: any; - /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ hoverinfo?: 'location' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('location' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; hoverlabel?: HoverLabel; /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ hovertemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ hovertemplatefallback?: any; /** Same as `text`. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ ids?: Datum[] | TypedArray; - /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string; /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ legendgroup?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ legendrank?: number; - /** Sets the width (in px or fraction) of the legend for this trace. */ + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ legendwidth?: number; - /** The library used by the *country names* `locationmode` option is changing in an upcoming version. Country names in existing plots may not work in the new version. Determines the set of locations used to match entries in `locations` to regions on the map. Values *ISO-3*, *USA-states*, *country names* correspond to features on the base map and value *geojson-id* corresponds to features from a custom GeoJSON linked to the `geojson` attribute. *USA-states* accepts both two-letter abbreviations (e.g. *CA*) and full state names (e.g. *California*). */ + /** + * The library used by the *country names* `locationmode` option is changing in an upcoming version. Country names in existing plots may not work in the new version. Determines the set of locations used to match entries in `locations` to regions on the map. Values *ISO-3*, *USA-states*, *country names* correspond to features on the base map and value *geojson-id* corresponds to features from a custom GeoJSON linked to the `geojson` attribute. *USA-states* accepts both two-letter abbreviations (e.g. *CA*) and full state names (e.g. *California*). + * @default 'ISO-3' + */ locationmode?: 'ISO-3' | 'USA-states' | 'country names' | 'geojson-id'; /** Sets the coordinates via location IDs or names. See `locationmode` for more info. */ locations?: Datum[] | TypedArray; marker?: { - line?: Line; - /** Sets the opacity of the locations. */ + line?: _internal.Line; + /** + * Sets the opacity of the locations. + * @default 1 + * Range: [0, 1] + */ opacity?: number | number[]; }; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ meta?: any; /** Sets the trace name. The trace name appears as the legend item and on hover. */ name?: string; - /** Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color. */ + /** + * Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color. + * @default false + */ reversescale?: boolean; selected?: { marker?: { - /** Sets the marker opacity of selected points. */ + /** + * Sets the marker opacity of selected points. + * Range: [0, 1] + */ opacity?: number; }; }; /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ selectedpoints?: any; - /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default false + */ showlegend?: boolean; - /** Determines whether or not a colorbar is displayed for this trace. */ + /** + * Determines whether or not a colorbar is displayed for this trace. + * @default true + */ showscale?: boolean; - stream?: Stream; + stream?: _internal.Stream; /** Sets the text elements associated with each location. */ text?: string | string[]; type?: 'choropleth'; @@ -1329,87 +2414,145 @@ export interface ChoroplethData { uirevision?: any; unselected?: { marker?: { - /** Sets the marker opacity of unselected points, applied only when a selection exists. */ + /** + * Sets the marker opacity of unselected points, applied only when a selection exists. + * Range: [0, 1] + */ opacity?: number; }; }; - /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; /** Sets the color values. */ z?: Datum[] | TypedArray; - /** Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. */ + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. + * @default true + */ zauto?: boolean; - /** Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well. */ + /** + * Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well. + * Setting this also sets: zauto = false + */ zmax?: number; /** Sets the mid-point of the color domain by scaling `zmin` and/or `zmax` to be equidistant to this point. Value should have the same units as in `z`. Has no effect when `zauto` is `false`. */ zmid?: number; - /** Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well. */ + /** + * Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well. + * Setting this also sets: zauto = false + */ zmin?: number; } export interface ChoroplethmapData { - /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ autocolorscale?: boolean; /** Determines if the choropleth polygons will be inserted before the layer with the specified ID. By default, choroplethmap traces are placed above the water layers. If set to '', the layer will be inserted above every existing layer. */ below?: string; /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ coloraxis?: string; colorbar?: ColorBar; - /** Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + /** + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ colorscale?: ColorScale; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ customdata?: Datum[] | TypedArray; - /** Sets the key in GeoJSON features which is used as id to match the items included in the `locations` array. Support nested property, for example *properties.name*. */ + /** + * Sets the key in GeoJSON features which is used as id to match the items included in the `locations` array. Support nested property, for example *properties.name*. + * @default 'id' + */ featureidkey?: string; /** Sets the GeoJSON data associated with this trace. It can be set as a valid GeoJSON object or as a URL string. Note that we only accept GeoJSONs of type *FeatureCollection* or *Feature* with geometries of type *Polygon* or *MultiPolygon*. */ geojson?: any; - /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ hoverinfo?: 'location' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('location' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; hoverlabel?: HoverLabel; /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variable `properties` Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ hovertemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ hovertemplatefallback?: any; /** Same as `text`. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ ids?: Datum[] | TypedArray; - /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string; /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ legendgroup?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ legendrank?: number; - /** Sets the width (in px or fraction) of the legend for this trace. */ + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ legendwidth?: number; /** Sets which features found in *geojson* to plot using their feature `id` field. */ locations?: Datum[] | TypedArray; marker?: { - line?: Line; - /** Sets the opacity of the locations. */ + line?: _internal.Line; + /** + * Sets the opacity of the locations. + * @default 1 + * Range: [0, 1] + */ opacity?: number | number[]; }; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ meta?: any; /** Sets the trace name. The trace name appears as the legend item and on hover. */ name?: string; - /** Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color. */ + /** + * Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color. + * @default false + */ reversescale?: boolean; selected?: { marker?: { - /** Sets the marker opacity of selected points. */ + /** + * Sets the marker opacity of selected points. + * Range: [0, 1] + */ opacity?: number; }; }; /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ selectedpoints?: any; - /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default false + */ showlegend?: boolean; - /** Determines whether or not a colorbar is displayed for this trace. */ + /** + * Determines whether or not a colorbar is displayed for this trace. + * @default true + */ showscale?: boolean; - stream?: Stream; - /** Sets a reference between this trace's data coordinates and a map subplot. If *map* (the default value), the data refer to `layout.map`. If *map2*, the data refer to `layout.map2`, and so on. */ + stream?: _internal.Stream; + /** + * Sets a reference between this trace's data coordinates and a map subplot. If *map* (the default value), the data refer to `layout.map`. If *map2*, the data refer to `layout.map2`, and so on. + * @default 'map' + */ subplot?: string; /** Sets the text elements associated with each location. */ text?: string | string[]; @@ -1420,87 +2563,145 @@ export interface ChoroplethmapData { uirevision?: any; unselected?: { marker?: { - /** Sets the marker opacity of unselected points, applied only when a selection exists. */ + /** + * Sets the marker opacity of unselected points, applied only when a selection exists. + * Range: [0, 1] + */ opacity?: number; }; }; - /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; /** Sets the color values. */ z?: Datum[] | TypedArray; - /** Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. */ + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. + * @default true + */ zauto?: boolean; - /** Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well. */ + /** + * Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well. + * Setting this also sets: zauto = false + */ zmax?: number; /** Sets the mid-point of the color domain by scaling `zmin` and/or `zmax` to be equidistant to this point. Value should have the same units as in `z`. Has no effect when `zauto` is `false`. */ zmid?: number; - /** Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well. */ + /** + * Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well. + * Setting this also sets: zauto = false + */ zmin?: number; } export interface ChoroplethmapboxData { - /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ autocolorscale?: boolean; /** Determines if the choropleth polygons will be inserted before the layer with the specified ID. By default, choroplethmapbox traces are placed above the water layers. If set to '', the layer will be inserted above every existing layer. */ below?: string; /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ coloraxis?: string; colorbar?: ColorBar; - /** Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + /** + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ colorscale?: ColorScale; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ customdata?: Datum[] | TypedArray; - /** Sets the key in GeoJSON features which is used as id to match the items included in the `locations` array. Support nested property, for example *properties.name*. */ + /** + * Sets the key in GeoJSON features which is used as id to match the items included in the `locations` array. Support nested property, for example *properties.name*. + * @default 'id' + */ featureidkey?: string; /** Sets the GeoJSON data associated with this trace. It can be set as a valid GeoJSON object or as a URL string. Note that we only accept GeoJSONs of type *FeatureCollection* or *Feature* with geometries of type *Polygon* or *MultiPolygon*. */ geojson?: any; - /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ hoverinfo?: 'location' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('location' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; hoverlabel?: HoverLabel; /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variable `properties` Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ hovertemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ hovertemplatefallback?: any; /** Same as `text`. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ ids?: Datum[] | TypedArray; - /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string; /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ legendgroup?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ legendrank?: number; - /** Sets the width (in px or fraction) of the legend for this trace. */ + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ legendwidth?: number; /** Sets which features found in *geojson* to plot using their feature `id` field. */ locations?: Datum[] | TypedArray; marker?: { - line?: Line; - /** Sets the opacity of the locations. */ + line?: _internal.Line; + /** + * Sets the opacity of the locations. + * @default 1 + * Range: [0, 1] + */ opacity?: number | number[]; }; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ meta?: any; /** Sets the trace name. The trace name appears as the legend item and on hover. */ name?: string; - /** Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color. */ + /** + * Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color. + * @default false + */ reversescale?: boolean; selected?: { marker?: { - /** Sets the marker opacity of selected points. */ + /** + * Sets the marker opacity of selected points. + * Range: [0, 1] + */ opacity?: number; }; }; /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ selectedpoints?: any; - /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default false + */ showlegend?: boolean; - /** Determines whether or not a colorbar is displayed for this trace. */ + /** + * Determines whether or not a colorbar is displayed for this trace. + * @default true + */ showscale?: boolean; - stream?: Stream; - /** mapbox subplots and traces are deprecated! Please consider switching to `map` subplots and traces. Learn more at: https://plotly.com/python/maplibre-migration/ as well as https://plotly.com/javascript/maplibre-migration/ Sets a reference between this trace's data coordinates and a mapbox subplot. If *mapbox* (the default value), the data refer to `layout.mapbox`. If *mapbox2*, the data refer to `layout.mapbox2`, and so on. */ + stream?: _internal.Stream; + /** + * mapbox subplots and traces are deprecated! Please consider switching to `map` subplots and traces. Learn more at: https://plotly.com/python/maplibre-migration/ as well as https://plotly.com/javascript/maplibre-migration/ Sets a reference between this trace's data coordinates and a mapbox subplot. If *mapbox* (the default value), the data refer to `layout.mapbox`. If *mapbox2*, the data refer to `layout.mapbox2`, and so on. + * @default 'mapbox' + */ subplot?: string; /** Sets the text elements associated with each location. */ text?: string | string[]; @@ -1511,92 +2712,174 @@ export interface ChoroplethmapboxData { uirevision?: any; unselected?: { marker?: { - /** Sets the marker opacity of unselected points, applied only when a selection exists. */ + /** + * Sets the marker opacity of unselected points, applied only when a selection exists. + * Range: [0, 1] + */ opacity?: number; }; }; - /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; /** Sets the color values. */ z?: Datum[] | TypedArray; - /** Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. */ + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. + * @default true + */ zauto?: boolean; - /** Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well. */ + /** + * Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well. + * Setting this also sets: zauto = false + */ zmax?: number; /** Sets the mid-point of the color domain by scaling `zmin` and/or `zmax` to be equidistant to this point. Value should have the same units as in `z`. Has no effect when `zauto` is `false`. */ zmid?: number; - /** Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well. */ + /** + * Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well. + * Setting this also sets: zauto = false + */ zmin?: number; } export interface ConeData { - /** Sets the cones' anchor with respect to their x/y/z positions. Note that *cm* denote the cone's center of mass which corresponds to 1/4 from the tail to tip. */ + /** + * Sets the cones' anchor with respect to their x/y/z positions. Note that *cm* denote the cone's center of mass which corresponds to 1/4 from the tail to tip. + * @default 'cm' + */ anchor?: 'tip' | 'tail' | 'cm' | 'center'; - /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ autocolorscale?: boolean; - /** Determines whether or not the color domain is computed with respect to the input data (here u/v/w norm) or the bounds set in `cmin` and `cmax` Defaults to `false` when `cmin` and `cmax` are set by the user. */ + /** + * Determines whether or not the color domain is computed with respect to the input data (here u/v/w norm) or the bounds set in `cmin` and `cmax` Defaults to `false` when `cmin` and `cmax` are set by the user. + * @default true + */ cauto?: boolean; - /** Sets the upper bound of the color domain. Value should have the same units as u/v/w norm and if set, `cmin` must be set as well. */ + /** + * Sets the upper bound of the color domain. Value should have the same units as u/v/w norm and if set, `cmin` must be set as well. + * Setting this also sets: cauto = false + */ cmax?: number; /** Sets the mid-point of the color domain by scaling `cmin` and/or `cmax` to be equidistant to this point. Value should have the same units as u/v/w norm. Has no effect when `cauto` is `false`. */ cmid?: number; - /** Sets the lower bound of the color domain. Value should have the same units as u/v/w norm and if set, `cmax` must be set as well. */ + /** + * Sets the lower bound of the color domain. Value should have the same units as u/v/w norm and if set, `cmax` must be set as well. + * Setting this also sets: cauto = false + */ cmin?: number; /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ coloraxis?: string; colorbar?: ColorBar; - /** Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + /** + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ colorscale?: ColorScale; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ customdata?: Datum[] | TypedArray; - /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'x+y+z+norm+text+name' + */ hoverinfo?: 'x' | 'y' | 'z' | 'u' | 'v' | 'w' | 'norm' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'u' | 'v' | 'w' | 'norm' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; hoverlabel?: HoverLabel; /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variable `norm` Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ hovertemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ hovertemplatefallback?: any; /** Same as `text`. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ ids?: Datum[] | TypedArray; - /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string; /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ legendgroup?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ legendrank?: number; - /** Sets the width (in px or fraction) of the legend for this trace. */ + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ legendwidth?: number; - lighting?: Lighting; + lighting?: _internal.Lighting; lightposition?: { - /** Numeric vector, representing the X coordinate for each vertex. */ + /** + * Numeric vector, representing the X coordinate for each vertex. + * @default 100000 + * Range: [-100000, 100000] + */ x?: number; - /** Numeric vector, representing the Y coordinate for each vertex. */ + /** + * Numeric vector, representing the Y coordinate for each vertex. + * @default 100000 + * Range: [-100000, 100000] + */ y?: number; - /** Numeric vector, representing the Z coordinate for each vertex. */ + /** + * Numeric vector, representing the Z coordinate for each vertex. + * @default 0 + * Range: [-100000, 100000] + */ z?: number; }; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ meta?: any; /** Sets the trace name. The trace name appears as the legend item and on hover. */ name?: string; - /** Sets the opacity of the surface. Please note that in the case of using high `opacity` values for example a value greater than or equal to 0.5 on two surfaces (and 0.25 with four surfaces), an overlay of multiple transparent surfaces may not perfectly be sorted in depth by the webgl API. This behavior may be improved in the near future and is subject to change. */ + /** + * Sets the opacity of the surface. Please note that in the case of using high `opacity` values for example a value greater than or equal to 0.5 on two surfaces (and 0.25 with four surfaces), an overlay of multiple transparent surfaces may not perfectly be sorted in depth by the webgl API. This behavior may be improved in the near future and is subject to change. + * @default 1 + * Range: [0, 1] + */ opacity?: number; - /** Reverses the color mapping if true. If true, `cmin` will correspond to the last color in the array and `cmax` will correspond to the first color. */ + /** + * Reverses the color mapping if true. If true, `cmin` will correspond to the last color in the array and `cmax` will correspond to the first color. + * @default false + */ reversescale?: boolean; - /** Sets a reference between this trace's 3D coordinate system and a 3D scene. If *scene* (the default value), the (x,y,z) coordinates refer to `layout.scene`. If *scene2*, the (x,y,z) coordinates refer to `layout.scene2`, and so on. */ + /** + * Sets a reference between this trace's 3D coordinate system and a 3D scene. If *scene* (the default value), the (x,y,z) coordinates refer to `layout.scene`. If *scene2*, the (x,y,z) coordinates refer to `layout.scene2`, and so on. + * @default 'scene' + */ scene?: string; - /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default false + */ showlegend?: boolean; - /** Determines whether or not a colorbar is displayed for this trace. */ + /** + * Determines whether or not a colorbar is displayed for this trace. + * @default true + */ showscale?: boolean; - /** Determines whether `sizeref` is set as a *scaled* (i.e unitless) scalar (normalized by the max u/v/w norm in the vector field) or as *absolute* value (in the same units as the vector field). To display sizes in actual vector length use *raw*. */ + /** + * Determines whether `sizeref` is set as a *scaled* (i.e unitless) scalar (normalized by the max u/v/w norm in the vector field) or as *absolute* value (in the same units as the vector field). To display sizes in actual vector length use *raw*. + * @default 'scaled' + */ sizemode?: 'scaled' | 'absolute' | 'raw'; - /** Adjusts the cone size scaling. The size of the cones is determined by their u/v/w norm multiplied a factor and `sizeref`. This factor (computed internally) corresponds to the minimum "time" to travel across two successive x/y/z positions at the average velocity of those two successive positions. All cones in a given trace use the same factor. With `sizemode` set to *raw*, its default value is *1*. With `sizemode` set to *scaled*, `sizeref` is unitless, its default value is *0.5*. With `sizemode` set to *absolute*, `sizeref` has the same units as the u/v/w vector field, its the default value is half the sample's maximum vector norm. */ + /** + * Adjusts the cone size scaling. The size of the cones is determined by their u/v/w norm multiplied a factor and `sizeref`. This factor (computed internally) corresponds to the minimum "time" to travel across two successive x/y/z positions at the average velocity of those two successive positions. All cones in a given trace use the same factor. With `sizemode` set to *raw*, its default value is *1*. With `sizemode` set to *scaled*, `sizeref` is unitless, its default value is *0.5*. With `sizemode` set to *absolute*, `sizeref` has the same units as the u/v/w vector field, its the default value is half the sample's maximum vector norm. + * Minimum: 0 + */ sizeref?: number; - stream?: Stream; + stream?: _internal.Stream; /** Sets the text elements associated with the cones. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ text?: string | string[]; type?: 'cone'; @@ -1612,7 +2895,10 @@ export interface ConeData { v?: Datum[] | TypedArray; /** Sets the hover text formatting rule for `v` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ vhoverformat?: string; - /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; /** Sets the z components of the vector field. */ w?: Datum[] | TypedArray; @@ -1633,179 +2919,355 @@ export interface ConeData { } export interface ContourData { - /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default false + */ autocolorscale?: boolean; - /** Determines whether or not the contour level attributes are picked by an algorithm. If *true*, the number of contour levels can be set in `ncontours`. If *false*, set the contour level attributes in `contours`. */ + /** + * Determines whether or not the contour level attributes are picked by an algorithm. If *true*, the number of contour levels can be set in `ncontours`. If *false*, set the contour level attributes in `contours`. + * @default true + */ autocontour?: boolean; /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ coloraxis?: string; colorbar?: ColorBar; - /** Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + /** + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ colorscale?: ColorScale; /** Determines whether or not gaps (i.e. {nan} or missing values) in the `z` data are filled in. It is defaulted to true if `z` is a one dimensional array otherwise it is defaulted to false. */ connectgaps?: boolean; + /** + * Setting this also sets: autocontour = false, role = "object" + */ contours?: { - /** Determines the coloring method showing the contour values. If *fill*, coloring is done evenly between each contour level If *heatmap*, a heatmap gradient coloring is applied between each contour level. If *lines*, coloring is done on the contour lines. If *none*, no coloring is applied on this trace. */ + /** + * Determines the coloring method showing the contour values. If *fill*, coloring is done evenly between each contour level If *heatmap*, a heatmap gradient coloring is applied between each contour level. If *lines*, coloring is done on the contour lines. If *none*, no coloring is applied on this trace. + * @default 'fill' + */ coloring?: 'fill' | 'heatmap' | 'lines' | 'none'; - /** Sets the end contour level value. Must be more than `contours.start` */ + /** + * Sets the end contour level value. Must be more than `contours.start` + * Setting this also sets: ^autocontour = false + */ end?: number; /** Sets the font used for labeling the contour levels. The default color comes from the lines, if shown. The default family and size come from `layout.font`. */ labelfont?: Font; /** Sets the contour label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. */ labelformat?: string; - /** Sets the constraint operation. *=* keeps regions equal to `value` *<* and *<=* keep regions less than `value` *>* and *>=* keep regions greater than `value` *[]*, *()*, *[)*, and *(]* keep regions inside `value[0]` to `value[1]` *][*, *)(*, *](*, *)[* keep regions outside `value[0]` to value[1]` Open vs. closed intervals make no difference to constraint display, but all versions are allowed for consistency with filter transforms. */ + /** + * Sets the constraint operation. *=* keeps regions equal to `value` *<* and *<=* keep regions less than `value` *>* and *>=* keep regions greater than `value` *[]*, *()*, *[)*, and *(]* keep regions inside `value[0]` to `value[1]` *][*, *)(*, *](*, *)[* keep regions outside `value[0]` to value[1]` Open vs. closed intervals make no difference to constraint display, but all versions are allowed for consistency with filter transforms. + * @default '=' + */ operation?: '=' | '<' | '>=' | '>' | '<=' | '[]' | '()' | '[)' | '(]' | '][' | ')(' | '](' | ')['; - /** Determines whether to label the contour lines with their values. */ + /** + * Determines whether to label the contour lines with their values. + * @default false + */ showlabels?: boolean; - /** Determines whether or not the contour lines are drawn. Has an effect only if `contours.coloring` is set to *fill*. */ + /** + * Determines whether or not the contour lines are drawn. Has an effect only if `contours.coloring` is set to *fill*. + * @default true + */ showlines?: boolean; - /** Sets the step between each contour level. Must be positive. */ + /** + * Sets the step between each contour level. Must be positive. + * Minimum: 0 + * Setting this also sets: ^autocontour = false + */ size?: number; - /** Sets the starting contour level value. Must be less than `contours.end` */ + /** + * Sets the starting contour level value. Must be less than `contours.end` + * Setting this also sets: ^autocontour = false + */ start?: number; - /** If `levels`, the data is represented as a contour plot with multiple levels displayed. If `constraint`, the data is represented as constraints with the invalid region shaded as specified by the `operation` and `value` parameters. */ + /** + * If `levels`, the data is represented as a contour plot with multiple levels displayed. If `constraint`, the data is represented as constraints with the invalid region shaded as specified by the `operation` and `value` parameters. + * @default 'levels' + */ type?: 'levels' | 'constraint'; - /** Sets the value or values of the constraint boundary. When `operation` is set to one of the comparison values (`=,<,>=,>,<=`) *value* is expected to be a number. When `operation` is set to one of the interval values (`[],(),[),(],][,)(,](,)[`) *value* is expected to be an array of two numbers where the first is the lower bound and the second is the upper bound. */ + /** + * Sets the value or values of the constraint boundary. When `operation` is set to one of the comparison values (`=,<,>=,>,<=`) *value* is expected to be a number. When `operation` is set to one of the interval values (`[],(),[),(],][,)(,](,)[`) *value* is expected to be an array of two numbers where the first is the lower bound and the second is the upper bound. + * @default 0 + */ value?: any; }; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ customdata?: Datum[] | TypedArray; - /** Sets the x coordinate step. See `x0` for more info. */ + /** + * Sets the x coordinate step. See `x0` for more info. + * @default 1 + * Setting this also sets: xtype = "scaled" + */ dx?: number; - /** Sets the y coordinate step. See `y0` for more info. */ + /** + * Sets the y coordinate step. See `y0` for more info. + * @default 1 + * Setting this also sets: ytype = "scaled" + */ dy?: number; /** Sets the fill color if `contours.type` is *constraint*. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. */ fillcolor?: Color; - /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; hoverlabel?: HoverLabel; - /** Determines whether or not gaps (i.e. {nan} or missing values) in the `z` data have hover labels associated with them. */ + /** + * Determines whether or not gaps (i.e. {nan} or missing values) in the `z` data have hover labels associated with them. + * @default true + */ hoverongaps?: boolean; /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ hovertemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ hovertemplatefallback?: any; /** Same as `text`. */ hovertext?: Datum[] | TypedArray; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ ids?: Datum[] | TypedArray; - /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string; /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ legendgroup?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ legendrank?: number; - /** Sets the width (in px or fraction) of the legend for this trace. */ + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ legendwidth?: number; line?: { /** Sets the color of the contour level. Has no effect if `contours.coloring` is set to *lines*. */ color?: Color; - /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ dash?: Dash; - /** Sets the amount of smoothing for the contour lines, where *0* corresponds to no smoothing. */ + /** + * Sets the amount of smoothing for the contour lines, where *0* corresponds to no smoothing. + * @default 1 + * Range: [0, 1.3] + */ smoothing?: number; - /** Sets the contour line width in (in px) Defaults to *0.5* when `contours.type` is *levels*. Defaults to *2* when `contour.type` is *constraint*. */ + /** + * Sets the contour line width in (in px) Defaults to *0.5* when `contours.type` is *levels*. Defaults to *2* when `contour.type` is *constraint*. + * Minimum: 0 + */ width?: number; }; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ meta?: any; /** Sets the trace name. The trace name appears as the legend item and on hover. */ name?: string; - /** Sets the maximum number of contour levels. The actual number of contours will be chosen automatically to be less than or equal to the value of `ncontours`. Has an effect only if `autocontour` is *true* or if `contours.size` is missing. */ + /** + * Sets the maximum number of contour levels. The actual number of contours will be chosen automatically to be less than or equal to the value of `ncontours`. Has an effect only if `autocontour` is *true* or if `contours.size` is missing. + * @default 15 + * Minimum: 1 + */ ncontours?: number; - /** Sets the opacity of the trace. */ + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ opacity?: number; - /** Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color. */ + /** + * Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color. + * @default false + */ reversescale?: boolean; - /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ showlegend?: boolean; - /** Determines whether or not a colorbar is displayed for this trace. */ + /** + * Determines whether or not a colorbar is displayed for this trace. + * @default true + */ showscale?: boolean; - stream?: Stream; + stream?: _internal.Stream; /** Sets the text elements associated with each z value. */ text?: Datum[] | TypedArray; /** For this trace it only has an effect if `coloring` is set to *heatmap*. Sets the text font. */ textfont?: Font; /** For this trace it only has an effect if `coloring` is set to *heatmap*. Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `x`, `y`, `z` and `text`. */ texttemplate?: string; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ texttemplatefallback?: any; - /** Transposes the z data. */ + /** + * Transposes the z data. + * @default false + */ transpose?: boolean; type?: 'contour'; /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ uid?: string; /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ uirevision?: any; - /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; - /** Sets the x coordinates. */ + /** + * Sets the x coordinates. + * Setting this also sets: xtype = "array" + */ x?: Datum[] | TypedArray; - /** Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step. */ + /** + * Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step. + * @default 0 + * Setting this also sets: xtype = "scaled" + */ x0?: any; - /** Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. */ + /** + * Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. + * @default 'x' + */ xaxis?: string; - /** Sets the calendar system to use with `x` date data. */ + /** + * Sets the calendar system to use with `x` date data. + * @default 'gregorian' + */ xcalendar?: Calendar; /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; - /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ + /** + * Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. + * @default 0 + * Setting this also sets: xtype = "scaled" + */ xperiod?: any; /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the x0 axis. When `x0period` is round number of weeks, the `x0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ xperiod0?: any; - /** Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis. */ + /** + * Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis. + * @default 'middle' + * Setting this also sets: xtype = "scaled" + */ xperiodalignment?: 'start' | 'middle' | 'end'; /** If *array*, the heatmap's x coordinates are given by *x* (the default behavior when `x` is provided). If *scaled*, the heatmap's x coordinates are given by *x0* and *dx* (the default behavior when `x` is not provided). */ xtype?: 'array' | 'scaled'; - /** Sets the y coordinates. */ + /** + * Sets the y coordinates. + * Setting this also sets: ytype = "array" + */ y?: Datum[] | TypedArray; - /** Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step. */ + /** + * Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step. + * @default 0 + * Setting this also sets: ytype = "scaled" + */ y0?: any; - /** Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. */ + /** + * Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. + * @default 'y' + */ yaxis?: string; - /** Sets the calendar system to use with `y` date data. */ + /** + * Sets the calendar system to use with `y` date data. + * @default 'gregorian' + */ ycalendar?: Calendar; /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ yhoverformat?: string; - /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the y axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ + /** + * Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the y axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. + * @default 0 + * Setting this also sets: ytype = "scaled" + */ yperiod?: any; /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the y0 axis. When `y0period` is round number of weeks, the `y0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ yperiod0?: any; - /** Only relevant when the axis `type` is *date*. Sets the alignment of data points on the y axis. */ + /** + * Only relevant when the axis `type` is *date*. Sets the alignment of data points on the y axis. + * @default 'middle' + * Setting this also sets: ytype = "scaled" + */ yperiodalignment?: 'start' | 'middle' | 'end'; /** If *array*, the heatmap's y coordinates are given by *y* (the default behavior when `y` is provided) If *scaled*, the heatmap's y coordinates are given by *y0* and *dy* (the default behavior when `y` is not provided) */ ytype?: 'array' | 'scaled'; /** Sets the z data. */ z?: Datum[] | TypedArray; - /** Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. */ + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. + * @default true + */ zauto?: boolean; /** Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ zhoverformat?: string; - /** Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well. */ + /** + * Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well. + * Setting this also sets: zauto = false + */ zmax?: number; /** Sets the mid-point of the color domain by scaling `zmin` and/or `zmax` to be equidistant to this point. Value should have the same units as in `z`. Has no effect when `zauto` is `false`. */ zmid?: number; - /** Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well. */ + /** + * Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well. + * Setting this also sets: zauto = false + */ zmin?: number; - /** Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. */ + /** + * Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. + * @default 0 + */ zorder?: number; } export interface ContourcarpetData { - /** Sets the x coordinates. */ + /** + * Sets the x coordinates. + * Setting this also sets: xtype = "array" + */ a?: Datum[] | TypedArray; - /** Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step. */ + /** + * Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step. + * @default 0 + * Setting this also sets: xtype = "scaled" + */ a0?: any; /** If *array*, the heatmap's x coordinates are given by *x* (the default behavior when `x` is provided). If *scaled*, the heatmap's x coordinates are given by *x0* and *dx* (the default behavior when `x` is not provided). */ atype?: 'array' | 'scaled'; - /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default false + */ autocolorscale?: boolean; - /** Determines whether or not the contour level attributes are picked by an algorithm. If *true*, the number of contour levels can be set in `ncontours`. If *false*, set the contour level attributes in `contours`. */ + /** + * Determines whether or not the contour level attributes are picked by an algorithm. If *true*, the number of contour levels can be set in `ncontours`. If *false*, set the contour level attributes in `contours`. + * @default true + */ autocontour?: boolean; - /** Sets the y coordinates. */ + /** + * Sets the y coordinates. + * Setting this also sets: ytype = "array" + */ b?: Datum[] | TypedArray; - /** Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step. */ + /** + * Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step. + * @default 0 + * Setting this also sets: ytype = "scaled" + */ b0?: any; /** If *array*, the heatmap's y coordinates are given by *y* (the default behavior when `y` is provided) If *scaled*, the heatmap's y coordinates are given by *y0* and *dy* (the default behavior when `y` is not provided) */ btype?: 'array' | 'scaled'; @@ -1814,37 +3276,79 @@ export interface ContourcarpetData { /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ coloraxis?: string; colorbar?: ColorBar; - /** Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + /** + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ colorscale?: ColorScale; + /** + * Setting this also sets: autocontour = false, role = "object" + */ contours?: { - /** Determines the coloring method showing the contour values. If *fill*, coloring is done evenly between each contour level If *lines*, coloring is done on the contour lines. If *none*, no coloring is applied on this trace. */ + /** + * Determines the coloring method showing the contour values. If *fill*, coloring is done evenly between each contour level If *lines*, coloring is done on the contour lines. If *none*, no coloring is applied on this trace. + * @default 'fill' + */ coloring?: 'fill' | 'lines' | 'none'; - /** Sets the end contour level value. Must be more than `contours.start` */ + /** + * Sets the end contour level value. Must be more than `contours.start` + * Setting this also sets: ^autocontour = false + */ end?: number; /** Sets the font used for labeling the contour levels. The default color comes from the lines, if shown. The default family and size come from `layout.font`. */ labelfont?: Font; /** Sets the contour label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. */ labelformat?: string; - /** Sets the constraint operation. *=* keeps regions equal to `value` *<* and *<=* keep regions less than `value` *>* and *>=* keep regions greater than `value` *[]*, *()*, *[)*, and *(]* keep regions inside `value[0]` to `value[1]` *][*, *)(*, *](*, *)[* keep regions outside `value[0]` to value[1]` Open vs. closed intervals make no difference to constraint display, but all versions are allowed for consistency with filter transforms. */ + /** + * Sets the constraint operation. *=* keeps regions equal to `value` *<* and *<=* keep regions less than `value` *>* and *>=* keep regions greater than `value` *[]*, *()*, *[)*, and *(]* keep regions inside `value[0]` to `value[1]` *][*, *)(*, *](*, *)[* keep regions outside `value[0]` to value[1]` Open vs. closed intervals make no difference to constraint display, but all versions are allowed for consistency with filter transforms. + * @default '=' + */ operation?: '=' | '<' | '>=' | '>' | '<=' | '[]' | '()' | '[)' | '(]' | '][' | ')(' | '](' | ')['; - /** Determines whether to label the contour lines with their values. */ + /** + * Determines whether to label the contour lines with their values. + * @default false + */ showlabels?: boolean; - /** Determines whether or not the contour lines are drawn. Has an effect only if `contours.coloring` is set to *fill*. */ + /** + * Determines whether or not the contour lines are drawn. Has an effect only if `contours.coloring` is set to *fill*. + * @default true + */ showlines?: boolean; - /** Sets the step between each contour level. Must be positive. */ + /** + * Sets the step between each contour level. Must be positive. + * Minimum: 0 + * Setting this also sets: ^autocontour = false + */ size?: number; - /** Sets the starting contour level value. Must be less than `contours.end` */ + /** + * Sets the starting contour level value. Must be less than `contours.end` + * Setting this also sets: ^autocontour = false + */ start?: number; - /** If `levels`, the data is represented as a contour plot with multiple levels displayed. If `constraint`, the data is represented as constraints with the invalid region shaded as specified by the `operation` and `value` parameters. */ + /** + * If `levels`, the data is represented as a contour plot with multiple levels displayed. If `constraint`, the data is represented as constraints with the invalid region shaded as specified by the `operation` and `value` parameters. + * @default 'levels' + */ type?: 'levels' | 'constraint'; - /** Sets the value or values of the constraint boundary. When `operation` is set to one of the comparison values (`=,<,>=,>,<=`) *value* is expected to be a number. When `operation` is set to one of the interval values (`[],(),[),(],][,)(,](,)[`) *value* is expected to be an array of two numbers where the first is the lower bound and the second is the upper bound. */ + /** + * Sets the value or values of the constraint boundary. When `operation` is set to one of the comparison values (`=,<,>=,>,<=`) *value* is expected to be a number. When `operation` is set to one of the interval values (`[],(),[),(],][,)(,](,)[`) *value* is expected to be an array of two numbers where the first is the lower bound and the second is the upper bound. + * @default 0 + */ value?: any; }; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ customdata?: Datum[] | TypedArray; - /** Sets the x coordinate step. See `x0` for more info. */ + /** + * Sets the x coordinate step. See `x0` for more info. + * @default 1 + * Setting this also sets: xtype = "scaled" + */ da?: number; - /** Sets the y coordinate step. See `y0` for more info. */ + /** + * Sets the y coordinate step. See `y0` for more info. + * @default 1 + * Setting this also sets: ytype = "scaled" + */ db?: number; /** Sets the fill color if `contours.type` is *constraint*. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. */ fillcolor?: Color; @@ -1852,87 +3356,159 @@ export interface ContourcarpetData { hovertext?: Datum[] | TypedArray; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ ids?: Datum[] | TypedArray; - /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string; /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ legendgroup?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ legendrank?: number; - /** Sets the width (in px or fraction) of the legend for this trace. */ + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ legendwidth?: number; line?: { /** Sets the color of the contour level. Has no effect if `contours.coloring` is set to *lines*. */ color?: Color; - /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ dash?: Dash; - /** Sets the amount of smoothing for the contour lines, where *0* corresponds to no smoothing. */ + /** + * Sets the amount of smoothing for the contour lines, where *0* corresponds to no smoothing. + * @default 1 + * Range: [0, 1.3] + */ smoothing?: number; - /** Sets the contour line width in (in px) Defaults to *0.5* when `contours.type` is *levels*. Defaults to *2* when `contour.type` is *constraint*. */ + /** + * Sets the contour line width in (in px) Defaults to *0.5* when `contours.type` is *levels*. Defaults to *2* when `contour.type` is *constraint*. + * Minimum: 0 + */ width?: number; }; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ meta?: any; /** Sets the trace name. The trace name appears as the legend item and on hover. */ name?: string; - /** Sets the maximum number of contour levels. The actual number of contours will be chosen automatically to be less than or equal to the value of `ncontours`. Has an effect only if `autocontour` is *true* or if `contours.size` is missing. */ + /** + * Sets the maximum number of contour levels. The actual number of contours will be chosen automatically to be less than or equal to the value of `ncontours`. Has an effect only if `autocontour` is *true* or if `contours.size` is missing. + * @default 15 + * Minimum: 1 + */ ncontours?: number; - /** Sets the opacity of the trace. */ + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ opacity?: number; - /** Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color. */ + /** + * Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color. + * @default false + */ reversescale?: boolean; - /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ showlegend?: boolean; - /** Determines whether or not a colorbar is displayed for this trace. */ + /** + * Determines whether or not a colorbar is displayed for this trace. + * @default true + */ showscale?: boolean; - stream?: Stream; + stream?: _internal.Stream; /** Sets the text elements associated with each z value. */ text?: Datum[] | TypedArray; - /** Transposes the z data. */ + /** + * Transposes the z data. + * @default false + */ transpose?: boolean; type?: 'contourcarpet'; /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ uid?: string; /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ uirevision?: any; - /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; - /** Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. */ + /** + * Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. + * @default 'x' + */ xaxis?: string; - /** Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. */ + /** + * Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. + * @default 'y' + */ yaxis?: string; /** Sets the z data. */ z?: Datum[] | TypedArray; - /** Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. */ + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. + * @default true + */ zauto?: boolean; - /** Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well. */ + /** + * Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well. + * Setting this also sets: zauto = false + */ zmax?: number; /** Sets the mid-point of the color domain by scaling `zmin` and/or `zmax` to be equidistant to this point. Value should have the same units as in `z`. Has no effect when `zauto` is `false`. */ zmid?: number; - /** Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well. */ + /** + * Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well. + * Setting this also sets: zauto = false + */ zmin?: number; - /** Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. */ + /** + * Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. + * @default 0 + */ zorder?: number; } export interface DensitymapData { - /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ autocolorscale?: boolean; /** Determines if the densitymap trace will be inserted before the layer with the specified ID. By default, densitymap traces are placed below the first layer of type symbol If set to '', the layer will be inserted above every existing layer. */ below?: string; /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ coloraxis?: string; colorbar?: ColorBar; - /** Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + /** + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ colorscale?: ColorScale; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ customdata?: Datum[] | TypedArray; - /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ hoverinfo?: 'lon' | 'lat' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('lon' | 'lat' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; hoverlabel?: HoverLabel; /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ hovertemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ hovertemplatefallback?: any; /** Sets hover text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ hovertext?: string | string[]; @@ -1940,14 +3516,23 @@ export interface DensitymapData { ids?: Datum[] | TypedArray; /** Sets the latitude coordinates (in degrees North). */ lat?: Datum[] | TypedArray; - /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string; /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ legendgroup?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ legendrank?: number; - /** Sets the width (in px or fraction) of the legend for this trace. */ + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ legendwidth?: number; /** Sets the longitude coordinates (in degrees East). */ lon?: Datum[] | TypedArray; @@ -1955,18 +3540,38 @@ export interface DensitymapData { meta?: any; /** Sets the trace name. The trace name appears as the legend item and on hover. */ name?: string; - /** Sets the opacity of the trace. */ + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ opacity?: number; - /** Sets the radius of influence of one `lon` / `lat` point in pixels. Increasing the value makes the densitymap trace smoother, but less detailed. */ + /** + * Sets the radius of influence of one `lon` / `lat` point in pixels. Increasing the value makes the densitymap trace smoother, but less detailed. + * @default 30 + * Minimum: 1 + */ radius?: number | number[]; - /** Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color. */ + /** + * Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color. + * @default false + */ reversescale?: boolean; - /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default false + */ showlegend?: boolean; - /** Determines whether or not a colorbar is displayed for this trace. */ + /** + * Determines whether or not a colorbar is displayed for this trace. + * @default true + */ showscale?: boolean; - stream?: Stream; - /** Sets a reference between this trace's data coordinates and a map subplot. If *map* (the default value), the data refer to `layout.map`. If *map2*, the data refer to `layout.map2`, and so on. */ + stream?: _internal.Stream; + /** + * Sets a reference between this trace's data coordinates and a map subplot. If *map* (the default value), the data refer to `layout.map`. If *map2*, the data refer to `layout.map2`, and so on. + * @default 'map' + */ subplot?: string; /** Sets text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ text?: string | string[]; @@ -1975,38 +3580,62 @@ export interface DensitymapData { uid?: string; /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ uirevision?: any; - /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; /** Sets the points' weight. For example, a value of 10 would be equivalent to having 10 points of weight 1 in the same spot */ z?: Datum[] | TypedArray; - /** Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. */ + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. + * @default true + */ zauto?: boolean; - /** Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well. */ + /** + * Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well. + * Setting this also sets: zauto = false + */ zmax?: number; /** Sets the mid-point of the color domain by scaling `zmin` and/or `zmax` to be equidistant to this point. Value should have the same units as in `z`. Has no effect when `zauto` is `false`. */ zmid?: number; - /** Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well. */ + /** + * Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well. + * Setting this also sets: zauto = false + */ zmin?: number; } export interface DensitymapboxData { - /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ autocolorscale?: boolean; /** Determines if the densitymapbox trace will be inserted before the layer with the specified ID. By default, densitymapbox traces are placed below the first layer of type symbol If set to '', the layer will be inserted above every existing layer. */ below?: string; /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ coloraxis?: string; colorbar?: ColorBar; - /** Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + /** + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ colorscale?: ColorScale; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ customdata?: Datum[] | TypedArray; - /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ hoverinfo?: 'lon' | 'lat' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('lon' | 'lat' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; hoverlabel?: HoverLabel; /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ hovertemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ hovertemplatefallback?: any; /** Sets hover text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ hovertext?: string | string[]; @@ -2014,14 +3643,23 @@ export interface DensitymapboxData { ids?: Datum[] | TypedArray; /** Sets the latitude coordinates (in degrees North). */ lat?: Datum[] | TypedArray; - /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string; /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ legendgroup?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ legendrank?: number; - /** Sets the width (in px or fraction) of the legend for this trace. */ + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ legendwidth?: number; /** Sets the longitude coordinates (in degrees East). */ lon?: Datum[] | TypedArray; @@ -2029,18 +3667,38 @@ export interface DensitymapboxData { meta?: any; /** Sets the trace name. The trace name appears as the legend item and on hover. */ name?: string; - /** Sets the opacity of the trace. */ + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ opacity?: number; - /** Sets the radius of influence of one `lon` / `lat` point in pixels. Increasing the value makes the densitymapbox trace smoother, but less detailed. */ + /** + * Sets the radius of influence of one `lon` / `lat` point in pixels. Increasing the value makes the densitymapbox trace smoother, but less detailed. + * @default 30 + * Minimum: 1 + */ radius?: number | number[]; - /** Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color. */ + /** + * Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color. + * @default false + */ reversescale?: boolean; - /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default false + */ showlegend?: boolean; - /** Determines whether or not a colorbar is displayed for this trace. */ + /** + * Determines whether or not a colorbar is displayed for this trace. + * @default true + */ showscale?: boolean; - stream?: Stream; - /** mapbox subplots and traces are deprecated! Please consider switching to `map` subplots and traces. Learn more at: https://plotly.com/python/maplibre-migration/ as well as https://plotly.com/javascript/maplibre-migration/ Sets a reference between this trace's data coordinates and a mapbox subplot. If *mapbox* (the default value), the data refer to `layout.mapbox`. If *mapbox2*, the data refer to `layout.mapbox2`, and so on. */ + stream?: _internal.Stream; + /** + * mapbox subplots and traces are deprecated! Please consider switching to `map` subplots and traces. Learn more at: https://plotly.com/python/maplibre-migration/ as well as https://plotly.com/javascript/maplibre-migration/ Sets a reference between this trace's data coordinates and a mapbox subplot. If *mapbox* (the default value), the data refer to `layout.mapbox`. If *mapbox2*, the data refer to `layout.mapbox2`, and so on. + * @default 'mapbox' + */ subplot?: string; /** Sets text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ text?: string | string[]; @@ -2049,95 +3707,175 @@ export interface DensitymapboxData { uid?: string; /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ uirevision?: any; - /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; /** Sets the points' weight. For example, a value of 10 would be equivalent to having 10 points of weight 1 in the same spot */ z?: Datum[] | TypedArray; - /** Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. */ + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. + * @default true + */ zauto?: boolean; - /** Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well. */ + /** + * Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well. + * Setting this also sets: zauto = false + */ zmax?: number; /** Sets the mid-point of the color domain by scaling `zmin` and/or `zmax` to be equidistant to this point. Value should have the same units as in `z`. Has no effect when `zauto` is `false`. */ zmid?: number; - /** Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well. */ + /** + * Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well. + * Setting this also sets: zauto = false + */ zmin?: number; } export interface FunnelData { /** Set several traces linked to the same position axis or matching axes to the same alignmentgroup. This controls whether bars compute their positional range dependently or independently. */ alignmentgroup?: string; - /** Determines whether the text nodes are clipped about the subplot axes. To show the text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*. */ + /** + * Determines whether the text nodes are clipped about the subplot axes. To show the text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*. + * @default true + */ cliponaxis?: boolean; connector?: { /** Sets the fill color. */ fillcolor?: Color; line?: { - /** Sets the line color. */ + /** + * Sets the line color. + * @default '#444' + */ color?: Color; - /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ dash?: Dash; - /** Sets the line width (in px). */ + /** + * Sets the line width (in px). + * @default 0 + * Minimum: 0 + */ width?: number; }; - /** Determines if connector regions and lines are drawn. */ + /** + * Determines if connector regions and lines are drawn. + * @default true + */ visible?: boolean; }; - /** Constrain the size of text inside or outside a bar to be no larger than the bar itself. */ + /** + * Constrain the size of text inside or outside a bar to be no larger than the bar itself. + * @default 'both' + */ constraintext?: 'inside' | 'outside' | 'both' | 'none'; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ customdata?: Datum[] | TypedArray; - /** Sets the x coordinate step. See `x0` for more info. */ + /** + * Sets the x coordinate step. See `x0` for more info. + * @default 1 + */ dx?: number; - /** Sets the y coordinate step. See `y0` for more info. */ + /** + * Sets the y coordinate step. See `y0` for more info. + * @default 1 + */ dy?: number; - /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ hoverinfo?: 'name' | 'x' | 'y' | 'text' | 'percent initial' | 'percent previous' | 'percent total' | 'all' | 'none' | 'skip' | (string & {}) | ('name' | 'x' | 'y' | 'text' | 'percent initial' | 'percent previous' | 'percent total' | 'all' | 'none' | 'skip' | (string & {}))[]; hoverlabel?: HoverLabel; /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `percentInitial`, `percentPrevious` and `percentTotal`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ hovertemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ hovertemplatefallback?: any; /** Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ ids?: Datum[] | TypedArray; - /** Determines if texts are kept at center or start/end points in `textposition` *inside* mode. */ + /** + * Determines if texts are kept at center or start/end points in `textposition` *inside* mode. + * @default 'middle' + */ insidetextanchor?: 'end' | 'middle' | 'start'; /** Sets the font used for `text` lying inside the bar. */ insidetextfont?: FontArray; - /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string; /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ legendgroup?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ legendrank?: number; - /** Sets the width (in px or fraction) of the legend for this trace. */ + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ legendwidth?: number; marker?: { - /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ autocolorscale?: boolean; - /** Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. */ + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. + * @default true + */ cauto?: boolean; - /** Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well. */ + /** + * Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well. + * Setting this also sets: cauto = false + */ cmax?: number; /** Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`. */ cmid?: number; - /** Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well. */ + /** + * Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well. + * Setting this also sets: cauto = false + */ cmin?: number; /** Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set. */ color?: Color | Color[]; /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ coloraxis?: string; colorbar?: ColorBar; - /** Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + /** + * Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ colorscale?: ColorScale; - line?: Line; - /** Sets the opacity of the bars. */ + line?: _internal.Line; + /** + * Sets the opacity of the bars. + * @default 1 + * Range: [0, 1] + */ opacity?: number | number[]; - /** Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. */ + /** + * Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. + * @default false + */ reversescale?: boolean; - /** Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array. */ + /** + * Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array. + * @default false + */ showscale?: boolean; }; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ @@ -2148,7 +3886,11 @@ export interface FunnelData { offset?: number; /** Set several traces linked to the same position axis or matching axes to the same offsetgroup where bars of the same position coordinate will line up. */ offsetgroup?: string; - /** Sets the opacity of the trace. */ + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ opacity?: number; /** Sets the orientation of the funnels. With *v* (*h*), the value of the each bar spans along the vertical (horizontal). By default funnels are tend to be oriented horizontally; unless only *y* array is presented or orientation is set to *v*. Also regarding graphs including only 'horizontal' funnels, *autorange* on the *y-axis* are set to *reversed*. */ orientation?: 'v' | 'h'; @@ -2156,80 +3898,142 @@ export interface FunnelData { outsidetextfont?: FontArray; /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ selectedpoints?: any; - /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ showlegend?: boolean; - stream?: Stream; + stream?: _internal.Stream; /** Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ text?: string | string[]; - /** Sets the angle of the tick labels with respect to the bar. For example, a `tickangle` of -90 draws the tick labels vertically. With *auto* the texts may automatically be rotated to fit with the maximum size in bars. */ + /** + * Sets the angle of the tick labels with respect to the bar. For example, a `tickangle` of -90 draws the tick labels vertically. With *auto* the texts may automatically be rotated to fit with the maximum size in bars. + * @default 0 + */ textangle?: number | 'auto'; /** Sets the font used for `text`. */ textfont?: FontArray; /** Determines which trace information appear on the graph. In the case of having multiple funnels, percentages & totals are computed separately (per trace). */ textinfo?: 'label' | 'text' | 'percent initial' | 'percent previous' | 'percent total' | 'value' | 'none' | (string & {}); - /** Specifies the location of the `text`. *inside* positions `text` inside, next to the bar end (rotated and scaled if needed). *outside* positions `text` outside, next to the bar end (scaled if needed), unless there is another bar stacked on this one, then the text gets pushed inside. *auto* tries to position `text` inside the bar, but if the bar is too small and no bar is stacked on this one the text is moved outside. If *none*, no text appears. */ + /** + * Specifies the location of the `text`. *inside* positions `text` inside, next to the bar end (rotated and scaled if needed). *outside* positions `text` outside, next to the bar end (scaled if needed), unless there is another bar stacked on this one, then the text gets pushed inside. *auto* tries to position `text` inside the bar, but if the bar is too small and no bar is stacked on this one the text is moved outside. If *none*, no text appears. + * @default 'auto' + */ textposition?: 'inside' | 'outside' | 'auto' | 'none' | ('inside' | 'outside' | 'auto' | 'none')[]; /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `percentInitial`, `percentPrevious`, `percentTotal`, `label` and `value`. */ texttemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ texttemplatefallback?: any; type?: 'funnel'; /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ uid?: string; /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ uirevision?: any; - /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; - /** Sets the bar width (in position axis units). */ + /** + * Sets the bar width (in position axis units). + * Minimum: 0 + */ width?: number; /** Sets the x coordinates. */ x?: Datum[] | TypedArray; - /** Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step. */ + /** + * Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step. + * @default 0 + */ x0?: any; - /** Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. */ + /** + * Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. + * @default 'x' + */ xaxis?: string; /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; - /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ + /** + * Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. + * @default 0 + */ xperiod?: any; /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the x0 axis. When `x0period` is round number of weeks, the `x0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ xperiod0?: any; - /** Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis. */ + /** + * Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis. + * @default 'middle' + */ xperiodalignment?: 'start' | 'middle' | 'end'; /** Sets the y coordinates. */ y?: Datum[] | TypedArray; - /** Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step. */ + /** + * Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step. + * @default 0 + */ y0?: any; - /** Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. */ + /** + * Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. + * @default 'y' + */ yaxis?: string; /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ yhoverformat?: string; - /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the y axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ + /** + * Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the y axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. + * @default 0 + */ yperiod?: any; /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the y0 axis. When `y0period` is round number of weeks, the `y0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ yperiod0?: any; - /** Only relevant when the axis `type` is *date*. Sets the alignment of data points on the y axis. */ + /** + * Only relevant when the axis `type` is *date*. Sets the alignment of data points on the y axis. + * @default 'middle' + */ yperiodalignment?: 'start' | 'middle' | 'end'; - /** Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. */ + /** + * Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. + * @default 0 + */ zorder?: number; } export interface FunnelareaData { - /** Sets the ratio between height and width */ + /** + * Sets the ratio between height and width + * @default 1 + * Minimum: 0 + */ aspectratio?: number; - /** Sets the ratio between bottom length and maximum top length. */ + /** + * Sets the ratio between bottom length and maximum top length. + * @default 0.333 + * Range: [0, 1] + */ baseratio?: number; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ customdata?: Datum[] | TypedArray; - /** Sets the label step. See `label0` for more info. */ + /** + * Sets the label step. See `label0` for more info. + * @default 1 + */ dlabel?: number; domain?: Domain; - /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ hoverinfo?: 'label' | 'text' | 'value' | 'percent' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('label' | 'text' | 'value' | 'percent' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; hoverlabel?: HoverLabel; /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `label`, `color`, `value`, `text` and `percent`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ hovertemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ hovertemplatefallback?: any; /** Sets hover text elements associated with each sector. If a single string, the same string appears for all data points. If an array of string, the items are mapped in order of this trace's sectors. To be seen, trace `hoverinfo` must contain a *text* flag. */ hovertext?: string | string[]; @@ -2237,23 +4041,35 @@ export interface FunnelareaData { ids?: Datum[] | TypedArray; /** Sets the font used for `textinfo` lying inside the sector. */ insidetextfont?: FontArray; - /** Alternate to `labels`. Builds a numeric set of labels. Use with `dlabel` where `label0` is the starting label and `dlabel` the step. */ + /** + * Alternate to `labels`. Builds a numeric set of labels. Use with `dlabel` where `label0` is the starting label and `dlabel` the step. + * @default 0 + */ label0?: number; /** Sets the sector labels. If `labels` entries are duplicated, we sum associated `values` or simply count occurrences if `values` is not provided. For other array attributes (including color) we use the first non-empty entry among all occurrences of the label. */ labels?: Datum[] | TypedArray; - /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string; /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ legendgroup?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ legendrank?: number; - /** Sets the width (in px or fraction) of the legend for this trace. */ + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ legendwidth?: number; marker?: { /** Sets the color of each sector. If not specified, the default trace color set is used to pick the sector colors. */ colors?: Datum[] | TypedArray; - line?: Line; + line?: _internal.Line; /** Sets the pattern within the marker. */ pattern?: Pattern; }; @@ -2261,29 +4077,45 @@ export interface FunnelareaData { meta?: any; /** Sets the trace name. The trace name appears as the legend item and on hover. */ name?: string; - /** Sets the opacity of the trace. */ + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ opacity?: number; /** If there are multiple funnelareas that should be sized according to their totals, link them by providing a non-empty group id here shared by every trace in the same group. */ scalegroup?: string; - /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ showlegend?: boolean; - stream?: Stream; + stream?: _internal.Stream; /** Sets text elements associated with each sector. If trace `textinfo` contains a *text* flag, these elements will be seen on the chart. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ text?: Datum[] | TypedArray; /** Sets the font used for `textinfo`. */ textfont?: FontArray; /** Determines which trace information appear on the graph. */ textinfo?: 'label' | 'text' | 'value' | 'percent' | 'none' | (string & {}); - /** Specifies the location of the `textinfo`. */ + /** + * Specifies the location of the `textinfo`. + * @default 'inside' + */ textposition?: 'inside' | 'none' | ('inside' | 'none')[]; /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `label`, `color`, `value`, `text` and `percent`. */ texttemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ texttemplatefallback?: any; title?: { /** Sets the font used for `title`. */ font?: FontArray; - /** Specifies the location of the `title`. */ + /** + * Specifies the location of the `title`. + * @default 'top center' + */ position?: 'top left' | 'top center' | 'top right'; /** Sets the title of the chart. If it is empty, no title is displayed. */ text?: string; @@ -2295,133 +4127,261 @@ export interface FunnelareaData { uirevision?: any; /** Sets the values of the sectors. If omitted, we count occurrences of each label. */ values?: Datum[] | TypedArray; - /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; } export interface HeatmapData { - /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default false + */ autocolorscale?: boolean; /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ coloraxis?: string; colorbar?: ColorBar; - /** Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + /** + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ colorscale?: ColorScale; /** Determines whether or not gaps (i.e. {nan} or missing values) in the `z` data are filled in. It is defaulted to true if `z` is a one dimensional array and `zsmooth` is not false; otherwise it is defaulted to false. */ connectgaps?: boolean; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ customdata?: Datum[] | TypedArray; - /** Sets the x coordinate step. See `x0` for more info. */ + /** + * Sets the x coordinate step. See `x0` for more info. + * @default 1 + * Setting this also sets: xtype = "scaled" + */ dx?: number; - /** Sets the y coordinate step. See `y0` for more info. */ + /** + * Sets the y coordinate step. See `y0` for more info. + * @default 1 + * Setting this also sets: ytype = "scaled" + */ dy?: number; - /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; hoverlabel?: HoverLabel; - /** Determines whether or not gaps (i.e. {nan} or missing values) in the `z` data have hover labels associated with them. */ + /** + * Determines whether or not gaps (i.e. {nan} or missing values) in the `z` data have hover labels associated with them. + * @default true + */ hoverongaps?: boolean; /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ hovertemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ hovertemplatefallback?: any; /** Same as `text`. */ hovertext?: Datum[] | TypedArray; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ ids?: Datum[] | TypedArray; - /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string; /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ legendgroup?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ legendrank?: number; - /** Sets the width (in px or fraction) of the legend for this trace. */ + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ legendwidth?: number; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ meta?: any; /** Sets the trace name. The trace name appears as the legend item and on hover. */ name?: string; - /** Sets the opacity of the trace. */ + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ opacity?: number; - /** Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color. */ + /** + * Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color. + * @default false + */ reversescale?: boolean; - /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default false + */ showlegend?: boolean; - /** Determines whether or not a colorbar is displayed for this trace. */ + /** + * Determines whether or not a colorbar is displayed for this trace. + * @default true + */ showscale?: boolean; - stream?: Stream; + stream?: _internal.Stream; /** Sets the text elements associated with each z value. */ text?: Datum[] | TypedArray; /** Sets the text font. */ textfont?: Font; /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `x`, `y`, `z` and `text`. */ texttemplate?: string; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ texttemplatefallback?: any; - /** Transposes the z data. */ + /** + * Transposes the z data. + * @default false + */ transpose?: boolean; type?: 'heatmap'; /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ uid?: string; /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ uirevision?: any; - /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; - /** Sets the x coordinates. */ + /** + * Sets the x coordinates. + * Setting this also sets: xtype = "array" + */ x?: Datum[] | TypedArray; - /** Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step. */ + /** + * Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step. + * @default 0 + * Setting this also sets: xtype = "scaled" + */ x0?: any; - /** Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. */ + /** + * Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. + * @default 'x' + */ xaxis?: string; - /** Sets the calendar system to use with `x` date data. */ + /** + * Sets the calendar system to use with `x` date data. + * @default 'gregorian' + */ xcalendar?: Calendar; - /** Sets the horizontal gap (in pixels) between bricks. */ + /** + * Sets the horizontal gap (in pixels) between bricks. + * @default 0 + * Minimum: 0 + */ xgap?: number; /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; - /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ + /** + * Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. + * @default 0 + * Setting this also sets: xtype = "scaled" + */ xperiod?: any; - /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the x0 axis. When `x0period` is round number of weeks, the `x0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ + /** + * Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the x0 axis. When `x0period` is round number of weeks, the `x0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. + * Setting this also sets: xtype = "scaled" + */ xperiod0?: any; - /** Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis. */ + /** + * Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis. + * @default 'middle' + * Setting this also sets: xtype = "scaled" + */ xperiodalignment?: 'start' | 'middle' | 'end'; /** If *array*, the heatmap's x coordinates are given by *x* (the default behavior when `x` is provided). If *scaled*, the heatmap's x coordinates are given by *x0* and *dx* (the default behavior when `x` is not provided). */ xtype?: 'array' | 'scaled'; - /** Sets the y coordinates. */ + /** + * Sets the y coordinates. + * Setting this also sets: ytype = "array" + */ y?: Datum[] | TypedArray; - /** Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step. */ + /** + * Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step. + * @default 0 + * Setting this also sets: ytype = "scaled" + */ y0?: any; - /** Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. */ + /** + * Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. + * @default 'y' + */ yaxis?: string; - /** Sets the calendar system to use with `y` date data. */ + /** + * Sets the calendar system to use with `y` date data. + * @default 'gregorian' + */ ycalendar?: Calendar; - /** Sets the vertical gap (in pixels) between bricks. */ + /** + * Sets the vertical gap (in pixels) between bricks. + * @default 0 + * Minimum: 0 + */ ygap?: number; /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ yhoverformat?: string; - /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the y axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ + /** + * Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the y axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. + * @default 0 + * Setting this also sets: ytype = "scaled" + */ yperiod?: any; - /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the y0 axis. When `y0period` is round number of weeks, the `y0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ + /** + * Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the y0 axis. When `y0period` is round number of weeks, the `y0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. + * Setting this also sets: ytype = "scaled" + */ yperiod0?: any; - /** Only relevant when the axis `type` is *date*. Sets the alignment of data points on the y axis. */ + /** + * Only relevant when the axis `type` is *date*. Sets the alignment of data points on the y axis. + * @default 'middle' + * Setting this also sets: ytype = "scaled" + */ yperiodalignment?: 'start' | 'middle' | 'end'; /** If *array*, the heatmap's y coordinates are given by *y* (the default behavior when `y` is provided) If *scaled*, the heatmap's y coordinates are given by *y0* and *dy* (the default behavior when `y` is not provided) */ ytype?: 'array' | 'scaled'; /** Sets the z data. */ z?: Datum[] | TypedArray; - /** Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. */ + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. + * @default true + */ zauto?: boolean; /** Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ zhoverformat?: string; - /** Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well. */ + /** + * Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well. + * Setting this also sets: zauto = false + */ zmax?: number; /** Sets the mid-point of the color domain by scaling `zmin` and/or `zmax` to be equidistant to this point. Value should have the same units as in `z`. Has no effect when `zauto` is `false`. */ zmid?: number; - /** Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well. */ + /** + * Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well. + * Setting this also sets: zauto = false + */ zmin?: number; - /** Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. */ + /** + * Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. + * @default 0 + */ zorder?: number; - /** Picks a smoothing algorithm use to smooth `z` data. */ + /** + * Picks a smoothing algorithm use to smooth `z` data. + * @default false + */ zsmooth?: 'fast' | 'best' | false; } @@ -2434,16 +4394,31 @@ export interface HistogramData { autobiny?: boolean; /** Set a group of histogram traces which will have compatible bin settings. Note that traces on the same subplot and with the same *orientation* under `barmode` *stack*, *relative* and *group* are forced into the same bingroup, Using `bingroup`, traces under `barmode` *overlay* and on different axes (of the same axis type) can have compatible bin settings. Note that histogram and histogram2d* trace can share the same `bingroup` */ bingroup?: string; - /** Determines whether the text nodes are clipped about the subplot axes. To show the text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*. */ + /** + * Determines whether the text nodes are clipped about the subplot axes. To show the text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*. + * @default true + */ cliponaxis?: boolean; - /** Constrain the size of text inside or outside a bar to be no larger than the bar itself. */ + /** + * Constrain the size of text inside or outside a bar to be no larger than the bar itself. + * @default 'both' + */ constraintext?: 'inside' | 'outside' | 'both' | 'none'; cumulative?: { - /** Only applies if cumulative is enabled. Sets whether the current bin is included, excluded, or has half of its value included in the current cumulative value. *include* is the default for compatibility with various other tools, however it introduces a half-bin bias to the results. *exclude* makes the opposite half-bin bias, and *half* removes it. */ + /** + * Only applies if cumulative is enabled. Sets whether the current bin is included, excluded, or has half of its value included in the current cumulative value. *include* is the default for compatibility with various other tools, however it introduces a half-bin bias to the results. *exclude* makes the opposite half-bin bias, and *half* removes it. + * @default 'include' + */ currentbin?: 'include' | 'exclude' | 'half'; - /** Only applies if cumulative is enabled. If *increasing* (default) we sum all prior bins, so the result increases from left to right. If *decreasing* we sum later bins so the result decreases from left to right. */ + /** + * Only applies if cumulative is enabled. If *increasing* (default) we sum all prior bins, so the result increases from left to right. If *decreasing* we sum later bins so the result decreases from left to right. + * @default 'increasing' + */ direction?: 'increasing' | 'decreasing'; - /** If true, display the cumulative distribution by summing the binned values. Use the `direction` and `centralbin` attributes to tune the accumulation method. Note: in this mode, the *density* `histnorm` settings behave the same as their equivalents without *density*: ** and *density* both rise to the number of data points, and *probability* and *probability density* both rise to the number of sample points. */ + /** + * If true, display the cumulative distribution by summing the binned values. Use the `direction` and `centralbin` attributes to tune the accumulation method. Note: in this mode, the *density* `histnorm` settings behave the same as their equivalents without *density*: ** and *density* both rise to the number of data points, and *probability* and *probability density* both rise to the number of sample points. + * @default false + */ enabled?: boolean; }; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ @@ -2458,91 +4433,172 @@ export interface HistogramData { copy_ystyle?: boolean; /** Determines whether or not the error bars have the same length in both direction (top/bottom for vertical bars, left/right for horizontal bars. */ symmetric?: boolean; - /** Sets the thickness (in px) of the error bars. */ + /** + * Sets the thickness (in px) of the error bars. + * @default 2 + * Minimum: 0 + */ thickness?: number; + /** + * @default 0 + * Minimum: 0 + */ traceref?: number; + /** + * @default 0 + * Minimum: 0 + */ tracerefminus?: number; /** Determines the rule used to generate the error bars. If *constant*, the bar lengths are of a constant value. Set this constant in `value`. If *percent*, the bar lengths correspond to a percentage of underlying data. Set this percentage in `value`. If *sqrt*, the bar lengths correspond to the square of the underlying data. If *data*, the bar lengths are set with data set `array`. */ type?: 'percent' | 'constant' | 'sqrt' | 'data'; - /** Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars. */ + /** + * Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars. + * @default 10 + * Minimum: 0 + */ value?: number; - /** Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars in the bottom (left) direction for vertical (horizontal) bars */ + /** + * Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars in the bottom (left) direction for vertical (horizontal) bars + * @default 10 + * Minimum: 0 + */ valueminus?: number; /** Determines whether or not this set of error bars is visible. */ visible?: boolean; - /** Sets the width (in px) of the cross-bar at both ends of the error bars. */ + /** + * Sets the width (in px) of the cross-bar at both ends of the error bars. + * Minimum: 0 + */ width?: number; }; - error_y?: ErrorY; - /** Specifies the binning function used for this histogram trace. If *count*, the histogram values are computed by counting the number of values lying inside each bin. If *sum*, *avg*, *min*, *max*, the histogram values are computed using the sum, the average, the minimum or the maximum of the values lying inside each bin respectively. */ + error_y?: _internal.ErrorY; + /** + * Specifies the binning function used for this histogram trace. If *count*, the histogram values are computed by counting the number of values lying inside each bin. If *sum*, *avg*, *min*, *max*, the histogram values are computed using the sum, the average, the minimum or the maximum of the values lying inside each bin respectively. + * @default 'count' + */ histfunc?: 'count' | 'sum' | 'avg' | 'min' | 'max'; /** Specifies the type of normalization used for this histogram trace. If **, the span of each bar corresponds to the number of occurrences (i.e. the number of data points lying inside the bins). If *percent* / *probability*, the span of each bar corresponds to the percentage / fraction of occurrences with respect to the total number of sample points (here, the sum of all bin HEIGHTS equals 100% / 1). If *density*, the span of each bar corresponds to the number of occurrences in a bin divided by the size of the bin interval (here, the sum of all bin AREAS equals the total number of sample points). If *probability density*, the area of each bar corresponds to the probability that an event will fall into the corresponding bin (here, the sum of all bin AREAS equals 1). */ histnorm?: '' | 'percent' | 'probability' | 'density' | 'probability density'; - /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; hoverlabel?: HoverLabel; /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variable `binNumber` Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ hovertemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ hovertemplatefallback?: any; /** Same as `text`. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ ids?: Datum[] | TypedArray; - /** Determines if texts are kept at center or start/end points in `textposition` *inside* mode. */ + /** + * Determines if texts are kept at center or start/end points in `textposition` *inside* mode. + * @default 'end' + */ insidetextanchor?: 'end' | 'middle' | 'start'; /** Sets the font used for `text` lying inside the bar. */ insidetextfont?: Font; - /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string; /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ legendgroup?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ legendrank?: number; - /** Sets the width (in px or fraction) of the legend for this trace. */ + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ legendwidth?: number; marker?: { - /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ autocolorscale?: boolean; - /** Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. */ + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. + * @default true + */ cauto?: boolean; - /** Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well. */ + /** + * Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well. + * Setting this also sets: cauto = false + */ cmax?: number; /** Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`. */ cmid?: number; - /** Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well. */ + /** + * Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well. + * Setting this also sets: cauto = false + */ cmin?: number; /** Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set. */ color?: Color | Color[]; /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ coloraxis?: string; colorbar?: ColorBar; - /** Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + /** + * Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ colorscale?: ColorScale; /** Sets the rounding of corners. May be an integer number of pixels, or a percentage of bar width (as a string ending in %). Defaults to `layout.barcornerradius`. In stack or relative barmode, the first trace to set cornerradius is used for the whole stack. */ cornerradius?: any; - line?: Line; - /** Sets the opacity of the bars. */ + line?: _internal.Line; + /** + * Sets the opacity of the bars. + * @default 1 + * Range: [0, 1] + */ opacity?: number | number[]; /** Sets the pattern within the marker. */ pattern?: Pattern; - /** Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. */ + /** + * Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. + * @default false + */ reversescale?: boolean; - /** Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array. */ + /** + * Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array. + * @default false + */ showscale?: boolean; }; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ meta?: any; /** Sets the trace name. The trace name appears as the legend item and on hover. */ name?: string; - /** Specifies the maximum number of desired bins. This value will be used in an algorithm that will decide the optimal bin size such that the histogram best visualizes the distribution of the data. Ignored if `xbins.size` is provided. */ + /** + * Specifies the maximum number of desired bins. This value will be used in an algorithm that will decide the optimal bin size such that the histogram best visualizes the distribution of the data. Ignored if `xbins.size` is provided. + * @default 0 + * Minimum: 0 + */ nbinsx?: number; - /** Specifies the maximum number of desired bins. This value will be used in an algorithm that will decide the optimal bin size such that the histogram best visualizes the distribution of the data. Ignored if `ybins.size` is provided. */ + /** + * Specifies the maximum number of desired bins. This value will be used in an algorithm that will decide the optimal bin size such that the histogram best visualizes the distribution of the data. Ignored if `ybins.size` is provided. + * @default 0 + * Minimum: 0 + */ nbinsy?: number; /** Set several traces linked to the same position axis or matching axes to the same offsetgroup where bars of the same position coordinate will line up. */ offsetgroup?: string; - /** Sets the opacity of the trace. */ + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ opacity?: number; /** Sets the orientation of the bars. With *v* (*h*), the value of the each bar spans along the vertical (horizontal). */ orientation?: 'v' | 'h'; @@ -2552,27 +4608,42 @@ export interface HistogramData { marker?: { /** Sets the marker color of selected points. */ color?: Color; - /** Sets the marker opacity of selected points. */ + /** + * Sets the marker opacity of selected points. + * Range: [0, 1] + */ opacity?: number; }; textfont?: Font; }; /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ selectedpoints?: any; - /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ showlegend?: boolean; - stream?: Stream; + stream?: _internal.Stream; /** Sets hover text elements associated with each bar. If a single string, the same string appears over all bars. If an array of string, the items are mapped in order to the this trace's coordinates. */ text?: string | string[]; - /** Sets the angle of the tick labels with respect to the bar. For example, a `tickangle` of -90 draws the tick labels vertically. With *auto* the texts may automatically be rotated to fit with the maximum size in bars. */ + /** + * Sets the angle of the tick labels with respect to the bar. For example, a `tickangle` of -90 draws the tick labels vertically. With *auto* the texts may automatically be rotated to fit with the maximum size in bars. + * @default 'auto' + */ textangle?: number | 'auto'; /** Sets the text font. */ textfont?: Font; - /** Specifies the location of the `text`. *inside* positions `text` inside, next to the bar end (rotated and scaled if needed). *outside* positions `text` outside, next to the bar end (scaled if needed), unless there is another bar stacked on this one, then the text gets pushed inside. *auto* tries to position `text` inside the bar, but if the bar is too small and no bar is stacked on this one the text is moved outside. If *none*, no text appears. */ + /** + * Specifies the location of the `text`. *inside* positions `text` inside, next to the bar end (rotated and scaled if needed). *outside* positions `text` outside, next to the bar end (scaled if needed), unless there is another bar stacked on this one, then the text gets pushed inside. *auto* tries to position `text` inside the bar, but if the bar is too small and no bar is stacked on this one the text is moved outside. If *none*, no text appears. + * @default 'auto' + */ textposition?: 'inside' | 'outside' | 'auto' | 'none'; /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `label` and `value`. */ texttemplate?: string; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ texttemplatefallback?: any; type?: 'histogram'; /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ @@ -2583,16 +4654,25 @@ export interface HistogramData { marker?: { /** Sets the marker color of unselected points, applied only when a selection exists. */ color?: Color; - /** Sets the marker opacity of unselected points, applied only when a selection exists. */ + /** + * Sets the marker opacity of unselected points, applied only when a selection exists. + * Range: [0, 1] + */ opacity?: number; }; textfont?: Font; }; - /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; /** Sets the sample data to be binned on the x axis. */ x?: Datum[] | TypedArray; - /** Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. */ + /** + * Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. + * @default 'x' + */ xaxis?: string; xbins?: { /** Sets the end value for the x axis bins. The last bin may not end exactly at this value, we increment the bin edge by `size` from `start` until we reach or exceed `end`. Defaults to the maximum data value. Like `start`, for dates use a date string, and for category data `end` is based on the category serial numbers. */ @@ -2602,13 +4682,19 @@ export interface HistogramData { /** Sets the starting value for the x axis bins. Defaults to the minimum data value, shifted down if necessary to make nice round values and to remove ambiguous bin edges. For example, if most of the data is integers we shift the bin edges 0.5 down, so a `size` of 5 would have a default `start` of -0.5, so it is clear that 0-4 are in the first bin, 5-9 in the second, but continuous data gets a start of 0 and bins [0,5), [5,10) etc. Dates behave similarly, and `start` should be a date string. For category data, `start` is based on the category serial numbers, and defaults to -0.5. If multiple non-overlaying histograms share a subplot, the first explicit `start` is used exactly and all others are shifted down (if necessary) to differ from that one by an integer number of bins. */ start?: any; }; - /** Sets the calendar system to use with `x` date data. */ + /** + * Sets the calendar system to use with `x` date data. + * @default 'gregorian' + */ xcalendar?: Calendar; /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; /** Sets the sample data to be binned on the y axis. */ y?: Datum[] | TypedArray; - /** Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. */ + /** + * Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. + * @default 'y' + */ yaxis?: string; ybins?: { /** Sets the end value for the y axis bins. The last bin may not end exactly at this value, we increment the bin edge by `size` from `start` until we reach or exceed `end`. Defaults to the maximum data value. Like `start`, for dates use a date string, and for category data `end` is based on the category serial numbers. */ @@ -2618,11 +4704,17 @@ export interface HistogramData { /** Sets the starting value for the y axis bins. Defaults to the minimum data value, shifted down if necessary to make nice round values and to remove ambiguous bin edges. For example, if most of the data is integers we shift the bin edges 0.5 down, so a `size` of 5 would have a default `start` of -0.5, so it is clear that 0-4 are in the first bin, 5-9 in the second, but continuous data gets a start of 0 and bins [0,5), [5,10) etc. Dates behave similarly, and `start` should be a date string. For category data, `start` is based on the category serial numbers, and defaults to -0.5. If multiple non-overlaying histograms share a subplot, the first explicit `start` is used exactly and all others are shifted down (if necessary) to differ from that one by an integer number of bins. */ start?: any; }; - /** Sets the calendar system to use with `y` date data. */ + /** + * Sets the calendar system to use with `y` date data. + * @default 'gregorian' + */ ycalendar?: Calendar; /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ yhoverformat?: string; - /** Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. */ + /** + * Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. + * @default 0 + */ zorder?: number; } @@ -2631,38 +4723,62 @@ export interface Histogram2dData { autobinx?: boolean; /** Obsolete: since v1.42 each bin attribute is auto-determined separately and `autobiny` is not needed. However, we accept `autobiny: true` or `false` and will update `ybins` accordingly before deleting `autobiny` from the trace. */ autobiny?: boolean; - /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default false + */ autocolorscale?: boolean; /** Set the `xbingroup` and `ybingroup` default prefix For example, setting a `bingroup` of *1* on two histogram2d traces will make them their x-bins and y-bins match separately. */ bingroup?: string; /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ coloraxis?: string; colorbar?: ColorBar; - /** Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + /** + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ colorscale?: ColorScale; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ customdata?: Datum[] | TypedArray; - /** Specifies the binning function used for this histogram trace. If *count*, the histogram values are computed by counting the number of values lying inside each bin. If *sum*, *avg*, *min*, *max*, the histogram values are computed using the sum, the average, the minimum or the maximum of the values lying inside each bin respectively. */ + /** + * Specifies the binning function used for this histogram trace. If *count*, the histogram values are computed by counting the number of values lying inside each bin. If *sum*, *avg*, *min*, *max*, the histogram values are computed using the sum, the average, the minimum or the maximum of the values lying inside each bin respectively. + * @default 'count' + */ histfunc?: 'count' | 'sum' | 'avg' | 'min' | 'max'; /** Specifies the type of normalization used for this histogram trace. If **, the span of each bar corresponds to the number of occurrences (i.e. the number of data points lying inside the bins). If *percent* / *probability*, the span of each bar corresponds to the percentage / fraction of occurrences with respect to the total number of sample points (here, the sum of all bin HEIGHTS equals 100% / 1). If *density*, the span of each bar corresponds to the number of occurrences in a bin divided by the size of the bin interval (here, the sum of all bin AREAS equals the total number of sample points). If *probability density*, the area of each bar corresponds to the probability that an event will fall into the corresponding bin (here, the sum of all bin AREAS equals 1). */ histnorm?: '' | 'percent' | 'probability' | 'density' | 'probability density'; - /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; hoverlabel?: HoverLabel; /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variable `z` Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ hovertemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ hovertemplatefallback?: any; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ ids?: Datum[] | TypedArray; - /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string; /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ legendgroup?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ legendrank?: number; - /** Sets the width (in px or fraction) of the legend for this trace. */ + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ legendwidth?: number; marker?: { /** Sets the aggregation data. */ @@ -2672,35 +4788,65 @@ export interface Histogram2dData { meta?: any; /** Sets the trace name. The trace name appears as the legend item and on hover. */ name?: string; - /** Specifies the maximum number of desired bins. This value will be used in an algorithm that will decide the optimal bin size such that the histogram best visualizes the distribution of the data. Ignored if `xbins.size` is provided. */ + /** + * Specifies the maximum number of desired bins. This value will be used in an algorithm that will decide the optimal bin size such that the histogram best visualizes the distribution of the data. Ignored if `xbins.size` is provided. + * @default 0 + * Minimum: 0 + */ nbinsx?: number; - /** Specifies the maximum number of desired bins. This value will be used in an algorithm that will decide the optimal bin size such that the histogram best visualizes the distribution of the data. Ignored if `ybins.size` is provided. */ + /** + * Specifies the maximum number of desired bins. This value will be used in an algorithm that will decide the optimal bin size such that the histogram best visualizes the distribution of the data. Ignored if `ybins.size` is provided. + * @default 0 + * Minimum: 0 + */ nbinsy?: number; - /** Sets the opacity of the trace. */ + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ opacity?: number; - /** Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color. */ + /** + * Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color. + * @default false + */ reversescale?: boolean; - /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default false + */ showlegend?: boolean; - /** Determines whether or not a colorbar is displayed for this trace. */ + /** + * Determines whether or not a colorbar is displayed for this trace. + * @default true + */ showscale?: boolean; - stream?: Stream; + stream?: _internal.Stream; /** Sets the text font. */ textfont?: Font; /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variable `z` */ texttemplate?: string; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ texttemplatefallback?: any; type?: 'histogram2d'; /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ uid?: string; /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ uirevision?: any; - /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; /** Sets the sample data to be binned on the x axis. */ x?: Datum[] | TypedArray; - /** Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. */ + /** + * Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. + * @default 'x' + */ xaxis?: string; /** Set a group of histogram traces which will have compatible x-bin settings. Using `xbingroup`, histogram2d and histogram2dcontour traces (on axes of the same axis type) can have compatible x-bin settings. Note that the same `xbingroup` value can be used to set (1D) histogram `bingroup` */ xbingroup?: string; @@ -2712,15 +4858,25 @@ export interface Histogram2dData { /** Sets the starting value for the x axis bins. Defaults to the minimum data value, shifted down if necessary to make nice round values and to remove ambiguous bin edges. For example, if most of the data is integers we shift the bin edges 0.5 down, so a `size` of 5 would have a default `start` of -0.5, so it is clear that 0-4 are in the first bin, 5-9 in the second, but continuous data gets a start of 0 and bins [0,5), [5,10) etc. Dates behave similarly, and `start` should be a date string. For category data, `start` is based on the category serial numbers, and defaults to -0.5. */ start?: any; }; - /** Sets the calendar system to use with `x` date data. */ + /** + * Sets the calendar system to use with `x` date data. + * @default 'gregorian' + */ xcalendar?: Calendar; - /** Sets the horizontal gap (in pixels) between bricks. */ + /** + * Sets the horizontal gap (in pixels) between bricks. + * @default 0 + * Minimum: 0 + */ xgap?: number; /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; /** Sets the sample data to be binned on the y axis. */ y?: Datum[] | TypedArray; - /** Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. */ + /** + * Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. + * @default 'y' + */ yaxis?: string; /** Set a group of histogram traces which will have compatible y-bin settings. Using `ybingroup`, histogram2d and histogram2dcontour traces (on axes of the same axis type) can have compatible y-bin settings. Note that the same `ybingroup` value can be used to set (1D) histogram `bingroup` */ ybingroup?: string; @@ -2732,25 +4888,44 @@ export interface Histogram2dData { /** Sets the starting value for the y axis bins. Defaults to the minimum data value, shifted down if necessary to make nice round values and to remove ambiguous bin edges. For example, if most of the data is integers we shift the bin edges 0.5 down, so a `size` of 5 would have a default `start` of -0.5, so it is clear that 0-4 are in the first bin, 5-9 in the second, but continuous data gets a start of 0 and bins [0,5), [5,10) etc. Dates behave similarly, and `start` should be a date string. For category data, `start` is based on the category serial numbers, and defaults to -0.5. */ start?: any; }; - /** Sets the calendar system to use with `y` date data. */ + /** + * Sets the calendar system to use with `y` date data. + * @default 'gregorian' + */ ycalendar?: Calendar; - /** Sets the vertical gap (in pixels) between bricks. */ + /** + * Sets the vertical gap (in pixels) between bricks. + * @default 0 + * Minimum: 0 + */ ygap?: number; /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ yhoverformat?: string; /** Sets the aggregation data. */ z?: Datum[] | TypedArray; - /** Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. */ + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. + * @default true + */ zauto?: boolean; /** Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ zhoverformat?: string; - /** Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well. */ + /** + * Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well. + * Setting this also sets: zauto = false + */ zmax?: number; /** Sets the mid-point of the color domain by scaling `zmin` and/or `zmax` to be equidistant to this point. Value should have the same units as in `z`. Has no effect when `zauto` is `false`. */ zmid?: number; - /** Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well. */ + /** + * Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well. + * Setting this also sets: zauto = false + */ zmin?: number; - /** Picks a smoothing algorithm use to smooth `z` data. */ + /** + * Picks a smoothing algorithm use to smooth `z` data. + * @default false + */ zsmooth?: 'fast' | 'best' | false; } @@ -2759,73 +4934,142 @@ export interface Histogram2dcontourData { autobinx?: boolean; /** Obsolete: since v1.42 each bin attribute is auto-determined separately and `autobiny` is not needed. However, we accept `autobiny: true` or `false` and will update `ybins` accordingly before deleting `autobiny` from the trace. */ autobiny?: boolean; - /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ autocolorscale?: boolean; - /** Determines whether or not the contour level attributes are picked by an algorithm. If *true*, the number of contour levels can be set in `ncontours`. If *false*, set the contour level attributes in `contours`. */ + /** + * Determines whether or not the contour level attributes are picked by an algorithm. If *true*, the number of contour levels can be set in `ncontours`. If *false*, set the contour level attributes in `contours`. + * @default true + */ autocontour?: boolean; /** Set the `xbingroup` and `ybingroup` default prefix For example, setting a `bingroup` of *1* on two histogram2d traces will make them their x-bins and y-bins match separately. */ bingroup?: string; /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ coloraxis?: string; colorbar?: ColorBar; - /** Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + /** + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ colorscale?: ColorScale; + /** + * Setting this also sets: autocontour = false, role = "object" + */ contours?: { - /** Determines the coloring method showing the contour values. If *fill*, coloring is done evenly between each contour level If *heatmap*, a heatmap gradient coloring is applied between each contour level. If *lines*, coloring is done on the contour lines. If *none*, no coloring is applied on this trace. */ + /** + * Determines the coloring method showing the contour values. If *fill*, coloring is done evenly between each contour level If *heatmap*, a heatmap gradient coloring is applied between each contour level. If *lines*, coloring is done on the contour lines. If *none*, no coloring is applied on this trace. + * @default 'fill' + */ coloring?: 'fill' | 'heatmap' | 'lines' | 'none'; - /** Sets the end contour level value. Must be more than `contours.start` */ + /** + * Sets the end contour level value. Must be more than `contours.start` + * Setting this also sets: ^autocontour = false + */ end?: number; /** Sets the font used for labeling the contour levels. The default color comes from the lines, if shown. The default family and size come from `layout.font`. */ labelfont?: Font; /** Sets the contour label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. */ labelformat?: string; - /** Sets the constraint operation. *=* keeps regions equal to `value` *<* and *<=* keep regions less than `value` *>* and *>=* keep regions greater than `value` *[]*, *()*, *[)*, and *(]* keep regions inside `value[0]` to `value[1]` *][*, *)(*, *](*, *)[* keep regions outside `value[0]` to value[1]` Open vs. closed intervals make no difference to constraint display, but all versions are allowed for consistency with filter transforms. */ + /** + * Sets the constraint operation. *=* keeps regions equal to `value` *<* and *<=* keep regions less than `value` *>* and *>=* keep regions greater than `value` *[]*, *()*, *[)*, and *(]* keep regions inside `value[0]` to `value[1]` *][*, *)(*, *](*, *)[* keep regions outside `value[0]` to value[1]` Open vs. closed intervals make no difference to constraint display, but all versions are allowed for consistency with filter transforms. + * @default '=' + */ operation?: '=' | '<' | '>=' | '>' | '<=' | '[]' | '()' | '[)' | '(]' | '][' | ')(' | '](' | ')['; - /** Determines whether to label the contour lines with their values. */ + /** + * Determines whether to label the contour lines with their values. + * @default false + */ showlabels?: boolean; - /** Determines whether or not the contour lines are drawn. Has an effect only if `contours.coloring` is set to *fill*. */ + /** + * Determines whether or not the contour lines are drawn. Has an effect only if `contours.coloring` is set to *fill*. + * @default true + */ showlines?: boolean; - /** Sets the step between each contour level. Must be positive. */ + /** + * Sets the step between each contour level. Must be positive. + * Minimum: 0 + * Setting this also sets: ^autocontour = false + */ size?: number; - /** Sets the starting contour level value. Must be less than `contours.end` */ + /** + * Sets the starting contour level value. Must be less than `contours.end` + * Setting this also sets: ^autocontour = false + */ start?: number; - /** If `levels`, the data is represented as a contour plot with multiple levels displayed. If `constraint`, the data is represented as constraints with the invalid region shaded as specified by the `operation` and `value` parameters. */ + /** + * If `levels`, the data is represented as a contour plot with multiple levels displayed. If `constraint`, the data is represented as constraints with the invalid region shaded as specified by the `operation` and `value` parameters. + * @default 'levels' + */ type?: 'levels' | 'constraint'; - /** Sets the value or values of the constraint boundary. When `operation` is set to one of the comparison values (`=,<,>=,>,<=`) *value* is expected to be a number. When `operation` is set to one of the interval values (`[],(),[),(],][,)(,](,)[`) *value* is expected to be an array of two numbers where the first is the lower bound and the second is the upper bound. */ + /** + * Sets the value or values of the constraint boundary. When `operation` is set to one of the comparison values (`=,<,>=,>,<=`) *value* is expected to be a number. When `operation` is set to one of the interval values (`[],(),[),(],][,)(,](,)[`) *value* is expected to be an array of two numbers where the first is the lower bound and the second is the upper bound. + * @default 0 + */ value?: any; }; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ customdata?: Datum[] | TypedArray; - /** Specifies the binning function used for this histogram trace. If *count*, the histogram values are computed by counting the number of values lying inside each bin. If *sum*, *avg*, *min*, *max*, the histogram values are computed using the sum, the average, the minimum or the maximum of the values lying inside each bin respectively. */ + /** + * Specifies the binning function used for this histogram trace. If *count*, the histogram values are computed by counting the number of values lying inside each bin. If *sum*, *avg*, *min*, *max*, the histogram values are computed using the sum, the average, the minimum or the maximum of the values lying inside each bin respectively. + * @default 'count' + */ histfunc?: 'count' | 'sum' | 'avg' | 'min' | 'max'; /** Specifies the type of normalization used for this histogram trace. If **, the span of each bar corresponds to the number of occurrences (i.e. the number of data points lying inside the bins). If *percent* / *probability*, the span of each bar corresponds to the percentage / fraction of occurrences with respect to the total number of sample points (here, the sum of all bin HEIGHTS equals 100% / 1). If *density*, the span of each bar corresponds to the number of occurrences in a bin divided by the size of the bin interval (here, the sum of all bin AREAS equals the total number of sample points). If *probability density*, the area of each bar corresponds to the probability that an event will fall into the corresponding bin (here, the sum of all bin AREAS equals 1). */ histnorm?: '' | 'percent' | 'probability' | 'density' | 'probability density'; - /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; hoverlabel?: HoverLabel; /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variable `z` Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ hovertemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ hovertemplatefallback?: any; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ ids?: Datum[] | TypedArray; - /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string; /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ legendgroup?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ legendrank?: number; - /** Sets the width (in px or fraction) of the legend for this trace. */ + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ legendwidth?: number; line?: { /** Sets the color of the contour level. Has no effect if `contours.coloring` is set to *lines*. */ color?: Color; - /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ dash?: Dash; - /** Sets the amount of smoothing for the contour lines, where *0* corresponds to no smoothing. */ + /** + * Sets the amount of smoothing for the contour lines, where *0* corresponds to no smoothing. + * @default 1 + * Range: [0, 1.3] + */ smoothing?: number; - /** Sets the contour line width in (in px) */ + /** + * Sets the contour line width in (in px) + * @default 0.5 + * Minimum: 0 + */ width?: number; }; marker?: { @@ -2836,37 +5080,71 @@ export interface Histogram2dcontourData { meta?: any; /** Sets the trace name. The trace name appears as the legend item and on hover. */ name?: string; - /** Specifies the maximum number of desired bins. This value will be used in an algorithm that will decide the optimal bin size such that the histogram best visualizes the distribution of the data. Ignored if `xbins.size` is provided. */ + /** + * Specifies the maximum number of desired bins. This value will be used in an algorithm that will decide the optimal bin size such that the histogram best visualizes the distribution of the data. Ignored if `xbins.size` is provided. + * @default 0 + * Minimum: 0 + */ nbinsx?: number; - /** Specifies the maximum number of desired bins. This value will be used in an algorithm that will decide the optimal bin size such that the histogram best visualizes the distribution of the data. Ignored if `ybins.size` is provided. */ + /** + * Specifies the maximum number of desired bins. This value will be used in an algorithm that will decide the optimal bin size such that the histogram best visualizes the distribution of the data. Ignored if `ybins.size` is provided. + * @default 0 + * Minimum: 0 + */ nbinsy?: number; - /** Sets the maximum number of contour levels. The actual number of contours will be chosen automatically to be less than or equal to the value of `ncontours`. Has an effect only if `autocontour` is *true* or if `contours.size` is missing. */ + /** + * Sets the maximum number of contour levels. The actual number of contours will be chosen automatically to be less than or equal to the value of `ncontours`. Has an effect only if `autocontour` is *true* or if `contours.size` is missing. + * @default 15 + * Minimum: 1 + */ ncontours?: number; - /** Sets the opacity of the trace. */ + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ opacity?: number; - /** Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color. */ + /** + * Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color. + * @default false + */ reversescale?: boolean; - /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ showlegend?: boolean; - /** Determines whether or not a colorbar is displayed for this trace. */ + /** + * Determines whether or not a colorbar is displayed for this trace. + * @default true + */ showscale?: boolean; - stream?: Stream; + stream?: _internal.Stream; /** For this trace it only has an effect if `coloring` is set to *heatmap*. Sets the text font. */ textfont?: Font; /** For this trace it only has an effect if `coloring` is set to *heatmap*. Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `x`, `y`, `z` and `text`. */ texttemplate?: string; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ texttemplatefallback?: any; type?: 'histogram2dcontour'; /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ uid?: string; /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ uirevision?: any; - /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; /** Sets the sample data to be binned on the x axis. */ x?: Datum[] | TypedArray; - /** Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. */ + /** + * Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. + * @default 'x' + */ xaxis?: string; /** Set a group of histogram traces which will have compatible x-bin settings. Using `xbingroup`, histogram2d and histogram2dcontour traces (on axes of the same axis type) can have compatible x-bin settings. Note that the same `xbingroup` value can be used to set (1D) histogram `bingroup` */ xbingroup?: string; @@ -2878,13 +5156,19 @@ export interface Histogram2dcontourData { /** Sets the starting value for the x axis bins. Defaults to the minimum data value, shifted down if necessary to make nice round values and to remove ambiguous bin edges. For example, if most of the data is integers we shift the bin edges 0.5 down, so a `size` of 5 would have a default `start` of -0.5, so it is clear that 0-4 are in the first bin, 5-9 in the second, but continuous data gets a start of 0 and bins [0,5), [5,10) etc. Dates behave similarly, and `start` should be a date string. For category data, `start` is based on the category serial numbers, and defaults to -0.5. */ start?: any; }; - /** Sets the calendar system to use with `x` date data. */ + /** + * Sets the calendar system to use with `x` date data. + * @default 'gregorian' + */ xcalendar?: Calendar; /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; /** Sets the sample data to be binned on the y axis. */ y?: Datum[] | TypedArray; - /** Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. */ + /** + * Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. + * @default 'y' + */ yaxis?: string; /** Set a group of histogram traces which will have compatible y-bin settings. Using `ybingroup`, histogram2d and histogram2dcontour traces (on axes of the same axis type) can have compatible y-bin settings. Note that the same `ybingroup` value can be used to set (1D) histogram `bingroup` */ ybingroup?: string; @@ -2896,38 +5180,62 @@ export interface Histogram2dcontourData { /** Sets the starting value for the y axis bins. Defaults to the minimum data value, shifted down if necessary to make nice round values and to remove ambiguous bin edges. For example, if most of the data is integers we shift the bin edges 0.5 down, so a `size` of 5 would have a default `start` of -0.5, so it is clear that 0-4 are in the first bin, 5-9 in the second, but continuous data gets a start of 0 and bins [0,5), [5,10) etc. Dates behave similarly, and `start` should be a date string. For category data, `start` is based on the category serial numbers, and defaults to -0.5. */ start?: any; }; - /** Sets the calendar system to use with `y` date data. */ + /** + * Sets the calendar system to use with `y` date data. + * @default 'gregorian' + */ ycalendar?: Calendar; /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ yhoverformat?: string; /** Sets the aggregation data. */ z?: Datum[] | TypedArray; - /** Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. */ + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. + * @default true + */ zauto?: boolean; /** Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ zhoverformat?: string; - /** Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well. */ + /** + * Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well. + * Setting this also sets: zauto = false + */ zmax?: number; /** Sets the mid-point of the color domain by scaling `zmin` and/or `zmax` to be equidistant to this point. Value should have the same units as in `z`. Has no effect when `zauto` is `false`. */ zmid?: number; - /** Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well. */ + /** + * Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well. + * Setting this also sets: zauto = false + */ zmin?: number; } export interface IcicleData { - /** Determines how the items in `values` are summed. When set to *total*, items in `values` are taken to be value of all its descendants. When set to *remainder*, items in `values` corresponding to the root and the branches sectors are taken to be the extra part not part of the sum of the values at their leaves. */ + /** + * Determines how the items in `values` are summed. When set to *total*, items in `values` are taken to be value of all its descendants. When set to *remainder*, items in `values` corresponding to the root and the branches sectors are taken to be the extra part not part of the sum of the values at their leaves. + * @default 'remainder' + */ branchvalues?: 'remainder' | 'total'; - /** Determines default for `values` when it is not provided, by inferring a 1 for each of the *leaves* and/or *branches*, otherwise 0. */ + /** + * Determines default for `values` when it is not provided, by inferring a 1 for each of the *leaves* and/or *branches*, otherwise 0. + * @default 'leaves' + */ count?: 'branches' | 'leaves' | (string & {}); /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ customdata?: Datum[] | TypedArray; domain?: Domain; - /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'label+text+value+name' + */ hoverinfo?: 'label' | 'text' | 'value' | 'name' | 'current path' | 'percent root' | 'percent entry' | 'percent parent' | 'all' | 'none' | 'skip' | (string & {}) | ('label' | 'text' | 'value' | 'name' | 'current path' | 'percent root' | 'percent entry' | 'percent parent' | 'all' | 'none' | 'skip' | (string & {}))[]; hoverlabel?: HoverLabel; /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `currentPath`, `root`, `entry`, `percentRoot`, `percentEntry` and `percentParent`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ hovertemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ hovertemplatefallback?: any; /** Sets hover text elements associated with each sector. If a single string, the same string appears for all data points. If an array of string, the items are mapped in order of this trace's sectors. To be seen, trace `hoverinfo` must contain a *text* flag. */ hovertext?: string | string[]; @@ -2938,90 +5246,158 @@ export interface IcicleData { /** Sets the labels of each of the sectors. */ labels?: Datum[] | TypedArray; leaf?: { - /** Sets the opacity of the leaves. With colorscale it is defaulted to 1; otherwise it is defaulted to 0.7 */ + /** + * Sets the opacity of the leaves. With colorscale it is defaulted to 1; otherwise it is defaulted to 0.7 + * Range: [0, 1] + */ opacity?: number; }; - /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ legendrank?: number; - /** Sets the width (in px or fraction) of the legend for this trace. */ + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ legendwidth?: number; /** Sets the level from which this trace hierarchy is rendered. Set `level` to `''` to start from the root node in the hierarchy. Must be an "id" if `ids` is filled in, otherwise plotly attempts to find a matching item in `labels`. */ level?: any; marker?: { - /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if colors is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if colors is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ autocolorscale?: boolean; - /** Determines whether or not the color domain is computed with respect to the input data (here colors) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if colors is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. */ + /** + * Determines whether or not the color domain is computed with respect to the input data (here colors) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if colors is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. + * @default true + */ cauto?: boolean; - /** Sets the upper bound of the color domain. Has an effect only if colors is set to a numerical array. Value should have the same units as colors and if set, `marker.cmin` must be set as well. */ + /** + * Sets the upper bound of the color domain. Has an effect only if colors is set to a numerical array. Value should have the same units as colors and if set, `marker.cmin` must be set as well. + * Setting this also sets: cauto = false + */ cmax?: number; /** Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if colors is set to a numerical array. Value should have the same units as colors. Has no effect when `marker.cauto` is `false`. */ cmid?: number; - /** Sets the lower bound of the color domain. Has an effect only if colors is set to a numerical array. Value should have the same units as colors and if set, `marker.cmax` must be set as well. */ + /** + * Sets the lower bound of the color domain. Has an effect only if colors is set to a numerical array. Value should have the same units as colors and if set, `marker.cmax` must be set as well. + * Setting this also sets: cauto = false + */ cmin?: number; /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ coloraxis?: string; colorbar?: ColorBar; /** Sets the color of each sector of this trace. If not specified, the default trace color set is used to pick the sector colors. */ colors?: Datum[] | TypedArray; - /** Sets the colorscale. Has an effect only if colors is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + /** + * Sets the colorscale. Has an effect only if colors is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ colorscale?: ColorScale; - line?: Line; + line?: _internal.Line; /** Sets the pattern within the marker. */ pattern?: Pattern; - /** Reverses the color mapping if true. Has an effect only if colors is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. */ + /** + * Reverses the color mapping if true. Has an effect only if colors is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. + * @default false + */ reversescale?: boolean; - /** Determines whether or not a colorbar is displayed for this trace. Has an effect only if colors is set to a numerical array. */ + /** + * Determines whether or not a colorbar is displayed for this trace. Has an effect only if colors is set to a numerical array. + * @default false + */ showscale?: boolean; }; - /** Sets the number of rendered sectors from any given `level`. Set `maxdepth` to *-1* to render all the levels in the hierarchy. */ + /** + * Sets the number of rendered sectors from any given `level`. Set `maxdepth` to *-1* to render all the levels in the hierarchy. + * @default -1 + */ maxdepth?: number; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ meta?: any; /** Sets the trace name. The trace name appears as the legend item and on hover. */ name?: string; - /** Sets the opacity of the trace. */ + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ opacity?: number; /** Sets the font used for `textinfo` lying outside the sector. This option refers to the root of the hierarchy presented on top left corner of a treemap graph. Please note that if a hierarchy has multiple root nodes, this option won't have any effect and `insidetextfont` would be used. */ outsidetextfont?: FontArray; /** Sets the parent sectors for each of the sectors. Empty string items '' are understood to reference the root node in the hierarchy. If `ids` is filled, `parents` items are understood to be "ids" themselves. When `ids` is not set, plotly attempts to find matching items in `labels`, but beware they must be unique. */ parents?: Datum[] | TypedArray; pathbar?: { - /** Determines which shape is used for edges between `barpath` labels. */ + /** + * Determines which shape is used for edges between `barpath` labels. + * @default '>' + */ edgeshape?: '>' | '<' | '|' | '/' | '\\'; - /** Determines on which side of the treemap the `pathbar` should be presented. */ + /** + * Determines on which side of the treemap the `pathbar` should be presented. + * @default 'top' + */ side?: 'top' | 'bottom'; /** Sets the font used inside `pathbar`. */ textfont?: FontArray; - /** Sets the thickness of `pathbar` (in px). If not specified the `pathbar.textfont.size` is used with 3 pixles extra padding on each side. */ + /** + * Sets the thickness of `pathbar` (in px). If not specified the `pathbar.textfont.size` is used with 3 pixles extra padding on each side. + * Minimum: 12 + */ thickness?: number; - /** Determines if the path bar is drawn i.e. outside the trace `domain` and with one pixel gap. */ + /** + * Determines if the path bar is drawn i.e. outside the trace `domain` and with one pixel gap. + * @default true + */ visible?: boolean; }; root?: Font; - /** Determines whether or not the sectors are reordered from largest to smallest. */ + /** + * Determines whether or not the sectors are reordered from largest to smallest. + * @default true + */ sort?: boolean; - stream?: Stream; + stream?: _internal.Stream; /** Sets text elements associated with each sector. If trace `textinfo` contains a *text* flag, these elements will be seen on the chart. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ text?: Datum[] | TypedArray; /** Sets the font used for `textinfo`. */ textfont?: FontArray; /** Determines which trace information appear on the graph. */ textinfo?: 'label' | 'text' | 'value' | 'current path' | 'percent root' | 'percent entry' | 'percent parent' | 'none' | (string & {}); - /** Sets the positions of the `text` elements. */ + /** + * Sets the positions of the `text` elements. + * @default 'top left' + */ textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right'; /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `currentPath`, `root`, `entry`, `percentRoot`, `percentEntry`, `percentParent`, `label` and `value`. */ texttemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ texttemplatefallback?: any; tiling?: { /** Determines if the positions obtained from solver are flipped on each axis. */ flip?: 'x' | 'y' | (string & {}); - /** When set in conjunction with `tiling.flip`, determines on which side the root nodes are drawn in the chart. If `tiling.orientation` is *v* and `tiling.flip` is **, the root nodes appear at the top. If `tiling.orientation` is *v* and `tiling.flip` is *y*, the root nodes appear at the bottom. If `tiling.orientation` is *h* and `tiling.flip` is **, the root nodes appear at the left. If `tiling.orientation` is *h* and `tiling.flip` is *x*, the root nodes appear at the right. */ + /** + * When set in conjunction with `tiling.flip`, determines on which side the root nodes are drawn in the chart. If `tiling.orientation` is *v* and `tiling.flip` is **, the root nodes appear at the top. If `tiling.orientation` is *v* and `tiling.flip` is *y*, the root nodes appear at the bottom. If `tiling.orientation` is *h* and `tiling.flip` is **, the root nodes appear at the left. If `tiling.orientation` is *h* and `tiling.flip` is *x*, the root nodes appear at the right. + * @default 'h' + */ orientation?: 'v' | 'h'; - /** Sets the inner padding (in px). */ + /** + * Sets the inner padding (in px). + * @default 0 + * Minimum: 0 + */ pad?: number; }; type?: 'icicle'; @@ -3031,7 +5407,10 @@ export interface IcicleData { uirevision?: any; /** Sets the values associated with each of the sectors. Use with `branchvalues` to determine how the values are summed. */ values?: Datum[] | TypedArray; - /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; } @@ -3040,37 +5419,62 @@ export interface ImageData { colormodel?: 'rgb' | 'rgba' | 'rgba256' | 'hsl' | 'hsla'; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ customdata?: Datum[] | TypedArray; - /** Set the pixel's horizontal size. */ + /** + * Set the pixel's horizontal size. + * @default 1 + */ dx?: number; - /** Set the pixel's vertical size */ + /** + * Set the pixel's vertical size + * @default 1 + */ dy?: number; - /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'x+y+z+text+name' + */ hoverinfo?: 'x' | 'y' | 'z' | 'color' | 'name' | 'text' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'color' | 'name' | 'text' | 'all' | 'none' | 'skip' | (string & {}))[]; hoverlabel?: HoverLabel; /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `z`, `color` and `colormodel`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ hovertemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ hovertemplatefallback?: any; /** Same as `text`. */ hovertext?: Datum[] | TypedArray; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ ids?: Datum[] | TypedArray; - /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ legendrank?: number; - /** Sets the width (in px or fraction) of the legend for this trace. */ + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ legendwidth?: number; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ meta?: any; /** Sets the trace name. The trace name appears as the legend item and on hover. */ name?: string; - /** Sets the opacity of the trace. */ + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ opacity?: number; /** Specifies the data URI of the image to be visualized. The URI consists of "data:image/[][;base64\\]," */ source?: string; - stream?: Stream; + stream?: _internal.Stream; /** Sets the text elements associated with each z value. */ text?: Datum[] | TypedArray; type?: 'image'; @@ -3078,15 +5482,30 @@ export interface ImageData { uid?: string; /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ uirevision?: any; - /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; - /** Set the image's x position. The left edge of the image (or the right edge if the x axis is reversed or dx is negative) will be found at xmin=x0-dx/2 */ + /** + * Set the image's x position. The left edge of the image (or the right edge if the x axis is reversed or dx is negative) will be found at xmin=x0-dx/2 + * @default 0 + */ x0?: any; - /** Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. */ + /** + * Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. + * @default 'x' + */ xaxis?: string; - /** Set the image's y position. The top edge of the image (or the bottom edge if the y axis is NOT reversed or if dy is negative) will be found at ymin=y0-dy/2. By default when an image trace is included, the y axis will be reversed so that the image is right-side-up, but you can disable this by setting yaxis.autorange=true or by providing an explicit y axis range. */ + /** + * Set the image's y position. The top edge of the image (or the bottom edge if the y axis is NOT reversed or if dy is negative) will be found at ymin=y0-dy/2. By default when an image trace is included, the y axis will be reversed so that the image is right-side-up, but you can disable this by setting yaxis.autorange=true or by providing an explicit y axis range. + * @default 0 + */ y0?: any; - /** Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. */ + /** + * Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. + * @default 'y' + */ yaxis?: string; /** A 2-dimensional array in which each element is an array of 3 or 4 numbers representing a color. */ z?: Datum[] | TypedArray; @@ -3094,9 +5513,15 @@ export interface ImageData { zmax?: [number, number, number, number]; /** Array defining the lower bound for each color component. Note that the default value will depend on the colormodel. For the `rgb` colormodel, it is [0, 0, 0]. For the `rgba` colormodel, it is [0, 0, 0, 0]. For the `rgba256` colormodel, it is [0, 0, 0, 0]. For the `hsl` colormodel, it is [0, 0, 0]. For the `hsla` colormodel, it is [0, 0, 0, 0]. */ zmin?: [number, number, number, number]; - /** Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. */ + /** + * Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. + * @default 0 + */ zorder?: number; - /** Picks a smoothing algorithm used to smooth `z` data. This only applies for image traces that use the `source` attribute. */ + /** + * Picks a smoothing algorithm used to smooth `z` data. This only applies for image traces that use the `source` attribute. + * @default false + */ zsmooth?: 'fast' | false; } @@ -3107,26 +5532,44 @@ export interface IndicatorData { customdata?: Datum[] | TypedArray; delta?: { decreasing?: { - /** Sets the color for increasing value. */ + /** + * Sets the color for increasing value. + * @default '#FF4136' + */ color?: Color; - /** Sets the symbol to display for increasing value */ + /** + * Sets the symbol to display for increasing value + * @default '▼' + */ symbol?: string; }; /** Set the font used to display the delta */ font?: Font; increasing?: { - /** Sets the color for increasing value. */ + /** + * Sets the color for increasing value. + * @default '#3D9970' + */ color?: Color; - /** Sets the symbol to display for increasing value */ + /** + * Sets the symbol to display for increasing value + * @default '▲' + */ symbol?: string; }; - /** Sets the position of delta with respect to the number. */ + /** + * Sets the position of delta with respect to the number. + * @default 'bottom' + */ position?: 'top' | 'bottom' | 'left' | 'right'; /** Sets a prefix appearing before the delta. */ prefix?: string; /** Sets the reference value to compute the delta. By default, it is set to the current value. */ reference?: number; - /** Show relative change */ + /** + * Show relative change + * @default false + */ relative?: boolean; /** Sets a suffix appearing next to the delta. */ suffix?: string; @@ -3137,48 +5580,100 @@ export interface IndicatorData { /** The gauge of the Indicator plot. */ gauge?: { axis?: { - /** Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48* */ + /** + * Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48* + * Setting this also sets: tickmode = "linear" + */ dtick?: any; - /** Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from "femto" f (10^-15) to "tera" T (10^12). *SI extended* covers instead the full SI range from "quecto" q (10^-30) to "quetta" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation. */ + /** + * Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from "femto" f (10^-15) to "tera" T (10^12). *SI extended* covers instead the full SI range from "quecto" q (10^-30) to "quetta" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation. + * @default 'B' + */ exponentformat?: 'none' | 'e' | 'E' | 'power' | 'SI' | 'B' | 'SI extended'; - /** Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. */ + /** + * Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. + * @default false + */ labelalias?: any; - /** Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*. */ + /** + * Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*. + * @default 3 + * Minimum: 0 + */ minexponent?: number; - /** Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. */ + /** + * Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. + * @default 0 + * Minimum: 0 + */ nticks?: number; /** Sets the range of this axis. */ range?: [number, number]; - /** If "true", even 4-digit integers are separated */ + /** + * If "true", even 4-digit integers are separated + * @default false + */ separatethousands?: boolean; - /** If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. */ + /** + * If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. + * @default 'all' + */ showexponent?: 'all' | 'first' | 'last' | 'none'; - /** Determines whether or not the tick labels are drawn. */ + /** + * Determines whether or not the tick labels are drawn. + * @default true + */ showticklabels?: boolean; - /** If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. */ + /** + * If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. + * @default 'all' + */ showtickprefix?: 'all' | 'first' | 'last' | 'none'; - /** Same as `showtickprefix` but for tick suffixes. */ + /** + * Same as `showtickprefix` but for tick suffixes. + * @default 'all' + */ showticksuffix?: 'all' | 'first' | 'last' | 'none'; - /** Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears. */ + /** + * Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears. + * Setting this also sets: tickmode = "linear" + */ tick0?: any; - /** Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. */ + /** + * Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. + * @default 'auto' + */ tickangle?: number | 'auto'; - /** Sets the tick color. */ + /** + * Sets the tick color. + * @default '#444' + */ tickcolor?: Color; /** Sets the color bar's tick label font */ tickfont?: Font; /** Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ tickformat?: string; tickformatstops?: TickFormatStops[]; - /** Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*. */ + /** + * Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*. + * @default 1 + * Minimum: 1 + */ ticklabelstep?: number; - /** Sets the tick length (in px). */ + /** + * Sets the tick length (in px). + * @default 5 + * Minimum: 0 + */ ticklen?: number; /** Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). */ tickmode?: 'auto' | 'linear' | 'array'; /** Sets a tick label prefix. */ tickprefix?: string; - /** Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines. */ + /** + * Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines. + * @default 'outside' + */ ticks?: 'outside' | 'inside' | ''; /** Sets a tick label suffix. */ ticksuffix?: string; @@ -3186,60 +5681,107 @@ export interface IndicatorData { ticktext?: Datum[] | TypedArray; /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ tickvals?: Datum[] | TypedArray; - /** Sets the tick width (in px). */ + /** + * Sets the tick width (in px). + * @default 1 + * Minimum: 0 + */ tickwidth?: number; - /** A single toggle to hide the axis while preserving interaction like dragging. Default is true when a cheater plot is present on the axis, otherwise false */ + /** + * A single toggle to hide the axis while preserving interaction like dragging. Default is true when a cheater plot is present on the axis, otherwise false + * @default true + */ visible?: boolean; }; /** Set the appearance of the gauge's value */ bar?: { - /** Sets the background color of the arc. */ + /** + * Sets the background color of the arc. + * @default 'green' + */ color?: Color; - line?: ErrorY; - /** Sets the thickness of the bar as a fraction of the total thickness of the gauge. */ + line?: _internal.ErrorY; + /** + * Sets the thickness of the bar as a fraction of the total thickness of the gauge. + * @default 1 + * Range: [0, 1] + */ thickness?: number; }; /** Sets the gauge background color. */ bgcolor?: Color; - /** Sets the color of the border enclosing the gauge. */ + /** + * Sets the color of the border enclosing the gauge. + * @default '#444' + */ bordercolor?: Color; - /** Sets the width (in px) of the border enclosing the gauge. */ + /** + * Sets the width (in px) of the border enclosing the gauge. + * @default 1 + * Minimum: 0 + */ borderwidth?: number; - /** Set the shape of the gauge */ + /** + * Set the shape of the gauge + * @default 'angular' + */ shape?: 'angular' | 'bullet'; steps?: Array<{ /** Sets the background color of the arc. */ color?: Color; - line?: ErrorY; + line?: _internal.ErrorY; /** When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template. */ name?: string; /** Sets the range of this axis. */ range?: [number, number]; /** Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`. */ templateitemname?: string; - /** Sets the thickness of the bar as a fraction of the total thickness of the gauge. */ + /** + * Sets the thickness of the bar as a fraction of the total thickness of the gauge. + * @default 1 + * Range: [0, 1] + */ thickness?: number; }>; threshold?: { - line?: ErrorY; - /** Sets the thickness of the threshold line as a fraction of the thickness of the gauge. */ + line?: _internal.ErrorY; + /** + * Sets the thickness of the threshold line as a fraction of the thickness of the gauge. + * @default 0.85 + * Range: [0, 1] + */ thickness?: number; - /** Sets a treshold value drawn as a line. */ + /** + * Sets a treshold value drawn as a line. + * @default false + */ value?: number; }; }; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ ids?: Datum[] | TypedArray; - /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ legendrank?: number; - /** Sets the width (in px or fraction) of the legend for this trace. */ + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ legendwidth?: number; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ meta?: any; - /** Determines how the value is displayed on the graph. `number` displays the value numerically in text. `delta` displays the difference to a reference value in text. Finally, `gauge` displays the value graphically on an axis. */ + /** + * Determines how the value is displayed on the graph. `number` displays the value numerically in text. `delta` displays the difference to a reference value in text. Finally, `gauge` displays the value graphically on an axis. + * @default 'number' + */ mode?: 'number' | 'delta' | 'gauge' | (string & {}); /** Sets the trace name. The trace name appears as the legend item and on hover. */ name?: string; @@ -3253,7 +5795,7 @@ export interface IndicatorData { /** Sets the value formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. */ valueformat?: string; }; - stream?: Stream; + stream?: _internal.Stream; title?: { /** Sets the horizontal alignment of the title. It defaults to `center` except for bullet charts for which it defaults to right. */ align?: 'left' | 'center' | 'right'; @@ -3269,64 +5811,122 @@ export interface IndicatorData { uirevision?: any; /** Sets the number to be displayed. */ value?: number; - /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; } export interface IsosurfaceData { - /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ autocolorscale?: boolean; caps?: { x?: { - /** Sets the fill ratio of the `caps`. The default fill value of the `caps` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. */ + /** + * Sets the fill ratio of the `caps`. The default fill value of the `caps` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. + * @default 1 + * Range: [0, 1] + */ fill?: number; - /** Sets the fill ratio of the `slices`. The default fill value of the x `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. */ + /** + * Sets the fill ratio of the `slices`. The default fill value of the x `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. + * @default true + */ show?: boolean; }; y?: { - /** Sets the fill ratio of the `caps`. The default fill value of the `caps` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. */ + /** + * Sets the fill ratio of the `caps`. The default fill value of the `caps` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. + * @default 1 + * Range: [0, 1] + */ fill?: number; - /** Sets the fill ratio of the `slices`. The default fill value of the y `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. */ + /** + * Sets the fill ratio of the `slices`. The default fill value of the y `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. + * @default true + */ show?: boolean; }; z?: { - /** Sets the fill ratio of the `caps`. The default fill value of the `caps` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. */ + /** + * Sets the fill ratio of the `caps`. The default fill value of the `caps` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. + * @default 1 + * Range: [0, 1] + */ fill?: number; - /** Sets the fill ratio of the `slices`. The default fill value of the z `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. */ + /** + * Sets the fill ratio of the `slices`. The default fill value of the z `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. + * @default true + */ show?: boolean; }; }; - /** Determines whether or not the color domain is computed with respect to the input data (here `value`) or the bounds set in `cmin` and `cmax` Defaults to `false` when `cmin` and `cmax` are set by the user. */ + /** + * Determines whether or not the color domain is computed with respect to the input data (here `value`) or the bounds set in `cmin` and `cmax` Defaults to `false` when `cmin` and `cmax` are set by the user. + * @default true + */ cauto?: boolean; - /** Sets the upper bound of the color domain. Value should have the same units as `value` and if set, `cmin` must be set as well. */ + /** + * Sets the upper bound of the color domain. Value should have the same units as `value` and if set, `cmin` must be set as well. + * Setting this also sets: cauto = false + */ cmax?: number; /** Sets the mid-point of the color domain by scaling `cmin` and/or `cmax` to be equidistant to this point. Value should have the same units as `value`. Has no effect when `cauto` is `false`. */ cmid?: number; - /** Sets the lower bound of the color domain. Value should have the same units as `value` and if set, `cmax` must be set as well. */ + /** + * Sets the lower bound of the color domain. Value should have the same units as `value` and if set, `cmax` must be set as well. + * Setting this also sets: cauto = false + */ cmin?: number; /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ coloraxis?: string; colorbar?: ColorBar; - /** Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + /** + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ colorscale?: ColorScale; contour?: { - /** Sets the color of the contour lines. */ + /** + * Sets the color of the contour lines. + * @default '#444' + */ color?: Color; - /** Sets whether or not dynamic contours are shown on hover */ + /** + * Sets whether or not dynamic contours are shown on hover + * @default false + */ show?: boolean; - /** Sets the width of the contour lines. */ + /** + * Sets the width of the contour lines. + * @default 2 + * Range: [1, 16] + */ width?: number; }; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ customdata?: Datum[] | TypedArray; - /** Determines whether or not normal smoothing is applied to the meshes, creating meshes with an angular, low-poly look via flat reflections. */ + /** + * Determines whether or not normal smoothing is applied to the meshes, creating meshes with an angular, low-poly look via flat reflections. + * @default true + */ flatshading?: boolean; - /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; hoverlabel?: HoverLabel; /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ hovertemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ hovertemplatefallback?: any; /** Same as `text`. */ hovertext?: string | string[]; @@ -3336,79 +5936,167 @@ export interface IsosurfaceData { isomax?: number; /** Sets the minimum boundary for iso-surface plot. */ isomin?: number; - /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string; /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ legendgroup?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ legendrank?: number; - /** Sets the width (in px or fraction) of the legend for this trace. */ + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ legendwidth?: number; - lighting?: Lighting; + lighting?: _internal.Lighting; lightposition?: { - /** Numeric vector, representing the X coordinate for each vertex. */ + /** + * Numeric vector, representing the X coordinate for each vertex. + * @default 100000 + * Range: [-100000, 100000] + */ x?: number; - /** Numeric vector, representing the Y coordinate for each vertex. */ + /** + * Numeric vector, representing the Y coordinate for each vertex. + * @default 100000 + * Range: [-100000, 100000] + */ y?: number; - /** Numeric vector, representing the Z coordinate for each vertex. */ + /** + * Numeric vector, representing the Z coordinate for each vertex. + * @default 0 + * Range: [-100000, 100000] + */ z?: number; }; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ meta?: any; /** Sets the trace name. The trace name appears as the legend item and on hover. */ name?: string; - /** Sets the opacity of the surface. Please note that in the case of using high `opacity` values for example a value greater than or equal to 0.5 on two surfaces (and 0.25 with four surfaces), an overlay of multiple transparent surfaces may not perfectly be sorted in depth by the webgl API. This behavior may be improved in the near future and is subject to change. */ + /** + * Sets the opacity of the surface. Please note that in the case of using high `opacity` values for example a value greater than or equal to 0.5 on two surfaces (and 0.25 with four surfaces), an overlay of multiple transparent surfaces may not perfectly be sorted in depth by the webgl API. This behavior may be improved in the near future and is subject to change. + * @default 1 + * Range: [0, 1] + */ opacity?: number; - /** Reverses the color mapping if true. If true, `cmin` will correspond to the last color in the array and `cmax` will correspond to the first color. */ + /** + * Reverses the color mapping if true. If true, `cmin` will correspond to the last color in the array and `cmax` will correspond to the first color. + * @default false + */ reversescale?: boolean; - /** Sets a reference between this trace's 3D coordinate system and a 3D scene. If *scene* (the default value), the (x,y,z) coordinates refer to `layout.scene`. If *scene2*, the (x,y,z) coordinates refer to `layout.scene2`, and so on. */ + /** + * Sets a reference between this trace's 3D coordinate system and a 3D scene. If *scene* (the default value), the (x,y,z) coordinates refer to `layout.scene`. If *scene2*, the (x,y,z) coordinates refer to `layout.scene2`, and so on. + * @default 'scene' + */ scene?: string; - /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default false + */ showlegend?: boolean; - /** Determines whether or not a colorbar is displayed for this trace. */ + /** + * Determines whether or not a colorbar is displayed for this trace. + * @default true + */ showscale?: boolean; slices?: { x?: { - /** Sets the fill ratio of the `slices`. The default fill value of the `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. */ + /** + * Sets the fill ratio of the `slices`. The default fill value of the `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. + * @default 1 + * Range: [0, 1] + */ fill?: number; - /** Specifies the location(s) of slices on the axis. When not specified slices would be created for all points of the axis x except start and end. */ + /** + * Specifies the location(s) of slices on the axis. When not specified slices would be created for all points of the axis x except start and end. + * @default [] + */ locations?: Datum[] | TypedArray; - /** Determines whether or not slice planes about the x dimension are drawn. */ + /** + * Determines whether or not slice planes about the x dimension are drawn. + * @default false + */ show?: boolean; }; y?: { - /** Sets the fill ratio of the `slices`. The default fill value of the `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. */ + /** + * Sets the fill ratio of the `slices`. The default fill value of the `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. + * @default 1 + * Range: [0, 1] + */ fill?: number; - /** Specifies the location(s) of slices on the axis. When not specified slices would be created for all points of the axis y except start and end. */ + /** + * Specifies the location(s) of slices on the axis. When not specified slices would be created for all points of the axis y except start and end. + * @default [] + */ locations?: Datum[] | TypedArray; - /** Determines whether or not slice planes about the y dimension are drawn. */ + /** + * Determines whether or not slice planes about the y dimension are drawn. + * @default false + */ show?: boolean; }; z?: { - /** Sets the fill ratio of the `slices`. The default fill value of the `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. */ + /** + * Sets the fill ratio of the `slices`. The default fill value of the `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. + * @default 1 + * Range: [0, 1] + */ fill?: number; - /** Specifies the location(s) of slices on the axis. When not specified slices would be created for all points of the axis z except start and end. */ + /** + * Specifies the location(s) of slices on the axis. When not specified slices would be created for all points of the axis z except start and end. + * @default [] + */ locations?: Datum[] | TypedArray; - /** Determines whether or not slice planes about the z dimension are drawn. */ + /** + * Determines whether or not slice planes about the z dimension are drawn. + * @default false + */ show?: boolean; }; }; spaceframe?: { - /** Sets the fill ratio of the `spaceframe` elements. The default fill value is 0.15 meaning that only 15% of the area of every faces of tetras would be shaded. Applying a greater `fill` ratio would allow the creation of stronger elements or could be sued to have entirely closed areas (in case of using 1). */ + /** + * Sets the fill ratio of the `spaceframe` elements. The default fill value is 0.15 meaning that only 15% of the area of every faces of tetras would be shaded. Applying a greater `fill` ratio would allow the creation of stronger elements or could be sued to have entirely closed areas (in case of using 1). + * @default 0.15 + * Range: [0, 1] + */ fill?: number; - /** Displays/hides tetrahedron shapes between minimum and maximum iso-values. Often useful when either caps or surfaces are disabled or filled with values less than 1. */ + /** + * Displays/hides tetrahedron shapes between minimum and maximum iso-values. Often useful when either caps or surfaces are disabled or filled with values less than 1. + * @default false + */ show?: boolean; }; - stream?: Stream; + stream?: _internal.Stream; surface?: { - /** Sets the number of iso-surfaces between minimum and maximum iso-values. By default this value is 2 meaning that only minimum and maximum surfaces would be drawn. */ + /** + * Sets the number of iso-surfaces between minimum and maximum iso-values. By default this value is 2 meaning that only minimum and maximum surfaces would be drawn. + * @default 2 + * Minimum: 1 + */ count?: number; - /** Sets the fill ratio of the iso-surface. The default fill value of the surface is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. */ + /** + * Sets the fill ratio of the iso-surface. The default fill value of the surface is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. + * @default 1 + * Range: [0, 1] + */ fill?: number; - /** Sets the surface pattern of the iso-surface 3-D sections. The default pattern of the surface is `all` meaning that the rest of surface elements would be shaded. The check options (either 1 or 2) could be used to draw half of the squares on the surface. Using various combinations of capital `A`, `B`, `C`, `D` and `E` may also be used to reduce the number of triangles on the iso-surfaces and creating other patterns of interest. */ + /** + * Sets the surface pattern of the iso-surface 3-D sections. The default pattern of the surface is `all` meaning that the rest of surface elements would be shaded. The check options (either 1 or 2) could be used to draw half of the squares on the surface. Using various combinations of capital `A`, `B`, `C`, `D` and `E` may also be used to reduce the number of triangles on the iso-surfaces and creating other patterns of interest. + * @default 'all' + */ pattern?: 'A' | 'B' | 'C' | 'D' | 'E' | 'all' | 'odd' | 'even' | (string & {}); - /** Hides/displays surfaces between minimum and maximum iso-values. */ + /** + * Hides/displays surfaces between minimum and maximum iso-values. + * @default true + */ show?: boolean; }; /** Sets the text elements associated with the vertices. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ @@ -3422,7 +6110,10 @@ export interface IsosurfaceData { value?: Datum[] | TypedArray; /** Sets the hover text formatting rule for `value` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ valuehoverformat?: string; - /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; /** Sets the X coordinates of the vertices on X axis. */ x?: Datum[] | TypedArray; @@ -3439,47 +6130,87 @@ export interface IsosurfaceData { } export interface Mesh3dData { - /** Determines how the mesh surface triangles are derived from the set of vertices (points) represented by the `x`, `y` and `z` arrays, if the `i`, `j`, `k` arrays are not supplied. For general use of `mesh3d` it is preferred that `i`, `j`, `k` are supplied. If *-1*, Delaunay triangulation is used, which is mainly suitable if the mesh is a single, more or less layer surface that is perpendicular to `delaunayaxis`. In case the `delaunayaxis` intersects the mesh surface at more than one point it will result triangles that are very long in the dimension of `delaunayaxis`. If *>0*, the alpha-shape algorithm is used. In this case, the positive `alphahull` value signals the use of the alpha-shape algorithm, _and_ its value acts as the parameter for the mesh fitting. If *0*, the convex-hull algorithm is used. It is suitable for convex bodies or if the intention is to enclose the `x`, `y` and `z` point set into a convex hull. */ + /** + * Determines how the mesh surface triangles are derived from the set of vertices (points) represented by the `x`, `y` and `z` arrays, if the `i`, `j`, `k` arrays are not supplied. For general use of `mesh3d` it is preferred that `i`, `j`, `k` are supplied. If *-1*, Delaunay triangulation is used, which is mainly suitable if the mesh is a single, more or less layer surface that is perpendicular to `delaunayaxis`. In case the `delaunayaxis` intersects the mesh surface at more than one point it will result triangles that are very long in the dimension of `delaunayaxis`. If *>0*, the alpha-shape algorithm is used. In this case, the positive `alphahull` value signals the use of the alpha-shape algorithm, _and_ its value acts as the parameter for the mesh fitting. If *0*, the convex-hull algorithm is used. It is suitable for convex bodies or if the intention is to enclose the `x`, `y` and `z` point set into a convex hull. + * @default -1 + */ alphahull?: number; - /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ autocolorscale?: boolean; - /** Determines whether or not the color domain is computed with respect to the input data (here `intensity`) or the bounds set in `cmin` and `cmax` Defaults to `false` when `cmin` and `cmax` are set by the user. */ + /** + * Determines whether or not the color domain is computed with respect to the input data (here `intensity`) or the bounds set in `cmin` and `cmax` Defaults to `false` when `cmin` and `cmax` are set by the user. + * @default true + */ cauto?: boolean; - /** Sets the upper bound of the color domain. Value should have the same units as `intensity` and if set, `cmin` must be set as well. */ + /** + * Sets the upper bound of the color domain. Value should have the same units as `intensity` and if set, `cmin` must be set as well. + * Setting this also sets: cauto = false + */ cmax?: number; /** Sets the mid-point of the color domain by scaling `cmin` and/or `cmax` to be equidistant to this point. Value should have the same units as `intensity`. Has no effect when `cauto` is `false`. */ cmid?: number; - /** Sets the lower bound of the color domain. Value should have the same units as `intensity` and if set, `cmax` must be set as well. */ + /** + * Sets the lower bound of the color domain. Value should have the same units as `intensity` and if set, `cmax` must be set as well. + * Setting this also sets: cauto = false + */ cmin?: number; /** Sets the color of the whole mesh */ color?: Color; /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ coloraxis?: string; colorbar?: ColorBar; - /** Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + /** + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ colorscale?: ColorScale; contour?: { - /** Sets the color of the contour lines. */ + /** + * Sets the color of the contour lines. + * @default '#444' + */ color?: Color; - /** Sets whether or not dynamic contours are shown on hover */ + /** + * Sets whether or not dynamic contours are shown on hover + * @default false + */ show?: boolean; - /** Sets the width of the contour lines. */ + /** + * Sets the width of the contour lines. + * @default 2 + * Range: [1, 16] + */ width?: number; }; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ customdata?: Datum[] | TypedArray; - /** Sets the Delaunay axis, which is the axis that is perpendicular to the surface of the Delaunay triangulation. It has an effect if `i`, `j`, `k` are not provided and `alphahull` is set to indicate Delaunay triangulation. */ + /** + * Sets the Delaunay axis, which is the axis that is perpendicular to the surface of the Delaunay triangulation. It has an effect if `i`, `j`, `k` are not provided and `alphahull` is set to indicate Delaunay triangulation. + * @default 'z' + */ delaunayaxis?: 'x' | 'y' | 'z'; /** Sets the color of each face Overrides *color* and *vertexcolor*. */ facecolor?: Datum[] | TypedArray; - /** Determines whether or not normal smoothing is applied to the meshes, creating meshes with an angular, low-poly look via flat reflections. */ + /** + * Determines whether or not normal smoothing is applied to the meshes, creating meshes with an angular, low-poly look via flat reflections. + * @default false + */ flatshading?: boolean; - /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; hoverlabel?: HoverLabel; /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ hovertemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ hovertemplatefallback?: any; /** Same as `text`. */ hovertext?: string | string[]; @@ -3489,45 +6220,85 @@ export interface Mesh3dData { ids?: Datum[] | TypedArray; /** Sets the intensity values for vertices or cells as defined by `intensitymode`. It can be used for plotting fields on meshes. */ intensity?: Datum[] | TypedArray; - /** Determines the source of `intensity` values. */ + /** + * Determines the source of `intensity` values. + * @default 'vertex' + */ intensitymode?: 'vertex' | 'cell'; /** A vector of vertex indices, i.e. integer values between 0 and the length of the vertex vectors, representing the *second* vertex of a triangle. For example, `{i[m], j[m], k[m]}` together represent face m (triangle m) in the mesh, where `j[m] = n` points to the triplet `{x[n], y[n], z[n]}` in the vertex arrays. Therefore, each element in `j` represents a point in space, which is the second vertex of a triangle. */ j?: Datum[] | TypedArray; /** A vector of vertex indices, i.e. integer values between 0 and the length of the vertex vectors, representing the *third* vertex of a triangle. For example, `{i[m], j[m], k[m]}` together represent face m (triangle m) in the mesh, where `k[m] = n` points to the triplet `{x[n], y[n], z[n]}` in the vertex arrays. Therefore, each element in `k` represents a point in space, which is the third vertex of a triangle. */ k?: Datum[] | TypedArray; - /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string; /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ legendgroup?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ legendrank?: number; - /** Sets the width (in px or fraction) of the legend for this trace. */ + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ legendwidth?: number; - lighting?: Lighting; + lighting?: _internal.Lighting; lightposition?: { - /** Numeric vector, representing the X coordinate for each vertex. */ + /** + * Numeric vector, representing the X coordinate for each vertex. + * @default 100000 + * Range: [-100000, 100000] + */ x?: number; - /** Numeric vector, representing the Y coordinate for each vertex. */ + /** + * Numeric vector, representing the Y coordinate for each vertex. + * @default 100000 + * Range: [-100000, 100000] + */ y?: number; - /** Numeric vector, representing the Z coordinate for each vertex. */ + /** + * Numeric vector, representing the Z coordinate for each vertex. + * @default 0 + * Range: [-100000, 100000] + */ z?: number; }; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ meta?: any; /** Sets the trace name. The trace name appears as the legend item and on hover. */ name?: string; - /** Sets the opacity of the surface. Please note that in the case of using high `opacity` values for example a value greater than or equal to 0.5 on two surfaces (and 0.25 with four surfaces), an overlay of multiple transparent surfaces may not perfectly be sorted in depth by the webgl API. This behavior may be improved in the near future and is subject to change. */ + /** + * Sets the opacity of the surface. Please note that in the case of using high `opacity` values for example a value greater than or equal to 0.5 on two surfaces (and 0.25 with four surfaces), an overlay of multiple transparent surfaces may not perfectly be sorted in depth by the webgl API. This behavior may be improved in the near future and is subject to change. + * @default 1 + * Range: [0, 1] + */ opacity?: number; - /** Reverses the color mapping if true. If true, `cmin` will correspond to the last color in the array and `cmax` will correspond to the first color. */ + /** + * Reverses the color mapping if true. If true, `cmin` will correspond to the last color in the array and `cmax` will correspond to the first color. + * @default false + */ reversescale?: boolean; - /** Sets a reference between this trace's 3D coordinate system and a 3D scene. If *scene* (the default value), the (x,y,z) coordinates refer to `layout.scene`. If *scene2*, the (x,y,z) coordinates refer to `layout.scene2`, and so on. */ + /** + * Sets a reference between this trace's 3D coordinate system and a 3D scene. If *scene* (the default value), the (x,y,z) coordinates refer to `layout.scene`. If *scene2*, the (x,y,z) coordinates refer to `layout.scene2`, and so on. + * @default 'scene' + */ scene?: string; - /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default false + */ showlegend?: boolean; - /** Determines whether or not a colorbar is displayed for this trace. */ + /** + * Determines whether or not a colorbar is displayed for this trace. + * @default true + */ showscale?: boolean; - stream?: Stream; + stream?: _internal.Stream; /** Sets the text elements associated with the vertices. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ text?: string | string[]; type?: 'mesh3d'; @@ -3537,23 +6308,35 @@ export interface Mesh3dData { uirevision?: any; /** Sets the color of each vertex Overrides *color*. While Red, green and blue colors are in the range of 0 and 255; in the case of having vertex color data in RGBA format, the alpha color should be normalized to be between 0 and 1. */ vertexcolor?: Datum[] | TypedArray; - /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; /** Sets the X coordinates of the vertices. The nth element of vectors `x`, `y` and `z` jointly represent the X, Y and Z coordinates of the nth vertex. */ x?: Datum[] | TypedArray; - /** Sets the calendar system to use with `x` date data. */ + /** + * Sets the calendar system to use with `x` date data. + * @default 'gregorian' + */ xcalendar?: Calendar; /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; /** Sets the Y coordinates of the vertices. The nth element of vectors `x`, `y` and `z` jointly represent the X, Y and Z coordinates of the nth vertex. */ y?: Datum[] | TypedArray; - /** Sets the calendar system to use with `y` date data. */ + /** + * Sets the calendar system to use with `y` date data. + * @default 'gregorian' + */ ycalendar?: Calendar; /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ yhoverformat?: string; /** Sets the Z coordinates of the vertices. The nth element of vectors `x`, `y` and `z` jointly represent the X, Y and Z coordinates of the nth vertex. */ z?: Datum[] | TypedArray; - /** Sets the calendar system to use with `z` date data. */ + /** + * Sets the calendar system to use with `z` date data. + * @default 'gregorian' + */ zcalendar?: Calendar; /** Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`. */ zhoverformat?: string; @@ -3566,20 +6349,36 @@ export interface OhlcData { customdata?: Datum[] | TypedArray; decreasing?: { line?: { - /** Sets the line color. */ + /** + * Sets the line color. + * @default '#FF4136' + */ color?: Color; - /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ dash?: Dash; - /** Sets the line width (in px). */ + /** + * Sets the line width (in px). + * @default 2 + * Minimum: 0 + */ width?: number; }; }; /** Sets the high values. */ high?: Datum[] | TypedArray; - /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; hoverlabel?: { - /** Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines */ + /** + * Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines + * @default 'auto' + */ align?: 'left' | 'right' | 'auto' | ('left' | 'right' | 'auto')[]; /** Sets the background color of the hover labels for this trace */ bgcolor?: Color | Color[]; @@ -3587,16 +6386,29 @@ export interface OhlcData { bordercolor?: Color | Color[]; /** Sets the font used in hover labels. */ font?: FontArray; - /** Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis. */ + /** + * Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis. + * @default 15 + * Minimum: -1 + */ namelength?: number | number[]; - /** Sets whether or not to show the hover label arrow/triangle pointing to the data point. */ + /** + * Sets whether or not to show the hover label arrow/triangle pointing to the data point. + * @default true + */ showarrow?: boolean; - /** Show hover information (open, close, high, low) in separate labels, rather than a single unified label. Default: *false*. When set to *true*, `hovertemplate` is ignored. */ + /** + * Show hover information (open, close, high, low) in separate labels, rather than a single unified label. Default: *false*. When set to *true*, `hovertemplate` is ignored. + * @default false + */ split?: boolean; }; /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `open`, `high`, `low` and `close`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ hovertemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ hovertemplatefallback?: any; /** Same as `text`. */ hovertext?: string | string[]; @@ -3604,27 +6416,53 @@ export interface OhlcData { ids?: Datum[] | TypedArray; increasing?: { line?: { - /** Sets the line color. */ + /** + * Sets the line color. + * @default '#3D9970' + */ color?: Color; - /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ dash?: Dash; - /** Sets the line width (in px). */ + /** + * Sets the line width (in px). + * @default 2 + * Minimum: 0 + */ width?: number; }; }; - /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string; /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ legendgroup?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ legendrank?: number; - /** Sets the width (in px or fraction) of the legend for this trace. */ + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ legendwidth?: number; line?: { - /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). Note that this style setting can also be set per direction via `increasing.line.dash` and `decreasing.line.dash`. */ + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). Note that this style setting can also be set per direction via `increasing.line.dash` and `decreasing.line.dash`. + * @default 'solid' + */ dash?: Dash; - /** Sets the line width (in px). Note that this style setting can also be set per direction via `increasing.line.width` and `decreasing.line.width`. */ + /** + * Sets the line width (in px). Note that this style setting can also be set per direction via `increasing.line.width` and `decreasing.line.width`. + * @default 2 + * Minimum: 0 + */ width?: number; }; /** Sets the low values. */ @@ -3633,59 +6471,104 @@ export interface OhlcData { meta?: any; /** Sets the trace name. The trace name appears as the legend item and on hover. */ name?: string; - /** Sets the opacity of the trace. */ + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ opacity?: number; /** Sets the open values. */ open?: Datum[] | TypedArray; /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ selectedpoints?: any; - /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ showlegend?: boolean; - stream?: Stream; + stream?: _internal.Stream; /** Sets hover text elements associated with each sample point. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to this trace's sample points. */ text?: string | string[]; - /** Sets the width of the open/close tick marks relative to the *x* minimal interval. */ + /** + * Sets the width of the open/close tick marks relative to the *x* minimal interval. + * @default 0.3 + * Range: [0, 0.5] + */ tickwidth?: number; type?: 'ohlc'; /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ uid?: string; /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ uirevision?: any; - /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; /** Sets the x coordinates. If absent, linear coordinate will be generated. */ x?: Datum[] | TypedArray; - /** Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. */ + /** + * Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. + * @default 'x' + */ xaxis?: string; - /** Sets the calendar system to use with `x` date data. */ + /** + * Sets the calendar system to use with `x` date data. + * @default 'gregorian' + */ xcalendar?: Calendar; /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; - /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ + /** + * Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. + * @default 0 + */ xperiod?: any; /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the x0 axis. When `x0period` is round number of weeks, the `x0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ xperiod0?: any; - /** Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis. */ + /** + * Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis. + * @default 'middle' + */ xperiodalignment?: 'start' | 'middle' | 'end'; - /** Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. */ + /** + * Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. + * @default 'y' + */ yaxis?: string; /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ yhoverformat?: string; - /** Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. */ + /** + * Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. + * @default 0 + */ zorder?: number; } export interface ParcatsData { - /** Sets the drag interaction mode for categories and dimensions. If `perpendicular`, the categories can only move along a line perpendicular to the paths. If `freeform`, the categories can freely move on the plane. If `fixed`, the categories and dimensions are stationary. */ + /** + * Sets the drag interaction mode for categories and dimensions. If `perpendicular`, the categories can only move along a line perpendicular to the paths. If `freeform`, the categories can freely move on the plane. If `fixed`, the categories and dimensions are stationary. + * @default 'perpendicular' + */ arrangement?: 'perpendicular' | 'freeform' | 'fixed'; - /** Sort paths so that like colors are bundled together within each category. */ + /** + * Sort paths so that like colors are bundled together within each category. + * @default true + */ bundlecolors?: boolean; - /** The number of observations represented by each state. Defaults to 1 so that each state represents one observation */ + /** + * The number of observations represented by each state. Defaults to 1 so that each state represents one observation + * @default 1 + * Minimum: 0 + */ counts?: number | number[]; dimensions?: Array<{ /** Sets the order in which categories in this dimension appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`. */ categoryarray?: Datum[] | TypedArray; - /** Specifies the ordering logic for the categories in the dimension. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. */ + /** + * Specifies the ordering logic for the categories in the dimension. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. + * @default 'trace' + */ categoryorder?: 'trace' | 'category ascending' | 'category descending' | 'array'; /** The display index of dimension, from left to right, zero indexed, defaults to dimension index. */ displayindex?: number; @@ -3693,61 +6576,109 @@ export interface ParcatsData { label?: string; /** Sets alternative tick labels for the categories in this dimension. Only has an effect if `categoryorder` is set to *array*. Should be an array the same length as `categoryarray` Used with `categoryorder`. */ ticktext?: Datum[] | TypedArray; - /** Dimension values. `values[n]` represents the category value of the `n`th point in the dataset, therefore the `values` vector for all dimensions must be the same (longer vectors will be truncated). */ + /** + * Dimension values. `values[n]` represents the category value of the `n`th point in the dataset, therefore the `values` vector for all dimensions must be the same (longer vectors will be truncated). + * @default [] + */ values?: Datum[] | TypedArray; - /** Shows the dimension when set to `true` (the default). Hides the dimension for `false`. */ + /** + * Shows the dimension when set to `true` (the default). Hides the dimension for `false`. + * @default true + */ visible?: boolean; }>; domain?: Domain; - /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ hoverinfo?: 'count' | 'probability' | 'all' | 'none' | 'skip' | (string & {}); - /** Sets the hover interaction mode for the parcats diagram. If `category`, hover interaction take place per category. If `color`, hover interactions take place per color per category. If `dimension`, hover interactions take place across all categories per dimension. */ + /** + * Sets the hover interaction mode for the parcats diagram. If `category`, hover interaction take place per category. If `color`, hover interactions take place per color per category. If `dimension`, hover interactions take place across all categories per dimension. + * @default 'category' + */ hoveron?: 'category' | 'color' | 'dimension'; /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `count`, `probability`, `category`, `categorycount`, `colorcount` and `bandcolorcount`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ hovertemplate?: string; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ hovertemplatefallback?: any; /** Sets the font for the `dimension` labels. */ labelfont?: Font; legendgrouptitle?: LegendGroupTitle; - /** Sets the width (in px or fraction) of the legend for this trace. */ + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ legendwidth?: number; line?: { - /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `line.colorscale`. Has an effect only if in `line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `line.colorscale`. Has an effect only if in `line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ autocolorscale?: boolean; - /** Determines whether or not the color domain is computed with respect to the input data (here in `line.color`) or the bounds set in `line.cmin` and `line.cmax` Has an effect only if in `line.color` is set to a numerical array. Defaults to `false` when `line.cmin` and `line.cmax` are set by the user. */ + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `line.color`) or the bounds set in `line.cmin` and `line.cmax` Has an effect only if in `line.color` is set to a numerical array. Defaults to `false` when `line.cmin` and `line.cmax` are set by the user. + * @default true + */ cauto?: boolean; - /** Sets the upper bound of the color domain. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color` and if set, `line.cmin` must be set as well. */ + /** + * Sets the upper bound of the color domain. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color` and if set, `line.cmin` must be set as well. + * Setting this also sets: cauto = false + */ cmax?: number; /** Sets the mid-point of the color domain by scaling `line.cmin` and/or `line.cmax` to be equidistant to this point. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color`. Has no effect when `line.cauto` is `false`. */ cmid?: number; - /** Sets the lower bound of the color domain. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color` and if set, `line.cmax` must be set as well. */ + /** + * Sets the lower bound of the color domain. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color` and if set, `line.cmax` must be set as well. + * Setting this also sets: cauto = false + */ cmin?: number; /** Sets the line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `line.cmin` and `line.cmax` if set. */ color?: Color | Color[]; /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ coloraxis?: string; colorbar?: ColorBar; - /** Sets the colorscale. Has an effect only if in `line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `line.cmin` and `line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + /** + * Sets the colorscale. Has an effect only if in `line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `line.cmin` and `line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ colorscale?: ColorScale; /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `count` and `probability`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ hovertemplate?: string; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ hovertemplatefallback?: any; - /** Reverses the color mapping if true. Has an effect only if in `line.color` is set to a numerical array. If true, `line.cmin` will correspond to the last color in the array and `line.cmax` will correspond to the first color. */ + /** + * Reverses the color mapping if true. Has an effect only if in `line.color` is set to a numerical array. If true, `line.cmin` will correspond to the last color in the array and `line.cmax` will correspond to the first color. + * @default false + */ reversescale?: boolean; - /** Sets the shape of the paths. If `linear`, paths are composed of straight lines. If `hspline`, paths are composed of horizontal curved splines */ + /** + * Sets the shape of the paths. If `linear`, paths are composed of straight lines. If `hspline`, paths are composed of horizontal curved splines + * @default 'linear' + */ shape?: 'linear' | 'hspline'; - /** Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `line.color` is set to a numerical array. */ + /** + * Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `line.color` is set to a numerical array. + * @default false + */ showscale?: boolean; }; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ meta?: any; /** Sets the trace name. The trace name appears as the legend item and on hover. */ name?: string; - /** Sets the path sorting algorithm. If `forward`, sort paths based on dimension categories from left to right. If `backward`, sort paths based on dimensions categories from right to left. */ + /** + * Sets the path sorting algorithm. If `forward`, sort paths based on dimension categories from left to right. If `backward`, sort paths based on dimensions categories from right to left. + * @default 'forward' + */ sortpaths?: 'forward' | 'backward'; - stream?: Stream; + stream?: _internal.Stream; /** Sets the font for the `category` labels. */ tickfont?: Font; type?: 'parcats'; @@ -3755,7 +6686,10 @@ export interface ParcatsData { uid?: string; /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ uirevision?: any; - /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; } @@ -3767,7 +6701,10 @@ export interface ParcoordsData { constraintrange?: any[]; /** The shown name of the dimension. */ label?: string; - /** Do we allow multiple selection ranges or just a single range? */ + /** + * Do we allow multiple selection ranges or just a single range? + * @default true + */ multiselect?: boolean; /** When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template. */ name?: string; @@ -3783,46 +6720,86 @@ export interface ParcoordsData { tickvals?: Datum[] | TypedArray; /** Dimension values. `values[n]` represents the value of the `n`th point in the dataset, therefore the `values` vector for all dimensions must be the same (longer vectors will be truncated). Each value must be a finite number. */ values?: Datum[] | TypedArray; - /** Shows the dimension when set to `true` (the default). Hides the dimension for `false`. */ + /** + * Shows the dimension when set to `true` (the default). Hides the dimension for `false`. + * @default true + */ visible?: boolean; }>; domain?: Domain; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ ids?: Datum[] | TypedArray; - /** Sets the angle of the labels with respect to the horizontal. For example, a `tickangle` of -90 draws the labels vertically. Tilted labels with *labelangle* may be positioned better inside margins when `labelposition` is set to *bottom*. */ + /** + * Sets the angle of the labels with respect to the horizontal. For example, a `tickangle` of -90 draws the labels vertically. Tilted labels with *labelangle* may be positioned better inside margins when `labelposition` is set to *bottom*. + * @default 0 + */ labelangle?: number | 'auto'; /** Sets the font for the `dimension` labels. */ labelfont?: Font; - /** Specifies the location of the `label`. *top* positions labels above, next to the title *bottom* positions labels below the graph Tilted labels with *labelangle* may be positioned better inside margins when `labelposition` is set to *bottom*. */ + /** + * Specifies the location of the `label`. *top* positions labels above, next to the title *bottom* positions labels below the graph Tilted labels with *labelangle* may be positioned better inside margins when `labelposition` is set to *bottom*. + * @default 'top' + */ labelside?: 'top' | 'bottom'; - /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ legendrank?: number; - /** Sets the width (in px or fraction) of the legend for this trace. */ + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ legendwidth?: number; line?: { - /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `line.colorscale`. Has an effect only if in `line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `line.colorscale`. Has an effect only if in `line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default false + */ autocolorscale?: boolean; - /** Determines whether or not the color domain is computed with respect to the input data (here in `line.color`) or the bounds set in `line.cmin` and `line.cmax` Has an effect only if in `line.color` is set to a numerical array. Defaults to `false` when `line.cmin` and `line.cmax` are set by the user. */ + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `line.color`) or the bounds set in `line.cmin` and `line.cmax` Has an effect only if in `line.color` is set to a numerical array. Defaults to `false` when `line.cmin` and `line.cmax` are set by the user. + * @default true + */ cauto?: boolean; - /** Sets the upper bound of the color domain. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color` and if set, `line.cmin` must be set as well. */ + /** + * Sets the upper bound of the color domain. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color` and if set, `line.cmin` must be set as well. + * Setting this also sets: cauto = false + */ cmax?: number; /** Sets the mid-point of the color domain by scaling `line.cmin` and/or `line.cmax` to be equidistant to this point. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color`. Has no effect when `line.cauto` is `false`. */ cmid?: number; - /** Sets the lower bound of the color domain. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color` and if set, `line.cmax` must be set as well. */ + /** + * Sets the lower bound of the color domain. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color` and if set, `line.cmax` must be set as well. + * Setting this also sets: cauto = false + */ cmin?: number; /** Sets the line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `line.cmin` and `line.cmax` if set. */ color?: Color | Color[]; /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ coloraxis?: string; colorbar?: ColorBar; - /** Sets the colorscale. Has an effect only if in `line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `line.cmin` and `line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + /** + * Sets the colorscale. Has an effect only if in `line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `line.cmin` and `line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * @default [[0,"#440154"],[0.06274509803921569,"#48186a"],[0.12549019607843137,"#472d7b"],[0.18823529411764706,"#424086"],[0.25098039215686274,"#3b528b"],[0.3137254901960784,"#33638d"],[0.3764705882352941,"#2c728e"],[0.4392156862745098,"#26828e"],[0.5019607843137255,"#21918c"],[0.5647058823529412,"#1fa088"],[0.6274509803921569,"#28ae80"],[0.6901960784313725,"#3fbc73"],[0.7529411764705882,"#5ec962"],[0.8156862745098039,"#84d44b"],[0.8784313725490196,"#addc30"],[0.9411764705882353,"#d8e219"],[1,"#fde725"]] + * Setting this also sets: autocolorscale = false + */ colorscale?: ColorScale; - /** Reverses the color mapping if true. Has an effect only if in `line.color` is set to a numerical array. If true, `line.cmin` will correspond to the last color in the array and `line.cmax` will correspond to the first color. */ + /** + * Reverses the color mapping if true. Has an effect only if in `line.color` is set to a numerical array. If true, `line.cmin` will correspond to the last color in the array and `line.cmax` will correspond to the first color. + * @default false + */ reversescale?: boolean; - /** Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `line.color` is set to a numerical array. */ + /** + * Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `line.color` is set to a numerical array. + * @default false + */ showscale?: boolean; }; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ @@ -3831,7 +6808,7 @@ export interface ParcoordsData { name?: string; /** Sets the font for the `dimension` range values. */ rangefont?: Font; - stream?: Stream; + stream?: _internal.Stream; /** Sets the font for the `dimension` tick values. */ tickfont?: Font; type?: 'parcoords'; @@ -3841,34 +6818,63 @@ export interface ParcoordsData { uirevision?: any; unselected?: { line?: { - /** Sets the base color of unselected lines. in connection with `unselected.line.opacity`. */ + /** + * Sets the base color of unselected lines. in connection with `unselected.line.opacity`. + * @default '#7f7f7f' + */ color?: Color; - /** Sets the opacity of unselected lines. The default *auto* decreases the opacity smoothly as the number of lines increases. Use *1* to achieve exact `unselected.line.color`. */ + /** + * Sets the opacity of unselected lines. The default *auto* decreases the opacity smoothly as the number of lines increases. Use *1* to achieve exact `unselected.line.color`. + * @default 'auto' + * Range: [0, 1] + */ opacity?: number; }; }; - /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; } export interface PieData { - /** Determines whether outside text labels can push the margins. */ + /** + * Determines whether outside text labels can push the margins. + * @default false + */ automargin?: boolean; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ customdata?: Datum[] | TypedArray; - /** Specifies the direction at which succeeding sectors follow one another. */ + /** + * Specifies the direction at which succeeding sectors follow one another. + * @default 'counterclockwise' + */ direction?: 'clockwise' | 'counterclockwise'; - /** Sets the label step. See `label0` for more info. */ + /** + * Sets the label step. See `label0` for more info. + * @default 1 + */ dlabel?: number; domain?: Domain; - /** Sets the fraction of the radius to cut out of the pie. Use this to make a donut chart. */ + /** + * Sets the fraction of the radius to cut out of the pie. Use this to make a donut chart. + * @default 0 + * Range: [0, 1] + */ hole?: number; - /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ hoverinfo?: 'label' | 'text' | 'value' | 'percent' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('label' | 'text' | 'value' | 'percent' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; hoverlabel?: HoverLabel; /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `label`, `color`, `value`, `percent` and `text`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ hovertemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ hovertemplatefallback?: any; /** Sets hover text elements associated with each sector. If a single string, the same string appears for all data points. If an array of string, the items are mapped in order of this trace's sectors. To be seen, trace `hoverinfo` must contain a *text* flag. */ hovertext?: string | string[]; @@ -3876,25 +6882,40 @@ export interface PieData { ids?: Datum[] | TypedArray; /** Sets the font used for `textinfo` lying inside the sector. */ insidetextfont?: FontArray; - /** Controls the orientation of the text inside chart sectors. When set to *auto*, text may be oriented in any direction in order to be as big as possible in the middle of a sector. The *horizontal* option orients text to be parallel with the bottom of the chart, and may make text smaller in order to achieve that goal. The *radial* option orients text along the radius of the sector. The *tangential* option orients text perpendicular to the radius of the sector. */ + /** + * Controls the orientation of the text inside chart sectors. When set to *auto*, text may be oriented in any direction in order to be as big as possible in the middle of a sector. The *horizontal* option orients text to be parallel with the bottom of the chart, and may make text smaller in order to achieve that goal. The *radial* option orients text along the radius of the sector. The *tangential* option orients text perpendicular to the radius of the sector. + * @default 'auto' + */ insidetextorientation?: 'horizontal' | 'radial' | 'tangential' | 'auto'; - /** Alternate to `labels`. Builds a numeric set of labels. Use with `dlabel` where `label0` is the starting label and `dlabel` the step. */ + /** + * Alternate to `labels`. Builds a numeric set of labels. Use with `dlabel` where `label0` is the starting label and `dlabel` the step. + * @default 0 + */ label0?: number; /** Sets the sector labels. If `labels` entries are duplicated, we sum associated `values` or simply count occurrences if `values` is not provided. For other array attributes (including color) we use the first non-empty entry among all occurrences of the label. */ labels?: Datum[] | TypedArray; - /** Sets the reference to a legend to show the pie slices in. Can be an array if `values` is set. In that case, each entry specifies the legend reference for one slice. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show the pie slices in. Can be an array if `values` is set. In that case, each entry specifies the legend reference for one slice. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string | string[]; /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ legendgroup?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for this pie. If passed as an array, this will set the legend rank of the individual pie slices. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + /** + * Sets the legend rank for this pie. If passed as an array, this will set the legend rank of the individual pie slices. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ legendrank?: number | number[]; - /** Sets the width (in px or fraction) of the legend for this trace. */ + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ legendwidth?: number; marker?: { /** Sets the color of each sector. If not specified, the default trace color set is used to pick the sector colors. */ colors?: Datum[] | TypedArray; - line?: Line; + line?: _internal.Line; /** Sets the pattern within the marker. */ pattern?: Pattern; }; @@ -3902,32 +6923,55 @@ export interface PieData { meta?: any; /** Sets the trace name. The trace name appears as the legend item and on hover. */ name?: string; - /** Sets the opacity of the trace. */ + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ opacity?: number; /** Sets the font used for `textinfo` lying outside the sector. */ outsidetextfont?: FontArray; - /** Sets the fraction of larger radius to pull the sectors out from the center. This can be a constant to pull all slices apart from each other equally or an array to highlight one or more slices. */ + /** + * Sets the fraction of larger radius to pull the sectors out from the center. This can be a constant to pull all slices apart from each other equally or an array to highlight one or more slices. + * @default 0 + * Range: [0, 1] + */ pull?: number | number[]; - /** Instead of the first slice starting at 12 o'clock, rotate to some other angle. */ + /** + * Instead of the first slice starting at 12 o'clock, rotate to some other angle. + * @default 0 + */ rotation?: number | 'auto'; /** If there are multiple pie charts that should be sized according to their totals, link them by providing a non-empty group id here shared by every trace in the same group. */ scalegroup?: string; - /** Determines whether or not items corresponding to the pie slices are shown in the legend. Can be an array if `values` is set. In that case, each entry specifies appearance in the legend for one slice. */ + /** + * Determines whether or not items corresponding to the pie slices are shown in the legend. Can be an array if `values` is set. In that case, each entry specifies appearance in the legend for one slice. + * @default true + */ showlegend?: boolean | boolean[]; - /** Determines whether or not the sectors are reordered from largest to smallest. */ + /** + * Determines whether or not the sectors are reordered from largest to smallest. + * @default true + */ sort?: boolean; - stream?: Stream; + stream?: _internal.Stream; /** Sets text elements associated with each sector. If trace `textinfo` contains a *text* flag, these elements will be seen on the chart. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ text?: Datum[] | TypedArray; /** Sets the font used for `textinfo`. */ textfont?: FontArray; /** Determines which trace information appear on the graph. */ textinfo?: 'label' | 'text' | 'value' | 'percent' | 'none' | (string & {}); - /** Specifies the location of the `textinfo`. */ + /** + * Specifies the location of the `textinfo`. + * @default 'auto' + */ textposition?: 'inside' | 'outside' | 'auto' | 'none' | ('inside' | 'outside' | 'auto' | 'none')[]; /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `label`, `color`, `value`, `percent` and `text`. */ texttemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ texttemplatefallback?: any; title?: { /** Sets the font used for `title`. */ @@ -3944,40 +6988,72 @@ export interface PieData { uirevision?: any; /** Sets the values of the sectors. If omitted, we count occurrences of each label. */ values?: Datum[] | TypedArray; - /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; } export interface SankeyData { - /** If value is `snap` (the default), the node arrangement is assisted by automatic snapping of elements to preserve space between nodes specified via `nodepad`. If value is `perpendicular`, the nodes can only move along a line perpendicular to the flow. If value is `freeform`, the nodes can freely move on the plane. If value is `fixed`, the nodes are stationary. */ + /** + * If value is `snap` (the default), the node arrangement is assisted by automatic snapping of elements to preserve space between nodes specified via `nodepad`. If value is `perpendicular`, the nodes can only move along a line perpendicular to the flow. If value is `freeform`, the nodes can freely move on the plane. If value is `fixed`, the nodes are stationary. + * @default 'snap' + */ arrangement?: 'snap' | 'perpendicular' | 'freeform' | 'fixed'; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ customdata?: Datum[] | TypedArray; domain?: Domain; - /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. Note that this attribute is superseded by `node.hoverinfo` and `node.hoverinfo` for nodes and links respectively. */ + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. Note that this attribute is superseded by `node.hoverinfo` and `node.hoverinfo` for nodes and links respectively. + * @default 'all' + */ hoverinfo?: 'all' | 'none' | 'skip' | (string & {}); hoverlabel?: HoverLabel; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ ids?: Datum[] | TypedArray; - /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ legendrank?: number; - /** Sets the width (in px or fraction) of the legend for this trace. */ + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ legendwidth?: number; /** The links of the Sankey plot. */ link?: { - /** Sets the length (in px) of the links arrow, if 0 no arrow will be drawn. */ + /** + * Sets the length (in px) of the links arrow, if 0 no arrow will be drawn. + * @default 0 + * Minimum: 0 + */ arrowlen?: number; /** Sets the `link` color. It can be a single value, or an array for specifying color for each `link`. If `link.color` is omitted, then by default, a translucent grey link will be used. */ color?: Color | Color[]; colorscales?: Array<{ - /** Sets the upper bound of the color domain. */ + /** + * Sets the upper bound of the color domain. + * @default 1 + */ cmax?: number; - /** Sets the lower bound of the color domain. */ + /** + * Sets the lower bound of the color domain. + * @default 0 + */ cmin?: number; - /** Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + /** + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * @default [[0,"white"],[1,"black"]] + * Setting this also sets: autocolorscale = false + */ colorscale?: ColorScale; /** The label of the links to color based on their concentration within a flow. */ label?: string; @@ -3990,21 +7066,39 @@ export interface SankeyData { customdata?: Datum[] | TypedArray; /** Sets the `link` hover color. It can be a single value, or an array for specifying hover colors for each `link`. If `link.hovercolor` is omitted, then by default, links will become slightly more opaque when hovered over. */ hovercolor?: Color | Color[]; - /** Determines which trace information appear when hovering links. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + /** + * Determines which trace information appear when hovering links. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ hoverinfo?: 'all' | 'none' | 'skip'; hoverlabel?: HoverLabel; /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `value` and `label`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ hovertemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ hovertemplatefallback?: any; - /** The shown name of the link. */ + /** + * The shown name of the link. + * @default [] + */ label?: Datum[] | TypedArray; - line?: Line; - /** An integer number `[0..nodes.length - 1]` that represents the source node. */ + line?: _internal.Line; + /** + * An integer number `[0..nodes.length - 1]` that represents the source node. + * @default [] + */ source?: Datum[] | TypedArray; - /** An integer number `[0..nodes.length - 1]` that represents the target node. */ + /** + * An integer number `[0..nodes.length - 1]` that represents the target node. + * @default [] + */ target?: Datum[] | TypedArray; - /** A numeric value representing the flow volume value. */ + /** + * A numeric value representing the flow volume value. + * @default [] + */ value?: Datum[] | TypedArray; }; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ @@ -4013,38 +7107,71 @@ export interface SankeyData { name?: string; /** The nodes of the Sankey plot. */ node?: { - /** Sets the alignment method used to position the nodes along the horizontal axis. */ + /** + * Sets the alignment method used to position the nodes along the horizontal axis. + * @default 'justify' + */ align?: 'justify' | 'left' | 'right' | 'center'; /** Sets the `node` color. It can be a single value, or an array for specifying color for each `node`. If `node.color` is omitted, then the default `Plotly` color palette will be cycled through to have a variety of colors. These defaults are not fully opaque, to allow some visibility of what is beneath the node. */ color?: Color | Color[]; /** Assigns extra data to each node. */ customdata?: Datum[] | TypedArray; - /** Groups of nodes. Each group is defined by an array with the indices of the nodes it contains. Multiple groups can be specified. */ + /** + * Groups of nodes. Each group is defined by an array with the indices of the nodes it contains. Multiple groups can be specified. + * @default [] + * Setting this also sets: x = [], y = [] + */ groups?: number[]; - /** Determines which trace information appear when hovering nodes. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + /** + * Determines which trace information appear when hovering nodes. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ hoverinfo?: 'all' | 'none' | 'skip'; hoverlabel?: HoverLabel; /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `value` and `label`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ hovertemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ hovertemplatefallback?: any; - /** The shown name of the node. */ + /** + * The shown name of the node. + * @default [] + */ label?: Datum[] | TypedArray; - line?: Line; - /** Sets the padding (in px) between the `nodes`. */ + line?: _internal.Line; + /** + * Sets the padding (in px) between the `nodes`. + * @default 20 + * Minimum: 0 + */ pad?: number; - /** Sets the thickness (in px) of the `nodes`. */ + /** + * Sets the thickness (in px) of the `nodes`. + * @default 20 + * Minimum: 1 + */ thickness?: number; - /** The normalized horizontal position of the node. */ + /** + * The normalized horizontal position of the node. + * @default [] + */ x?: Datum[] | TypedArray; - /** The normalized vertical position of the node. */ + /** + * The normalized vertical position of the node. + * @default [] + */ y?: Datum[] | TypedArray; }; - /** Sets the orientation of the Sankey diagram. */ + /** + * Sets the orientation of the Sankey diagram. + * @default 'h' + */ orientation?: 'v' | 'h'; /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ selectedpoints?: any; - stream?: Stream; + stream?: _internal.Stream; /** Sets the font for node labels */ textfont?: Font; type?: 'sankey'; @@ -4052,26 +7179,44 @@ export interface SankeyData { uid?: string; /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ uirevision?: any; - /** Sets the value formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. */ + /** + * Sets the value formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. + * @default '.3s' + */ valueformat?: string; /** Adds a unit to follow the value in the hover tooltip. Add a space if a separation is necessary from the value. */ valuesuffix?: string; - /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; } export interface ScatterData { /** Set several traces linked to the same position axis or matching axes to the same alignmentgroup. This controls whether bars compute their positional range dependently or independently. */ alignmentgroup?: string; - /** Determines whether or not markers and text nodes are clipped about the subplot axes. To show markers and text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*. */ + /** + * Determines whether or not markers and text nodes are clipped about the subplot axes. To show markers and text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*. + * @default true + */ cliponaxis?: boolean; - /** Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected. */ + /** + * Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected. + * @default false + */ connectgaps?: boolean; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ customdata?: Datum[] | TypedArray; - /** Sets the x coordinate step. See `x0` for more info. */ + /** + * Sets the x coordinate step. See `x0` for more info. + * @default 1 + */ dx?: number; - /** Sets the y coordinate step. See `y0` for more info. */ + /** + * Sets the y coordinate step. See `y0` for more info. + * @default 1 + */ dy?: number; error_x?: { /** Sets the data corresponding the length of each error bar. Values are plotted relative to the underlying data. */ @@ -4083,22 +7228,45 @@ export interface ScatterData { copy_ystyle?: boolean; /** Determines whether or not the error bars have the same length in both direction (top/bottom for vertical bars, left/right for horizontal bars. */ symmetric?: boolean; - /** Sets the thickness (in px) of the error bars. */ + /** + * Sets the thickness (in px) of the error bars. + * @default 2 + * Minimum: 0 + */ thickness?: number; + /** + * @default 0 + * Minimum: 0 + */ traceref?: number; + /** + * @default 0 + * Minimum: 0 + */ tracerefminus?: number; /** Determines the rule used to generate the error bars. If *constant*, the bar lengths are of a constant value. Set this constant in `value`. If *percent*, the bar lengths correspond to a percentage of underlying data. Set this percentage in `value`. If *sqrt*, the bar lengths correspond to the square of the underlying data. If *data*, the bar lengths are set with data set `array`. */ type?: 'percent' | 'constant' | 'sqrt' | 'data'; - /** Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars. */ + /** + * Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars. + * @default 10 + * Minimum: 0 + */ value?: number; - /** Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars in the bottom (left) direction for vertical (horizontal) bars */ + /** + * Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars in the bottom (left) direction for vertical (horizontal) bars + * @default 10 + * Minimum: 0 + */ valueminus?: number; /** Determines whether or not this set of error bars is visible. */ visible?: boolean; - /** Sets the width (in px) of the cross-bar at both ends of the error bars. */ + /** + * Sets the width (in px) of the cross-bar at both ends of the error bars. + * Minimum: 0 + */ width?: number; }; - error_y?: ErrorY; + error_y?: _internal.ErrorY; /** Sets the area to fill with a solid color. Defaults to *none* unless this trace is stacked, then it gets *tonexty* (*tonextx*) if `orientation` is *v* (*h*) Use with `fillcolor` if not *none*. *tozerox* and *tozeroy* fill to x=0 and y=0 respectively. *tonextx* and *tonexty* fill between the endpoints of this trace and the endpoints of the trace before it, connecting those endpoints with straight lines (to make a stacked area graph); if there is no trace before it, they behave like *tozerox* and *tozeroy*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other. Traces in a `stackgroup` will only fill to (or be filled to) other traces in the same group. With multiple `stackgroup`s or some traces stacked and some not, if fill-linked traces are not already consecutive, the later ones will be pushed down in the drawing order. */ fill?: 'none' | 'tozeroy' | 'tozerox' | 'tonexty' | 'tonextx' | 'toself' | 'tonext'; /** Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. If fillgradient is specified, fillcolor is ignored except for setting the background color of the hover label, if any. */ @@ -4111,52 +7279,91 @@ export interface ScatterData { start?: number; /** Sets the gradient end value. It is given as the absolute position on the axis determined by the orientiation. E.g., if orientation is *horizontal*, the gradient will be horizontal and end at the x-position given by end. If omitted, the gradient ends at the highest value of the trace along the respective axis. Ignored if orientation is *radial*. */ stop?: number; - /** Sets the type/orientation of the color gradient for the fill. Defaults to *none*. */ + /** + * Sets the type/orientation of the color gradient for the fill. Defaults to *none*. + * @default 'none' + */ type?: 'radial' | 'horizontal' | 'vertical' | 'none'; }; /** Sets the pattern within the marker. */ fillpattern?: Pattern; /** Only relevant when `stackgroup` is used, and only the first `groupnorm` found in the `stackgroup` will be used - including if `visible` is *legendonly* but not if it is `false`. Sets the normalization for the sum of this `stackgroup`. With *fraction*, the value of each trace at each location is divided by the sum of all trace values at that location. *percent* is the same but multiplied by 100 to show percentages. If there are multiple subplots, or multiple `stackgroup`s on one subplot, each will be normalized within its own set. */ groupnorm?: '' | 'fraction' | 'percent'; - /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; hoverlabel?: HoverLabel; /** Do the hover effects highlight individual points (markers or line points) or do they highlight filled regions? If the fill is *toself* or *tonext* and there are no markers or text, then the default is *fills*, otherwise it is *points*. */ hoveron?: 'points' | 'fills' | (string & {}); /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ hovertemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ hovertemplatefallback?: any; /** Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ ids?: Datum[] | TypedArray; - /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string; /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ legendgroup?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ legendrank?: number; - /** Sets the width (in px or fraction) of the legend for this trace. */ + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ legendwidth?: number; line?: { - /** Sets the line back off from the end point of the nth line segment (in px). This option is useful e.g. to avoid overlap with arrowhead markers. With *auto* the lines would trim before markers if `marker.angleref` is set to *previous*. */ + /** + * Sets the line back off from the end point of the nth line segment (in px). This option is useful e.g. to avoid overlap with arrowhead markers. With *auto* the lines would trim before markers if `marker.angleref` is set to *previous*. + * @default 'auto' + * Minimum: 0 + */ backoff?: number | number[]; /** Sets the line color. */ color?: Color; - /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ dash?: Dash; - /** Determines the line shape. With *spline* the lines are drawn using spline interpolation. The other available values correspond to step-wise line shapes. */ + /** + * Determines the line shape. With *spline* the lines are drawn using spline interpolation. The other available values correspond to step-wise line shapes. + * @default 'linear' + */ shape?: 'linear' | 'spline' | 'hv' | 'vh' | 'hvh' | 'vhv'; - /** Simplifies lines by removing nearly-collinear points. When transitioning lines, it may be desirable to disable this so that the number of points along the resulting SVG path is unaffected. */ + /** + * Simplifies lines by removing nearly-collinear points. When transitioning lines, it may be desirable to disable this so that the number of points along the resulting SVG path is unaffected. + * @default true + */ simplify?: boolean; - /** Has an effect only if `shape` is set to *spline* Sets the amount of smoothing. *0* corresponds to no smoothing (equivalent to a *linear* shape). */ + /** + * Has an effect only if `shape` is set to *spline* Sets the amount of smoothing. *0* corresponds to no smoothing (equivalent to a *linear* shape). + * @default 1 + * Range: [0, 1.3] + */ smoothing?: number; - /** Sets the line width (in px). */ + /** + * Sets the line width (in px). + * @default 2 + * Minimum: 0 + */ width?: number; }; - marker?: Marker; + marker?: _internal.Marker; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ meta?: any; /** Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*. */ @@ -4165,7 +7372,11 @@ export interface ScatterData { name?: string; /** Set several traces linked to the same position axis or matching axes to the same offsetgroup where bars of the same position coordinate will line up. */ offsetgroup?: string; - /** Sets the opacity of the trace. */ + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ opacity?: number; /** Only relevant in the following cases: 1. when `scattermode` is set to *group*. 2. when `stackgroup` is used, and only the first `orientation` found in the `stackgroup` will be used - including if `visible` is *legendonly* but not if it is `false`. Sets the stacking direction. With *v* (*h*), the y (x) values of subsequent traces are added. Also affects the default value of `fill`. */ orientation?: 'v' | 'h'; @@ -4173,31 +7384,49 @@ export interface ScatterData { marker?: { /** Sets the marker color of selected points. */ color?: Color; - /** Sets the marker opacity of selected points. */ + /** + * Sets the marker opacity of selected points. + * Range: [0, 1] + */ opacity?: number; - /** Sets the marker size of selected points. */ + /** + * Sets the marker size of selected points. + * Minimum: 0 + */ size?: number; }; textfont?: Font; }; /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ selectedpoints?: any; - /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ showlegend?: boolean; - /** Only relevant when `stackgroup` is used, and only the first `stackgaps` found in the `stackgroup` will be used - including if `visible` is *legendonly* but not if it is `false`. Determines how we handle locations at which other traces in this group have data but this one does not. With *infer zero* we insert a zero at these locations. With *interpolate* we linearly interpolate between existing values, and extrapolate a constant beyond the existing values. */ + /** + * Only relevant when `stackgroup` is used, and only the first `stackgaps` found in the `stackgroup` will be used - including if `visible` is *legendonly* but not if it is `false`. Determines how we handle locations at which other traces in this group have data but this one does not. With *infer zero* we insert a zero at these locations. With *interpolate* we linearly interpolate between existing values, and extrapolate a constant beyond the existing values. + * @default 'infer zero' + */ stackgaps?: 'infer zero' | 'interpolate'; /** Set several scatter traces (on the same subplot) to the same stackgroup in order to add their y values (or their x values if `orientation` is *h*). If blank or omitted this trace will not be stacked. Stacking also turns `fill` on by default, using *tonexty* (*tonextx*) if `orientation` is *h* (*v*) and sets the default `mode` to *lines* irrespective of point count. You can only stack on a numeric (linear or log) axis. Traces in a `stackgroup` will only fill to (or be filled to) other traces in the same group. With multiple `stackgroup`s or some traces stacked and some not, if fill-linked traces are not already consecutive, the later ones will be pushed down in the drawing order. */ stackgroup?: string; - stream?: Stream; + stream?: _internal.Stream; /** Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ text?: string | string[]; /** Sets the text font. */ textfont?: FontArray; - /** Sets the positions of the `text` elements with respects to the (x,y) coordinates. */ + /** + * Sets the positions of the `text` elements with respects to the (x,y) coordinates. + * @default 'middle center' + */ textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right' | ('top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right')[]; /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. */ texttemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ texttemplatefallback?: any; type?: 'scatter'; /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ @@ -4208,53 +7437,98 @@ export interface ScatterData { marker?: { /** Sets the marker color of unselected points, applied only when a selection exists. */ color?: Color; - /** Sets the marker opacity of unselected points, applied only when a selection exists. */ + /** + * Sets the marker opacity of unselected points, applied only when a selection exists. + * Range: [0, 1] + */ opacity?: number; - /** Sets the marker size of unselected points, applied only when a selection exists. */ + /** + * Sets the marker size of unselected points, applied only when a selection exists. + * Minimum: 0 + */ size?: number; }; textfont?: Font; }; - /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; /** Sets the x coordinates. */ x?: Datum[] | TypedArray; - /** Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step. */ + /** + * Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step. + * @default 0 + */ x0?: any; - /** Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. */ + /** + * Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. + * @default 'x' + */ xaxis?: string; - /** Sets the calendar system to use with `x` date data. */ + /** + * Sets the calendar system to use with `x` date data. + * @default 'gregorian' + */ xcalendar?: Calendar; /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; - /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ + /** + * Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. + * @default 0 + */ xperiod?: any; /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the x0 axis. When `x0period` is round number of weeks, the `x0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ xperiod0?: any; - /** Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis. */ + /** + * Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis. + * @default 'middle' + */ xperiodalignment?: 'start' | 'middle' | 'end'; /** Sets the y coordinates. */ y?: Datum[] | TypedArray; - /** Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step. */ + /** + * Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step. + * @default 0 + */ y0?: any; - /** Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. */ + /** + * Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. + * @default 'y' + */ yaxis?: string; - /** Sets the calendar system to use with `y` date data. */ + /** + * Sets the calendar system to use with `y` date data. + * @default 'gregorian' + */ ycalendar?: Calendar; /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ yhoverformat?: string; - /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the y axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ + /** + * Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the y axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. + * @default 0 + */ yperiod?: any; /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the y0 axis. When `y0period` is round number of weeks, the `y0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ yperiod0?: any; - /** Only relevant when the axis `type` is *date*. Sets the alignment of data points on the y axis. */ + /** + * Only relevant when the axis `type` is *date*. Sets the alignment of data points on the y axis. + * @default 'middle' + */ yperiodalignment?: 'start' | 'middle' | 'end'; - /** Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. */ + /** + * Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. + * @default 0 + */ zorder?: number; } export interface Scatter3dData { - /** Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected. */ + /** + * Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected. + * @default false + */ connectgaps?: boolean; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ customdata?: Datum[] | TypedArray; @@ -4268,19 +7542,42 @@ export interface Scatter3dData { copy_zstyle?: boolean; /** Determines whether or not the error bars have the same length in both direction (top/bottom for vertical bars, left/right for horizontal bars. */ symmetric?: boolean; - /** Sets the thickness (in px) of the error bars. */ + /** + * Sets the thickness (in px) of the error bars. + * @default 2 + * Minimum: 0 + */ thickness?: number; + /** + * @default 0 + * Minimum: 0 + */ traceref?: number; + /** + * @default 0 + * Minimum: 0 + */ tracerefminus?: number; /** Determines the rule used to generate the error bars. If *constant*, the bar lengths are of a constant value. Set this constant in `value`. If *percent*, the bar lengths correspond to a percentage of underlying data. Set this percentage in `value`. If *sqrt*, the bar lengths correspond to the square of the underlying data. If *data*, the bar lengths are set with data set `array`. */ type?: 'percent' | 'constant' | 'sqrt' | 'data'; - /** Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars. */ + /** + * Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars. + * @default 10 + * Minimum: 0 + */ value?: number; - /** Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars in the bottom (left) direction for vertical (horizontal) bars */ + /** + * Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars in the bottom (left) direction for vertical (horizontal) bars + * @default 10 + * Minimum: 0 + */ valueminus?: number; /** Determines whether or not this set of error bars is visible. */ visible?: boolean; - /** Sets the width (in px) of the cross-bar at both ends of the error bars. */ + /** + * Sets the width (in px) of the cross-bar at both ends of the error bars. + * Minimum: 0 + */ width?: number; }; error_y?: { @@ -4293,166 +7590,343 @@ export interface Scatter3dData { copy_zstyle?: boolean; /** Determines whether or not the error bars have the same length in both direction (top/bottom for vertical bars, left/right for horizontal bars. */ symmetric?: boolean; - /** Sets the thickness (in px) of the error bars. */ + /** + * Sets the thickness (in px) of the error bars. + * @default 2 + * Minimum: 0 + */ thickness?: number; + /** + * @default 0 + * Minimum: 0 + */ traceref?: number; + /** + * @default 0 + * Minimum: 0 + */ tracerefminus?: number; /** Determines the rule used to generate the error bars. If *constant*, the bar lengths are of a constant value. Set this constant in `value`. If *percent*, the bar lengths correspond to a percentage of underlying data. Set this percentage in `value`. If *sqrt*, the bar lengths correspond to the square of the underlying data. If *data*, the bar lengths are set with data set `array`. */ type?: 'percent' | 'constant' | 'sqrt' | 'data'; - /** Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars. */ + /** + * Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars. + * @default 10 + * Minimum: 0 + */ value?: number; - /** Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars in the bottom (left) direction for vertical (horizontal) bars */ + /** + * Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars in the bottom (left) direction for vertical (horizontal) bars + * @default 10 + * Minimum: 0 + */ valueminus?: number; /** Determines whether or not this set of error bars is visible. */ visible?: boolean; - /** Sets the width (in px) of the cross-bar at both ends of the error bars. */ + /** + * Sets the width (in px) of the cross-bar at both ends of the error bars. + * Minimum: 0 + */ width?: number; }; - error_z?: ErrorY; - /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + error_z?: _internal.ErrorY; + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; hoverlabel?: HoverLabel; /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ hovertemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ hovertemplatefallback?: any; /** Sets text elements associated with each (x,y,z) triplet. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y,z) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ ids?: Datum[] | TypedArray; - /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string; /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ legendgroup?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ legendrank?: number; - /** Sets the width (in px or fraction) of the legend for this trace. */ + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ legendwidth?: number; line?: { - /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `line.colorscale`. Has an effect only if in `line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `line.colorscale`. Has an effect only if in `line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ autocolorscale?: boolean; - /** Determines whether or not the color domain is computed with respect to the input data (here in `line.color`) or the bounds set in `line.cmin` and `line.cmax` Has an effect only if in `line.color` is set to a numerical array. Defaults to `false` when `line.cmin` and `line.cmax` are set by the user. */ + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `line.color`) or the bounds set in `line.cmin` and `line.cmax` Has an effect only if in `line.color` is set to a numerical array. Defaults to `false` when `line.cmin` and `line.cmax` are set by the user. + * @default true + */ cauto?: boolean; - /** Sets the upper bound of the color domain. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color` and if set, `line.cmin` must be set as well. */ + /** + * Sets the upper bound of the color domain. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color` and if set, `line.cmin` must be set as well. + * Setting this also sets: cauto = false + */ cmax?: number; /** Sets the mid-point of the color domain by scaling `line.cmin` and/or `line.cmax` to be equidistant to this point. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color`. Has no effect when `line.cauto` is `false`. */ cmid?: number; - /** Sets the lower bound of the color domain. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color` and if set, `line.cmax` must be set as well. */ + /** + * Sets the lower bound of the color domain. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color` and if set, `line.cmax` must be set as well. + * Setting this also sets: cauto = false + */ cmin?: number; /** Sets the line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `line.cmin` and `line.cmax` if set. */ color?: Color | Color[]; /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ coloraxis?: string; colorbar?: ColorBar; - /** Sets the colorscale. Has an effect only if in `line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `line.cmin` and `line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + /** + * Sets the colorscale. Has an effect only if in `line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `line.cmin` and `line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ colorscale?: ColorScale; - /** Sets the dash style of the lines. */ + /** + * Sets the dash style of the lines. + * @default 'solid' + */ dash?: Dash; - /** Reverses the color mapping if true. Has an effect only if in `line.color` is set to a numerical array. If true, `line.cmin` will correspond to the last color in the array and `line.cmax` will correspond to the first color. */ + /** + * Reverses the color mapping if true. Has an effect only if in `line.color` is set to a numerical array. If true, `line.cmin` will correspond to the last color in the array and `line.cmax` will correspond to the first color. + * @default false + */ reversescale?: boolean; - /** Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `line.color` is set to a numerical array. */ + /** + * Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `line.color` is set to a numerical array. + * @default false + */ showscale?: boolean; - /** Sets the line width (in px). */ + /** + * Sets the line width (in px). + * @default 2 + * Minimum: 0 + */ width?: number; }; marker?: { - /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ autocolorscale?: boolean; - /** Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. */ + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. + * @default true + */ cauto?: boolean; - /** Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well. */ + /** + * Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well. + * Setting this also sets: cauto = false + */ cmax?: number; /** Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`. */ cmid?: number; - /** Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well. */ + /** + * Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well. + * Setting this also sets: cauto = false + */ cmin?: number; /** Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set. */ color?: Color | Color[]; /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ coloraxis?: string; colorbar?: ColorBar; - /** Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + /** + * Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ colorscale?: ColorScale; line?: { - /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. Has an effect only if in `marker.line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. Has an effect only if in `marker.line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ autocolorscale?: boolean; - /** Determines whether or not the color domain is computed with respect to the input data (here in `marker.line.color`) or the bounds set in `marker.line.cmin` and `marker.line.cmax` Has an effect only if in `marker.line.color` is set to a numerical array. Defaults to `false` when `marker.line.cmin` and `marker.line.cmax` are set by the user. */ + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `marker.line.color`) or the bounds set in `marker.line.cmin` and `marker.line.cmax` Has an effect only if in `marker.line.color` is set to a numerical array. Defaults to `false` when `marker.line.cmin` and `marker.line.cmax` are set by the user. + * @default true + */ cauto?: boolean; - /** Sets the upper bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmin` must be set as well. */ + /** + * Sets the upper bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmin` must be set as well. + * Setting this also sets: cauto = false + */ cmax?: number; /** Sets the mid-point of the color domain by scaling `marker.line.cmin` and/or `marker.line.cmax` to be equidistant to this point. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color`. Has no effect when `marker.line.cauto` is `false`. */ cmid?: number; - /** Sets the lower bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmax` must be set as well. */ + /** + * Sets the lower bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmax` must be set as well. + * Setting this also sets: cauto = false + */ cmin?: number; /** Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set. */ color?: Color | Color[]; /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ coloraxis?: string; - /** Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + /** + * Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ colorscale?: ColorScale; - /** Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color. */ + /** + * Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color. + * @default false + */ reversescale?: boolean; - /** Sets the width (in px) of the lines bounding the marker points. */ + /** + * Sets the width (in px) of the lines bounding the marker points. + * Minimum: 0 + */ width?: number; }; - /** Sets the marker opacity. Note that the marker opacity for scatter3d traces must be a scalar value for performance reasons. To set a blending opacity value (i.e. which is not transparent), set *marker.color* to an rgba color and use its alpha channel. */ + /** + * Sets the marker opacity. Note that the marker opacity for scatter3d traces must be a scalar value for performance reasons. To set a blending opacity value (i.e. which is not transparent), set *marker.color* to an rgba color and use its alpha channel. + * Range: [0, 1] + */ opacity?: number; - /** Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. */ + /** + * Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. + * @default false + */ reversescale?: boolean; - /** Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array. */ + /** + * Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array. + * @default false + */ showscale?: boolean; - /** Sets the marker size (in px). */ + /** + * Sets the marker size (in px). + * @default 8 + * Minimum: 0 + */ size?: number | number[]; - /** Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points. */ + /** + * Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points. + * @default 0 + * Minimum: 0 + */ sizemin?: number; - /** Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels. */ + /** + * Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels. + * @default 'diameter' + */ sizemode?: 'diameter' | 'area'; - /** Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`. */ + /** + * Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`. + * @default 1 + */ sizeref?: number; - /** Sets the marker symbol type. */ + /** + * Sets the marker symbol type. + * @default 'circle' + */ symbol?: MarkerSymbol; }; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ meta?: any; - /** Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*. */ + /** + * Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*. + * @default 'lines+markers' + */ mode?: 'lines' | 'markers' | 'text' | 'none' | (string & {}); /** Sets the trace name. The trace name appears as the legend item and on hover. */ name?: string; - /** Sets the opacity of the trace. */ + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ opacity?: number; projection?: { x?: { - /** Sets the projection color. */ + /** + * Sets the projection color. + * @default 1 + * Range: [0, 1] + */ opacity?: number; - /** Sets the scale factor determining the size of the projection marker points. */ + /** + * Sets the scale factor determining the size of the projection marker points. + * @default 0.6666666666666666 + * Range: [0, 10] + */ scale?: number; - /** Sets whether or not projections are shown along the x axis. */ + /** + * Sets whether or not projections are shown along the x axis. + * @default false + */ show?: boolean; }; y?: { - /** Sets the projection color. */ + /** + * Sets the projection color. + * @default 1 + * Range: [0, 1] + */ opacity?: number; - /** Sets the scale factor determining the size of the projection marker points. */ + /** + * Sets the scale factor determining the size of the projection marker points. + * @default 0.6666666666666666 + * Range: [0, 10] + */ scale?: number; - /** Sets whether or not projections are shown along the y axis. */ + /** + * Sets whether or not projections are shown along the y axis. + * @default false + */ show?: boolean; }; z?: { - /** Sets the projection color. */ + /** + * Sets the projection color. + * @default 1 + * Range: [0, 1] + */ opacity?: number; - /** Sets the scale factor determining the size of the projection marker points. */ + /** + * Sets the scale factor determining the size of the projection marker points. + * @default 0.6666666666666666 + * Range: [0, 10] + */ scale?: number; - /** Sets whether or not projections are shown along the z axis. */ + /** + * Sets whether or not projections are shown along the z axis. + * @default false + */ show?: boolean; }; }; - /** Sets a reference between this trace's 3D coordinate system and a 3D scene. If *scene* (the default value), the (x,y,z) coordinates refer to `layout.scene`. If *scene2*, the (x,y,z) coordinates refer to `layout.scene2`, and so on. */ + /** + * Sets a reference between this trace's 3D coordinate system and a 3D scene. If *scene* (the default value), the (x,y,z) coordinates refer to `layout.scene`. If *scene2*, the (x,y,z) coordinates refer to `layout.scene2`, and so on. + * @default 'scene' + */ scene?: string; - /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ showlegend?: boolean; - stream?: Stream; - /** If *-1*, the scatter points are not fill with a surface If *0*, *1*, *2*, the scatter points are filled with a Delaunay surface about the x, y, z respectively. */ + stream?: _internal.Stream; + /** + * If *-1*, the scatter points are not fill with a surface If *0*, *1*, *2*, the scatter points are filled with a Delaunay surface about the x, y, z respectively. + * @default -1 + */ surfaceaxis?: -1 | 0 | 1 | 2; /** Sets the surface fill color. */ surfacecolor?: Color; @@ -4463,42 +7937,73 @@ export interface Scatter3dData { color?: Color | Color[]; /** HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available. */ family?: string | string[]; + /** + * Minimum: 1 + */ size?: number | number[]; - /** Sets whether a font should be styled with a normal or italic face from its family. */ + /** + * Sets whether a font should be styled with a normal or italic face from its family. + * @default 'normal' + */ style?: 'normal' | 'italic' | ('normal' | 'italic')[]; - /** Sets the variant of the font. */ + /** + * Sets the variant of the font. + * @default 'normal' + */ variant?: 'normal' | 'small-caps' | ('normal' | 'small-caps')[]; - /** Sets the weight (or boldness) of the font. */ + /** + * Sets the weight (or boldness) of the font. + * @default 'normal' + * Range: [1, 1000] + */ weight?: number | 'normal' | 'bold' | (number | 'normal' | 'bold')[]; }; - /** Sets the positions of the `text` elements with respects to the (x,y) coordinates. */ + /** + * Sets the positions of the `text` elements with respects to the (x,y) coordinates. + * @default 'top center' + */ textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right' | ('top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right')[]; /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. */ texttemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ texttemplatefallback?: any; type?: 'scatter3d'; /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ uid?: string; /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ uirevision?: any; - /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; /** Sets the x coordinates. */ x?: Datum[] | TypedArray; - /** Sets the calendar system to use with `x` date data. */ + /** + * Sets the calendar system to use with `x` date data. + * @default 'gregorian' + */ xcalendar?: Calendar; /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; /** Sets the y coordinates. */ y?: Datum[] | TypedArray; - /** Sets the calendar system to use with `y` date data. */ + /** + * Sets the calendar system to use with `y` date data. + * @default 'gregorian' + */ ycalendar?: Calendar; /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ yhoverformat?: string; /** Sets the z coordinates. */ z?: Datum[] | TypedArray; - /** Sets the calendar system to use with `z` date data. */ + /** + * Sets the calendar system to use with `z` date data. + * @default 'gregorian' + */ zcalendar?: Calendar; /** Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`. */ zhoverformat?: string; @@ -4511,84 +8016,145 @@ export interface ScattercarpetData { b?: Datum[] | TypedArray; /** An identifier for this carpet, so that `scattercarpet` and `contourcarpet` traces can specify a carpet plot on which they lie */ carpet?: string; - /** Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected. */ + /** + * Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected. + * @default false + */ connectgaps?: boolean; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ customdata?: Datum[] | TypedArray; - /** Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. scatterternary has a subset of the options available to scatter. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other. */ + /** + * Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. scatterternary has a subset of the options available to scatter. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other. + * @default 'none' + */ fill?: 'none' | 'toself' | 'tonext'; /** Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. */ fillcolor?: Color; - /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ hoverinfo?: 'a' | 'b' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('a' | 'b' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; hoverlabel?: HoverLabel; /** Do the hover effects highlight individual points (markers or line points) or do they highlight filled regions? If the fill is *toself* or *tonext* and there are no markers or text, then the default is *fills*, otherwise it is *points*. */ hoveron?: 'points' | 'fills' | (string & {}); /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ hovertemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ hovertemplatefallback?: any; /** Sets hover text elements associated with each (a,b) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the data points in (a,b). To be seen, trace `hoverinfo` must contain a *text* flag. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ ids?: Datum[] | TypedArray; - /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string; /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ legendgroup?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ legendrank?: number; - /** Sets the width (in px or fraction) of the legend for this trace. */ + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ legendwidth?: number; line?: { - /** Sets the line back off from the end point of the nth line segment (in px). This option is useful e.g. to avoid overlap with arrowhead markers. With *auto* the lines would trim before markers if `marker.angleref` is set to *previous*. */ + /** + * Sets the line back off from the end point of the nth line segment (in px). This option is useful e.g. to avoid overlap with arrowhead markers. With *auto* the lines would trim before markers if `marker.angleref` is set to *previous*. + * @default 'auto' + * Minimum: 0 + */ backoff?: number | number[]; /** Sets the line color. */ color?: Color; - /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ dash?: Dash; - /** Determines the line shape. With *spline* the lines are drawn using spline interpolation. The other available values correspond to step-wise line shapes. */ + /** + * Determines the line shape. With *spline* the lines are drawn using spline interpolation. The other available values correspond to step-wise line shapes. + * @default 'linear' + */ shape?: 'linear' | 'spline'; - /** Has an effect only if `shape` is set to *spline* Sets the amount of smoothing. *0* corresponds to no smoothing (equivalent to a *linear* shape). */ + /** + * Has an effect only if `shape` is set to *spline* Sets the amount of smoothing. *0* corresponds to no smoothing (equivalent to a *linear* shape). + * @default 1 + * Range: [0, 1.3] + */ smoothing?: number; - /** Sets the line width (in px). */ + /** + * Sets the line width (in px). + * @default 2 + * Minimum: 0 + */ width?: number; }; - marker?: Marker; + marker?: _internal.Marker; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ meta?: any; - /** Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*. */ + /** + * Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*. + * @default 'markers' + */ mode?: 'lines' | 'markers' | 'text' | 'none' | (string & {}); /** Sets the trace name. The trace name appears as the legend item and on hover. */ name?: string; - /** Sets the opacity of the trace. */ + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ opacity?: number; selected?: { marker?: { /** Sets the marker color of selected points. */ color?: Color; - /** Sets the marker opacity of selected points. */ + /** + * Sets the marker opacity of selected points. + * Range: [0, 1] + */ opacity?: number; - /** Sets the marker size of selected points. */ + /** + * Sets the marker size of selected points. + * Minimum: 0 + */ size?: number; }; textfont?: Font; }; /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ selectedpoints?: any; - /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ showlegend?: boolean; - stream?: Stream; + stream?: _internal.Stream; /** Sets text elements associated with each (a,b) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the data points in (a,b). If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ text?: string | string[]; /** Sets the text font. */ textfont?: FontArray; - /** Sets the positions of the `text` elements with respects to the (x,y) coordinates. */ + /** + * Sets the positions of the `text` elements with respects to the (x,y) coordinates. + * @default 'middle center' + */ textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right' | ('top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right')[]; /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `a`, `b` and `text`. */ texttemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ texttemplatefallback?: any; type?: 'scattercarpet'; /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ @@ -4599,44 +8165,80 @@ export interface ScattercarpetData { marker?: { /** Sets the marker color of unselected points, applied only when a selection exists. */ color?: Color; - /** Sets the marker opacity of unselected points, applied only when a selection exists. */ + /** + * Sets the marker opacity of unselected points, applied only when a selection exists. + * Range: [0, 1] + */ opacity?: number; - /** Sets the marker size of unselected points, applied only when a selection exists. */ + /** + * Sets the marker size of unselected points, applied only when a selection exists. + * Minimum: 0 + */ size?: number; }; textfont?: Font; }; - /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; - /** Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. */ + /** + * Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. + * @default 'x' + */ xaxis?: string; - /** Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. */ + /** + * Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. + * @default 'y' + */ yaxis?: string; - /** Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. */ + /** + * Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. + * @default 0 + */ zorder?: number; } export interface ScattergeoData { - /** Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected. */ + /** + * Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected. + * @default false + */ connectgaps?: boolean; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ customdata?: Datum[] | TypedArray; - /** Sets the key in GeoJSON features which is used as id to match the items included in the `locations` array. Only has an effect when `geojson` is set. Support nested property, for example *properties.name*. */ + /** + * Sets the key in GeoJSON features which is used as id to match the items included in the `locations` array. Only has an effect when `geojson` is set. Support nested property, for example *properties.name*. + * @default 'id' + */ featureidkey?: string; - /** Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. */ + /** + * Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. + * @default 'none' + */ fill?: 'none' | 'toself'; /** Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. */ fillcolor?: Color; - /** Sets a reference between this trace's geospatial coordinates and a geographic map. If *geo* (the default value), the geospatial coordinates refer to `layout.geo`. If *geo2*, the geospatial coordinates refer to `layout.geo2`, and so on. */ + /** + * Sets a reference between this trace's geospatial coordinates and a geographic map. If *geo* (the default value), the geospatial coordinates refer to `layout.geo`. If *geo2*, the geospatial coordinates refer to `layout.geo2`, and so on. + * @default 'geo' + */ geo?: string; /** Sets optional GeoJSON data associated with this trace. If not given, the features on the base map are used when `locations` is set. It can be set as a valid GeoJSON object or as a URL string. Note that we only accept GeoJSONs of type *FeatureCollection* or *Feature* with geometries of type *Polygon* or *MultiPolygon*. */ geojson?: any; - /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ hoverinfo?: 'lon' | 'lat' | 'location' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('lon' | 'lat' | 'location' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; hoverlabel?: HoverLabel; /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ hovertemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ hovertemplatefallback?: any; /** Sets hover text elements associated with each (lon,lat) pair or item in `locations`. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) or `locations` coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ hovertext?: string | string[]; @@ -4644,110 +8246,205 @@ export interface ScattergeoData { ids?: Datum[] | TypedArray; /** Sets the latitude coordinates (in degrees North). */ lat?: Datum[] | TypedArray; - /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string; /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ legendgroup?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ legendrank?: number; - /** Sets the width (in px or fraction) of the legend for this trace. */ + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ legendwidth?: number; line?: { /** Sets the line color. */ color?: Color; - /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ dash?: Dash; - /** Sets the line width (in px). */ + /** + * Sets the line width (in px). + * @default 2 + * Minimum: 0 + */ width?: number; }; - /** The library used by the *country names* `locationmode` option is changing in an upcoming version. Country names in existing plots may not work in the new version. Determines the set of locations used to match entries in `locations` to regions on the map. Values *ISO-3*, *USA-states*, *country names* correspond to features on the base map and value *geojson-id* corresponds to features from a custom GeoJSON linked to the `geojson` attribute. *USA-states* accepts both two-letter abbreviations (e.g. *CA*) and full state names (e.g. *California*). */ + /** + * The library used by the *country names* `locationmode` option is changing in an upcoming version. Country names in existing plots may not work in the new version. Determines the set of locations used to match entries in `locations` to regions on the map. Values *ISO-3*, *USA-states*, *country names* correspond to features on the base map and value *geojson-id* corresponds to features from a custom GeoJSON linked to the `geojson` attribute. *USA-states* accepts both two-letter abbreviations (e.g. *CA*) and full state names (e.g. *California*). + * @default 'ISO-3' + */ locationmode?: 'ISO-3' | 'USA-states' | 'country names' | 'geojson-id'; /** Sets the coordinates via location IDs or names. Coordinates correspond to the centroid of each location given. See `locationmode` for more info. */ locations?: Datum[] | TypedArray; /** Sets the longitude coordinates (in degrees East). */ lon?: Datum[] | TypedArray; marker?: { - /** Sets the marker angle in respect to `angleref`. */ + /** + * Sets the marker angle in respect to `angleref`. + * @default 0 + */ angle?: number | 'auto' | (number | 'auto')[]; - /** Sets the reference for marker angle. With *previous*, angle 0 points along the line from the previous point to this one. With *up*, angle 0 points toward the top of the screen. With *north*, angle 0 points north based on the current map projection. */ + /** + * Sets the reference for marker angle. With *previous*, angle 0 points along the line from the previous point to this one. With *up*, angle 0 points toward the top of the screen. With *north*, angle 0 points north based on the current map projection. + * @default 'up' + */ angleref?: 'previous' | 'up' | 'north'; - /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ autocolorscale?: boolean; - /** Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. */ + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. + * @default true + */ cauto?: boolean; - /** Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well. */ + /** + * Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well. + * Setting this also sets: cauto = false + */ cmax?: number; /** Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`. */ cmid?: number; - /** Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well. */ + /** + * Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well. + * Setting this also sets: cauto = false + */ cmin?: number; /** Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set. */ color?: Color | Color[]; /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ coloraxis?: string; colorbar?: ColorBar; - /** Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + /** + * Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ colorscale?: ColorScale; gradient?: { /** Sets the final color of the gradient fill: the center color for radial, the right for horizontal, or the bottom for vertical. */ color?: Color | Color[]; - /** Sets the type of gradient used to fill the markers */ + /** + * Sets the type of gradient used to fill the markers + * @default 'none' + */ type?: 'radial' | 'horizontal' | 'vertical' | 'none' | ('radial' | 'horizontal' | 'vertical' | 'none')[]; }; - line?: Line; - /** Sets the marker opacity. */ + line?: _internal.Line; + /** + * Sets the marker opacity. + * Range: [0, 1] + */ opacity?: number | number[]; - /** Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. */ + /** + * Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. + * @default false + */ reversescale?: boolean; - /** Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array. */ + /** + * Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array. + * @default false + */ showscale?: boolean; - /** Sets the marker size (in px). */ + /** + * Sets the marker size (in px). + * @default 6 + * Minimum: 0 + */ size?: number | number[]; - /** Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points. */ + /** + * Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points. + * @default 0 + * Minimum: 0 + */ sizemin?: number; - /** Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels. */ + /** + * Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels. + * @default 'diameter' + */ sizemode?: 'diameter' | 'area'; - /** Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`. */ + /** + * Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`. + * @default 1 + */ sizeref?: number; - /** Moves the marker away from the data point in the direction of `angle` (in px). This can be useful for example if you have another marker at this location and you want to point an arrowhead marker at it. */ + /** + * Moves the marker away from the data point in the direction of `angle` (in px). This can be useful for example if you have another marker at this location and you want to point an arrowhead marker at it. + * @default 0 + * Minimum: 0 + */ standoff?: number | number[]; - /** Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name. */ + /** + * Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name. + * @default 'circle' + */ symbol?: MarkerSymbol; }; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ meta?: any; - /** Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*. */ + /** + * Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*. + * @default 'markers' + */ mode?: 'lines' | 'markers' | 'text' | 'none' | (string & {}); /** Sets the trace name. The trace name appears as the legend item and on hover. */ name?: string; - /** Sets the opacity of the trace. */ + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ opacity?: number; selected?: { marker?: { /** Sets the marker color of selected points. */ color?: Color; - /** Sets the marker opacity of selected points. */ + /** + * Sets the marker opacity of selected points. + * Range: [0, 1] + */ opacity?: number; - /** Sets the marker size of selected points. */ + /** + * Sets the marker size of selected points. + * Minimum: 0 + */ size?: number; }; textfont?: Font; }; /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ selectedpoints?: any; - /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ showlegend?: boolean; - stream?: Stream; + stream?: _internal.Stream; /** Sets text elements associated with each (lon,lat) pair or item in `locations`. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) or `locations` coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ text?: string | string[]; /** Sets the text font. */ textfont?: FontArray; - /** Sets the positions of the `text` elements with respects to the (x,y) coordinates. */ + /** + * Sets the positions of the `text` elements with respects to the (x,y) coordinates. + * @default 'middle center' + */ textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right' | ('top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right')[]; /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `lat`, `lon`, `location` and `text`. */ texttemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ texttemplatefallback?: any; type?: 'scattergeo'; /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ @@ -4758,25 +8455,43 @@ export interface ScattergeoData { marker?: { /** Sets the marker color of unselected points, applied only when a selection exists. */ color?: Color; - /** Sets the marker opacity of unselected points, applied only when a selection exists. */ + /** + * Sets the marker opacity of unselected points, applied only when a selection exists. + * Range: [0, 1] + */ opacity?: number; - /** Sets the marker size of unselected points, applied only when a selection exists. */ + /** + * Sets the marker size of unselected points, applied only when a selection exists. + * Minimum: 0 + */ size?: number; }; textfont?: Font; }; - /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; } export interface ScatterglData { - /** Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected. */ + /** + * Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected. + * @default false + */ connectgaps?: boolean; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ customdata?: Datum[] | TypedArray; - /** Sets the x coordinate step. See `x0` for more info. */ + /** + * Sets the x coordinate step. See `x0` for more info. + * @default 1 + */ dx?: number; - /** Sets the y coordinate step. See `y0` for more info. */ + /** + * Sets the y coordinate step. See `y0` for more info. + * @default 1 + */ dy?: number; error_x?: { /** Sets the data corresponding the length of each error bar. Values are plotted relative to the underlying data. */ @@ -4788,81 +8503,145 @@ export interface ScatterglData { copy_ystyle?: boolean; /** Determines whether or not the error bars have the same length in both direction (top/bottom for vertical bars, left/right for horizontal bars. */ symmetric?: boolean; - /** Sets the thickness (in px) of the error bars. */ + /** + * Sets the thickness (in px) of the error bars. + * @default 2 + * Minimum: 0 + */ thickness?: number; + /** + * @default 0 + * Minimum: 0 + */ traceref?: number; + /** + * @default 0 + * Minimum: 0 + */ tracerefminus?: number; /** Determines the rule used to generate the error bars. If *constant*, the bar lengths are of a constant value. Set this constant in `value`. If *percent*, the bar lengths correspond to a percentage of underlying data. Set this percentage in `value`. If *sqrt*, the bar lengths correspond to the square of the underlying data. If *data*, the bar lengths are set with data set `array`. */ type?: 'percent' | 'constant' | 'sqrt' | 'data'; - /** Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars. */ + /** + * Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars. + * @default 10 + * Minimum: 0 + */ value?: number; - /** Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars in the bottom (left) direction for vertical (horizontal) bars */ + /** + * Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars in the bottom (left) direction for vertical (horizontal) bars + * @default 10 + * Minimum: 0 + */ valueminus?: number; /** Determines whether or not this set of error bars is visible. */ visible?: boolean; - /** Sets the width (in px) of the cross-bar at both ends of the error bars. */ + /** + * Sets the width (in px) of the cross-bar at both ends of the error bars. + * Minimum: 0 + */ width?: number; }; - error_y?: ErrorY; - /** Sets the area to fill with a solid color. Defaults to *none* unless this trace is stacked, then it gets *tonexty* (*tonextx*) if `orientation` is *v* (*h*) Use with `fillcolor` if not *none*. *tozerox* and *tozeroy* fill to x=0 and y=0 respectively. *tonextx* and *tonexty* fill between the endpoints of this trace and the endpoints of the trace before it, connecting those endpoints with straight lines (to make a stacked area graph); if there is no trace before it, they behave like *tozerox* and *tozeroy*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other. Traces in a `stackgroup` will only fill to (or be filled to) other traces in the same group. With multiple `stackgroup`s or some traces stacked and some not, if fill-linked traces are not already consecutive, the later ones will be pushed down in the drawing order. */ + error_y?: _internal.ErrorY; + /** + * Sets the area to fill with a solid color. Defaults to *none* unless this trace is stacked, then it gets *tonexty* (*tonextx*) if `orientation` is *v* (*h*) Use with `fillcolor` if not *none*. *tozerox* and *tozeroy* fill to x=0 and y=0 respectively. *tonextx* and *tonexty* fill between the endpoints of this trace and the endpoints of the trace before it, connecting those endpoints with straight lines (to make a stacked area graph); if there is no trace before it, they behave like *tozerox* and *tozeroy*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other. Traces in a `stackgroup` will only fill to (or be filled to) other traces in the same group. With multiple `stackgroup`s or some traces stacked and some not, if fill-linked traces are not already consecutive, the later ones will be pushed down in the drawing order. + * @default 'none' + */ fill?: 'none' | 'tozeroy' | 'tozerox' | 'tonexty' | 'tonextx' | 'toself' | 'tonext'; /** Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. */ fillcolor?: Color; - /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; hoverlabel?: HoverLabel; /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ hovertemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ hovertemplatefallback?: any; /** Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ ids?: Datum[] | TypedArray; - /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string; /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ legendgroup?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ legendrank?: number; - /** Sets the width (in px or fraction) of the legend for this trace. */ + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ legendwidth?: number; line?: { /** Sets the line color. */ color?: Color; - /** Sets the style of the lines. */ + /** + * Sets the style of the lines. + * @default 'solid' + */ dash?: Dash; - /** Determines the line shape. The values correspond to step-wise line shapes. */ + /** + * Determines the line shape. The values correspond to step-wise line shapes. + * @default 'linear' + */ shape?: 'linear' | 'hv' | 'vh' | 'hvh' | 'vhv'; - /** Sets the line width (in px). */ + /** + * Sets the line width (in px). + * @default 2 + * Minimum: 0 + */ width?: number; }; - marker?: Marker; + marker?: _internal.Marker; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ meta?: any; /** Determines the drawing mode for this scatter trace. */ mode?: 'lines' | 'markers' | 'text' | 'none' | (string & {}); /** Sets the trace name. The trace name appears as the legend item and on hover. */ name?: string; - /** Sets the opacity of the trace. */ + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ opacity?: number; selected?: { marker?: { /** Sets the marker color of selected points. */ color?: Color; - /** Sets the marker opacity of selected points. */ + /** + * Sets the marker opacity of selected points. + * Range: [0, 1] + */ opacity?: number; - /** Sets the marker size of selected points. */ + /** + * Sets the marker size of selected points. + * Minimum: 0 + */ size?: number; }; textfont?: Font; }; /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ selectedpoints?: any; - /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ showlegend?: boolean; - stream?: Stream; + stream?: _internal.Stream; /** Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ text?: string | string[]; /** Sets the text font. */ @@ -4870,19 +8649,37 @@ export interface ScatterglData { color?: Color | Color[]; /** HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available. */ family?: string | string[]; + /** + * Minimum: 1 + */ size?: number | number[]; - /** Sets whether a font should be styled with a normal or italic face from its family. */ + /** + * Sets whether a font should be styled with a normal or italic face from its family. + * @default 'normal' + */ style?: 'normal' | 'italic' | ('normal' | 'italic')[]; - /** Sets the variant of the font. */ + /** + * Sets the variant of the font. + * @default 'normal' + */ variant?: 'normal' | 'small-caps' | ('normal' | 'small-caps')[]; - /** Sets the weight (or boldness) of the font. */ + /** + * Sets the weight (or boldness) of the font. + * @default 'normal' + */ weight?: 'normal' | 'bold' | ('normal' | 'bold')[]; }; - /** Sets the positions of the `text` elements with respects to the (x,y) coordinates. */ + /** + * Sets the positions of the `text` elements with respects to the (x,y) coordinates. + * @default 'middle center' + */ textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right' | ('top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right')[]; /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. */ texttemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ texttemplatefallback?: any; type?: 'scattergl'; /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ @@ -4893,46 +8690,85 @@ export interface ScatterglData { marker?: { /** Sets the marker color of unselected points, applied only when a selection exists. */ color?: Color; - /** Sets the marker opacity of unselected points, applied only when a selection exists. */ + /** + * Sets the marker opacity of unselected points, applied only when a selection exists. + * Range: [0, 1] + */ opacity?: number; - /** Sets the marker size of unselected points, applied only when a selection exists. */ + /** + * Sets the marker size of unselected points, applied only when a selection exists. + * Minimum: 0 + */ size?: number; }; textfont?: Font; }; - /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; /** Sets the x coordinates. */ x?: Datum[] | TypedArray; - /** Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step. */ + /** + * Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step. + * @default 0 + */ x0?: any; - /** Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. */ + /** + * Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. + * @default 'x' + */ xaxis?: string; - /** Sets the calendar system to use with `x` date data. */ + /** + * Sets the calendar system to use with `x` date data. + * @default 'gregorian' + */ xcalendar?: Calendar; /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; - /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ + /** + * Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. + * @default 0 + */ xperiod?: any; /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the x0 axis. When `x0period` is round number of weeks, the `x0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ xperiod0?: any; - /** Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis. */ + /** + * Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis. + * @default 'middle' + */ xperiodalignment?: 'start' | 'middle' | 'end'; /** Sets the y coordinates. */ y?: Datum[] | TypedArray; - /** Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step. */ + /** + * Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step. + * @default 0 + */ y0?: any; - /** Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. */ + /** + * Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. + * @default 'y' + */ yaxis?: string; - /** Sets the calendar system to use with `y` date data. */ + /** + * Sets the calendar system to use with `y` date data. + * @default 'gregorian' + */ ycalendar?: Calendar; /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ yhoverformat?: string; - /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the y axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ + /** + * Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the y axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. + * @default 0 + */ yperiod?: any; /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the y0 axis. When `y0period` is round number of weeks, the `y0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ yperiod0?: any; - /** Only relevant when the axis `type` is *date*. Sets the alignment of data points on the y axis. */ + /** + * Only relevant when the axis `type` is *date*. Sets the alignment of data points on the y axis. + * @default 'middle' + */ yperiodalignment?: 'start' | 'middle' | 'end'; } @@ -4944,29 +8780,57 @@ export interface ScattermapData { color?: Color | Color[]; /** Determines whether clustering is enabled or disabled. */ enabled?: boolean; - /** Sets the maximum zoom level. At zoom levels equal to or greater than this, points will never be clustered. */ + /** + * Sets the maximum zoom level. At zoom levels equal to or greater than this, points will never be clustered. + * @default 24 + * Range: [0, 24] + */ maxzoom?: number; - /** Sets the marker opacity. */ + /** + * Sets the marker opacity. + * @default 1 + * Range: [0, 1] + */ opacity?: number | number[]; - /** Sets the size for each cluster step. */ + /** + * Sets the size for each cluster step. + * @default 20 + * Minimum: 0 + */ size?: number | number[]; - /** Sets how many points it takes to create a cluster or advance to the next cluster step. Use this in conjunction with arrays for `size` and / or `color`. If an integer, steps start at multiples of this number. If an array, each step extends from the given value until one less than the next value. */ + /** + * Sets how many points it takes to create a cluster or advance to the next cluster step. Use this in conjunction with arrays for `size` and / or `color`. If an integer, steps start at multiples of this number. If an array, each step extends from the given value until one less than the next value. + * @default -1 + * Minimum: -1 + */ step?: number | number[]; }; - /** Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected. */ + /** + * Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected. + * @default false + */ connectgaps?: boolean; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ customdata?: Datum[] | TypedArray; - /** Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. */ + /** + * Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. + * @default 'none' + */ fill?: 'none' | 'toself'; /** Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. */ fillcolor?: Color; - /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ hoverinfo?: 'lon' | 'lat' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('lon' | 'lat' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; hoverlabel?: HoverLabel; /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ hovertemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ hovertemplatefallback?: any; /** Sets hover text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ hovertext?: string | string[]; @@ -4974,91 +8838,172 @@ export interface ScattermapData { ids?: Datum[] | TypedArray; /** Sets the latitude coordinates (in degrees North). */ lat?: Datum[] | TypedArray; - /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string; /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ legendgroup?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ legendrank?: number; - /** Sets the width (in px or fraction) of the legend for this trace. */ + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ legendwidth?: number; - line?: ErrorY; + line?: _internal.ErrorY; /** Sets the longitude coordinates (in degrees East). */ lon?: Datum[] | TypedArray; marker?: { - /** Flag to draw all symbols, even if they overlap. */ + /** + * Flag to draw all symbols, even if they overlap. + * @default false + */ allowoverlap?: boolean; - /** Sets the marker orientation from true North, in degrees clockwise. When using the *auto* default, no rotation would be applied in perspective views which is different from using a zero angle. */ + /** + * Sets the marker orientation from true North, in degrees clockwise. When using the *auto* default, no rotation would be applied in perspective views which is different from using a zero angle. + * @default 'auto' + */ angle?: number | number[]; - /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ autocolorscale?: boolean; - /** Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. */ + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. + * @default true + */ cauto?: boolean; - /** Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well. */ + /** + * Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well. + * Setting this also sets: cauto = false + */ cmax?: number; /** Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`. */ cmid?: number; - /** Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well. */ + /** + * Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well. + * Setting this also sets: cauto = false + */ cmin?: number; /** Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set. */ color?: Color | Color[]; /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ coloraxis?: string; colorbar?: ColorBar; - /** Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + /** + * Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ colorscale?: ColorScale; - /** Sets the marker opacity. */ + /** + * Sets the marker opacity. + * Range: [0, 1] + */ opacity?: number | number[]; - /** Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. */ + /** + * Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. + * @default false + */ reversescale?: boolean; - /** Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array. */ + /** + * Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array. + * @default false + */ showscale?: boolean; - /** Sets the marker size (in px). */ + /** + * Sets the marker size (in px). + * @default 6 + * Minimum: 0 + */ size?: number | number[]; - /** Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points. */ + /** + * Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points. + * @default 0 + * Minimum: 0 + */ sizemin?: number; - /** Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels. */ + /** + * Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels. + * @default 'diameter' + */ sizemode?: 'diameter' | 'area'; - /** Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`. */ + /** + * Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`. + * @default 1 + */ sizeref?: number; - /** Sets the marker symbol. Full list: https://www.mapbox.com/maki-icons/ Note that the array `marker.color` and `marker.size` are only available for *circle* symbols. */ + /** + * Sets the marker symbol. Full list: https://www.mapbox.com/maki-icons/ Note that the array `marker.color` and `marker.size` are only available for *circle* symbols. + * @default 'circle' + */ symbol?: MarkerSymbol; }; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ meta?: any; - /** Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. */ + /** + * Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. + * @default 'markers' + */ mode?: 'lines' | 'markers' | 'text' | 'none' | (string & {}); /** Sets the trace name. The trace name appears as the legend item and on hover. */ name?: string; - /** Sets the opacity of the trace. */ + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ opacity?: number; selected?: { marker?: { /** Sets the marker color of selected points. */ color?: Color; - /** Sets the marker opacity of selected points. */ + /** + * Sets the marker opacity of selected points. + * Range: [0, 1] + */ opacity?: number; - /** Sets the marker size of selected points. */ + /** + * Sets the marker size of selected points. + * Minimum: 0 + */ size?: number; }; }; /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ selectedpoints?: any; - /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ showlegend?: boolean; - stream?: Stream; - /** Sets a reference between this trace's data coordinates and a map subplot. If *map* (the default value), the data refer to `layout.map`. If *map2*, the data refer to `layout.map2`, and so on. */ + stream?: _internal.Stream; + /** + * Sets a reference between this trace's data coordinates and a map subplot. If *map* (the default value), the data refer to `layout.map`. If *map2*, the data refer to `layout.map2`, and so on. + * @default 'map' + */ subplot?: string; /** Sets text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ text?: string | string[]; /** Sets the icon text font (color=map.layer.paint.text-color, size=map.layer.layout.text-size). Has an effect only when `type` is set to *symbol*. */ textfont?: Font; - /** Sets the positions of the `text` elements with respects to the (x,y) coordinates. */ + /** + * Sets the positions of the `text` elements with respects to the (x,y) coordinates. + * @default 'middle center' + */ textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right'; /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `lat`, `lon` and `text`. */ texttemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ texttemplatefallback?: any; type?: 'scattermap'; /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ @@ -5069,13 +9014,22 @@ export interface ScattermapData { marker?: { /** Sets the marker color of unselected points, applied only when a selection exists. */ color?: Color; - /** Sets the marker opacity of unselected points, applied only when a selection exists. */ + /** + * Sets the marker opacity of unselected points, applied only when a selection exists. + * Range: [0, 1] + */ opacity?: number; - /** Sets the marker size of unselected points, applied only when a selection exists. */ + /** + * Sets the marker size of unselected points, applied only when a selection exists. + * Minimum: 0 + */ size?: number; }; }; - /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; } @@ -5087,29 +9041,57 @@ export interface ScattermapboxData { color?: Color | Color[]; /** Determines whether clustering is enabled or disabled. */ enabled?: boolean; - /** Sets the maximum zoom level. At zoom levels equal to or greater than this, points will never be clustered. */ + /** + * Sets the maximum zoom level. At zoom levels equal to or greater than this, points will never be clustered. + * @default 24 + * Range: [0, 24] + */ maxzoom?: number; - /** Sets the marker opacity. */ + /** + * Sets the marker opacity. + * @default 1 + * Range: [0, 1] + */ opacity?: number | number[]; - /** Sets the size for each cluster step. */ + /** + * Sets the size for each cluster step. + * @default 20 + * Minimum: 0 + */ size?: number | number[]; - /** Sets how many points it takes to create a cluster or advance to the next cluster step. Use this in conjunction with arrays for `size` and / or `color`. If an integer, steps start at multiples of this number. If an array, each step extends from the given value until one less than the next value. */ + /** + * Sets how many points it takes to create a cluster or advance to the next cluster step. Use this in conjunction with arrays for `size` and / or `color`. If an integer, steps start at multiples of this number. If an array, each step extends from the given value until one less than the next value. + * @default -1 + * Minimum: -1 + */ step?: number | number[]; }; - /** Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected. */ + /** + * Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected. + * @default false + */ connectgaps?: boolean; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ customdata?: Datum[] | TypedArray; - /** Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. */ + /** + * Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. + * @default 'none' + */ fill?: 'none' | 'toself'; /** Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. */ fillcolor?: Color; - /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ hoverinfo?: 'lon' | 'lat' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('lon' | 'lat' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; hoverlabel?: HoverLabel; /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ hovertemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ hovertemplatefallback?: any; /** Sets hover text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ hovertext?: string | string[]; @@ -5117,91 +9099,172 @@ export interface ScattermapboxData { ids?: Datum[] | TypedArray; /** Sets the latitude coordinates (in degrees North). */ lat?: Datum[] | TypedArray; - /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string; /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ legendgroup?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ legendrank?: number; - /** Sets the width (in px or fraction) of the legend for this trace. */ + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ legendwidth?: number; - line?: ErrorY; + line?: _internal.ErrorY; /** Sets the longitude coordinates (in degrees East). */ lon?: Datum[] | TypedArray; marker?: { - /** Flag to draw all symbols, even if they overlap. */ + /** + * Flag to draw all symbols, even if they overlap. + * @default false + */ allowoverlap?: boolean; - /** Sets the marker orientation from true North, in degrees clockwise. When using the *auto* default, no rotation would be applied in perspective views which is different from using a zero angle. */ + /** + * Sets the marker orientation from true North, in degrees clockwise. When using the *auto* default, no rotation would be applied in perspective views which is different from using a zero angle. + * @default 'auto' + */ angle?: number | number[]; - /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ autocolorscale?: boolean; - /** Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. */ + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. + * @default true + */ cauto?: boolean; - /** Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well. */ + /** + * Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well. + * Setting this also sets: cauto = false + */ cmax?: number; /** Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`. */ cmid?: number; - /** Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well. */ + /** + * Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well. + * Setting this also sets: cauto = false + */ cmin?: number; /** Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set. */ color?: Color | Color[]; /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ coloraxis?: string; colorbar?: ColorBar; - /** Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + /** + * Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ colorscale?: ColorScale; - /** Sets the marker opacity. */ + /** + * Sets the marker opacity. + * Range: [0, 1] + */ opacity?: number | number[]; - /** Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. */ + /** + * Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. + * @default false + */ reversescale?: boolean; - /** Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array. */ + /** + * Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array. + * @default false + */ showscale?: boolean; - /** Sets the marker size (in px). */ + /** + * Sets the marker size (in px). + * @default 6 + * Minimum: 0 + */ size?: number | number[]; - /** Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points. */ + /** + * Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points. + * @default 0 + * Minimum: 0 + */ sizemin?: number; - /** Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels. */ + /** + * Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels. + * @default 'diameter' + */ sizemode?: 'diameter' | 'area'; - /** Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`. */ + /** + * Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`. + * @default 1 + */ sizeref?: number; - /** Sets the marker symbol. Full list: https://www.mapbox.com/maki-icons/ Note that the array `marker.color` and `marker.size` are only available for *circle* symbols. */ + /** + * Sets the marker symbol. Full list: https://www.mapbox.com/maki-icons/ Note that the array `marker.color` and `marker.size` are only available for *circle* symbols. + * @default 'circle' + */ symbol?: MarkerSymbol; }; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ meta?: any; - /** Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. */ + /** + * Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. + * @default 'markers' + */ mode?: 'lines' | 'markers' | 'text' | 'none' | (string & {}); /** Sets the trace name. The trace name appears as the legend item and on hover. */ name?: string; - /** Sets the opacity of the trace. */ + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ opacity?: number; selected?: { marker?: { /** Sets the marker color of selected points. */ color?: Color; - /** Sets the marker opacity of selected points. */ + /** + * Sets the marker opacity of selected points. + * Range: [0, 1] + */ opacity?: number; - /** Sets the marker size of selected points. */ + /** + * Sets the marker size of selected points. + * Minimum: 0 + */ size?: number; }; }; /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ selectedpoints?: any; - /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ showlegend?: boolean; - stream?: Stream; - /** mapbox subplots and traces are deprecated! Please consider switching to `map` subplots and traces. Learn more at: https://plotly.com/python/maplibre-migration/ as well as https://plotly.com/javascript/maplibre-migration/ Sets a reference between this trace's data coordinates and a mapbox subplot. If *mapbox* (the default value), the data refer to `layout.mapbox`. If *mapbox2*, the data refer to `layout.mapbox2`, and so on. */ + stream?: _internal.Stream; + /** + * mapbox subplots and traces are deprecated! Please consider switching to `map` subplots and traces. Learn more at: https://plotly.com/python/maplibre-migration/ as well as https://plotly.com/javascript/maplibre-migration/ Sets a reference between this trace's data coordinates and a mapbox subplot. If *mapbox* (the default value), the data refer to `layout.mapbox`. If *mapbox2*, the data refer to `layout.mapbox2`, and so on. + * @default 'mapbox' + */ subplot?: string; /** Sets text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ text?: string | string[]; /** Sets the icon text font (color=mapbox.layer.paint.text-color, size=mapbox.layer.layout.text-size). Has an effect only when `type` is set to *symbol*. */ textfont?: Font; - /** Sets the positions of the `text` elements with respects to the (x,y) coordinates. */ + /** + * Sets the positions of the `text` elements with respects to the (x,y) coordinates. + * @default 'middle center' + */ textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right'; /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `lat`, `lon` and `text`. */ texttemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ texttemplatefallback?: any; type?: 'scattermapbox'; /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ @@ -5212,113 +9275,198 @@ export interface ScattermapboxData { marker?: { /** Sets the marker color of unselected points, applied only when a selection exists. */ color?: Color; - /** Sets the marker opacity of unselected points, applied only when a selection exists. */ + /** + * Sets the marker opacity of unselected points, applied only when a selection exists. + * Range: [0, 1] + */ opacity?: number; - /** Sets the marker size of unselected points, applied only when a selection exists. */ + /** + * Sets the marker size of unselected points, applied only when a selection exists. + * Minimum: 0 + */ size?: number; }; }; - /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; } export interface ScatterpolarData { - /** Determines whether or not markers and text nodes are clipped about the subplot axes. To show markers and text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*. */ + /** + * Determines whether or not markers and text nodes are clipped about the subplot axes. To show markers and text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*. + * @default false + */ cliponaxis?: boolean; - /** Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected. */ + /** + * Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected. + * @default false + */ connectgaps?: boolean; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ customdata?: Datum[] | TypedArray; - /** Sets the r coordinate step. */ + /** + * Sets the r coordinate step. + * @default 1 + */ dr?: number; /** Sets the theta coordinate step. By default, the `dtheta` step equals the subplot's period divided by the length of the `r` coordinates. */ dtheta?: number; - /** Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. scatterpolar has a subset of the options available to scatter. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other. */ + /** + * Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. scatterpolar has a subset of the options available to scatter. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other. + * @default 'none' + */ fill?: 'none' | 'toself' | 'tonext'; /** Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. */ fillcolor?: Color; - /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ hoverinfo?: 'r' | 'theta' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('r' | 'theta' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; hoverlabel?: HoverLabel; /** Do the hover effects highlight individual points (markers or line points) or do they highlight filled regions? If the fill is *toself* or *tonext* and there are no markers or text, then the default is *fills*, otherwise it is *points*. */ hoveron?: 'points' | 'fills' | (string & {}); /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ hovertemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ hovertemplatefallback?: any; /** Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ ids?: Datum[] | TypedArray; - /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string; /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ legendgroup?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ legendrank?: number; - /** Sets the width (in px or fraction) of the legend for this trace. */ + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ legendwidth?: number; line?: { - /** Sets the line back off from the end point of the nth line segment (in px). This option is useful e.g. to avoid overlap with arrowhead markers. With *auto* the lines would trim before markers if `marker.angleref` is set to *previous*. */ + /** + * Sets the line back off from the end point of the nth line segment (in px). This option is useful e.g. to avoid overlap with arrowhead markers. With *auto* the lines would trim before markers if `marker.angleref` is set to *previous*. + * @default 'auto' + * Minimum: 0 + */ backoff?: number | number[]; /** Sets the line color. */ color?: Color; - /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ dash?: Dash; - /** Determines the line shape. With *spline* the lines are drawn using spline interpolation. The other available values correspond to step-wise line shapes. */ + /** + * Determines the line shape. With *spline* the lines are drawn using spline interpolation. The other available values correspond to step-wise line shapes. + * @default 'linear' + */ shape?: 'linear' | 'spline'; - /** Has an effect only if `shape` is set to *spline* Sets the amount of smoothing. *0* corresponds to no smoothing (equivalent to a *linear* shape). */ + /** + * Has an effect only if `shape` is set to *spline* Sets the amount of smoothing. *0* corresponds to no smoothing (equivalent to a *linear* shape). + * @default 1 + * Range: [0, 1.3] + */ smoothing?: number; - /** Sets the line width (in px). */ + /** + * Sets the line width (in px). + * @default 2 + * Minimum: 0 + */ width?: number; }; - marker?: Marker; + marker?: _internal.Marker; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ meta?: any; /** Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*. */ mode?: 'lines' | 'markers' | 'text' | 'none' | (string & {}); /** Sets the trace name. The trace name appears as the legend item and on hover. */ name?: string; - /** Sets the opacity of the trace. */ + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ opacity?: number; /** Sets the radial coordinates */ r?: Datum[] | TypedArray; - /** Alternate to `r`. Builds a linear space of r coordinates. Use with `dr` where `r0` is the starting coordinate and `dr` the step. */ + /** + * Alternate to `r`. Builds a linear space of r coordinates. Use with `dr` where `r0` is the starting coordinate and `dr` the step. + * @default 0 + */ r0?: any; selected?: { marker?: { /** Sets the marker color of selected points. */ color?: Color; - /** Sets the marker opacity of selected points. */ + /** + * Sets the marker opacity of selected points. + * Range: [0, 1] + */ opacity?: number; - /** Sets the marker size of selected points. */ + /** + * Sets the marker size of selected points. + * Minimum: 0 + */ size?: number; }; textfont?: Font; }; /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ selectedpoints?: any; - /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ showlegend?: boolean; - stream?: Stream; - /** Sets a reference between this trace's data coordinates and a polar subplot. If *polar* (the default value), the data refer to `layout.polar`. If *polar2*, the data refer to `layout.polar2`, and so on. */ + stream?: _internal.Stream; + /** + * Sets a reference between this trace's data coordinates and a polar subplot. If *polar* (the default value), the data refer to `layout.polar`. If *polar2*, the data refer to `layout.polar2`, and so on. + * @default 'polar' + */ subplot?: string; /** Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ text?: string | string[]; /** Sets the text font. */ textfont?: FontArray; - /** Sets the positions of the `text` elements with respects to the (x,y) coordinates. */ + /** + * Sets the positions of the `text` elements with respects to the (x,y) coordinates. + * @default 'middle center' + */ textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right' | ('top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right')[]; /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `r`, `theta` and `text`. */ texttemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ texttemplatefallback?: any; /** Sets the angular coordinates */ theta?: Datum[] | TypedArray; - /** Alternate to `theta`. Builds a linear space of theta coordinates. Use with `dtheta` where `theta0` is the starting coordinate and `dtheta` the step. */ + /** + * Alternate to `theta`. Builds a linear space of theta coordinates. Use with `dtheta` where `theta0` is the starting coordinate and `dtheta` the step. + * @default 0 + */ theta0?: any; - /** Sets the unit of input *theta* values. Has an effect only when on *linear* angular axes. */ + /** + * Sets the unit of input *theta* values. Has an effect only when on *linear* angular axes. + * @default 'degrees' + */ thetaunit?: 'radians' | 'degrees' | 'gradians'; type?: 'scatterpolar'; /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ @@ -5329,88 +9477,147 @@ export interface ScatterpolarData { marker?: { /** Sets the marker color of unselected points, applied only when a selection exists. */ color?: Color; - /** Sets the marker opacity of unselected points, applied only when a selection exists. */ + /** + * Sets the marker opacity of unselected points, applied only when a selection exists. + * Range: [0, 1] + */ opacity?: number; - /** Sets the marker size of unselected points, applied only when a selection exists. */ + /** + * Sets the marker size of unselected points, applied only when a selection exists. + * Minimum: 0 + */ size?: number; }; textfont?: Font; }; - /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; } export interface ScatterpolarglData { - /** Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected. */ + /** + * Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected. + * @default false + */ connectgaps?: boolean; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ customdata?: Datum[] | TypedArray; - /** Sets the r coordinate step. */ + /** + * Sets the r coordinate step. + * @default 1 + */ dr?: number; /** Sets the theta coordinate step. By default, the `dtheta` step equals the subplot's period divided by the length of the `r` coordinates. */ dtheta?: number; - /** Sets the area to fill with a solid color. Defaults to *none* unless this trace is stacked, then it gets *tonexty* (*tonextx*) if `orientation` is *v* (*h*) Use with `fillcolor` if not *none*. *tozerox* and *tozeroy* fill to x=0 and y=0 respectively. *tonextx* and *tonexty* fill between the endpoints of this trace and the endpoints of the trace before it, connecting those endpoints with straight lines (to make a stacked area graph); if there is no trace before it, they behave like *tozerox* and *tozeroy*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other. Traces in a `stackgroup` will only fill to (or be filled to) other traces in the same group. With multiple `stackgroup`s or some traces stacked and some not, if fill-linked traces are not already consecutive, the later ones will be pushed down in the drawing order. */ + /** + * Sets the area to fill with a solid color. Defaults to *none* unless this trace is stacked, then it gets *tonexty* (*tonextx*) if `orientation` is *v* (*h*) Use with `fillcolor` if not *none*. *tozerox* and *tozeroy* fill to x=0 and y=0 respectively. *tonextx* and *tonexty* fill between the endpoints of this trace and the endpoints of the trace before it, connecting those endpoints with straight lines (to make a stacked area graph); if there is no trace before it, they behave like *tozerox* and *tozeroy*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other. Traces in a `stackgroup` will only fill to (or be filled to) other traces in the same group. With multiple `stackgroup`s or some traces stacked and some not, if fill-linked traces are not already consecutive, the later ones will be pushed down in the drawing order. + * @default 'none' + */ fill?: 'none' | 'tozeroy' | 'tozerox' | 'tonexty' | 'tonextx' | 'toself' | 'tonext'; /** Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. */ fillcolor?: Color; - /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ hoverinfo?: 'r' | 'theta' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('r' | 'theta' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; hoverlabel?: HoverLabel; /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ hovertemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ hovertemplatefallback?: any; /** Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ ids?: Datum[] | TypedArray; - /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string; /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ legendgroup?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ legendrank?: number; - /** Sets the width (in px or fraction) of the legend for this trace. */ + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ legendwidth?: number; line?: { /** Sets the line color. */ color?: Color; - /** Sets the style of the lines. */ + /** + * Sets the style of the lines. + * @default 'solid' + */ dash?: Dash; - /** Sets the line width (in px). */ + /** + * Sets the line width (in px). + * @default 2 + * Minimum: 0 + */ width?: number; }; - marker?: Marker; + marker?: _internal.Marker; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ meta?: any; /** Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*. */ mode?: 'lines' | 'markers' | 'text' | 'none' | (string & {}); /** Sets the trace name. The trace name appears as the legend item and on hover. */ name?: string; - /** Sets the opacity of the trace. */ + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ opacity?: number; /** Sets the radial coordinates */ r?: Datum[] | TypedArray; - /** Alternate to `r`. Builds a linear space of r coordinates. Use with `dr` where `r0` is the starting coordinate and `dr` the step. */ + /** + * Alternate to `r`. Builds a linear space of r coordinates. Use with `dr` where `r0` is the starting coordinate and `dr` the step. + * @default 0 + */ r0?: any; selected?: { marker?: { /** Sets the marker color of selected points. */ color?: Color; - /** Sets the marker opacity of selected points. */ + /** + * Sets the marker opacity of selected points. + * Range: [0, 1] + */ opacity?: number; - /** Sets the marker size of selected points. */ + /** + * Sets the marker size of selected points. + * Minimum: 0 + */ size?: number; }; textfont?: Font; }; /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ selectedpoints?: any; - /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ showlegend?: boolean; - stream?: Stream; - /** Sets a reference between this trace's data coordinates and a polar subplot. If *polar* (the default value), the data refer to `layout.polar`. If *polar2*, the data refer to `layout.polar2`, and so on. */ + stream?: _internal.Stream; + /** + * Sets a reference between this trace's data coordinates and a polar subplot. If *polar* (the default value), the data refer to `layout.polar`. If *polar2*, the data refer to `layout.polar2`, and so on. + * @default 'polar' + */ subplot?: string; /** Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ text?: string | string[]; @@ -5419,25 +9626,49 @@ export interface ScatterpolarglData { color?: Color | Color[]; /** HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available. */ family?: string | string[]; + /** + * Minimum: 1 + */ size?: number | number[]; - /** Sets whether a font should be styled with a normal or italic face from its family. */ + /** + * Sets whether a font should be styled with a normal or italic face from its family. + * @default 'normal' + */ style?: 'normal' | 'italic' | ('normal' | 'italic')[]; - /** Sets the variant of the font. */ + /** + * Sets the variant of the font. + * @default 'normal' + */ variant?: 'normal' | 'small-caps' | ('normal' | 'small-caps')[]; - /** Sets the weight (or boldness) of the font. */ + /** + * Sets the weight (or boldness) of the font. + * @default 'normal' + */ weight?: 'normal' | 'bold' | ('normal' | 'bold')[]; }; - /** Sets the positions of the `text` elements with respects to the (x,y) coordinates. */ + /** + * Sets the positions of the `text` elements with respects to the (x,y) coordinates. + * @default 'middle center' + */ textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right' | ('top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right')[]; /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `r`, `theta` and `text`. */ texttemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ texttemplatefallback?: any; /** Sets the angular coordinates */ theta?: Datum[] | TypedArray; - /** Alternate to `theta`. Builds a linear space of theta coordinates. Use with `dtheta` where `theta0` is the starting coordinate and `dtheta` the step. */ + /** + * Alternate to `theta`. Builds a linear space of theta coordinates. Use with `dtheta` where `theta0` is the starting coordinate and `dtheta` the step. + * @default 0 + */ theta0?: any; - /** Sets the unit of input *theta* values. Has an effect only when on *linear* angular axes. */ + /** + * Sets the unit of input *theta* values. Has an effect only when on *linear* angular axes. + * @default 'degrees' + */ thetaunit?: 'radians' | 'degrees' | 'gradians'; type?: 'scatterpolargl'; /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ @@ -5448,36 +9679,60 @@ export interface ScatterpolarglData { marker?: { /** Sets the marker color of unselected points, applied only when a selection exists. */ color?: Color; - /** Sets the marker opacity of unselected points, applied only when a selection exists. */ + /** + * Sets the marker opacity of unselected points, applied only when a selection exists. + * Range: [0, 1] + */ opacity?: number; - /** Sets the marker size of unselected points, applied only when a selection exists. */ + /** + * Sets the marker size of unselected points, applied only when a selection exists. + * Minimum: 0 + */ size?: number; }; textfont?: Font; }; - /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; } export interface ScattersmithData { - /** Determines whether or not markers and text nodes are clipped about the subplot axes. To show markers and text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*. */ + /** + * Determines whether or not markers and text nodes are clipped about the subplot axes. To show markers and text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*. + * @default false + */ cliponaxis?: boolean; - /** Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected. */ + /** + * Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected. + * @default false + */ connectgaps?: boolean; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ customdata?: Datum[] | TypedArray; - /** Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. scattersmith has a subset of the options available to scatter. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other. */ + /** + * Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. scattersmith has a subset of the options available to scatter. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other. + * @default 'none' + */ fill?: 'none' | 'toself' | 'tonext'; /** Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. */ fillcolor?: Color; - /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ hoverinfo?: 'real' | 'imag' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('real' | 'imag' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; hoverlabel?: HoverLabel; /** Do the hover effects highlight individual points (markers or line points) or do they highlight filled regions? If the fill is *toself* or *tonext* and there are no markers or text, then the default is *fills*, otherwise it is *points*. */ hoveron?: 'points' | 'fills' | (string & {}); /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ hovertemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ hovertemplatefallback?: any; /** Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ hovertext?: string | string[]; @@ -5485,37 +9740,68 @@ export interface ScattersmithData { ids?: Datum[] | TypedArray; /** Sets the imaginary component of the data, in units of normalized impedance such that real=1, imag=0 is the center of the chart. */ imag?: Datum[] | TypedArray; - /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string; /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ legendgroup?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ legendrank?: number; - /** Sets the width (in px or fraction) of the legend for this trace. */ + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ legendwidth?: number; line?: { - /** Sets the line back off from the end point of the nth line segment (in px). This option is useful e.g. to avoid overlap with arrowhead markers. With *auto* the lines would trim before markers if `marker.angleref` is set to *previous*. */ + /** + * Sets the line back off from the end point of the nth line segment (in px). This option is useful e.g. to avoid overlap with arrowhead markers. With *auto* the lines would trim before markers if `marker.angleref` is set to *previous*. + * @default 'auto' + * Minimum: 0 + */ backoff?: number | number[]; /** Sets the line color. */ color?: Color; - /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ dash?: Dash; - /** Determines the line shape. With *spline* the lines are drawn using spline interpolation. The other available values correspond to step-wise line shapes. */ + /** + * Determines the line shape. With *spline* the lines are drawn using spline interpolation. The other available values correspond to step-wise line shapes. + * @default 'linear' + */ shape?: 'linear' | 'spline'; - /** Has an effect only if `shape` is set to *spline* Sets the amount of smoothing. *0* corresponds to no smoothing (equivalent to a *linear* shape). */ + /** + * Has an effect only if `shape` is set to *spline* Sets the amount of smoothing. *0* corresponds to no smoothing (equivalent to a *linear* shape). + * @default 1 + * Range: [0, 1.3] + */ smoothing?: number; - /** Sets the line width (in px). */ + /** + * Sets the line width (in px). + * @default 2 + * Minimum: 0 + */ width?: number; }; - marker?: Marker; + marker?: _internal.Marker; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ meta?: any; /** Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*. */ mode?: 'lines' | 'markers' | 'text' | 'none' | (string & {}); /** Sets the trace name. The trace name appears as the legend item and on hover. */ name?: string; - /** Sets the opacity of the trace. */ + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ opacity?: number; /** Sets the real component of the data, in units of normalized impedance such that real=1, imag=0 is the center of the chart. */ real?: Datum[] | TypedArray; @@ -5523,29 +9809,47 @@ export interface ScattersmithData { marker?: { /** Sets the marker color of selected points. */ color?: Color; - /** Sets the marker opacity of selected points. */ + /** + * Sets the marker opacity of selected points. + * Range: [0, 1] + */ opacity?: number; - /** Sets the marker size of selected points. */ + /** + * Sets the marker size of selected points. + * Minimum: 0 + */ size?: number; }; textfont?: Font; }; /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ selectedpoints?: any; - /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ showlegend?: boolean; - stream?: Stream; - /** Sets a reference between this trace's data coordinates and a smith subplot. If *smith* (the default value), the data refer to `layout.smith`. If *smith2*, the data refer to `layout.smith2`, and so on. */ + stream?: _internal.Stream; + /** + * Sets a reference between this trace's data coordinates and a smith subplot. If *smith* (the default value), the data refer to `layout.smith`. If *smith2*, the data refer to `layout.smith2`, and so on. + * @default 'smith' + */ subplot?: string; /** Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ text?: string | string[]; /** Sets the text font. */ textfont?: FontArray; - /** Sets the positions of the `text` elements with respects to the (x,y) coordinates. */ + /** + * Sets the positions of the `text` elements with respects to the (x,y) coordinates. + * @default 'middle center' + */ textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right' | ('top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right')[]; /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `real`, `imag` and `text`. */ texttemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ texttemplatefallback?: any; type?: 'scattersmith'; /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ @@ -5556,14 +9860,23 @@ export interface ScattersmithData { marker?: { /** Sets the marker color of unselected points, applied only when a selection exists. */ color?: Color; - /** Sets the marker opacity of unselected points, applied only when a selection exists. */ + /** + * Sets the marker opacity of unselected points, applied only when a selection exists. + * Range: [0, 1] + */ opacity?: number; - /** Sets the marker size of unselected points, applied only when a selection exists. */ + /** + * Sets the marker size of unselected points, applied only when a selection exists. + * Minimum: 0 + */ size?: number; }; textfont?: Font; }; - /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; } @@ -5574,90 +9887,161 @@ export interface ScatterternaryData { b?: Datum[] | TypedArray; /** Sets the quantity of component `a` in each data point. If `a`, `b`, and `c` are all provided, they need not be normalized, only the relative values matter. If only two arrays are provided they must be normalized to match `ternary.sum`. */ c?: Datum[] | TypedArray; - /** Determines whether or not markers and text nodes are clipped about the subplot axes. To show markers and text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*. */ + /** + * Determines whether or not markers and text nodes are clipped about the subplot axes. To show markers and text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*. + * @default true + */ cliponaxis?: boolean; - /** Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected. */ + /** + * Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected. + * @default false + */ connectgaps?: boolean; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ customdata?: Datum[] | TypedArray; - /** Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. scatterternary has a subset of the options available to scatter. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other. */ + /** + * Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. scatterternary has a subset of the options available to scatter. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other. + * @default 'none' + */ fill?: 'none' | 'toself' | 'tonext'; /** Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. */ fillcolor?: Color; - /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ hoverinfo?: 'a' | 'b' | 'c' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('a' | 'b' | 'c' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; hoverlabel?: HoverLabel; /** Do the hover effects highlight individual points (markers or line points) or do they highlight filled regions? If the fill is *toself* or *tonext* and there are no markers or text, then the default is *fills*, otherwise it is *points*. */ hoveron?: 'points' | 'fills' | (string & {}); /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ hovertemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ hovertemplatefallback?: any; /** Sets hover text elements associated with each (a,b,c) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the data points in (a,b,c). To be seen, trace `hoverinfo` must contain a *text* flag. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ ids?: Datum[] | TypedArray; - /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string; /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ legendgroup?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ legendrank?: number; - /** Sets the width (in px or fraction) of the legend for this trace. */ + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ legendwidth?: number; line?: { - /** Sets the line back off from the end point of the nth line segment (in px). This option is useful e.g. to avoid overlap with arrowhead markers. With *auto* the lines would trim before markers if `marker.angleref` is set to *previous*. */ + /** + * Sets the line back off from the end point of the nth line segment (in px). This option is useful e.g. to avoid overlap with arrowhead markers. With *auto* the lines would trim before markers if `marker.angleref` is set to *previous*. + * @default 'auto' + * Minimum: 0 + */ backoff?: number | number[]; /** Sets the line color. */ color?: Color; - /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ dash?: Dash; - /** Determines the line shape. With *spline* the lines are drawn using spline interpolation. The other available values correspond to step-wise line shapes. */ + /** + * Determines the line shape. With *spline* the lines are drawn using spline interpolation. The other available values correspond to step-wise line shapes. + * @default 'linear' + */ shape?: 'linear' | 'spline'; - /** Has an effect only if `shape` is set to *spline* Sets the amount of smoothing. *0* corresponds to no smoothing (equivalent to a *linear* shape). */ + /** + * Has an effect only if `shape` is set to *spline* Sets the amount of smoothing. *0* corresponds to no smoothing (equivalent to a *linear* shape). + * @default 1 + * Range: [0, 1.3] + */ smoothing?: number; - /** Sets the line width (in px). */ + /** + * Sets the line width (in px). + * @default 2 + * Minimum: 0 + */ width?: number; }; - marker?: Marker; + marker?: _internal.Marker; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ meta?: any; - /** Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*. */ + /** + * Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*. + * @default 'markers' + */ mode?: 'lines' | 'markers' | 'text' | 'none' | (string & {}); /** Sets the trace name. The trace name appears as the legend item and on hover. */ name?: string; - /** Sets the opacity of the trace. */ + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ opacity?: number; selected?: { marker?: { /** Sets the marker color of selected points. */ color?: Color; - /** Sets the marker opacity of selected points. */ + /** + * Sets the marker opacity of selected points. + * Range: [0, 1] + */ opacity?: number; - /** Sets the marker size of selected points. */ + /** + * Sets the marker size of selected points. + * Minimum: 0 + */ size?: number; }; textfont?: Font; }; /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ selectedpoints?: any; - /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ showlegend?: boolean; - stream?: Stream; - /** Sets a reference between this trace's data coordinates and a ternary subplot. If *ternary* (the default value), the data refer to `layout.ternary`. If *ternary2*, the data refer to `layout.ternary2`, and so on. */ + stream?: _internal.Stream; + /** + * Sets a reference between this trace's data coordinates and a ternary subplot. If *ternary* (the default value), the data refer to `layout.ternary`. If *ternary2*, the data refer to `layout.ternary2`, and so on. + * @default 'ternary' + */ subplot?: string; - /** The number each triplet should sum to, if only two of `a`, `b`, and `c` are provided. This overrides `ternary.sum` to normalize this specific trace, but does not affect the values displayed on the axes. 0 (or missing) means to use ternary.sum */ + /** + * The number each triplet should sum to, if only two of `a`, `b`, and `c` are provided. This overrides `ternary.sum` to normalize this specific trace, but does not affect the values displayed on the axes. 0 (or missing) means to use ternary.sum + * @default 0 + * Minimum: 0 + */ sum?: number; /** Sets text elements associated with each (a,b,c) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the data points in (a,b,c). If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ text?: string | string[]; /** Sets the text font. */ textfont?: FontArray; - /** Sets the positions of the `text` elements with respects to the (x,y) coordinates. */ + /** + * Sets the positions of the `text` elements with respects to the (x,y) coordinates. + * @default 'middle center' + */ textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right' | ('top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right')[]; /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `a`, `b`, `c` and `text`. */ texttemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ texttemplatefallback?: any; type?: 'scatterternary'; /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ @@ -5668,14 +10052,23 @@ export interface ScatterternaryData { marker?: { /** Sets the marker color of unselected points, applied only when a selection exists. */ color?: Color; - /** Sets the marker opacity of unselected points, applied only when a selection exists. */ + /** + * Sets the marker opacity of unselected points, applied only when a selection exists. + * Range: [0, 1] + */ opacity?: number; - /** Sets the marker size of unselected points, applied only when a selection exists. */ + /** + * Sets the marker size of unselected points, applied only when a selection exists. + * Minimum: 0 + */ size?: number; }; textfont?: Font; }; - /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; } @@ -5683,12 +10076,18 @@ export interface SplomData { /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ customdata?: Datum[] | TypedArray; diagonal?: { - /** Determines whether or not subplots on the diagonal are displayed. */ + /** + * Determines whether or not subplots on the diagonal are displayed. + * @default true + */ visible?: boolean; }; dimensions?: Array<{ axis?: { - /** Determines whether or not the x & y axes generated by this dimension match. Equivalent to setting the `matches` axis attribute in the layout with the correct axis id. */ + /** + * Determines whether or not the x & y axes generated by this dimension match. Equivalent to setting the `matches` axis attribute in the layout with the correct axis id. + * @default false + */ matches?: boolean; /** Sets the axis type for this dimension's generated x and y axes. Note that the axis `type` values set in layout take precedence over this attribute. */ type?: 'linear' | 'log' | 'date' | 'category'; @@ -5701,55 +10100,92 @@ export interface SplomData { templateitemname?: string; /** Sets the dimension values to be plotted. */ values?: Datum[] | TypedArray; - /** Determines whether or not this dimension is shown on the graph. Note that even visible false dimension contribute to the default grid generate by this splom trace. */ + /** + * Determines whether or not this dimension is shown on the graph. Note that even visible false dimension contribute to the default grid generate by this splom trace. + * @default true + */ visible?: boolean; }>; - /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; hoverlabel?: HoverLabel; /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ hovertemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ hovertemplatefallback?: any; /** Same as `text`. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ ids?: Datum[] | TypedArray; - /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string; /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ legendgroup?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ legendrank?: number; - /** Sets the width (in px or fraction) of the legend for this trace. */ + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ legendwidth?: number; - marker?: Marker; + marker?: _internal.Marker; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ meta?: any; /** Sets the trace name. The trace name appears as the legend item and on hover. */ name?: string; - /** Sets the opacity of the trace. */ + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ opacity?: number; selected?: { marker?: { /** Sets the marker color of selected points. */ color?: Color; - /** Sets the marker opacity of selected points. */ + /** + * Sets the marker opacity of selected points. + * Range: [0, 1] + */ opacity?: number; - /** Sets the marker size of selected points. */ + /** + * Sets the marker size of selected points. + * Minimum: 0 + */ size?: number; }; }; /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ selectedpoints?: any; - /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ showlegend?: boolean; - /** Determines whether or not subplots on the lower half from the diagonal are displayed. */ + /** + * Determines whether or not subplots on the lower half from the diagonal are displayed. + * @default true + */ showlowerhalf?: boolean; - /** Determines whether or not subplots on the upper half from the diagonal are displayed. */ + /** + * Determines whether or not subplots on the upper half from the diagonal are displayed. + * @default true + */ showupperhalf?: boolean; - stream?: Stream; + stream?: _internal.Stream; /** Sets text elements associated with each (x,y) pair to appear on hover. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. */ text?: string | string[]; type?: 'splom'; @@ -5761,13 +10197,22 @@ export interface SplomData { marker?: { /** Sets the marker color of unselected points, applied only when a selection exists. */ color?: Color; - /** Sets the marker opacity of unselected points, applied only when a selection exists. */ + /** + * Sets the marker opacity of unselected points, applied only when a selection exists. + * Range: [0, 1] + */ opacity?: number; - /** Sets the marker size of unselected points, applied only when a selection exists. */ + /** + * Sets the marker size of unselected points, applied only when a selection exists. + * Minimum: 0 + */ size?: number; }; }; - /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; /** Sets the list of x axes corresponding to dimensions of this splom trace. By default, a splom will match the first N xaxes where N is the number of input dimensions. Note that, in case where `diagonal.visible` is false and `showupperhalf` or `showlowerhalf` is false, this splom trace will generate one less x-axis and one less y-axis. */ xaxes?: string[]; @@ -5780,69 +10225,135 @@ export interface SplomData { } export interface StreamtubeData { - /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ autocolorscale?: boolean; - /** Determines whether or not the color domain is computed with respect to the input data (here u/v/w norm) or the bounds set in `cmin` and `cmax` Defaults to `false` when `cmin` and `cmax` are set by the user. */ + /** + * Determines whether or not the color domain is computed with respect to the input data (here u/v/w norm) or the bounds set in `cmin` and `cmax` Defaults to `false` when `cmin` and `cmax` are set by the user. + * @default true + */ cauto?: boolean; - /** Sets the upper bound of the color domain. Value should have the same units as u/v/w norm and if set, `cmin` must be set as well. */ + /** + * Sets the upper bound of the color domain. Value should have the same units as u/v/w norm and if set, `cmin` must be set as well. + * Setting this also sets: cauto = false + */ cmax?: number; /** Sets the mid-point of the color domain by scaling `cmin` and/or `cmax` to be equidistant to this point. Value should have the same units as u/v/w norm. Has no effect when `cauto` is `false`. */ cmid?: number; - /** Sets the lower bound of the color domain. Value should have the same units as u/v/w norm and if set, `cmax` must be set as well. */ + /** + * Sets the lower bound of the color domain. Value should have the same units as u/v/w norm and if set, `cmax` must be set as well. + * Setting this also sets: cauto = false + */ cmin?: number; /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ coloraxis?: string; colorbar?: ColorBar; - /** Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + /** + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ colorscale?: ColorScale; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ customdata?: Datum[] | TypedArray; - /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'x+y+z+norm+text+name' + */ hoverinfo?: 'x' | 'y' | 'z' | 'u' | 'v' | 'w' | 'norm' | 'divergence' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'u' | 'v' | 'w' | 'norm' | 'divergence' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; hoverlabel?: HoverLabel; /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `tubex`, `tubey`, `tubez`, `tubeu`, `tubev`, `tubew`, `norm` and `divergence`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ hovertemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ hovertemplatefallback?: any; /** Same as `text`. */ hovertext?: string; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ ids?: Datum[] | TypedArray; - /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string; /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ legendgroup?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ legendrank?: number; - /** Sets the width (in px or fraction) of the legend for this trace. */ + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ legendwidth?: number; - lighting?: Lighting; + lighting?: _internal.Lighting; lightposition?: { - /** Numeric vector, representing the X coordinate for each vertex. */ + /** + * Numeric vector, representing the X coordinate for each vertex. + * @default 100000 + * Range: [-100000, 100000] + */ x?: number; - /** Numeric vector, representing the Y coordinate for each vertex. */ + /** + * Numeric vector, representing the Y coordinate for each vertex. + * @default 100000 + * Range: [-100000, 100000] + */ y?: number; - /** Numeric vector, representing the Z coordinate for each vertex. */ + /** + * Numeric vector, representing the Z coordinate for each vertex. + * @default 0 + * Range: [-100000, 100000] + */ z?: number; }; - /** The maximum number of displayed segments in a streamtube. */ + /** + * The maximum number of displayed segments in a streamtube. + * @default 1000 + * Minimum: 0 + */ maxdisplayed?: number; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ meta?: any; /** Sets the trace name. The trace name appears as the legend item and on hover. */ name?: string; - /** Sets the opacity of the surface. Please note that in the case of using high `opacity` values for example a value greater than or equal to 0.5 on two surfaces (and 0.25 with four surfaces), an overlay of multiple transparent surfaces may not perfectly be sorted in depth by the webgl API. This behavior may be improved in the near future and is subject to change. */ + /** + * Sets the opacity of the surface. Please note that in the case of using high `opacity` values for example a value greater than or equal to 0.5 on two surfaces (and 0.25 with four surfaces), an overlay of multiple transparent surfaces may not perfectly be sorted in depth by the webgl API. This behavior may be improved in the near future and is subject to change. + * @default 1 + * Range: [0, 1] + */ opacity?: number; - /** Reverses the color mapping if true. If true, `cmin` will correspond to the last color in the array and `cmax` will correspond to the first color. */ + /** + * Reverses the color mapping if true. If true, `cmin` will correspond to the last color in the array and `cmax` will correspond to the first color. + * @default false + */ reversescale?: boolean; - /** Sets a reference between this trace's 3D coordinate system and a 3D scene. If *scene* (the default value), the (x,y,z) coordinates refer to `layout.scene`. If *scene2*, the (x,y,z) coordinates refer to `layout.scene2`, and so on. */ + /** + * Sets a reference between this trace's 3D coordinate system and a 3D scene. If *scene* (the default value), the (x,y,z) coordinates refer to `layout.scene`. If *scene2*, the (x,y,z) coordinates refer to `layout.scene2`, and so on. + * @default 'scene' + */ scene?: string; - /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default false + */ showlegend?: boolean; - /** Determines whether or not a colorbar is displayed for this trace. */ + /** + * Determines whether or not a colorbar is displayed for this trace. + * @default true + */ showscale?: boolean; - /** The scaling factor for the streamtubes. The default is 1, which avoids two max divergence tubes from touching at adjacent starting positions. */ + /** + * The scaling factor for the streamtubes. The default is 1, which avoids two max divergence tubes from touching at adjacent starting positions. + * @default 1 + * Minimum: 0 + */ sizeref?: number; starts?: { /** Sets the x components of the starting position of the streamtubes */ @@ -5852,7 +10363,7 @@ export interface StreamtubeData { /** Sets the z components of the starting position of the streamtubes */ z?: Datum[] | TypedArray; }; - stream?: Stream; + stream?: _internal.Stream; /** Sets a text element associated with this trace. If trace `hoverinfo` contains a *text* flag, this text element will be seen in all hover labels. Note that streamtube traces do not support array `text` values. */ text?: string; type?: 'streamtube'; @@ -5868,7 +10379,10 @@ export interface StreamtubeData { v?: Datum[] | TypedArray; /** Sets the hover text formatting rule for `v` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ vhoverformat?: string; - /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; /** Sets the z components of the vector field. */ w?: Datum[] | TypedArray; @@ -5889,19 +10403,31 @@ export interface StreamtubeData { } export interface SunburstData { - /** Determines how the items in `values` are summed. When set to *total*, items in `values` are taken to be value of all its descendants. When set to *remainder*, items in `values` corresponding to the root and the branches sectors are taken to be the extra part not part of the sum of the values at their leaves. */ + /** + * Determines how the items in `values` are summed. When set to *total*, items in `values` are taken to be value of all its descendants. When set to *remainder*, items in `values` corresponding to the root and the branches sectors are taken to be the extra part not part of the sum of the values at their leaves. + * @default 'remainder' + */ branchvalues?: 'remainder' | 'total'; - /** Determines default for `values` when it is not provided, by inferring a 1 for each of the *leaves* and/or *branches*, otherwise 0. */ + /** + * Determines default for `values` when it is not provided, by inferring a 1 for each of the *leaves* and/or *branches*, otherwise 0. + * @default 'leaves' + */ count?: 'branches' | 'leaves' | (string & {}); /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ customdata?: Datum[] | TypedArray; domain?: Domain; - /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'label+text+value+name' + */ hoverinfo?: 'label' | 'text' | 'value' | 'name' | 'current path' | 'percent root' | 'percent entry' | 'percent parent' | 'all' | 'none' | 'skip' | (string & {}) | ('label' | 'text' | 'value' | 'name' | 'current path' | 'percent root' | 'percent entry' | 'percent parent' | 'all' | 'none' | 'skip' | (string & {}))[]; hoverlabel?: HoverLabel; /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `currentPath`, `root`, `entry`, `percentRoot`, `percentEntry` and `percentParent`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ hovertemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ hovertemplatefallback?: any; /** Sets hover text elements associated with each sector. If a single string, the same string appears for all data points. If an array of string, the items are mapped in order of this trace's sectors. To be seen, trace `hoverinfo` must contain a *text* flag. */ hovertext?: string | string[]; @@ -5909,67 +10435,116 @@ export interface SunburstData { ids?: Datum[] | TypedArray; /** Sets the font used for `textinfo` lying inside the sector. */ insidetextfont?: FontArray; - /** Controls the orientation of the text inside chart sectors. When set to *auto*, text may be oriented in any direction in order to be as big as possible in the middle of a sector. The *horizontal* option orients text to be parallel with the bottom of the chart, and may make text smaller in order to achieve that goal. The *radial* option orients text along the radius of the sector. The *tangential* option orients text perpendicular to the radius of the sector. */ + /** + * Controls the orientation of the text inside chart sectors. When set to *auto*, text may be oriented in any direction in order to be as big as possible in the middle of a sector. The *horizontal* option orients text to be parallel with the bottom of the chart, and may make text smaller in order to achieve that goal. The *radial* option orients text along the radius of the sector. The *tangential* option orients text perpendicular to the radius of the sector. + * @default 'auto' + */ insidetextorientation?: 'horizontal' | 'radial' | 'tangential' | 'auto'; /** Sets the labels of each of the sectors. */ labels?: Datum[] | TypedArray; leaf?: { - /** Sets the opacity of the leaves. With colorscale it is defaulted to 1; otherwise it is defaulted to 0.7 */ + /** + * Sets the opacity of the leaves. With colorscale it is defaulted to 1; otherwise it is defaulted to 0.7 + * Range: [0, 1] + */ opacity?: number; }; - /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ legendrank?: number; - /** Sets the width (in px or fraction) of the legend for this trace. */ + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ legendwidth?: number; /** Sets the level from which this trace hierarchy is rendered. Set `level` to `''` to start from the root node in the hierarchy. Must be an "id" if `ids` is filled in, otherwise plotly attempts to find a matching item in `labels`. */ level?: any; marker?: { - /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if colors is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if colors is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ autocolorscale?: boolean; - /** Determines whether or not the color domain is computed with respect to the input data (here colors) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if colors is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. */ + /** + * Determines whether or not the color domain is computed with respect to the input data (here colors) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if colors is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. + * @default true + */ cauto?: boolean; - /** Sets the upper bound of the color domain. Has an effect only if colors is set to a numerical array. Value should have the same units as colors and if set, `marker.cmin` must be set as well. */ + /** + * Sets the upper bound of the color domain. Has an effect only if colors is set to a numerical array. Value should have the same units as colors and if set, `marker.cmin` must be set as well. + * Setting this also sets: cauto = false + */ cmax?: number; /** Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if colors is set to a numerical array. Value should have the same units as colors. Has no effect when `marker.cauto` is `false`. */ cmid?: number; - /** Sets the lower bound of the color domain. Has an effect only if colors is set to a numerical array. Value should have the same units as colors and if set, `marker.cmax` must be set as well. */ + /** + * Sets the lower bound of the color domain. Has an effect only if colors is set to a numerical array. Value should have the same units as colors and if set, `marker.cmax` must be set as well. + * Setting this also sets: cauto = false + */ cmin?: number; /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ coloraxis?: string; colorbar?: ColorBar; /** Sets the color of each sector of this trace. If not specified, the default trace color set is used to pick the sector colors. */ colors?: Datum[] | TypedArray; - /** Sets the colorscale. Has an effect only if colors is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + /** + * Sets the colorscale. Has an effect only if colors is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ colorscale?: ColorScale; - line?: Line; + line?: _internal.Line; /** Sets the pattern within the marker. */ pattern?: Pattern; - /** Reverses the color mapping if true. Has an effect only if colors is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. */ + /** + * Reverses the color mapping if true. Has an effect only if colors is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. + * @default false + */ reversescale?: boolean; - /** Determines whether or not a colorbar is displayed for this trace. Has an effect only if colors is set to a numerical array. */ + /** + * Determines whether or not a colorbar is displayed for this trace. Has an effect only if colors is set to a numerical array. + * @default false + */ showscale?: boolean; }; - /** Sets the number of rendered sectors from any given `level`. Set `maxdepth` to *-1* to render all the levels in the hierarchy. */ + /** + * Sets the number of rendered sectors from any given `level`. Set `maxdepth` to *-1* to render all the levels in the hierarchy. + * @default -1 + */ maxdepth?: number; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ meta?: any; /** Sets the trace name. The trace name appears as the legend item and on hover. */ name?: string; - /** Sets the opacity of the trace. */ + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ opacity?: number; /** Sets the font used for `textinfo` lying outside the sector. This option refers to the root of the hierarchy presented at the center of a sunburst graph. Please note that if a hierarchy has multiple root nodes, this option won't have any effect and `insidetextfont` would be used. */ outsidetextfont?: FontArray; /** Sets the parent sectors for each of the sectors. Empty string items '' are understood to reference the root node in the hierarchy. If `ids` is filled, `parents` items are understood to be "ids" themselves. When `ids` is not set, plotly attempts to find matching items in `labels`, but beware they must be unique. */ parents?: Datum[] | TypedArray; root?: Font; - /** Rotates the whole diagram counterclockwise by some angle. By default the first slice starts at 3 o'clock. */ + /** + * Rotates the whole diagram counterclockwise by some angle. By default the first slice starts at 3 o'clock. + * @default 0 + */ rotation?: number | 'auto'; - /** Determines whether or not the sectors are reordered from largest to smallest. */ + /** + * Determines whether or not the sectors are reordered from largest to smallest. + * @default true + */ sort?: boolean; - stream?: Stream; + stream?: _internal.Stream; /** Sets text elements associated with each sector. If trace `textinfo` contains a *text* flag, these elements will be seen on the chart. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ text?: Datum[] | TypedArray; /** Sets the font used for `textinfo`. */ @@ -5978,7 +10553,10 @@ export interface SunburstData { textinfo?: 'label' | 'text' | 'value' | 'current path' | 'percent root' | 'percent entry' | 'percent parent' | 'none' | (string & {}); /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `currentPath`, `root`, `entry`, `percentRoot`, `percentEntry`, `percentParent`, `label` and `value`. */ texttemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ texttemplatefallback?: any; type?: 'sunburst'; /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ @@ -5987,181 +10565,373 @@ export interface SunburstData { uirevision?: any; /** Sets the values associated with each of the sectors. Use with `branchvalues` to determine how the values are summed. */ values?: Datum[] | TypedArray; - /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; } export interface SurfaceData { - /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default false + */ autocolorscale?: boolean; - /** Determines whether or not the color domain is computed with respect to the input data (here z or surfacecolor) or the bounds set in `cmin` and `cmax` Defaults to `false` when `cmin` and `cmax` are set by the user. */ + /** + * Determines whether or not the color domain is computed with respect to the input data (here z or surfacecolor) or the bounds set in `cmin` and `cmax` Defaults to `false` when `cmin` and `cmax` are set by the user. + * @default true + */ cauto?: boolean; - /** Sets the upper bound of the color domain. Value should have the same units as z or surfacecolor and if set, `cmin` must be set as well. */ + /** + * Sets the upper bound of the color domain. Value should have the same units as z or surfacecolor and if set, `cmin` must be set as well. + * Setting this also sets: cauto = false + */ cmax?: number; /** Sets the mid-point of the color domain by scaling `cmin` and/or `cmax` to be equidistant to this point. Value should have the same units as z or surfacecolor. Has no effect when `cauto` is `false`. */ cmid?: number; - /** Sets the lower bound of the color domain. Value should have the same units as z or surfacecolor and if set, `cmax` must be set as well. */ + /** + * Sets the lower bound of the color domain. Value should have the same units as z or surfacecolor and if set, `cmax` must be set as well. + * Setting this also sets: cauto = false + */ cmin?: number; /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ coloraxis?: string; colorbar?: ColorBar; - /** Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + /** + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ colorscale?: ColorScale; - /** Determines whether or not gaps (i.e. {nan} or missing values) in the `z` data are filled in. */ + /** + * Determines whether or not gaps (i.e. {nan} or missing values) in the `z` data are filled in. + * @default false + */ connectgaps?: boolean; contours?: { x?: { - /** Sets the color of the contour lines. */ + /** + * Sets the color of the contour lines. + * @default '#444' + */ color?: Color; /** Sets the end contour level value. Must be more than `contours.start` */ end?: number; - /** Determines whether or not contour lines about the x dimension are highlighted on hover. */ + /** + * Determines whether or not contour lines about the x dimension are highlighted on hover. + * @default true + */ highlight?: boolean; - /** Sets the color of the highlighted contour lines. */ + /** + * Sets the color of the highlighted contour lines. + * @default '#444' + */ highlightcolor?: Color; - /** Sets the width of the highlighted contour lines. */ + /** + * Sets the width of the highlighted contour lines. + * @default 2 + * Range: [1, 16] + */ highlightwidth?: number; project?: { - /** Determines whether or not these contour lines are projected on the x plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence. */ + /** + * Determines whether or not these contour lines are projected on the x plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence. + * @default false + */ x?: boolean; - /** Determines whether or not these contour lines are projected on the y plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence. */ + /** + * Determines whether or not these contour lines are projected on the y plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence. + * @default false + */ y?: boolean; - /** Determines whether or not these contour lines are projected on the z plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence. */ + /** + * Determines whether or not these contour lines are projected on the z plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence. + * @default false + */ z?: boolean; }; - /** Determines whether or not contour lines about the x dimension are drawn. */ + /** + * Determines whether or not contour lines about the x dimension are drawn. + * @default false + */ show?: boolean; - /** Sets the step between each contour level. Must be positive. */ + /** + * Sets the step between each contour level. Must be positive. + * Minimum: 0 + */ size?: number; /** Sets the starting contour level value. Must be less than `contours.end` */ start?: number; - /** An alternate to *color*. Determines whether or not the contour lines are colored using the trace *colorscale*. */ + /** + * An alternate to *color*. Determines whether or not the contour lines are colored using the trace *colorscale*. + * @default false + */ usecolormap?: boolean; - /** Sets the width of the contour lines. */ + /** + * Sets the width of the contour lines. + * @default 2 + * Range: [1, 16] + */ width?: number; }; y?: { - /** Sets the color of the contour lines. */ + /** + * Sets the color of the contour lines. + * @default '#444' + */ color?: Color; /** Sets the end contour level value. Must be more than `contours.start` */ end?: number; - /** Determines whether or not contour lines about the y dimension are highlighted on hover. */ + /** + * Determines whether or not contour lines about the y dimension are highlighted on hover. + * @default true + */ highlight?: boolean; - /** Sets the color of the highlighted contour lines. */ + /** + * Sets the color of the highlighted contour lines. + * @default '#444' + */ highlightcolor?: Color; - /** Sets the width of the highlighted contour lines. */ + /** + * Sets the width of the highlighted contour lines. + * @default 2 + * Range: [1, 16] + */ highlightwidth?: number; project?: { - /** Determines whether or not these contour lines are projected on the x plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence. */ + /** + * Determines whether or not these contour lines are projected on the x plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence. + * @default false + */ x?: boolean; - /** Determines whether or not these contour lines are projected on the y plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence. */ + /** + * Determines whether or not these contour lines are projected on the y plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence. + * @default false + */ y?: boolean; - /** Determines whether or not these contour lines are projected on the z plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence. */ + /** + * Determines whether or not these contour lines are projected on the z plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence. + * @default false + */ z?: boolean; }; - /** Determines whether or not contour lines about the y dimension are drawn. */ + /** + * Determines whether or not contour lines about the y dimension are drawn. + * @default false + */ show?: boolean; - /** Sets the step between each contour level. Must be positive. */ + /** + * Sets the step between each contour level. Must be positive. + * Minimum: 0 + */ size?: number; /** Sets the starting contour level value. Must be less than `contours.end` */ start?: number; - /** An alternate to *color*. Determines whether or not the contour lines are colored using the trace *colorscale*. */ + /** + * An alternate to *color*. Determines whether or not the contour lines are colored using the trace *colorscale*. + * @default false + */ usecolormap?: boolean; - /** Sets the width of the contour lines. */ + /** + * Sets the width of the contour lines. + * @default 2 + * Range: [1, 16] + */ width?: number; }; z?: { - /** Sets the color of the contour lines. */ + /** + * Sets the color of the contour lines. + * @default '#444' + */ color?: Color; /** Sets the end contour level value. Must be more than `contours.start` */ end?: number; - /** Determines whether or not contour lines about the z dimension are highlighted on hover. */ + /** + * Determines whether or not contour lines about the z dimension are highlighted on hover. + * @default true + */ highlight?: boolean; - /** Sets the color of the highlighted contour lines. */ + /** + * Sets the color of the highlighted contour lines. + * @default '#444' + */ highlightcolor?: Color; - /** Sets the width of the highlighted contour lines. */ + /** + * Sets the width of the highlighted contour lines. + * @default 2 + * Range: [1, 16] + */ highlightwidth?: number; project?: { - /** Determines whether or not these contour lines are projected on the x plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence. */ + /** + * Determines whether or not these contour lines are projected on the x plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence. + * @default false + */ x?: boolean; - /** Determines whether or not these contour lines are projected on the y plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence. */ + /** + * Determines whether or not these contour lines are projected on the y plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence. + * @default false + */ y?: boolean; - /** Determines whether or not these contour lines are projected on the z plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence. */ + /** + * Determines whether or not these contour lines are projected on the z plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence. + * @default false + */ z?: boolean; }; - /** Determines whether or not contour lines about the z dimension are drawn. */ + /** + * Determines whether or not contour lines about the z dimension are drawn. + * @default false + */ show?: boolean; - /** Sets the step between each contour level. Must be positive. */ + /** + * Sets the step between each contour level. Must be positive. + * Minimum: 0 + */ size?: number; /** Sets the starting contour level value. Must be less than `contours.end` */ start?: number; - /** An alternate to *color*. Determines whether or not the contour lines are colored using the trace *colorscale*. */ + /** + * An alternate to *color*. Determines whether or not the contour lines are colored using the trace *colorscale*. + * @default false + */ usecolormap?: boolean; - /** Sets the width of the contour lines. */ + /** + * Sets the width of the contour lines. + * @default 2 + * Range: [1, 16] + */ width?: number; }; }; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ customdata?: Datum[] | TypedArray; - /** Determines whether or not a surface is drawn. For example, set `hidesurface` to *false* `contours.x.show` to *true* and `contours.y.show` to *true* to draw a wire frame plot. */ + /** + * Determines whether or not a surface is drawn. For example, set `hidesurface` to *false* `contours.x.show` to *true* and `contours.y.show` to *true* to draw a wire frame plot. + * @default false + */ hidesurface?: boolean; - /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; hoverlabel?: HoverLabel; /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ hovertemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ hovertemplatefallback?: any; /** Same as `text`. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ ids?: Datum[] | TypedArray; - /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string; /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ legendgroup?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ legendrank?: number; - /** Sets the width (in px or fraction) of the legend for this trace. */ + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ legendwidth?: number; lighting?: { - /** Ambient light increases overall color visibility but can wash out the image. */ + /** + * Ambient light increases overall color visibility but can wash out the image. + * @default 0.8 + * Range: [0, 1] + */ ambient?: number; - /** Represents the extent that incident rays are reflected in a range of angles. */ + /** + * Represents the extent that incident rays are reflected in a range of angles. + * @default 0.8 + * Range: [0, 1] + */ diffuse?: number; - /** Represents the reflectance as a dependency of the viewing angle; e.g. paper is reflective when viewing it from the edge of the paper (almost 90 degrees), causing shine. */ + /** + * Represents the reflectance as a dependency of the viewing angle; e.g. paper is reflective when viewing it from the edge of the paper (almost 90 degrees), causing shine. + * @default 0.2 + * Range: [0, 5] + */ fresnel?: number; - /** Alters specular reflection; the rougher the surface, the wider and less contrasty the shine. */ + /** + * Alters specular reflection; the rougher the surface, the wider and less contrasty the shine. + * @default 0.5 + * Range: [0, 1] + */ roughness?: number; - /** Represents the level that incident rays are reflected in a single direction, causing shine. */ + /** + * Represents the level that incident rays are reflected in a single direction, causing shine. + * @default 0.05 + * Range: [0, 2] + */ specular?: number; }; lightposition?: { - /** Numeric vector, representing the X coordinate for each vertex. */ + /** + * Numeric vector, representing the X coordinate for each vertex. + * @default 10 + * Range: [-100000, 100000] + */ x?: number; - /** Numeric vector, representing the Y coordinate for each vertex. */ + /** + * Numeric vector, representing the Y coordinate for each vertex. + * @default 10000 + * Range: [-100000, 100000] + */ y?: number; - /** Numeric vector, representing the Z coordinate for each vertex. */ + /** + * Numeric vector, representing the Z coordinate for each vertex. + * @default 0 + * Range: [-100000, 100000] + */ z?: number; }; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ meta?: any; /** Sets the trace name. The trace name appears as the legend item and on hover. */ name?: string; - /** Sets the opacity of the surface. Please note that in the case of using high `opacity` values for example a value greater than or equal to 0.5 on two surfaces (and 0.25 with four surfaces), an overlay of multiple transparent surfaces may not perfectly be sorted in depth by the webgl API. This behavior may be improved in the near future and is subject to change. */ + /** + * Sets the opacity of the surface. Please note that in the case of using high `opacity` values for example a value greater than or equal to 0.5 on two surfaces (and 0.25 with four surfaces), an overlay of multiple transparent surfaces may not perfectly be sorted in depth by the webgl API. This behavior may be improved in the near future and is subject to change. + * @default 1 + * Range: [0, 1] + */ opacity?: number; /** Sets the opacityscale. The opacityscale must be an array containing arrays mapping a normalized value to an opacity value. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 1], [0.5, 0.2], [1, 1]]` means that higher/lower values would have higher opacity values and those in the middle would be more transparent Alternatively, `opacityscale` may be a palette name string of the following list: 'min', 'max', 'extremes' and 'uniform'. The default is 'uniform'. */ opacityscale?: any; - /** Reverses the color mapping if true. If true, `cmin` will correspond to the last color in the array and `cmax` will correspond to the first color. */ + /** + * Reverses the color mapping if true. If true, `cmin` will correspond to the last color in the array and `cmax` will correspond to the first color. + * @default false + */ reversescale?: boolean; - /** Sets a reference between this trace's 3D coordinate system and a 3D scene. If *scene* (the default value), the (x,y,z) coordinates refer to `layout.scene`. If *scene2*, the (x,y,z) coordinates refer to `layout.scene2`, and so on. */ + /** + * Sets a reference between this trace's 3D coordinate system and a 3D scene. If *scene* (the default value), the (x,y,z) coordinates refer to `layout.scene`. If *scene2*, the (x,y,z) coordinates refer to `layout.scene2`, and so on. + * @default 'scene' + */ scene?: string; - /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default false + */ showlegend?: boolean; - /** Determines whether or not a colorbar is displayed for this trace. */ + /** + * Determines whether or not a colorbar is displayed for this trace. + * @default true + */ showscale?: boolean; - stream?: Stream; + stream?: _internal.Stream; /** Sets the surface color values, used for setting a color scale independent of `z`. */ surfacecolor?: Datum[] | TypedArray; /** Sets the text elements associated with each z value. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ @@ -6171,23 +10941,35 @@ export interface SurfaceData { uid?: string; /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ uirevision?: any; - /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; /** Sets the x coordinates. */ x?: Datum[] | TypedArray; - /** Sets the calendar system to use with `x` date data. */ + /** + * Sets the calendar system to use with `x` date data. + * @default 'gregorian' + */ xcalendar?: Calendar; /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; /** Sets the y coordinates. */ y?: Datum[] | TypedArray; - /** Sets the calendar system to use with `y` date data. */ + /** + * Sets the calendar system to use with `y` date data. + * @default 'gregorian' + */ ycalendar?: Calendar; /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ yhoverformat?: string; /** Sets the z coordinates. */ z?: Datum[] | TypedArray; - /** Sets the calendar system to use with `z` date data. */ + /** + * Sets the calendar system to use with `z` date data. + * @default 'gregorian' + */ zcalendar?: Calendar; /** Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`. */ zhoverformat?: string; @@ -6195,20 +10977,32 @@ export interface SurfaceData { export interface TableData { cells?: { - /** Sets the horizontal alignment of the `text` within the box. Has an effect only if `text` spans two or more lines (i.e. `text` contains one or more
HTML tags) or if an explicit width is set to override the text width. */ + /** + * Sets the horizontal alignment of the `text` within the box. Has an effect only if `text` spans two or more lines (i.e. `text` contains one or more
HTML tags) or if an explicit width is set to override the text width. + * @default 'center' + */ align?: 'left' | 'center' | 'right' | ('left' | 'center' | 'right')[]; fill?: FontArray; font?: FontArray; - /** Sets the cell value formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. */ + /** + * Sets the cell value formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. + * @default [] + */ format?: Datum[] | TypedArray; - /** The height of cells. */ + /** + * The height of cells. + * @default 20 + */ height?: number; - line?: Line; + line?: _internal.Line; /** Prefix for cell values. */ prefix?: string | string[]; /** Suffix for cell values. */ suffix?: string | string[]; - /** Cell values. `values[m][n]` represents the value of the `n`th point in column `m`, therefore the `values[m]` vector length for all columns must be the same (longer vectors will be truncated). Each value must be a finite number or a string. */ + /** + * Cell values. `values[m][n]` represents the value of the `n`th point in column `m`, therefore the `values[m]` vector length for all columns must be the same (longer vectors will be truncated). Each value must be a finite number or a string. + * @default [] + */ values?: Datum[] | TypedArray; }; /** Specifies the rendered order of the data columns; for example, a value `2` at position `0` means that column index `0` in the data will be rendered as the third column, as columns have an index base of zero. */ @@ -6219,62 +11013,101 @@ export interface TableData { customdata?: Datum[] | TypedArray; domain?: Domain; header?: { - /** Sets the horizontal alignment of the `text` within the box. Has an effect only if `text` spans two or more lines (i.e. `text` contains one or more
HTML tags) or if an explicit width is set to override the text width. */ + /** + * Sets the horizontal alignment of the `text` within the box. Has an effect only if `text` spans two or more lines (i.e. `text` contains one or more
HTML tags) or if an explicit width is set to override the text width. + * @default 'center' + */ align?: 'left' | 'center' | 'right' | ('left' | 'center' | 'right')[]; fill?: FontArray; font?: FontArray; - /** Sets the cell value formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. */ + /** + * Sets the cell value formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. + * @default [] + */ format?: Datum[] | TypedArray; - /** The height of cells. */ + /** + * The height of cells. + * @default 28 + */ height?: number; - line?: Line; + line?: _internal.Line; /** Prefix for cell values. */ prefix?: string | string[]; /** Suffix for cell values. */ suffix?: string | string[]; - /** Header cell values. `values[m][n]` represents the value of the `n`th point in column `m`, therefore the `values[m]` vector length for all columns must be the same (longer vectors will be truncated). Each value must be a finite number or a string. */ + /** + * Header cell values. `values[m][n]` represents the value of the `n`th point in column `m`, therefore the `values[m]` vector length for all columns must be the same (longer vectors will be truncated). Each value must be a finite number or a string. + * @default [] + */ values?: Datum[] | TypedArray; }; - /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; hoverlabel?: HoverLabel; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ ids?: Datum[] | TypedArray; - /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ legendrank?: number; - /** Sets the width (in px or fraction) of the legend for this trace. */ + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ legendwidth?: number; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ meta?: any; /** Sets the trace name. The trace name appears as the legend item and on hover. */ name?: string; - stream?: Stream; + stream?: _internal.Stream; type?: 'table'; /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ uid?: string; /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ uirevision?: any; - /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; } export interface TreemapData { - /** Determines how the items in `values` are summed. When set to *total*, items in `values` are taken to be value of all its descendants. When set to *remainder*, items in `values` corresponding to the root and the branches sectors are taken to be the extra part not part of the sum of the values at their leaves. */ + /** + * Determines how the items in `values` are summed. When set to *total*, items in `values` are taken to be value of all its descendants. When set to *remainder*, items in `values` corresponding to the root and the branches sectors are taken to be the extra part not part of the sum of the values at their leaves. + * @default 'remainder' + */ branchvalues?: 'remainder' | 'total'; - /** Determines default for `values` when it is not provided, by inferring a 1 for each of the *leaves* and/or *branches*, otherwise 0. */ + /** + * Determines default for `values` when it is not provided, by inferring a 1 for each of the *leaves* and/or *branches*, otherwise 0. + * @default 'leaves' + */ count?: 'branches' | 'leaves' | (string & {}); /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ customdata?: Datum[] | TypedArray; domain?: Domain; - /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'label+text+value+name' + */ hoverinfo?: 'label' | 'text' | 'value' | 'name' | 'current path' | 'percent root' | 'percent entry' | 'percent parent' | 'all' | 'none' | 'skip' | (string & {}) | ('label' | 'text' | 'value' | 'name' | 'current path' | 'percent root' | 'percent entry' | 'percent parent' | 'all' | 'none' | 'skip' | (string & {}))[]; hoverlabel?: HoverLabel; /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `currentPath`, `root`, `entry`, `percentRoot`, `percentEntry` and `percentParent`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ hovertemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ hovertemplatefallback?: any; /** Sets hover text elements associated with each sector. If a single string, the same string appears for all data points. If an array of string, the items are mapped in order of this trace's sectors. To be seen, trace `hoverinfo` must contain a *text* flag. */ hovertext?: string | string[]; @@ -6284,103 +11117,188 @@ export interface TreemapData { insidetextfont?: FontArray; /** Sets the labels of each of the sectors. */ labels?: Datum[] | TypedArray; - /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ legendrank?: number; - /** Sets the width (in px or fraction) of the legend for this trace. */ + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ legendwidth?: number; /** Sets the level from which this trace hierarchy is rendered. Set `level` to `''` to start from the root node in the hierarchy. Must be an "id" if `ids` is filled in, otherwise plotly attempts to find a matching item in `labels`. */ level?: any; marker?: { - /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if colors is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if colors is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ autocolorscale?: boolean; - /** Determines whether or not the color domain is computed with respect to the input data (here colors) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if colors is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. */ + /** + * Determines whether or not the color domain is computed with respect to the input data (here colors) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if colors is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. + * @default true + */ cauto?: boolean; - /** Sets the upper bound of the color domain. Has an effect only if colors is set to a numerical array. Value should have the same units as colors and if set, `marker.cmin` must be set as well. */ + /** + * Sets the upper bound of the color domain. Has an effect only if colors is set to a numerical array. Value should have the same units as colors and if set, `marker.cmin` must be set as well. + * Setting this also sets: cauto = false + */ cmax?: number; /** Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if colors is set to a numerical array. Value should have the same units as colors. Has no effect when `marker.cauto` is `false`. */ cmid?: number; - /** Sets the lower bound of the color domain. Has an effect only if colors is set to a numerical array. Value should have the same units as colors and if set, `marker.cmax` must be set as well. */ + /** + * Sets the lower bound of the color domain. Has an effect only if colors is set to a numerical array. Value should have the same units as colors and if set, `marker.cmax` must be set as well. + * Setting this also sets: cauto = false + */ cmin?: number; /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ coloraxis?: string; colorbar?: ColorBar; /** Sets the color of each sector of this trace. If not specified, the default trace color set is used to pick the sector colors. */ colors?: Datum[] | TypedArray; - /** Sets the colorscale. Has an effect only if colors is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + /** + * Sets the colorscale. Has an effect only if colors is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ colorscale?: ColorScale; - /** Sets the maximum rounding of corners (in px). */ + /** + * Sets the maximum rounding of corners (in px). + * @default 0 + * Minimum: 0 + */ cornerradius?: number; /** Determines if the sector colors are faded towards the background from the leaves up to the headers. This option is unavailable when a `colorscale` is present, defaults to false when `marker.colors` is set, but otherwise defaults to true. When set to *reversed*, the fading direction is inverted, that is the top elements within hierarchy are drawn with fully saturated colors while the leaves are faded towards the background color. */ depthfade?: true | false | 'reversed'; - line?: Line; + line?: _internal.Line; pad?: { - /** Sets the padding form the bottom (in px). */ + /** + * Sets the padding form the bottom (in px). + * Minimum: 0 + */ b?: number; - /** Sets the padding form the left (in px). */ + /** + * Sets the padding form the left (in px). + * Minimum: 0 + */ l?: number; - /** Sets the padding form the right (in px). */ + /** + * Sets the padding form the right (in px). + * Minimum: 0 + */ r?: number; - /** Sets the padding form the top (in px). */ + /** + * Sets the padding form the top (in px). + * Minimum: 0 + */ t?: number; }; /** Sets the pattern within the marker. */ pattern?: Pattern; - /** Reverses the color mapping if true. Has an effect only if colors is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. */ + /** + * Reverses the color mapping if true. Has an effect only if colors is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. + * @default false + */ reversescale?: boolean; - /** Determines whether or not a colorbar is displayed for this trace. Has an effect only if colors is set to a numerical array. */ + /** + * Determines whether or not a colorbar is displayed for this trace. Has an effect only if colors is set to a numerical array. + * @default false + */ showscale?: boolean; }; - /** Sets the number of rendered sectors from any given `level`. Set `maxdepth` to *-1* to render all the levels in the hierarchy. */ + /** + * Sets the number of rendered sectors from any given `level`. Set `maxdepth` to *-1* to render all the levels in the hierarchy. + * @default -1 + */ maxdepth?: number; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ meta?: any; /** Sets the trace name. The trace name appears as the legend item and on hover. */ name?: string; - /** Sets the opacity of the trace. */ + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ opacity?: number; /** Sets the font used for `textinfo` lying outside the sector. This option refers to the root of the hierarchy presented on top left corner of a treemap graph. Please note that if a hierarchy has multiple root nodes, this option won't have any effect and `insidetextfont` would be used. */ outsidetextfont?: FontArray; /** Sets the parent sectors for each of the sectors. Empty string items '' are understood to reference the root node in the hierarchy. If `ids` is filled, `parents` items are understood to be "ids" themselves. When `ids` is not set, plotly attempts to find matching items in `labels`, but beware they must be unique. */ parents?: Datum[] | TypedArray; pathbar?: { - /** Determines which shape is used for edges between `barpath` labels. */ + /** + * Determines which shape is used for edges between `barpath` labels. + * @default '>' + */ edgeshape?: '>' | '<' | '|' | '/' | '\\'; - /** Determines on which side of the treemap the `pathbar` should be presented. */ + /** + * Determines on which side of the treemap the `pathbar` should be presented. + * @default 'top' + */ side?: 'top' | 'bottom'; /** Sets the font used inside `pathbar`. */ textfont?: FontArray; - /** Sets the thickness of `pathbar` (in px). If not specified the `pathbar.textfont.size` is used with 3 pixles extra padding on each side. */ + /** + * Sets the thickness of `pathbar` (in px). If not specified the `pathbar.textfont.size` is used with 3 pixles extra padding on each side. + * Minimum: 12 + */ thickness?: number; - /** Determines if the path bar is drawn i.e. outside the trace `domain` and with one pixel gap. */ + /** + * Determines if the path bar is drawn i.e. outside the trace `domain` and with one pixel gap. + * @default true + */ visible?: boolean; }; root?: Font; - /** Determines whether or not the sectors are reordered from largest to smallest. */ + /** + * Determines whether or not the sectors are reordered from largest to smallest. + * @default true + */ sort?: boolean; - stream?: Stream; + stream?: _internal.Stream; /** Sets text elements associated with each sector. If trace `textinfo` contains a *text* flag, these elements will be seen on the chart. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ text?: Datum[] | TypedArray; /** Sets the font used for `textinfo`. */ textfont?: FontArray; /** Determines which trace information appear on the graph. */ textinfo?: 'label' | 'text' | 'value' | 'current path' | 'percent root' | 'percent entry' | 'percent parent' | 'none' | (string & {}); - /** Sets the positions of the `text` elements. */ + /** + * Sets the positions of the `text` elements. + * @default 'top left' + */ textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right'; /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `currentPath`, `root`, `entry`, `percentRoot`, `percentEntry`, `percentParent`, `label` and `value`. */ texttemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ texttemplatefallback?: any; tiling?: { /** Determines if the positions obtained from solver are flipped on each axis. */ flip?: 'x' | 'y' | (string & {}); - /** Determines d3 treemap solver. For more info please refer to https://github.com/d3/d3-hierarchy#treemap-tiling */ + /** + * Determines d3 treemap solver. For more info please refer to https://github.com/d3/d3-hierarchy#treemap-tiling + * @default 'squarify' + */ packing?: 'squarify' | 'binary' | 'dice' | 'slice' | 'slice-dice' | 'dice-slice'; - /** Sets the inner padding (in px). */ + /** + * Sets the inner padding (in px). + * @default 3 + * Minimum: 0 + */ pad?: number; - /** When using *squarify* `packing` algorithm, according to https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#squarify_ratio this option specifies the desired aspect ratio of the generated rectangles. The ratio must be specified as a number greater than or equal to one. Note that the orientation of the generated rectangles (tall or wide) is not implied by the ratio; for example, a ratio of two will attempt to produce a mixture of rectangles whose width:height ratio is either 2:1 or 1:2. When using *squarify*, unlike d3 which uses the Golden Ratio i.e. 1.618034, Plotly applies 1 to increase squares in treemap layouts. */ + /** + * When using *squarify* `packing` algorithm, according to https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#squarify_ratio this option specifies the desired aspect ratio of the generated rectangles. The ratio must be specified as a number greater than or equal to one. Note that the orientation of the generated rectangles (tall or wide) is not implied by the ratio; for example, a ratio of two will attempt to produce a mixture of rectangles whose width:height ratio is either 2:1 or 1:2. When using *squarify*, unlike d3 which uses the Golden Ratio i.e. 1.618034, Plotly applies 1 to increase squares in treemap layouts. + * @default 1 + * Minimum: 1 + */ squarifyratio?: number; }; type?: 'treemap'; @@ -6390,83 +11308,151 @@ export interface TreemapData { uirevision?: any; /** Sets the values associated with each of the sectors. Use with `branchvalues` to determine how the values are summed. */ values?: Datum[] | TypedArray; - /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; } export interface ViolinData { /** Set several traces linked to the same position axis or matching axes to the same alignmentgroup. This controls whether bars compute their positional range dependently or independently. */ alignmentgroup?: string; - /** Sets the bandwidth used to compute the kernel density estimate. By default, the bandwidth is determined by Silverman's rule of thumb. */ + /** + * Sets the bandwidth used to compute the kernel density estimate. By default, the bandwidth is determined by Silverman's rule of thumb. + * Minimum: 0 + */ bandwidth?: number; box?: { /** Sets the inner box plot fill color. */ fillcolor?: Color; - line?: ErrorY; - /** Determines if an miniature box plot is drawn inside the violins. */ + line?: _internal.ErrorY; + /** + * Determines if an miniature box plot is drawn inside the violins. + * @default false + */ visible?: boolean; - /** Sets the width of the inner box plots relative to the violins' width. For example, with 1, the inner box plots are as wide as the violins. */ + /** + * Sets the width of the inner box plots relative to the violins' width. For example, with 1, the inner box plots are as wide as the violins. + * @default 0.25 + * Range: [0, 1] + */ width?: number; }; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ customdata?: Datum[] | TypedArray; /** Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. */ fillcolor?: Color; - /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; hoverlabel?: HoverLabel; - /** Do the hover effects highlight individual violins or sample points or the kernel density estimate or any combination of them? */ + /** + * Do the hover effects highlight individual violins or sample points or the kernel density estimate or any combination of them? + * @default 'violins+points+kde' + */ hoveron?: 'violins' | 'points' | 'kde' | 'all' | (string & {}); /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ hovertemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ hovertemplatefallback?: any; /** Same as `text`. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ ids?: Datum[] | TypedArray; - /** Sets the amount of jitter in the sample points drawn. If *0*, the sample points align along the distribution axis. If *1*, the sample points are drawn in a random jitter of width equal to the width of the violins. */ + /** + * Sets the amount of jitter in the sample points drawn. If *0*, the sample points align along the distribution axis. If *1*, the sample points are drawn in a random jitter of width equal to the width of the violins. + * Range: [0, 1] + */ jitter?: number; - /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string; /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ legendgroup?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ legendrank?: number; - /** Sets the width (in px or fraction) of the legend for this trace. */ + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ legendwidth?: number; - line?: ErrorY; + line?: _internal.ErrorY; marker?: { - /** Sets the marker angle in respect to `angleref`. */ + /** + * Sets the marker angle in respect to `angleref`. + * @default 0 + */ angle?: number | 'auto'; /** Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set. */ color?: Color; line?: { - /** Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set. */ + /** + * Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set. + * @default '#444' + */ color?: Color; /** Sets the border line color of the outlier sample points. Defaults to marker.color */ outliercolor?: Color; - /** Sets the border line width (in px) of the outlier sample points. */ + /** + * Sets the border line width (in px) of the outlier sample points. + * @default 1 + * Minimum: 0 + */ outlierwidth?: number; - /** Sets the width (in px) of the lines bounding the marker points. */ + /** + * Sets the width (in px) of the lines bounding the marker points. + * @default 0 + * Minimum: 0 + */ width?: number; }; - /** Sets the marker opacity. */ + /** + * Sets the marker opacity. + * @default 1 + * Range: [0, 1] + */ opacity?: number; - /** Sets the color of the outlier sample points. */ + /** + * Sets the color of the outlier sample points. + * @default 'rgba(0, 0, 0, 0)' + */ outliercolor?: Color; - /** Sets the marker size (in px). */ + /** + * Sets the marker size (in px). + * @default 6 + * Minimum: 0 + */ size?: number; - /** Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name. */ + /** + * Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name. + * @default 'circle' + */ symbol?: MarkerSymbol; }; meanline?: { /** Sets the mean line color. */ color?: Color; - /** Determines if a line corresponding to the sample's mean is shown inside the violins. If `box.visible` is turned on, the mean line is drawn inside the inner box. Otherwise, the mean line is drawn from one side of the violin to other. */ + /** + * Determines if a line corresponding to the sample's mean is shown inside the violins. If `box.visible` is turned on, the mean line is drawn inside the inner box. Otherwise, the mean line is drawn from one side of the violin to other. + * @default false + */ visible?: boolean; - /** Sets the mean line width. */ + /** + * Sets the mean line width. + * Minimum: 0 + */ width?: number; }; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ @@ -6475,41 +11461,69 @@ export interface ViolinData { name?: string; /** Set several traces linked to the same position axis or matching axes to the same offsetgroup where bars of the same position coordinate will line up. */ offsetgroup?: string; - /** Sets the opacity of the trace. */ + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ opacity?: number; /** Sets the orientation of the violin(s). If *v* (*h*), the distribution is visualized along the vertical (horizontal). */ orientation?: 'v' | 'h'; - /** Sets the position of the sample points in relation to the violins. If *0*, the sample points are places over the center of the violins. Positive (negative) values correspond to positions to the right (left) for vertical violins and above (below) for horizontal violins. */ + /** + * Sets the position of the sample points in relation to the violins. If *0*, the sample points are places over the center of the violins. Positive (negative) values correspond to positions to the right (left) for vertical violins and above (below) for horizontal violins. + * Range: [-2, 2] + */ pointpos?: number; /** If *outliers*, only the sample points lying outside the whiskers are shown If *suspectedoutliers*, the outlier points are shown and points either less than 4*Q1-3*Q3 or greater than 4*Q3-3*Q1 are highlighted (see `outliercolor`) If *all*, all sample points are shown If *false*, only the violins are shown with no sample points. Defaults to *suspectedoutliers* when `marker.outliercolor` or `marker.line.outliercolor` is set, otherwise defaults to *outliers*. */ points?: 'all' | 'outliers' | 'suspectedoutliers' | false; - /** Sets the method used to compute the sample's Q1 and Q3 quartiles. The *linear* method uses the 25th percentile for Q1 and 75th percentile for Q3 as computed using method #10 (listed on http://jse.amstat.org/v14n3/langford.html). The *exclusive* method uses the median to divide the ordered dataset into two halves if the sample is odd, it does not include the median in either half - Q1 is then the median of the lower half and Q3 the median of the upper half. The *inclusive* method also uses the median to divide the ordered dataset into two halves but if the sample is odd, it includes the median in both halves - Q1 is then the median of the lower half and Q3 the median of the upper half. */ + /** + * Sets the method used to compute the sample's Q1 and Q3 quartiles. The *linear* method uses the 25th percentile for Q1 and 75th percentile for Q3 as computed using method #10 (listed on http://jse.amstat.org/v14n3/langford.html). The *exclusive* method uses the median to divide the ordered dataset into two halves if the sample is odd, it does not include the median in either half - Q1 is then the median of the lower half and Q3 the median of the upper half. The *inclusive* method also uses the median to divide the ordered dataset into two halves but if the sample is odd, it includes the median in both halves - Q1 is then the median of the lower half and Q3 the median of the upper half. + * @default 'linear' + */ quartilemethod?: 'linear' | 'exclusive' | 'inclusive'; /** If there are multiple violins that should be sized according to some metric (see `scalemode`), link them by providing a non-empty group id here shared by every trace in the same group. If a violin's `width` is undefined, `scalegroup` will default to the trace's name. In this case, violins with the same names will be linked together */ scalegroup?: string; - /** Sets the metric by which the width of each violin is determined. *width* means each violin has the same (max) width *count* means the violins are scaled by the number of sample points making up each violin. */ + /** + * Sets the metric by which the width of each violin is determined. *width* means each violin has the same (max) width *count* means the violins are scaled by the number of sample points making up each violin. + * @default 'width' + */ scalemode?: 'width' | 'count'; selected?: { marker?: { /** Sets the marker color of selected points. */ color?: Color; - /** Sets the marker opacity of selected points. */ + /** + * Sets the marker opacity of selected points. + * Range: [0, 1] + */ opacity?: number; - /** Sets the marker size of selected points. */ + /** + * Sets the marker size of selected points. + * Minimum: 0 + */ size?: number; }; }; /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ selectedpoints?: any; - /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ showlegend?: boolean; - /** Determines on which side of the position value the density function making up one half of a violin is plotted. Useful when comparing two violin traces under *overlay* mode, where one trace has `side` set to *positive* and the other to *negative*. */ + /** + * Determines on which side of the position value the density function making up one half of a violin is plotted. Useful when comparing two violin traces under *overlay* mode, where one trace has `side` set to *positive* and the other to *negative*. + * @default 'both' + */ side?: 'both' | 'positive' | 'negative'; /** Sets the span in data space for which the density function will be computed. Has an effect only when `spanmode` is set to *manual*. */ span?: [any, any]; - /** Sets the method by which the span in data space where the density function will be computed. *soft* means the span goes from the sample's minimum value minus two bandwidths to the sample's maximum value plus two bandwidths. *hard* means the span goes from the sample's minimum to its maximum value. For custom span settings, use mode *manual* and fill in the `span` attribute. */ + /** + * Sets the method by which the span in data space where the density function will be computed. *soft* means the span goes from the sample's minimum value minus two bandwidths to the sample's maximum value plus two bandwidths. *hard* means the span goes from the sample's minimum to its maximum value. For custom span settings, use mode *manual* and fill in the `span` attribute. + * @default 'soft' + */ spanmode?: 'soft' | 'hard' | 'manual'; - stream?: Stream; + stream?: _internal.Stream; /** Sets the text elements associated with each sample value. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ text?: string | string[]; type?: 'violin'; @@ -6521,21 +11535,37 @@ export interface ViolinData { marker?: { /** Sets the marker color of unselected points, applied only when a selection exists. */ color?: Color; - /** Sets the marker opacity of unselected points, applied only when a selection exists. */ + /** + * Sets the marker opacity of unselected points, applied only when a selection exists. + * Range: [0, 1] + */ opacity?: number; - /** Sets the marker size of unselected points, applied only when a selection exists. */ + /** + * Sets the marker size of unselected points, applied only when a selection exists. + * Minimum: 0 + */ size?: number; }; }; - /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; - /** Sets the width of the violin in data coordinates. If *0* (default value) the width is automatically selected based on the positions of other violin traces in the same subplot. */ + /** + * Sets the width of the violin in data coordinates. If *0* (default value) the width is automatically selected based on the positions of other violin traces in the same subplot. + * @default 0 + * Minimum: 0 + */ width?: number; /** Sets the x sample data or coordinates. See overview for more info. */ x?: Datum[] | TypedArray; /** Sets the x coordinate for single-box traces or the starting coordinate for multi-box traces set using q1/median/q3. See overview for more info. */ x0?: any; - /** Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. */ + /** + * Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. + * @default 'x' + */ xaxis?: string; /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; @@ -6543,68 +11573,129 @@ export interface ViolinData { y?: Datum[] | TypedArray; /** Sets the y coordinate for single-box traces or the starting coordinate for multi-box traces set using q1/median/q3. See overview for more info. */ y0?: any; - /** Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. */ + /** + * Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. + * @default 'y' + */ yaxis?: string; /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ yhoverformat?: string; - /** Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. */ + /** + * Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. + * @default 0 + */ zorder?: number; } export interface VolumeData { - /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ autocolorscale?: boolean; caps?: { x?: { - /** Sets the fill ratio of the `caps`. The default fill value of the `caps` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. */ + /** + * Sets the fill ratio of the `caps`. The default fill value of the `caps` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. + * @default 1 + * Range: [0, 1] + */ fill?: number; - /** Sets the fill ratio of the `slices`. The default fill value of the x `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. */ + /** + * Sets the fill ratio of the `slices`. The default fill value of the x `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. + * @default true + */ show?: boolean; }; y?: { - /** Sets the fill ratio of the `caps`. The default fill value of the `caps` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. */ + /** + * Sets the fill ratio of the `caps`. The default fill value of the `caps` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. + * @default 1 + * Range: [0, 1] + */ fill?: number; - /** Sets the fill ratio of the `slices`. The default fill value of the y `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. */ + /** + * Sets the fill ratio of the `slices`. The default fill value of the y `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. + * @default true + */ show?: boolean; }; z?: { - /** Sets the fill ratio of the `caps`. The default fill value of the `caps` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. */ + /** + * Sets the fill ratio of the `caps`. The default fill value of the `caps` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. + * @default 1 + * Range: [0, 1] + */ fill?: number; - /** Sets the fill ratio of the `slices`. The default fill value of the z `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. */ + /** + * Sets the fill ratio of the `slices`. The default fill value of the z `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. + * @default true + */ show?: boolean; }; }; - /** Determines whether or not the color domain is computed with respect to the input data (here `value`) or the bounds set in `cmin` and `cmax` Defaults to `false` when `cmin` and `cmax` are set by the user. */ + /** + * Determines whether or not the color domain is computed with respect to the input data (here `value`) or the bounds set in `cmin` and `cmax` Defaults to `false` when `cmin` and `cmax` are set by the user. + * @default true + */ cauto?: boolean; - /** Sets the upper bound of the color domain. Value should have the same units as `value` and if set, `cmin` must be set as well. */ + /** + * Sets the upper bound of the color domain. Value should have the same units as `value` and if set, `cmin` must be set as well. + * Setting this also sets: cauto = false + */ cmax?: number; /** Sets the mid-point of the color domain by scaling `cmin` and/or `cmax` to be equidistant to this point. Value should have the same units as `value`. Has no effect when `cauto` is `false`. */ cmid?: number; - /** Sets the lower bound of the color domain. Value should have the same units as `value` and if set, `cmax` must be set as well. */ + /** + * Sets the lower bound of the color domain. Value should have the same units as `value` and if set, `cmax` must be set as well. + * Setting this also sets: cauto = false + */ cmin?: number; /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ coloraxis?: string; colorbar?: ColorBar; - /** Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + /** + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ colorscale?: ColorScale; contour?: { - /** Sets the color of the contour lines. */ + /** + * Sets the color of the contour lines. + * @default '#444' + */ color?: Color; - /** Sets whether or not dynamic contours are shown on hover */ + /** + * Sets whether or not dynamic contours are shown on hover + * @default false + */ show?: boolean; - /** Sets the width of the contour lines. */ + /** + * Sets the width of the contour lines. + * @default 2 + * Range: [1, 16] + */ width?: number; }; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ customdata?: Datum[] | TypedArray; - /** Determines whether or not normal smoothing is applied to the meshes, creating meshes with an angular, low-poly look via flat reflections. */ + /** + * Determines whether or not normal smoothing is applied to the meshes, creating meshes with an angular, low-poly look via flat reflections. + * @default true + */ flatshading?: boolean; - /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; hoverlabel?: HoverLabel; /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ hovertemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ hovertemplatefallback?: any; /** Same as `text`. */ hovertext?: string | string[]; @@ -6614,81 +11705,169 @@ export interface VolumeData { isomax?: number; /** Sets the minimum boundary for iso-surface plot. */ isomin?: number; - /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string; /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ legendgroup?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ legendrank?: number; - /** Sets the width (in px or fraction) of the legend for this trace. */ + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ legendwidth?: number; - lighting?: Lighting; + lighting?: _internal.Lighting; lightposition?: { - /** Numeric vector, representing the X coordinate for each vertex. */ + /** + * Numeric vector, representing the X coordinate for each vertex. + * @default 100000 + * Range: [-100000, 100000] + */ x?: number; - /** Numeric vector, representing the Y coordinate for each vertex. */ + /** + * Numeric vector, representing the Y coordinate for each vertex. + * @default 100000 + * Range: [-100000, 100000] + */ y?: number; - /** Numeric vector, representing the Z coordinate for each vertex. */ + /** + * Numeric vector, representing the Z coordinate for each vertex. + * @default 0 + * Range: [-100000, 100000] + */ z?: number; }; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ meta?: any; /** Sets the trace name. The trace name appears as the legend item and on hover. */ name?: string; - /** Sets the opacity of the surface. Please note that in the case of using high `opacity` values for example a value greater than or equal to 0.5 on two surfaces (and 0.25 with four surfaces), an overlay of multiple transparent surfaces may not perfectly be sorted in depth by the webgl API. This behavior may be improved in the near future and is subject to change. */ + /** + * Sets the opacity of the surface. Please note that in the case of using high `opacity` values for example a value greater than or equal to 0.5 on two surfaces (and 0.25 with four surfaces), an overlay of multiple transparent surfaces may not perfectly be sorted in depth by the webgl API. This behavior may be improved in the near future and is subject to change. + * @default 1 + * Range: [0, 1] + */ opacity?: number; /** Sets the opacityscale. The opacityscale must be an array containing arrays mapping a normalized value to an opacity value. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 1], [0.5, 0.2], [1, 1]]` means that higher/lower values would have higher opacity values and those in the middle would be more transparent Alternatively, `opacityscale` may be a palette name string of the following list: 'min', 'max', 'extremes' and 'uniform'. The default is 'uniform'. */ opacityscale?: any; - /** Reverses the color mapping if true. If true, `cmin` will correspond to the last color in the array and `cmax` will correspond to the first color. */ + /** + * Reverses the color mapping if true. If true, `cmin` will correspond to the last color in the array and `cmax` will correspond to the first color. + * @default false + */ reversescale?: boolean; - /** Sets a reference between this trace's 3D coordinate system and a 3D scene. If *scene* (the default value), the (x,y,z) coordinates refer to `layout.scene`. If *scene2*, the (x,y,z) coordinates refer to `layout.scene2`, and so on. */ + /** + * Sets a reference between this trace's 3D coordinate system and a 3D scene. If *scene* (the default value), the (x,y,z) coordinates refer to `layout.scene`. If *scene2*, the (x,y,z) coordinates refer to `layout.scene2`, and so on. + * @default 'scene' + */ scene?: string; - /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default false + */ showlegend?: boolean; - /** Determines whether or not a colorbar is displayed for this trace. */ + /** + * Determines whether or not a colorbar is displayed for this trace. + * @default true + */ showscale?: boolean; slices?: { x?: { - /** Sets the fill ratio of the `slices`. The default fill value of the `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. */ + /** + * Sets the fill ratio of the `slices`. The default fill value of the `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. + * @default 1 + * Range: [0, 1] + */ fill?: number; - /** Specifies the location(s) of slices on the axis. When not specified slices would be created for all points of the axis x except start and end. */ + /** + * Specifies the location(s) of slices on the axis. When not specified slices would be created for all points of the axis x except start and end. + * @default [] + */ locations?: Datum[] | TypedArray; - /** Determines whether or not slice planes about the x dimension are drawn. */ + /** + * Determines whether or not slice planes about the x dimension are drawn. + * @default false + */ show?: boolean; }; y?: { - /** Sets the fill ratio of the `slices`. The default fill value of the `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. */ + /** + * Sets the fill ratio of the `slices`. The default fill value of the `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. + * @default 1 + * Range: [0, 1] + */ fill?: number; - /** Specifies the location(s) of slices on the axis. When not specified slices would be created for all points of the axis y except start and end. */ + /** + * Specifies the location(s) of slices on the axis. When not specified slices would be created for all points of the axis y except start and end. + * @default [] + */ locations?: Datum[] | TypedArray; - /** Determines whether or not slice planes about the y dimension are drawn. */ + /** + * Determines whether or not slice planes about the y dimension are drawn. + * @default false + */ show?: boolean; }; z?: { - /** Sets the fill ratio of the `slices`. The default fill value of the `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. */ + /** + * Sets the fill ratio of the `slices`. The default fill value of the `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. + * @default 1 + * Range: [0, 1] + */ fill?: number; - /** Specifies the location(s) of slices on the axis. When not specified slices would be created for all points of the axis z except start and end. */ + /** + * Specifies the location(s) of slices on the axis. When not specified slices would be created for all points of the axis z except start and end. + * @default [] + */ locations?: Datum[] | TypedArray; - /** Determines whether or not slice planes about the z dimension are drawn. */ + /** + * Determines whether or not slice planes about the z dimension are drawn. + * @default false + */ show?: boolean; }; }; spaceframe?: { - /** Sets the fill ratio of the `spaceframe` elements. The default fill value is 1 meaning that they are entirely shaded. Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. */ + /** + * Sets the fill ratio of the `spaceframe` elements. The default fill value is 1 meaning that they are entirely shaded. Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. + * @default 1 + * Range: [0, 1] + */ fill?: number; - /** Displays/hides tetrahedron shapes between minimum and maximum iso-values. Often useful when either caps or surfaces are disabled or filled with values less than 1. */ + /** + * Displays/hides tetrahedron shapes between minimum and maximum iso-values. Often useful when either caps or surfaces are disabled or filled with values less than 1. + * @default false + */ show?: boolean; }; - stream?: Stream; + stream?: _internal.Stream; surface?: { - /** Sets the number of iso-surfaces between minimum and maximum iso-values. By default this value is 2 meaning that only minimum and maximum surfaces would be drawn. */ + /** + * Sets the number of iso-surfaces between minimum and maximum iso-values. By default this value is 2 meaning that only minimum and maximum surfaces would be drawn. + * @default 2 + * Minimum: 1 + */ count?: number; - /** Sets the fill ratio of the iso-surface. The default fill value of the surface is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. */ + /** + * Sets the fill ratio of the iso-surface. The default fill value of the surface is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges. + * @default 1 + * Range: [0, 1] + */ fill?: number; - /** Sets the surface pattern of the iso-surface 3-D sections. The default pattern of the surface is `all` meaning that the rest of surface elements would be shaded. The check options (either 1 or 2) could be used to draw half of the squares on the surface. Using various combinations of capital `A`, `B`, `C`, `D` and `E` may also be used to reduce the number of triangles on the iso-surfaces and creating other patterns of interest. */ + /** + * Sets the surface pattern of the iso-surface 3-D sections. The default pattern of the surface is `all` meaning that the rest of surface elements would be shaded. The check options (either 1 or 2) could be used to draw half of the squares on the surface. Using various combinations of capital `A`, `B`, `C`, `D` and `E` may also be used to reduce the number of triangles on the iso-surfaces and creating other patterns of interest. + * @default 'all' + */ pattern?: 'A' | 'B' | 'C' | 'D' | 'E' | 'all' | 'odd' | 'even' | (string & {}); - /** Hides/displays surfaces between minimum and maximum iso-values. */ + /** + * Hides/displays surfaces between minimum and maximum iso-values. + * @default true + */ show?: boolean; }; /** Sets the text elements associated with the vertices. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ @@ -6702,7 +11881,10 @@ export interface VolumeData { value?: Datum[] | TypedArray; /** Sets the hover text formatting rule for `value` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ valuehoverformat?: string; - /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; /** Sets the X coordinates of the vertices on X axis. */ x?: Datum[] | TypedArray; @@ -6723,23 +11905,45 @@ export interface WaterfallData { alignmentgroup?: string; /** Sets where the bar base is drawn (in position axis units). */ base?: number; - /** Determines whether the text nodes are clipped about the subplot axes. To show the text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*. */ + /** + * Determines whether the text nodes are clipped about the subplot axes. To show the text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*. + * @default true + */ cliponaxis?: boolean; connector?: { line?: { - /** Sets the line color. */ + /** + * Sets the line color. + * @default '#444' + */ color?: Color; - /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ dash?: Dash; - /** Sets the line width (in px). */ + /** + * Sets the line width (in px). + * @default 2 + * Minimum: 0 + */ width?: number; }; - /** Sets the shape of connector lines. */ + /** + * Sets the shape of connector lines. + * @default 'between' + */ mode?: 'spanning' | 'between'; - /** Determines if connector lines are drawn. */ + /** + * Determines if connector lines are drawn. + * @default true + */ visible?: boolean; }; - /** Constrain the size of text inside or outside a bar to be no larger than the bar itself. */ + /** + * Constrain the size of text inside or outside a bar to be no larger than the bar itself. + * @default 'both' + */ constraintext?: 'inside' | 'outside' | 'both' | 'none'; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ customdata?: Datum[] | TypedArray; @@ -6747,19 +11951,31 @@ export interface WaterfallData { marker?: { /** Sets the marker color of all decreasing values. */ color?: Color; - line?: ErrorY; + line?: _internal.ErrorY; }; }; - /** Sets the x coordinate step. See `x0` for more info. */ + /** + * Sets the x coordinate step. See `x0` for more info. + * @default 1 + */ dx?: number; - /** Sets the y coordinate step. See `y0` for more info. */ + /** + * Sets the y coordinate step. See `y0` for more info. + * @default 1 + */ dy?: number; - /** Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. */ + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ hoverinfo?: 'name' | 'x' | 'y' | 'text' | 'initial' | 'delta' | 'final' | 'all' | 'none' | 'skip' | (string & {}) | ('name' | 'x' | 'y' | 'text' | 'initial' | 'delta' | 'final' | 'all' | 'none' | 'skip' | (string & {}))[]; hoverlabel?: HoverLabel; /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `initial`, `delta` and `final`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ hovertemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ hovertemplatefallback?: any; /** Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ hovertext?: string | string[]; @@ -6769,23 +11985,38 @@ export interface WaterfallData { marker?: { /** Sets the marker color of all increasing values. */ color?: Color; - line?: ErrorY; + line?: _internal.ErrorY; }; }; - /** Determines if texts are kept at center or start/end points in `textposition` *inside* mode. */ + /** + * Determines if texts are kept at center or start/end points in `textposition` *inside* mode. + * @default 'end' + */ insidetextanchor?: 'end' | 'middle' | 'start'; /** Sets the font used for `text` lying inside the bar. */ insidetextfont?: FontArray; - /** Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string; /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ legendgroup?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ legendrank?: number; - /** Sets the width (in px or fraction) of the legend for this trace. */ + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ legendwidth?: number; - /** An array containing types of values. By default the values are considered as 'relative'. However; it is possible to use 'total' to compute the sums. Also 'absolute' could be applied to reset the computed total or to declare an initial value where needed. */ + /** + * An array containing types of values. By default the values are considered as 'relative'. However; it is possible to use 'total' to compute the sums. Also 'absolute' could be applied to reset the computed total or to declare an initial value where needed. + * @default [] + */ measure?: Datum[] | TypedArray; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ meta?: any; @@ -6795,7 +12026,11 @@ export interface WaterfallData { offset?: number | number[]; /** Set several traces linked to the same position axis or matching axes to the same offsetgroup where bars of the same position coordinate will line up. */ offsetgroup?: string; - /** Sets the opacity of the trace. */ + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ opacity?: number; /** Sets the orientation of the bars. With *v* (*h*), the value of the each bar spans along the vertical (horizontal). */ orientation?: 'v' | 'h'; @@ -6803,28 +12038,40 @@ export interface WaterfallData { outsidetextfont?: FontArray; /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ selectedpoints?: any; - /** Determines whether or not an item corresponding to this trace is shown in the legend. */ + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ showlegend?: boolean; - stream?: Stream; + stream?: _internal.Stream; /** Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ text?: string | string[]; - /** Sets the angle of the tick labels with respect to the bar. For example, a `tickangle` of -90 draws the tick labels vertically. With *auto* the texts may automatically be rotated to fit with the maximum size in bars. */ + /** + * Sets the angle of the tick labels with respect to the bar. For example, a `tickangle` of -90 draws the tick labels vertically. With *auto* the texts may automatically be rotated to fit with the maximum size in bars. + * @default 'auto' + */ textangle?: number | 'auto'; /** Sets the font used for `text`. */ textfont?: FontArray; /** Determines which trace information appear on the graph. In the case of having multiple waterfalls, totals are computed separately (per trace). */ textinfo?: 'label' | 'text' | 'initial' | 'delta' | 'final' | 'none' | (string & {}); - /** Specifies the location of the `text`. *inside* positions `text` inside, next to the bar end (rotated and scaled if needed). *outside* positions `text` outside, next to the bar end (scaled if needed), unless there is another bar stacked on this one, then the text gets pushed inside. *auto* tries to position `text` inside the bar, but if the bar is too small and no bar is stacked on this one the text is moved outside. If *none*, no text appears. */ + /** + * Specifies the location of the `text`. *inside* positions `text` inside, next to the bar end (rotated and scaled if needed). *outside* positions `text` outside, next to the bar end (scaled if needed), unless there is another bar stacked on this one, then the text gets pushed inside. *auto* tries to position `text` inside the bar, but if the bar is too small and no bar is stacked on this one the text is moved outside. If *none*, no text appears. + * @default 'auto' + */ textposition?: 'inside' | 'outside' | 'auto' | 'none' | ('inside' | 'outside' | 'auto' | 'none')[]; /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `initial`, `delta`, `final` and `label`. */ texttemplate?: string | string[]; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ texttemplatefallback?: any; totals?: { marker?: { /** Sets the marker color of all intermediate sums and total values. */ color?: Color; - line?: ErrorY; + line?: _internal.ErrorY; }; }; type?: 'waterfall'; @@ -6832,39 +12079,72 @@ export interface WaterfallData { uid?: string; /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ uirevision?: any; - /** Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; - /** Sets the bar width (in position axis units). */ + /** + * Sets the bar width (in position axis units). + * Minimum: 0 + */ width?: number | number[]; /** Sets the x coordinates. */ x?: Datum[] | TypedArray; - /** Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step. */ + /** + * Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step. + * @default 0 + */ x0?: any; - /** Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. */ + /** + * Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. + * @default 'x' + */ xaxis?: string; /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; - /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ + /** + * Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the x axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. + * @default 0 + */ xperiod?: any; /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the x0 axis. When `x0period` is round number of weeks, the `x0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ xperiod0?: any; - /** Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis. */ + /** + * Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis. + * @default 'middle' + */ xperiodalignment?: 'start' | 'middle' | 'end'; /** Sets the y coordinates. */ y?: Datum[] | TypedArray; - /** Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step. */ + /** + * Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step. + * @default 0 + */ y0?: any; - /** Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. */ + /** + * Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. + * @default 'y' + */ yaxis?: string; /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ yhoverformat?: string; - /** Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the y axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. */ + /** + * Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M* on the y axis. Special values in the form of *M* could be used to declare the number of months. In this case `n` must be a positive integer. + * @default 0 + */ yperiod?: any; /** Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the y0 axis. When `y0period` is round number of weeks, the `y0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01. */ yperiod0?: any; - /** Only relevant when the axis `type` is *date*. Sets the alignment of data points on the y axis. */ + /** + * Only relevant when the axis `type` is *date*. Sets the alignment of data points on the y axis. + * @default 'middle' + */ yperiodalignment?: 'start' | 'middle' | 'end'; - /** Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. */ + /** + * Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`. + * @default 0 + */ zorder?: number; } @@ -6873,27 +12153,51 @@ export interface WaterfallData { // --------------------------------------------------------------------------- export interface ColorAxis { - /** Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. */ + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ autocolorscale?: boolean; - /** Determines whether or not the color domain is computed with respect to the input data (here corresponding trace color array(s)) or the bounds set in `cmin` and `cmax` Defaults to `false` when `cmin` and `cmax` are set by the user. */ + /** + * Determines whether or not the color domain is computed with respect to the input data (here corresponding trace color array(s)) or the bounds set in `cmin` and `cmax` Defaults to `false` when `cmin` and `cmax` are set by the user. + * @default true + */ cauto?: boolean; - /** Sets the upper bound of the color domain. Value should have the same units as corresponding trace color array(s) and if set, `cmin` must be set as well. */ + /** + * Sets the upper bound of the color domain. Value should have the same units as corresponding trace color array(s) and if set, `cmin` must be set as well. + * Setting this also sets: cauto = false + */ cmax?: number; /** Sets the mid-point of the color domain by scaling `cmin` and/or `cmax` to be equidistant to this point. Value should have the same units as corresponding trace color array(s). Has no effect when `cauto` is `false`. */ cmid?: number; - /** Sets the lower bound of the color domain. Value should have the same units as corresponding trace color array(s) and if set, `cmax` must be set as well. */ + /** + * Sets the lower bound of the color domain. Value should have the same units as corresponding trace color array(s) and if set, `cmax` must be set as well. + * Setting this also sets: cauto = false + */ cmin?: number; colorbar?: ColorBar; - /** Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. */ + /** + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ colorscale?: ColorScale; - /** Reverses the color mapping if true. If true, `cmin` will correspond to the last color in the array and `cmax` will correspond to the first color. */ + /** + * Reverses the color mapping if true. If true, `cmin` will correspond to the last color in the array and `cmax` will correspond to the first color. + * @default false + */ reversescale?: boolean; - /** Determines whether or not a colorbar is displayed for this trace. */ + /** + * Determines whether or not a colorbar is displayed for this trace. + * @default true + */ showscale?: boolean; } export interface GeoLayout { - /** Set the background color of the map */ + /** + * Set the background color of the map + * @default '#fff' + */ bgcolor?: Color; center?: { /** Sets the latitude of the map's center. For all projection types, the map's latitude center lies at the middle of the latitude range by default. */ @@ -6901,61 +12205,130 @@ export interface GeoLayout { /** Sets the longitude of the map's center. By default, the map's longitude center lies at the middle of the longitude range for scoped projection and above `projection.rotation.lon` otherwise. */ lon?: number; }; - /** Sets the coastline color. */ + /** + * Sets the coastline color. + * @default '#444' + */ coastlinecolor?: Color; - /** Sets the coastline stroke width (in px). */ + /** + * Sets the coastline stroke width (in px). + * @default 1 + * Minimum: 0 + */ coastlinewidth?: number; - /** Sets line color of the country boundaries. */ + /** + * Sets line color of the country boundaries. + * @default '#444' + */ countrycolor?: Color; - /** Sets line width (in px) of the country boundaries. */ + /** + * Sets line width (in px) of the country boundaries. + * @default 1 + * Minimum: 0 + */ countrywidth?: number; domain?: Domain; - /** Determines if this subplot's view settings are auto-computed to fit trace data. On scoped maps, setting `fitbounds` leads to `center.lon` and `center.lat` getting auto-filled. On maps with a non-clipped projection, setting `fitbounds` leads to `center.lon`, `center.lat`, and `projection.rotation.lon` getting auto-filled. On maps with a clipped projection, setting `fitbounds` leads to `center.lon`, `center.lat`, `projection.rotation.lon`, `projection.rotation.lat`, `lonaxis.range` and `lataxis.range` getting auto-filled. If *locations*, only the trace's visible locations are considered in the `fitbounds` computations. If *geojson*, the entire trace input `geojson` (if provided) is considered in the `fitbounds` computations, Defaults to *false*. */ + /** + * Determines if this subplot's view settings are auto-computed to fit trace data. On scoped maps, setting `fitbounds` leads to `center.lon` and `center.lat` getting auto-filled. On maps with a non-clipped projection, setting `fitbounds` leads to `center.lon`, `center.lat`, and `projection.rotation.lon` getting auto-filled. On maps with a clipped projection, setting `fitbounds` leads to `center.lon`, `center.lat`, `projection.rotation.lon`, `projection.rotation.lat`, `lonaxis.range` and `lataxis.range` getting auto-filled. If *locations*, only the trace's visible locations are considered in the `fitbounds` computations. If *geojson*, the entire trace input `geojson` (if provided) is considered in the `fitbounds` computations, Defaults to *false*. + * @default false + */ fitbounds?: false | 'locations' | 'geojson'; - /** Sets the color the frame. */ + /** + * Sets the color the frame. + * @default '#444' + */ framecolor?: Color; - /** Sets the stroke width (in px) of the frame. */ + /** + * Sets the stroke width (in px) of the frame. + * @default 1 + * Minimum: 0 + */ framewidth?: number; - /** Sets the color of the lakes. */ + /** + * Sets the color of the lakes. + * @default '#3399FF' + */ lakecolor?: Color; - /** Sets the land mass color. */ + /** + * Sets the land mass color. + * @default '#F0DC82' + */ landcolor?: Color; lataxis?: { /** Sets the graticule's longitude/latitude tick step. */ dtick?: number; - /** Sets the graticule's stroke color. */ + /** + * Sets the graticule's stroke color. + * @default '#eee' + */ gridcolor?: Color; - /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ griddash?: Dash; - /** Sets the graticule's stroke width (in px). */ + /** + * Sets the graticule's stroke width (in px). + * @default 1 + * Minimum: 0 + */ gridwidth?: number; /** Sets the range of this axis (in degrees), sets the map's clipped coordinates. */ range?: [number, number]; - /** Sets whether or not graticule are shown on the map. */ + /** + * Sets whether or not graticule are shown on the map. + * @default false + */ showgrid?: boolean; - /** Sets the graticule's starting tick longitude/latitude. */ + /** + * Sets the graticule's starting tick longitude/latitude. + * @default 0 + */ tick0?: number; }; lonaxis?: { /** Sets the graticule's longitude/latitude tick step. */ dtick?: number; - /** Sets the graticule's stroke color. */ + /** + * Sets the graticule's stroke color. + * @default '#eee' + */ gridcolor?: Color; - /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ griddash?: Dash; - /** Sets the graticule's stroke width (in px). */ + /** + * Sets the graticule's stroke width (in px). + * @default 1 + * Minimum: 0 + */ gridwidth?: number; /** Sets the range of this axis (in degrees), sets the map's clipped coordinates. */ range?: [number, number]; - /** Sets whether or not graticule are shown on the map. */ + /** + * Sets whether or not graticule are shown on the map. + * @default false + */ showgrid?: boolean; - /** Sets the graticule's starting tick longitude/latitude. */ + /** + * Sets the graticule's starting tick longitude/latitude. + * @default 0 + */ tick0?: number; }; - /** Sets the ocean color */ + /** + * Sets the ocean color + * @default '#3399FF' + */ oceancolor?: Color; projection?: { - /** For satellite projection type only. Sets the distance from the center of the sphere to the point of view as a proportion of the sphere’s radius. */ + /** + * For satellite projection type only. Sets the distance from the center of the sphere to the point of view as a proportion of the sphere’s radius. + * @default 2 + * Minimum: 1.001 + */ distance?: number; /** For conic projection types only. Sets the parallels (tangent, secant) where the cone intersects the sphere. */ parallels?: [number, number]; @@ -6967,20 +12340,40 @@ export interface GeoLayout { /** Roll the map (in degrees) For example, a roll of *180* makes the map appear upside down. */ roll?: number; }; - /** Zooms in or out on the map view. A scale of *1* corresponds to the largest zoom level that fits the map's lon and lat ranges. */ + /** + * Zooms in or out on the map view. A scale of *1* corresponds to the largest zoom level that fits the map's lon and lat ranges. + * @default 1 + * Minimum: 0 + */ scale?: number; - /** For satellite projection type only. Sets the tilt angle of perspective projection. */ + /** + * For satellite projection type only. Sets the tilt angle of perspective projection. + * @default 0 + */ tilt?: number; /** Sets the projection type. */ type?: 'airy' | 'aitoff' | 'albers' | 'albers usa' | 'august' | 'azimuthal equal area' | 'azimuthal equidistant' | 'baker' | 'bertin1953' | 'boggs' | 'bonne' | 'bottomley' | 'bromley' | 'collignon' | 'conic conformal' | 'conic equal area' | 'conic equidistant' | 'craig' | 'craster' | 'cylindrical equal area' | 'cylindrical stereographic' | 'eckert1' | 'eckert2' | 'eckert3' | 'eckert4' | 'eckert5' | 'eckert6' | 'eisenlohr' | 'equal earth' | 'equirectangular' | 'fahey' | 'foucaut' | 'foucaut sinusoidal' | 'ginzburg4' | 'ginzburg5' | 'ginzburg6' | 'ginzburg8' | 'ginzburg9' | 'gnomonic' | 'gringorten' | 'gringorten quincuncial' | 'guyou' | 'hammer' | 'hill' | 'homolosine' | 'hufnagel' | 'hyperelliptical' | 'kavrayskiy7' | 'lagrange' | 'larrivee' | 'laskowski' | 'loximuthal' | 'mercator' | 'miller' | 'mollweide' | 'mt flat polar parabolic' | 'mt flat polar quartic' | 'mt flat polar sinusoidal' | 'natural earth' | 'natural earth1' | 'natural earth2' | 'nell hammer' | 'nicolosi' | 'orthographic' | 'patterson' | 'peirce quincuncial' | 'polyconic' | 'rectangular polyconic' | 'robinson' | 'satellite' | 'sinu mollweide' | 'sinusoidal' | 'stereographic' | 'times' | 'transverse mercator' | 'van der grinten' | 'van der grinten2' | 'van der grinten3' | 'van der grinten4' | 'wagner4' | 'wagner6' | 'wiechel' | 'winkel tripel' | 'winkel3'; }; - /** Sets the resolution of the base layers. The values have units of km/mm e.g. 110 corresponds to a scale ratio of 1:110,000,000. */ + /** + * Sets the resolution of the base layers. The values have units of km/mm e.g. 110 corresponds to a scale ratio of 1:110,000,000. + * @default 110 + */ resolution?: 110 | 50; - /** Sets color of the rivers. */ + /** + * Sets color of the rivers. + * @default '#3399FF' + */ rivercolor?: Color; - /** Sets the stroke width (in px) of the rivers. */ + /** + * Sets the stroke width (in px) of the rivers. + * @default 1 + * Minimum: 0 + */ riverwidth?: number; - /** Set the scope of the map. */ + /** + * Set the scope of the map. + * @default 'world' + */ scope?: 'africa' | 'antarctica' | 'asia' | 'europe' | 'north america' | 'oceania' | 'south america' | 'usa' | 'world'; /** Sets whether or not the coastlines are drawn. */ showcoastlines?: boolean; @@ -6988,108 +12381,230 @@ export interface GeoLayout { showcountries?: boolean; /** Sets whether or not a frame is drawn around the map. */ showframe?: boolean; - /** Sets whether or not lakes are drawn. */ + /** + * Sets whether or not lakes are drawn. + * @default false + */ showlakes?: boolean; - /** Sets whether or not land masses are filled in color. */ + /** + * Sets whether or not land masses are filled in color. + * @default false + */ showland?: boolean; - /** Sets whether or not oceans are filled in color. */ + /** + * Sets whether or not oceans are filled in color. + * @default false + */ showocean?: boolean; - /** Sets whether or not rivers are drawn. */ + /** + * Sets whether or not rivers are drawn. + * @default false + */ showrivers?: boolean; /** Sets whether or not boundaries of subunits within countries (e.g. states, provinces) are drawn. */ showsubunits?: boolean; - /** Sets the color of the subunits boundaries. */ + /** + * Sets the color of the subunits boundaries. + * @default '#444' + */ subunitcolor?: Color; - /** Sets the stroke width (in px) of the subunits boundaries. */ + /** + * Sets the stroke width (in px) of the subunits boundaries. + * @default 1 + * Minimum: 0 + */ subunitwidth?: number; /** Controls persistence of user-driven changes in the view (projection and center). Defaults to `layout.uirevision`. */ uirevision?: any; - /** Sets the default visibility of the base layers. */ + /** + * Sets the default visibility of the base layers. + * @default true + */ visible?: boolean; } export interface LayoutAxis { /** If set to an opposite-letter axis id (e.g. `x2`, `y`), this axis is bound to the corresponding opposite-letter axis. If set to *free*, this axis' position is determined by `position`. */ anchor?: 'free' | '/^x([2-9]|[1-9][0-9]+)?( domain)?$/' | '/^y([2-9]|[1-9][0-9]+)?( domain)?$/'; - /** Determines whether long tick labels automatically grow the figure margins. */ + /** + * Determines whether long tick labels automatically grow the figure margins. + * @default false + */ automargin?: 'height' | 'width' | 'left' | 'right' | 'top' | 'bottom' | true | false | (string & {}); - /** Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided and it has a value for both the lower and upper bound, `autorange` is set to *false*. Using *min* applies autorange only to set the minimum. Using *max* applies autorange only to set the maximum. Using *min reversed* applies autorange only to set the minimum on a reversed axis. Using *max reversed* applies autorange only to set the maximum on a reversed axis. Using *reversed* applies autorange on both ends and reverses the axis direction. */ + /** + * Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided and it has a value for both the lower and upper bound, `autorange` is set to *false*. Using *min* applies autorange only to set the minimum. Using *max* applies autorange only to set the maximum. Using *min reversed* applies autorange only to set the minimum on a reversed axis. Using *max reversed* applies autorange only to set the maximum on a reversed axis. Using *reversed* applies autorange on both ends and reverses the axis direction. + * @default true + */ autorange?: true | false | 'reversed' | 'min reversed' | 'max reversed' | 'min' | 'max'; - autorangeoptions?: AutoRangeOptions; - /** Automatically reposition the axis to avoid overlap with other axes with the same `overlaying` value. This repositioning will account for any `shift` amount applied to other axes on the same side with `autoshift` is set to true. Only has an effect if `anchor` is set to *free*. */ + autorangeoptions?: _internal.AutoRangeOptions; + /** + * Automatically reposition the axis to avoid overlap with other axes with the same `overlaying` value. This repositioning will account for any `shift` amount applied to other axes on the same side with `autoshift` is set to true. Only has an effect if `anchor` is set to *free*. + * @default false + */ autoshift?: boolean; - /** When `tickangle` is set to *auto*, it will be set to the first angle in this array that is large enough to prevent label overlap. */ + /** + * When `tickangle` is set to *auto*, it will be set to the first angle in this array that is large enough to prevent label overlap. + * @default [0,30,90] + */ autotickangles?: any[]; - /** Using *strict* a numeric string in trace data is not converted to a number. Using *convert types* a numeric string in trace data may be treated as a number during automatic axis `type` detection. Defaults to layout.autotypenumbers. */ + /** + * Using *strict* a numeric string in trace data is not converted to a number. Using *convert types* a numeric string in trace data may be treated as a number during automatic axis `type` detection. Defaults to layout.autotypenumbers. + * @default 'convert types' + */ autotypenumbers?: 'convert types' | 'strict'; - /** Sets the calendar system to use for `range` and `tick0` if this is a date axis. This does not set the calendar for interpreting data on this axis, that's specified in the trace or via the global `layout.calendar` */ + /** + * Sets the calendar system to use for `range` and `tick0` if this is a date axis. This does not set the calendar for interpreting data on this axis, that's specified in the trace or via the global `layout.calendar` + * @default 'gregorian' + */ calendar?: Calendar; /** Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`. */ categoryarray?: Datum[] | TypedArray; - /** Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. Set `categoryorder` to *total ascending* or *total descending* if order should be determined by the numerical order of the values. Similarly, the order can be determined by the min, max, sum, mean, geometric mean or median of all the values. */ + /** + * Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. Set `categoryorder` to *total ascending* or *total descending* if order should be determined by the numerical order of the values. Similarly, the order can be determined by the min, max, sum, mean, geometric mean or median of all the values. + * @default 'trace' + */ categoryorder?: 'trace' | 'category ascending' | 'category descending' | 'array' | 'total ascending' | 'total descending' | 'min ascending' | 'min descending' | 'max ascending' | 'max descending' | 'sum ascending' | 'sum descending' | 'mean ascending' | 'mean descending' | 'geometric mean ascending' | 'geometric mean descending' | 'median ascending' | 'median descending'; - /** Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. */ + /** + * Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. + * @default '#444' + */ color?: Color; /** If this axis needs to be compressed (either due to its own `scaleanchor` and `scaleratio` or those of the other axis), determines how that happens: by increasing the *range*, or by decreasing the *domain*. Default is *domain* for axes containing image traces, *range* otherwise. */ constrain?: 'range' | 'domain'; /** If this axis needs to be compressed (either due to its own `scaleanchor` and `scaleratio` or those of the other axis), determines which direction we push the originally specified plot area. Options are *left*, *center* (default), and *right* for x axes, and *top*, *middle* (default), and *bottom* for y axes. */ constraintoward?: 'left' | 'center' | 'right' | 'top' | 'middle' | 'bottom'; - /** Sets the color of the dividers Only has an effect on *multicategory* axes. */ + /** + * Sets the color of the dividers Only has an effect on *multicategory* axes. + * @default '#444' + */ dividercolor?: Color; - /** Sets the width (in px) of the dividers Only has an effect on *multicategory* axes. */ + /** + * Sets the width (in px) of the dividers Only has an effect on *multicategory* axes. + * @default 1 + */ dividerwidth?: number; - /** Sets the domain of this axis (in plot fraction). */ + /** + * Sets the domain of this axis (in plot fraction). + * @default [0,1] + */ domain?: [number, number]; - /** Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48* */ + /** + * Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48* + * Setting this also sets: tickmode = "linear" + */ dtick?: any; - /** Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from "femto" f (10^-15) to "tera" T (10^12). *SI extended* covers instead the full SI range from "quecto" q (10^-30) to "quetta" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation. */ + /** + * Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from "femto" f (10^-15) to "tera" T (10^12). *SI extended* covers instead the full SI range from "quecto" q (10^-30) to "quetta" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation. + * @default 'B' + */ exponentformat?: 'none' | 'e' | 'E' | 'power' | 'SI' | 'B' | 'SI extended'; - /** Determines whether or not this axis is zoom-able. If true, then zoom is disabled. */ + /** + * Determines whether or not this axis is zoom-able. If true, then zoom is disabled. + * @default false + */ fixedrange?: boolean; - /** Sets the color of the grid lines. */ + /** + * Sets the color of the grid lines. + * @default '#eee' + */ gridcolor?: Color; - /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ griddash?: Dash; - /** Sets the width (in px) of the grid lines. */ + /** + * Sets the width (in px) of the grid lines. + * @default 1 + * Minimum: 0 + */ gridwidth?: number; /** Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ hoverformat?: string; /** Could be used to set the desired inside range of this axis (excluding the labels) when `ticklabelposition` of the anchored axis has *inside*. Not implemented for axes with `type` *log*. This would be ignored when `range` is provided. */ insiderange?: [any, any]; - /** Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. */ + /** + * Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. + * @default false + */ labelalias?: any; - /** Sets the layer on which this axis is displayed. If *above traces*, this axis is displayed above all the subplot's traces If *below traces*, this axis is displayed below all the subplot's traces, but above the grid lines. Useful when used together with scatter-like traces with `cliponaxis` set to *false* to show markers and/or text nodes above this axis. */ + /** + * Sets the layer on which this axis is displayed. If *above traces*, this axis is displayed above all the subplot's traces If *below traces*, this axis is displayed below all the subplot's traces, but above the grid lines. Useful when used together with scatter-like traces with `cliponaxis` set to *false* to show markers and/or text nodes above this axis. + * @default 'above traces' + */ layer?: 'above traces' | 'below traces'; - /** Sets the axis line color. */ + /** + * Sets the axis line color. + * @default '#444' + */ linecolor?: Color; - /** Sets the width (in px) of the axis line. */ + /** + * Sets the width (in px) of the axis line. + * @default 1 + * Minimum: 0 + */ linewidth?: number; /** If set to another axis id (e.g. `x2`, `y`), the range of this axis will match the range of the corresponding axis in data-coordinates space. Moreover, matching axes share auto-range values, category lists and histogram auto-bins. Note that setting axes simultaneously in both a `scaleanchor` and a `matches` constraint is currently forbidden. Moreover, note that matching axes must have the same `type`. */ matches?: '/^x([2-9]|[1-9][0-9]+)?( domain)?$/' | '/^y([2-9]|[1-9][0-9]+)?( domain)?$/'; - /** Determines the maximum range of this axis. */ + /** + * Determines the maximum range of this axis. + * Setting this also sets: ^autorange = false + */ maxallowed?: any; - /** Determines the minimum range of this axis. */ + /** + * Determines the minimum range of this axis. + * Setting this also sets: ^autorange = false + */ minallowed?: any; - /** Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*. */ + /** + * Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*. + * @default 3 + * Minimum: 0 + */ minexponent?: number; minor?: { - /** Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48* */ + /** + * Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48* + * Setting this also sets: tickmode = "linear" + */ dtick?: any; - /** Sets the color of the grid lines. */ + /** + * Sets the color of the grid lines. + * @default '#eee' + */ gridcolor?: Color; - /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ griddash?: Dash; - /** Sets the width (in px) of the grid lines. */ + /** + * Sets the width (in px) of the grid lines. + * Minimum: 0 + */ gridwidth?: number; - /** Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. */ + /** + * Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. + * @default 5 + * Minimum: 0 + */ nticks?: number; /** Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. */ showgrid?: boolean; - /** Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears. */ + /** + * Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears. + * Setting this also sets: tickmode = "linear" + */ tick0?: any; - /** Sets the tick color. */ + /** + * Sets the tick color. + * @default '#444' + */ tickcolor?: Color; - /** Sets the tick length (in px). */ + /** + * Sets the tick length (in px). + * Minimum: 0 + */ ticklen?: number; /** Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). */ tickmode?: 'auto' | 'linear' | 'array'; @@ -7097,29 +12612,59 @@ export interface LayoutAxis { ticks?: 'outside' | 'inside' | ''; /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ tickvals?: Datum[] | TypedArray; - /** Sets the tick width (in px). */ + /** + * Sets the tick width (in px). + * Minimum: 0 + */ tickwidth?: number; }; - /** Determines how minor log labels are displayed. If *small digits*, small digits i.e. 2 or 5 are displayed. If *complete*, complete digits are displayed. If *none*, no labels are displayed. */ + /** + * Determines how minor log labels are displayed. If *small digits*, small digits i.e. 2 or 5 are displayed. If *complete*, complete digits are displayed. If *none*, no labels are displayed. + * @default 'small digits' + */ minorloglabels?: 'small digits' | 'complete' | 'none'; - /** Determines if the axis lines or/and ticks are mirrored to the opposite side of the plotting area. If *true*, the axis lines are mirrored. If *ticks*, the axis lines and ticks are mirrored. If *false*, mirroring is disable. If *all*, axis lines are mirrored on all shared-axes subplots. If *allticks*, axis lines and ticks are mirrored on all shared-axes subplots. */ + /** + * Determines if the axis lines or/and ticks are mirrored to the opposite side of the plotting area. If *true*, the axis lines are mirrored. If *ticks*, the axis lines and ticks are mirrored. If *false*, mirroring is disable. If *all*, axis lines are mirrored on all shared-axes subplots. If *allticks*, axis lines and ticks are mirrored on all shared-axes subplots. + * @default false + */ mirror?: true | 'ticks' | false | 'all' | 'allticks'; - /** Disables certain modebar buttons for this axis. *autoscale* disables the autoscale buttons, *zoominout* disables the zoom-in and zoom-out buttons. */ + /** + * Disables certain modebar buttons for this axis. *autoscale* disables the autoscale buttons, *zoominout* disables the zoom-in and zoom-out buttons. + * @default 'none' + */ modebardisable?: 'autoscale' | 'zoominout' | 'none' | (string & {}); - /** Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. */ + /** + * Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. + * @default 0 + * Minimum: 0 + */ nticks?: number; /** If set a same-letter axis id, this axis is overlaid on top of the corresponding same-letter axis, with traces and axes visible for both axes. If *false*, this axis does not overlay any same-letter axes. In this case, for axes with overlapping domains only the highest-numbered axis will be visible. */ overlaying?: 'free' | '/^x([2-9]|[1-9][0-9]+)?( domain)?$/' | '/^y([2-9]|[1-9][0-9]+)?( domain)?$/'; - /** Sets the position of this axis in the plotting space (in normalized coordinates). Only has an effect if `anchor` is set to *free*. */ + /** + * Sets the position of this axis in the plotting space (in normalized coordinates). Only has an effect if `anchor` is set to *free*. + * @default 0 + * Range: [0, 1] + */ position?: number; - /** Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears. Leaving either or both elements `null` impacts the default `autorange`. */ + /** + * Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears. Leaving either or both elements `null` impacts the default `autorange`. + * Setting this also sets: autorange = false + */ range?: [any, any]; rangebreaks?: Array<{ /** Sets the lower and upper bounds of this axis rangebreak. Can be used with `pattern`. */ bounds?: [any, any]; - /** Sets the size of each `values` item. The default is one day in milliseconds. */ + /** + * Sets the size of each `values` item. The default is one day in milliseconds. + * @default 86400000 + * Minimum: 0 + */ dvalue?: number; - /** Determines whether this axis rangebreak is enabled or disabled. Please note that `rangebreaks` only work for *date* axis type. */ + /** + * Determines whether this axis rangebreak is enabled or disabled. Please note that `rangebreaks` only work for *date* axis type. + * @default true + */ enabled?: boolean; /** When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template. */ name?: string; @@ -7130,109 +12675,222 @@ export interface LayoutAxis { /** Sets the coordinate values corresponding to the rangebreaks. An alternative to `bounds`. Use `dvalue` to set the size of the values along the axis. */ values?: any[]; }>; - /** If *normal*, the range is computed in relation to the extrema of the input data. If *tozero*, the range extends to 0, regardless of the input data If *nonnegative*, the range is non-negative, regardless of the input data. Applies only to linear axes. */ + /** + * If *normal*, the range is computed in relation to the extrema of the input data. If *tozero*, the range extends to 0, regardless of the input data If *nonnegative*, the range is non-negative, regardless of the input data. Applies only to linear axes. + * @default 'normal' + */ rangemode?: 'normal' | 'tozero' | 'nonnegative'; rangeselector?: { /** Sets the background color of the active range selector button. */ activecolor?: Color; - /** Sets the background color of the range selector buttons. */ + /** + * Sets the background color of the range selector buttons. + * @default '#eee' + */ bgcolor?: Color; - /** Sets the color of the border enclosing the range selector. */ + /** + * Sets the color of the border enclosing the range selector. + * @default '#444' + */ bordercolor?: Color; - /** Sets the width (in px) of the border enclosing the range selector. */ + /** + * Sets the width (in px) of the border enclosing the range selector. + * @default 0 + * Minimum: 0 + */ borderwidth?: number; buttons?: Array<{ - /** Sets the number of steps to take to update the range. Use with `step` to specify the update interval. */ + /** + * Sets the number of steps to take to update the range. Use with `step` to specify the update interval. + * @default 1 + * Minimum: 0 + */ count?: number; /** Sets the text label to appear on the button. */ label?: string; /** When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template. */ name?: string; - /** The unit of measurement that the `count` value will set the range by. */ + /** + * The unit of measurement that the `count` value will set the range by. + * @default 'month' + */ step?: 'month' | 'year' | 'day' | 'hour' | 'minute' | 'second' | 'all'; - /** Sets the range update mode. If *backward*, the range update shifts the start of range back *count* times *step* milliseconds. If *todate*, the range update shifts the start of range back to the first timestamp from *count* times *step* milliseconds back. For example, with `step` set to *year* and `count` set to *1* the range update shifts the start of the range back to January 01 of the current year. Month and year *todate* are currently available only for the built-in (Gregorian) calendar. */ + /** + * Sets the range update mode. If *backward*, the range update shifts the start of range back *count* times *step* milliseconds. If *todate*, the range update shifts the start of range back to the first timestamp from *count* times *step* milliseconds back. For example, with `step` set to *year* and `count` set to *1* the range update shifts the start of the range back to January 01 of the current year. Month and year *todate* are currently available only for the built-in (Gregorian) calendar. + * @default 'backward' + */ stepmode?: 'backward' | 'todate'; /** Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`. */ templateitemname?: string; - /** Determines whether or not this button is visible. */ + /** + * Determines whether or not this button is visible. + * @default true + */ visible?: boolean; }>; /** Sets the font of the range selector button text. */ font?: Font; /** Determines whether or not this range selector is visible. Note that range selectors are only available for x axes of `type` set to or auto-typed to *date*. */ visible?: boolean; - /** Sets the x position (in normalized coordinates) of the range selector. */ + /** + * Sets the x position (in normalized coordinates) of the range selector. + * Range: [-2, 3] + */ x?: number; - /** Sets the range selector's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the range selector. */ + /** + * Sets the range selector's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the range selector. + * @default 'left' + */ xanchor?: 'auto' | 'left' | 'center' | 'right'; - /** Sets the y position (in normalized coordinates) of the range selector. */ + /** + * Sets the y position (in normalized coordinates) of the range selector. + * Range: [-2, 3] + */ y?: number; - /** Sets the range selector's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the range selector. */ + /** + * Sets the range selector's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the range selector. + * @default 'bottom' + */ yanchor?: 'auto' | 'top' | 'middle' | 'bottom'; }; rangeslider?: { - /** Determines whether or not the range slider range is computed in relation to the input data. If `range` is provided, then `autorange` is set to *false*. */ + /** + * Determines whether or not the range slider range is computed in relation to the input data. If `range` is provided, then `autorange` is set to *false*. + * @default true + */ autorange?: boolean; - /** Sets the background color of the range slider. */ + /** + * Sets the background color of the range slider. + * @default '#fff' + */ bgcolor?: Color; - /** Sets the border color of the range slider. */ + /** + * Sets the border color of the range slider. + * @default '#444' + */ bordercolor?: Color; - /** Sets the border width of the range slider. */ + /** + * Sets the border width of the range slider. + * @default 0 + * Minimum: 0 + */ borderwidth?: number; - /** Sets the range of the range slider. If not set, defaults to the full xaxis range. If the axis `type` is *log*, then you must take the log of your desired range. If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears. */ + /** + * Sets the range of the range slider. If not set, defaults to the full xaxis range. If the axis `type` is *log*, then you must take the log of your desired range. If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears. + * Setting this also sets: autorange = false + */ range?: [any, any]; - /** The height of the range slider as a fraction of the total plot area height. */ + /** + * The height of the range slider as a fraction of the total plot area height. + * @default 0.15 + * Range: [0, 1] + */ thickness?: number; - /** Determines whether or not the range slider will be visible. If visible, perpendicular axes will be set to `fixedrange` */ + /** + * Determines whether or not the range slider will be visible. If visible, perpendicular axes will be set to `fixedrange` + * @default true + */ visible?: boolean; yaxis?: { /** Sets the range of this axis for the rangeslider. */ range?: [any, any]; - /** Determines whether or not the range of this axis in the rangeslider use the same value than in the main plot when zooming in/out. If *auto*, the autorange will be used. If *fixed*, the `range` is used. If *match*, the current range of the corresponding y-axis on the main subplot is used. */ + /** + * Determines whether or not the range of this axis in the rangeslider use the same value than in the main plot when zooming in/out. If *auto*, the autorange will be used. If *fixed*, the `range` is used. If *match*, the current range of the corresponding y-axis on the main subplot is used. + * @default 'match' + */ rangemode?: 'auto' | 'fixed' | 'match'; }; }; /** If set to another axis id (e.g. `x2`, `y`), the range of this axis changes together with the range of the corresponding axis such that the scale of pixels per unit is in a constant ratio. Both axes are still zoomable, but when you zoom one, the other will zoom the same amount, keeping a fixed midpoint. `constrain` and `constraintoward` determine how we enforce the constraint. You can chain these, ie `yaxis: {scaleanchor: *x*}, xaxis2: {scaleanchor: *y*}` but you can only link axes of the same `type`. The linked axis can have the opposite letter (to constrain the aspect ratio) or the same letter (to match scales across subplots). Loops (`yaxis: {scaleanchor: *x*}, xaxis: {scaleanchor: *y*}` or longer) are redundant and the last constraint encountered will be ignored to avoid possible inconsistent constraints via `scaleratio`. Note that setting axes simultaneously in both a `scaleanchor` and a `matches` constraint is currently forbidden. Setting `false` allows to remove a default constraint (occasionally, you may need to prevent a default `scaleanchor` constraint from being applied, eg. when having an image trace `yaxis: {scaleanchor: "x"}` is set automatically in order for pixels to be rendered as squares, setting `yaxis: {scaleanchor: false}` allows to remove the constraint). */ scaleanchor?: '/^x([2-9]|[1-9][0-9]+)?( domain)?$/' | '/^y([2-9]|[1-9][0-9]+)?( domain)?$/' | false; - /** If this axis is linked to another by `scaleanchor`, this determines the pixel to unit scale ratio. For example, if this value is 10, then every unit on this axis spans 10 times the number of pixels as a unit on the linked axis. Use this for example to create an elevation profile where the vertical scale is exaggerated a fixed amount with respect to the horizontal. */ + /** + * If this axis is linked to another by `scaleanchor`, this determines the pixel to unit scale ratio. For example, if this value is 10, then every unit on this axis spans 10 times the number of pixels as a unit on the linked axis. Use this for example to create an elevation profile where the vertical scale is exaggerated a fixed amount with respect to the horizontal. + * @default 1 + * Minimum: 0 + */ scaleratio?: number; - /** If "true", even 4-digit integers are separated */ + /** + * If "true", even 4-digit integers are separated + * @default false + */ separatethousands?: boolean; /** Moves the axis a given number of pixels from where it would have been otherwise. Accepts both positive and negative values, which will shift the axis either right or left, respectively. If `autoshift` is set to true, then this defaults to a padding of -3 if `side` is set to *left*. and defaults to +3 if `side` is set to *right*. Defaults to 0 if `autoshift` is set to false. Only has an effect if `anchor` is set to *free*. */ shift?: number; - /** Determines whether or not a dividers are drawn between the category levels of this axis. Only has an effect on *multicategory* axes. */ + /** + * Determines whether or not a dividers are drawn between the category levels of this axis. Only has an effect on *multicategory* axes. + * @default true + */ showdividers?: boolean; - /** If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. */ + /** + * If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. + * @default 'all' + */ showexponent?: 'all' | 'first' | 'last' | 'none'; /** Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. */ showgrid?: boolean; - /** Determines whether or not a line bounding this axis is drawn. */ + /** + * Determines whether or not a line bounding this axis is drawn. + * @default false + */ showline?: boolean; - /** Determines whether or not spikes (aka droplines) are drawn for this axis. Note: This only takes affect when hovermode = closest */ + /** + * Determines whether or not spikes (aka droplines) are drawn for this axis. Note: This only takes affect when hovermode = closest + * @default false + */ showspikes?: boolean; - /** Determines whether or not the tick labels are drawn. */ + /** + * Determines whether or not the tick labels are drawn. + * @default true + */ showticklabels?: boolean; - /** If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. */ + /** + * If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. + * @default 'all' + */ showtickprefix?: 'all' | 'first' | 'last' | 'none'; - /** Same as `showtickprefix` but for tick suffixes. */ + /** + * Same as `showtickprefix` but for tick suffixes. + * @default 'all' + */ showticksuffix?: 'all' | 'first' | 'last' | 'none'; /** Determines whether a x (y) axis is positioned at the *bottom* (*left*) or *top* (*right*) of the plotting area. */ side?: 'top' | 'bottom' | 'left' | 'right'; /** Sets the spike color. If undefined, will use the series color */ spikecolor?: Color; - /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'dash' + */ spikedash?: Dash; - /** Determines the drawing mode for the spike line If *toaxis*, the line is drawn from the data point to the axis the series is plotted on. If *across*, the line is drawn across the entire plot area, and supercedes *toaxis*. If *marker*, then a marker dot is drawn on the axis the series is plotted on */ + /** + * Determines the drawing mode for the spike line If *toaxis*, the line is drawn from the data point to the axis the series is plotted on. If *across*, the line is drawn across the entire plot area, and supercedes *toaxis*. If *marker*, then a marker dot is drawn on the axis the series is plotted on + * @default 'toaxis' + */ spikemode?: 'toaxis' | 'across' | 'marker' | (string & {}); - /** Determines whether spikelines are stuck to the cursor or to the closest datapoints. */ + /** + * Determines whether spikelines are stuck to the cursor or to the closest datapoints. + * @default 'hovered data' + */ spikesnap?: 'data' | 'cursor' | 'hovered data'; - /** Sets the width (in px) of the zero line. */ + /** + * Sets the width (in px) of the zero line. + * @default 3 + */ spikethickness?: number; - /** Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears. */ + /** + * Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears. + * Setting this also sets: tickmode = "linear" + */ tick0?: any; - /** Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. */ + /** + * Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. + * @default 'auto' + */ tickangle?: number | 'auto'; - /** Sets the tick color. */ + /** + * Sets the tick color. + * @default '#444' + */ tickcolor?: Color; /** Sets the tick font. */ tickfont?: Font; @@ -7241,19 +12899,39 @@ export interface LayoutAxis { tickformatstops?: TickFormatStops[]; /** Only for axes with `type` *date* or *linear*. Instead of drawing the major tick label, draw the label for the minor tick that is n positions away from the major tick. E.g. to always draw the label for the minor tick before each major tick, choose `ticklabelindex` -1. This is useful for date axes with `ticklabelmode` *period* if you want to label the period that ends with each major tick instead of the period that begins there. */ ticklabelindex?: number | number[]; - /** Determines where tick labels are drawn with respect to their corresponding ticks and grid lines. Only has an effect for axes of `type` *date* When set to *period*, tick labels are drawn in the middle of the period between ticks. */ + /** + * Determines where tick labels are drawn with respect to their corresponding ticks and grid lines. Only has an effect for axes of `type` *date* When set to *period*, tick labels are drawn in the middle of the period between ticks. + * @default 'instant' + */ ticklabelmode?: 'instant' | 'period'; /** Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. Otherwise on *category* and *multicategory* axes the default is *allow*. In other cases the default is *hide past div*. */ ticklabeloverflow?: 'allow' | 'hide past div' | 'hide past domain'; - /** Determines where tick labels are drawn with respect to the axis. Please note that top or bottom has no effect on x axes or when `ticklabelmode` is set to *period* or when `tickson` is set to *boundaries*. Similarly, left or right has no effect on y axes or when `ticklabelmode` is set to *period* or when `tickson` is set to *boundaries*. Has no effect on *multicategory* axes. When used on axes linked by `matches` or `scaleanchor`, no extra padding for inside labels would be added by autorange, so that the scales could match. */ + /** + * Determines where tick labels are drawn with respect to the axis. Please note that top or bottom has no effect on x axes or when `ticklabelmode` is set to *period* or when `tickson` is set to *boundaries*. Similarly, left or right has no effect on y axes or when `ticklabelmode` is set to *period* or when `tickson` is set to *boundaries*. Has no effect on *multicategory* axes. When used on axes linked by `matches` or `scaleanchor`, no extra padding for inside labels would be added by autorange, so that the scales could match. + * @default 'outside' + */ ticklabelposition?: 'outside' | 'inside' | 'outside top' | 'inside top' | 'outside left' | 'inside left' | 'outside right' | 'inside right' | 'outside bottom' | 'inside bottom'; - /** Shifts the tick labels by the specified number of pixels in parallel to the axis. Positive values move the labels in the positive direction of the axis. */ + /** + * Shifts the tick labels by the specified number of pixels in parallel to the axis. Positive values move the labels in the positive direction of the axis. + * @default 0 + */ ticklabelshift?: number; - /** Sets the standoff distance (in px) between the axis tick labels and their default position. A positive `ticklabelstandoff` moves the labels farther away from the plot area if `ticklabelposition` is *outside*, and deeper into the plot area if `ticklabelposition` is *inside*. A negative `ticklabelstandoff` works in the opposite direction, moving outside ticks towards the plot area and inside ticks towards the outside. If the negative value is large enough, inside ticks can even end up outside and vice versa. */ + /** + * Sets the standoff distance (in px) between the axis tick labels and their default position. A positive `ticklabelstandoff` moves the labels farther away from the plot area if `ticklabelposition` is *outside*, and deeper into the plot area if `ticklabelposition` is *inside*. A negative `ticklabelstandoff` works in the opposite direction, moving outside ticks towards the plot area and inside ticks towards the outside. If the negative value is large enough, inside ticks can even end up outside and vice versa. + * @default 0 + */ ticklabelstandoff?: number; - /** Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*. */ + /** + * Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*. + * @default 1 + * Minimum: 1 + */ ticklabelstep?: number; - /** Sets the tick length (in px). */ + /** + * Sets the tick length (in px). + * @default 5 + * Minimum: 0 + */ ticklen?: number; /** Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). If *sync*, the number of ticks will sync with the overlayed axis set by `overlaying` property. */ tickmode?: 'auto' | 'linear' | 'array' | 'sync'; @@ -7261,7 +12939,10 @@ export interface LayoutAxis { tickprefix?: string; /** Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines. */ ticks?: 'outside' | 'inside' | ''; - /** Determines where ticks and grid lines are drawn with respect to their corresponding tick labels. Only has an effect for axes of `type` *category* or *multicategory*. When set to *boundaries*, ticks and grid lines are drawn half a category to the left/bottom of labels. */ + /** + * Determines where ticks and grid lines are drawn with respect to their corresponding tick labels. Only has an effect for axes of `type` *category* or *multicategory*. When set to *boundaries*, ticks and grid lines are drawn half a category to the left/bottom of labels. + * @default 'labels' + */ tickson?: 'labels' | 'boundaries'; /** Sets a tick label suffix. */ ticksuffix?: string; @@ -7269,17 +12950,27 @@ export interface LayoutAxis { ticktext?: Datum[] | TypedArray; /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ tickvals?: Datum[] | TypedArray; - /** Sets the tick width (in px). */ + /** + * Sets the tick width (in px). + * @default 1 + * Minimum: 0 + */ tickwidth?: number; title?: { /** Sets this axis' title font. */ font?: Font; - /** Sets the standoff distance (in px) between the axis labels and the title text The default value is a function of the axis tick labels, the title `font.size` and the axis `linewidth`. Note that the axis title position is always constrained within the margins, so the actual standoff distance is always less than the set or default value. By setting `standoff` and turning on `automargin`, plotly.js will push the margins to fit the axis title at given standoff distance. */ + /** + * Sets the standoff distance (in px) between the axis labels and the title text The default value is a function of the axis tick labels, the title `font.size` and the axis `linewidth`. Note that the axis title position is always constrained within the margins, so the actual standoff distance is always less than the set or default value. By setting `standoff` and turning on `automargin`, plotly.js will push the margins to fit the axis title at given standoff distance. + * Minimum: 0 + */ standoff?: number; /** Sets the title of this axis. */ text?: string; }; - /** Sets the axis type. By default, plotly attempts to determined the axis type by looking into the data of the traces that referenced the axis in question. */ + /** + * Sets the axis type. By default, plotly attempts to determined the axis type by looking into the data of the traces that referenced the axis in question. + * @default '-' + */ type?: AxisType; /** Controls persistence of user-driven changes in axis `range`, `autorange`, and `title` if in `editable: true` configuration. Defaults to `layout.uirevision`. */ uirevision?: any; @@ -7288,44 +12979,92 @@ export interface LayoutAxis { visible?: boolean; /** Determines whether or not a line is drawn at along the 0 value of this axis. If *true*, the zero line is drawn on top of the grid lines. */ zeroline?: boolean; - /** Sets the line color of the zero line. */ + /** + * Sets the line color of the zero line. + * @default '#444' + */ zerolinecolor?: Color; - /** Sets the layer on which this zeroline is displayed. If *above traces*, this zeroline is displayed above all the subplot's traces If *below traces*, this zeroline is displayed below all the subplot's traces, but above the grid lines. Limitation: *zerolinelayer* currently has no effect if the *zorder* property is set on any trace. */ + /** + * Sets the layer on which this zeroline is displayed. If *above traces*, this zeroline is displayed above all the subplot's traces If *below traces*, this zeroline is displayed below all the subplot's traces, but above the grid lines. Limitation: *zerolinelayer* currently has no effect if the *zorder* property is set on any trace. + * @default 'below traces' + */ zerolinelayer?: 'above traces' | 'below traces'; - /** Sets the width (in px) of the zero line. */ + /** + * Sets the width (in px) of the zero line. + * @default 1 + */ zerolinewidth?: number; } export interface Legend { /** Sets the legend background color. Defaults to `layout.paper_bgcolor`. */ bgcolor?: Color; - /** Sets the color of the border enclosing the legend. */ + /** + * Sets the color of the border enclosing the legend. + * @default '#444' + */ bordercolor?: Color; - /** Sets the width (in px) of the border enclosing the legend. */ + /** + * Sets the width (in px) of the border enclosing the legend. + * @default 0 + * Minimum: 0 + */ borderwidth?: number; - /** Sets the width (in px or fraction) of the legend. Use 0 to size the entry based on the text width, when `entrywidthmode` is set to *pixels*. */ + /** + * Sets the width (in px or fraction) of the legend. Use 0 to size the entry based on the text width, when `entrywidthmode` is set to *pixels*. + * Minimum: 0 + */ entrywidth?: number; - /** Determines what entrywidth means. */ + /** + * Determines what entrywidth means. + * @default 'pixels' + */ entrywidthmode?: 'fraction' | 'pixels'; /** Sets the font used to text the legend items. */ font?: Font; - /** Determines the behavior on legend group item click. *toggleitem* toggles the visibility of the individual item clicked on the graph. *togglegroup* toggles the visibility of all items in the same legendgroup as the item clicked on the graph. */ + /** + * Determines the behavior on legend group item click. *toggleitem* toggles the visibility of the individual item clicked on the graph. *togglegroup* toggles the visibility of all items in the same legendgroup as the item clicked on the graph. + * @default 'togglegroup' + */ groupclick?: 'toggleitem' | 'togglegroup'; /** Sets the font for group titles in legend. Defaults to `legend.font` with its size increased about 10%. */ grouptitlefont?: Font; - /** Sets the indentation (in px) of the legend entries. */ + /** + * Sets the indentation (in px) of the legend entries. + * @default 0 + * Minimum: -15 + */ indentation?: number; - /** Determines the behavior on legend item click. *toggle* toggles the visibility of the item clicked on the graph. *toggleothers* makes the clicked item the sole visible item on the graph. *false* disables legend item click interactions. */ + /** + * Determines the behavior on legend item click. *toggle* toggles the visibility of the item clicked on the graph. *toggleothers* makes the clicked item the sole visible item on the graph. *false* disables legend item click interactions. + * @default 'toggle' + */ itemclick?: 'toggle' | 'toggleothers' | false; - /** Determines the behavior on legend item double-click. *toggle* toggles the visibility of the item clicked on the graph. *toggleothers* makes the clicked item the sole visible item on the graph. *false* disables legend item double-click interactions. */ + /** + * Determines the behavior on legend item double-click. *toggle* toggles the visibility of the item clicked on the graph. *toggleothers* makes the clicked item the sole visible item on the graph. *false* disables legend item double-click interactions. + * @default 'toggleothers' + */ itemdoubleclick?: 'toggle' | 'toggleothers' | false; - /** Determines if the legend items symbols scale with their corresponding *trace* attributes or remain *constant* independent of the symbol size on the graph. */ + /** + * Determines if the legend items symbols scale with their corresponding *trace* attributes or remain *constant* independent of the symbol size on the graph. + * @default 'trace' + */ itemsizing?: 'trace' | 'constant'; - /** Sets the width (in px) of the legend item symbols (the part other than the title.text). */ + /** + * Sets the width (in px) of the legend item symbols (the part other than the title.text). + * @default 30 + * Minimum: 30 + */ itemwidth?: number; - /** Sets the max height (in px) of the legend, or max height ratio (reference height * ratio) if less than or equal to 1. Default value is: 0.5 for horizontal legends; 1 for vertical legends. The minimum allowed height is 30px. For a ratio of 0.5, the legend will take up to 50% of the reference height before displaying a scrollbar. The reference height is the full layout height with the following exception: vertically oriented legends with a `yref` of `"paper", located to the side of the plot. In this case, the reference height is the plot height. */ + /** + * Sets the max height (in px) of the legend, or max height ratio (reference height * ratio) if less than or equal to 1. Default value is: 0.5 for horizontal legends; 1 for vertical legends. The minimum allowed height is 30px. For a ratio of 0.5, the legend will take up to 50% of the reference height before displaying a scrollbar. The reference height is the full layout height with the following exception: vertically oriented legends with a `yref` of `"paper", located to the side of the plot. In this case, the reference height is the plot height. + * Minimum: 0 + */ maxheight?: number; - /** Sets the orientation of the legend. */ + /** + * Sets the orientation of the legend. + * @default 'v' + */ orientation?: 'v' | 'h'; title?: { /** Sets this legend's title font. Defaults to `legend.font` with its size increased about 20%. */ @@ -7339,34 +13078,56 @@ export interface Legend { titleclick?: 'toggle' | 'toggleothers' | false; /** Determines the behavior on legend title double-click. *toggle* toggles the visibility of all items in the legend. *toggleothers* toggles the visibility of all other legends. *false* disables legend title double-click interactions. Defaults to *toggleothers* when there are multiple legends, *false* otherwise. Not supported for legends containing pie and pie-like traces. */ titledoubleclick?: 'toggle' | 'toggleothers' | false; - /** Sets the amount of vertical space (in px) between legend groups. */ + /** + * Sets the amount of vertical space (in px) between legend groups. + * @default 10 + * Minimum: 0 + */ tracegroupgap?: number; /** Determines the order at which the legend items are displayed. If *normal*, the items are displayed top-to-bottom in the same order as the input data. If *reversed*, the items are displayed in the opposite order as *normal*. If *grouped*, the items are displayed in groups (when a trace `legendgroup` is provided). if *grouped+reversed*, the items are displayed in the opposite order as *grouped*. */ traceorder?: 'reversed' | 'grouped' | 'normal' | (string & {}); /** Controls persistence of legend-driven changes in trace and pie label visibility. Defaults to `layout.uirevision`. */ uirevision?: any; - /** Sets the vertical alignment of the symbols with respect to their associated text. */ + /** + * Sets the vertical alignment of the symbols with respect to their associated text. + * @default 'middle' + */ valign?: 'top' | 'middle' | 'bottom'; - /** Determines whether or not this legend is visible. */ + /** + * Determines whether or not this legend is visible. + * @default true + */ visible?: boolean; /** Sets the x position with respect to `xref` (in normalized coordinates) of the legend. When `xref` is *paper*, defaults to *1.02* for vertical legends and defaults to *0* for horizontal legends. When `xref` is *container*, defaults to *1* for vertical legends and defaults to *0* for horizontal legends. Must be between *0* and *1* if `xref` is *container*. and between *-2* and *3* if `xref` is *paper*. */ x?: number; - /** Sets the legend's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the legend. Value *auto* anchors legends to the right for `x` values greater than or equal to 2/3, anchors legends to the left for `x` values less than or equal to 1/3 and anchors legends with respect to their center otherwise. */ + /** + * Sets the legend's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the legend. Value *auto* anchors legends to the right for `x` values greater than or equal to 2/3, anchors legends to the left for `x` values less than or equal to 1/3 and anchors legends with respect to their center otherwise. + * @default 'left' + */ xanchor?: 'auto' | 'left' | 'center' | 'right'; - /** Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only. */ + /** + * Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only. + * @default 'paper' + */ xref?: YRef; /** Sets the y position with respect to `yref` (in normalized coordinates) of the legend. When `yref` is *paper*, defaults to *1* for vertical legends, defaults to *-0.1* for horizontal legends on graphs w/o range sliders and defaults to *1.1* for horizontal legends on graph with one or multiple range sliders. When `yref` is *container*, defaults to *1*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*. */ y?: number; /** Sets the legend's vertical position anchor. This anchor binds the `y` position to the *top*, *middle* or *bottom* of the legend. Value *auto* anchors legends at their bottom for `y` values less than or equal to 1/3, anchors legends to at their top for `y` values greater than or equal to 2/3 and anchors legends with respect to their middle otherwise. */ yanchor?: 'auto' | 'top' | 'middle' | 'bottom'; - /** Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only. */ + /** + * Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only. + * @default 'paper' + */ yref?: YRef; } export interface MapLayout { /** Sets the mapbox access token to be used for this mapbox map. Alternatively, the mapbox access token can be set in the configuration options under `mapboxAccessToken`. Note that accessToken are only required when `style` (e.g with values : basic, streets, outdoors, light, dark, satellite, satellite-streets ) and/or a layout layer references the Mapbox server. */ accesstoken?: string; - /** Sets the bearing angle of the map in degrees counter-clockwise from North (map.bearing). */ + /** + * Sets the bearing angle of the map in degrees counter-clockwise from North (map.bearing). + * @default 0 + */ bearing?: number; bounds?: { /** Sets the maximum longitude of the map (in degrees East) if `west`, `south` and `north` are declared. */ @@ -7379,9 +13140,15 @@ export interface MapLayout { west?: number; }; center?: { - /** Sets the latitude of the center of the map (in degrees North). */ + /** + * Sets the latitude of the center of the map (in degrees North). + * @default 0 + */ lat?: number; - /** Sets the longitude of the center of the map (in degrees East). */ + /** + * Sets the longitude of the center of the map (in degrees East). + * @default 0 + */ lon?: number; }; domain?: Domain; @@ -7389,10 +13156,16 @@ export interface MapLayout { /** Determines if the layer will be inserted before the layer with the specified ID. If omitted or set to '', the layer will be inserted above every existing layer. */ below?: string; circle?: { - /** Sets the circle radius (map.layer.paint.circle-radius). Has an effect only when `type` is set to *circle*. */ + /** + * Sets the circle radius (map.layer.paint.circle-radius). Has an effect only when `type` is set to *circle*. + * @default 15 + */ radius?: number; }; - /** Sets the primary layer color. If `type` is *circle*, color corresponds to the circle color (map.layer.paint.circle-color) If `type` is *line*, color corresponds to the line color (map.layer.paint.line-color) If `type` is *fill*, color corresponds to the fill color (map.layer.paint.fill-color) If `type` is *symbol*, color corresponds to the icon color (map.layer.paint.icon-color) */ + /** + * Sets the primary layer color. If `type` is *circle*, color corresponds to the circle color (map.layer.paint.circle-color) If `type` is *line*, color corresponds to the line color (map.layer.paint.line-color) If `type` is *fill*, color corresponds to the fill color (map.layer.paint.fill-color) If `type` is *symbol*, color corresponds to the icon color (map.layer.paint.icon-color) + * @default '#444' + */ color?: Color; /** Sets the coordinates array contains [longitude, latitude] pairs for the image corners listed in clockwise order: top left, top right, bottom right, bottom left. Only has an effect for *image* `sourcetype`. */ coordinates?: any; @@ -7400,16 +13173,31 @@ export interface MapLayout { line?: { /** Sets the length of dashes and gaps (map.layer.paint.line-dasharray). Has an effect only when `type` is set to *line*. */ dash?: Datum[] | TypedArray; - /** Sets the line width (map.layer.paint.line-width). Has an effect only when `type` is set to *line*. */ + /** + * Sets the line width (map.layer.paint.line-width). Has an effect only when `type` is set to *line*. + * @default 2 + */ width?: number; }; - /** Sets the maximum zoom level (map.layer.maxzoom). At zoom levels equal to or greater than the maxzoom, the layer will be hidden. */ + /** + * Sets the maximum zoom level (map.layer.maxzoom). At zoom levels equal to or greater than the maxzoom, the layer will be hidden. + * @default 24 + * Range: [0, 24] + */ maxzoom?: number; - /** Sets the minimum zoom level (map.layer.minzoom). At zoom levels less than the minzoom, the layer will be hidden. */ + /** + * Sets the minimum zoom level (map.layer.minzoom). At zoom levels less than the minzoom, the layer will be hidden. + * @default 0 + * Range: [0, 24] + */ minzoom?: number; /** When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template. */ name?: string; - /** Sets the opacity of the layer. If `type` is *circle*, opacity corresponds to the circle opacity (map.layer.paint.circle-opacity) If `type` is *line*, opacity corresponds to the line opacity (map.layer.paint.line-opacity) If `type` is *fill*, opacity corresponds to the fill opacity (map.layer.paint.fill-opacity) If `type` is *symbol*, opacity corresponds to the icon/text opacity (map.layer.paint.text-opacity) */ + /** + * Sets the opacity of the layer. If `type` is *circle*, opacity corresponds to the circle opacity (map.layer.paint.circle-opacity) If `type` is *line*, opacity corresponds to the line opacity (map.layer.paint.line-opacity) If `type` is *fill*, opacity corresponds to the fill opacity (map.layer.paint.fill-opacity) If `type` is *symbol*, opacity corresponds to the icon/text opacity (map.layer.paint.text-opacity) + * @default 1 + * Range: [0, 1] + */ opacity?: number; /** Sets the source data for this layer (map.layer.source). When `sourcetype` is set to *geojson*, `source` can be a URL to a GeoJSON or a GeoJSON object. When `sourcetype` is set to *vector* or *raster*, `source` can be a URL or an array of tile URLs. When `sourcetype` is set to *image*, `source` can be a URL to an image. */ source?: any; @@ -7417,111 +13205,237 @@ export interface MapLayout { sourceattribution?: string; /** Specifies the layer to use from a vector tile source (map.layer.source-layer). Required for *vector* source type that supports multiple layers. */ sourcelayer?: string; - /** Sets the source type for this layer, that is the type of the layer data. */ + /** + * Sets the source type for this layer, that is the type of the layer data. + * @default 'geojson' + */ sourcetype?: 'geojson' | 'vector' | 'raster' | 'image'; symbol?: { - /** Sets the symbol icon image (map.layer.layout.icon-image). Full list: https://www.mapbox.com/maki-icons/ */ + /** + * Sets the symbol icon image (map.layer.layout.icon-image). Full list: https://www.mapbox.com/maki-icons/ + * @default 'marker' + */ icon?: string; - /** Sets the symbol icon size (map.layer.layout.icon-size). Has an effect only when `type` is set to *symbol*. */ + /** + * Sets the symbol icon size (map.layer.layout.icon-size). Has an effect only when `type` is set to *symbol*. + * @default 10 + */ iconsize?: number; - /** Sets the symbol and/or text placement (map.layer.layout.symbol-placement). If `placement` is *point*, the label is placed where the geometry is located If `placement` is *line*, the label is placed along the line of the geometry If `placement` is *line-center*, the label is placed on the center of the geometry */ + /** + * Sets the symbol and/or text placement (map.layer.layout.symbol-placement). If `placement` is *point*, the label is placed where the geometry is located If `placement` is *line*, the label is placed along the line of the geometry If `placement` is *line-center*, the label is placed on the center of the geometry + * @default 'point' + */ placement?: 'point' | 'line' | 'line-center'; /** Sets the symbol text (map.layer.layout.text-field). */ text?: string; /** Sets the icon text font (color=map.layer.paint.text-color, size=map.layer.layout.text-size). Has an effect only when `type` is set to *symbol*. */ textfont?: Font; - /** Sets the positions of the `text` elements with respects to the (x,y) coordinates. */ + /** + * Sets the positions of the `text` elements with respects to the (x,y) coordinates. + * @default 'middle center' + */ textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right'; }; /** Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`. */ templateitemname?: string; - /** Sets the layer type, that is the how the layer data set in `source` will be rendered With `sourcetype` set to *geojson*, the following values are allowed: *circle*, *line*, *fill* and *symbol*. but note that *line* and *fill* are not compatible with Point GeoJSON geometries. With `sourcetype` set to *vector*, the following values are allowed: *circle*, *line*, *fill* and *symbol*. With `sourcetype` set to *raster* or *image*, only the *raster* value is allowed. */ + /** + * Sets the layer type, that is the how the layer data set in `source` will be rendered With `sourcetype` set to *geojson*, the following values are allowed: *circle*, *line*, *fill* and *symbol*. but note that *line* and *fill* are not compatible with Point GeoJSON geometries. With `sourcetype` set to *vector*, the following values are allowed: *circle*, *line*, *fill* and *symbol*. With `sourcetype` set to *raster* or *image*, only the *raster* value is allowed. + * @default 'circle' + */ type?: 'circle' | 'line' | 'fill' | 'symbol' | 'raster'; - /** Determines whether this layer is displayed */ + /** + * Determines whether this layer is displayed + * @default true + */ visible?: boolean; }>; - /** Sets the pitch angle of the map (in degrees, where *0* means perpendicular to the surface of the map) (map.pitch). */ + /** + * Sets the pitch angle of the map (in degrees, where *0* means perpendicular to the surface of the map) (map.pitch). + * @default 0 + */ pitch?: number; - /** Defines the map layers that are rendered by default below the trace layers defined in `data`, which are themselves by default rendered below the layers defined in `layout.map.layers`. These layers can be defined either explicitly as a Map Style object which can contain multiple layer definitions that load data from any public or private Tile Map Service (TMS or XYZ) or Web Map Service (WMS) or implicitly by using one of the built-in style objects which use WMSes or by using a custom style URL Map Style objects are of the form described in the MapLibre GL JS documentation available at https://maplibre.org/maplibre-style-spec/ The built-in plotly.js styles objects are: basic, carto-darkmatter, carto-darkmatter-nolabels, carto-positron, carto-positron-nolabels, carto-voyager, carto-voyager-nolabels, dark, light, open-street-map, outdoors, satellite, satellite-streets, streets, white-bg. */ + /** + * Defines the map layers that are rendered by default below the trace layers defined in `data`, which are themselves by default rendered below the layers defined in `layout.map.layers`. These layers can be defined either explicitly as a Map Style object which can contain multiple layer definitions that load data from any public or private Tile Map Service (TMS or XYZ) or Web Map Service (WMS) or implicitly by using one of the built-in style objects which use WMSes or by using a custom style URL Map Style objects are of the form described in the MapLibre GL JS documentation available at https://maplibre.org/maplibre-style-spec/ The built-in plotly.js styles objects are: basic, carto-darkmatter, carto-darkmatter-nolabels, carto-positron, carto-positron-nolabels, carto-voyager, carto-voyager-nolabels, dark, light, open-street-map, outdoors, satellite, satellite-streets, streets, white-bg. + * @default 'basic' + */ style?: any; /** Controls persistence of user-driven changes in the view: `center`, `zoom`, `bearing`, `pitch`. Defaults to `layout.uirevision`. */ uirevision?: any; - /** Sets the zoom level of the map (map.zoom). */ + /** + * Sets the zoom level of the map (map.zoom). + * @default 1 + */ zoom?: number; } export interface PolarLayout { angularaxis?: { - /** Using *strict* a numeric string in trace data is not converted to a number. Using *convert types* a numeric string in trace data may be treated as a number during automatic axis `type` detection. Defaults to layout.autotypenumbers. */ + /** + * Using *strict* a numeric string in trace data is not converted to a number. Using *convert types* a numeric string in trace data may be treated as a number during automatic axis `type` detection. Defaults to layout.autotypenumbers. + * @default 'convert types' + */ autotypenumbers?: 'convert types' | 'strict'; /** Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`. */ categoryarray?: Datum[] | TypedArray; - /** Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. Set `categoryorder` to *total ascending* or *total descending* if order should be determined by the numerical order of the values. Similarly, the order can be determined by the min, max, sum, mean, geometric mean or median of all the values. */ + /** + * Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. Set `categoryorder` to *total ascending* or *total descending* if order should be determined by the numerical order of the values. Similarly, the order can be determined by the min, max, sum, mean, geometric mean or median of all the values. + * @default 'trace' + */ categoryorder?: 'trace' | 'category ascending' | 'category descending' | 'array' | 'total ascending' | 'total descending' | 'min ascending' | 'min descending' | 'max ascending' | 'max descending' | 'sum ascending' | 'sum descending' | 'mean ascending' | 'mean descending' | 'geometric mean ascending' | 'geometric mean descending' | 'median ascending' | 'median descending'; - /** Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. */ + /** + * Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. + * @default '#444' + */ color?: Color; - /** Sets the direction corresponding to positive angles. */ + /** + * Sets the direction corresponding to positive angles. + * @default 'counterclockwise' + */ direction?: 'counterclockwise' | 'clockwise'; - /** Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48* */ + /** + * Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48* + * Setting this also sets: tickmode = "linear" + */ dtick?: any; - /** Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from "femto" f (10^-15) to "tera" T (10^12). *SI extended* covers instead the full SI range from "quecto" q (10^-30) to "quetta" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation. */ + /** + * Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from "femto" f (10^-15) to "tera" T (10^12). *SI extended* covers instead the full SI range from "quecto" q (10^-30) to "quetta" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation. + * @default 'B' + */ exponentformat?: 'none' | 'e' | 'E' | 'power' | 'SI' | 'B' | 'SI extended'; - /** Sets the color of the grid lines. */ + /** + * Sets the color of the grid lines. + * @default '#eee' + */ gridcolor?: Color; - /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ griddash?: Dash; - /** Sets the width (in px) of the grid lines. */ + /** + * Sets the width (in px) of the grid lines. + * @default 1 + * Minimum: 0 + */ gridwidth?: number; /** Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ hoverformat?: string; - /** Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. */ + /** + * Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. + * @default false + */ labelalias?: any; - /** Sets the layer on which this axis is displayed. If *above traces*, this axis is displayed above all the subplot's traces If *below traces*, this axis is displayed below all the subplot's traces, but above the grid lines. Useful when used together with scatter-like traces with `cliponaxis` set to *false* to show markers and/or text nodes above this axis. */ + /** + * Sets the layer on which this axis is displayed. If *above traces*, this axis is displayed above all the subplot's traces If *below traces*, this axis is displayed below all the subplot's traces, but above the grid lines. Useful when used together with scatter-like traces with `cliponaxis` set to *false* to show markers and/or text nodes above this axis. + * @default 'above traces' + */ layer?: 'above traces' | 'below traces'; - /** Sets the axis line color. */ + /** + * Sets the axis line color. + * @default '#444' + */ linecolor?: Color; - /** Sets the width (in px) of the axis line. */ + /** + * Sets the width (in px) of the axis line. + * @default 1 + * Minimum: 0 + */ linewidth?: number; - /** Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*. */ + /** + * Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*. + * @default 3 + * Minimum: 0 + */ minexponent?: number; - /** Determines how minor log labels are displayed. If *small digits*, small digits i.e. 2 or 5 are displayed. If *complete*, complete digits are displayed. If *none*, no labels are displayed. */ + /** + * Determines how minor log labels are displayed. If *small digits*, small digits i.e. 2 or 5 are displayed. If *complete*, complete digits are displayed. If *none*, no labels are displayed. + * @default 'small digits' + */ minorloglabels?: 'small digits' | 'complete' | 'none'; - /** Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. */ + /** + * Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. + * @default 0 + * Minimum: 0 + */ nticks?: number; - /** Set the angular period. Has an effect only when `angularaxis.type` is *category*. */ + /** + * Set the angular period. Has an effect only when `angularaxis.type` is *category*. + * Minimum: 0 + */ period?: number; /** Sets that start position (in degrees) of the angular axis By default, polar subplots with `direction` set to *counterclockwise* get a `rotation` of *0* which corresponds to due East (like what mathematicians prefer). In turn, polar with `direction` set to *clockwise* get a rotation of *90* which corresponds to due North (like on a compass), */ rotation?: number | 'auto'; - /** If "true", even 4-digit integers are separated */ + /** + * If "true", even 4-digit integers are separated + * @default false + */ separatethousands?: boolean; - /** If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. */ + /** + * If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. + * @default 'all' + */ showexponent?: 'all' | 'first' | 'last' | 'none'; - /** Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. */ + /** + * Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. + * @default true + */ showgrid?: boolean; - /** Determines whether or not a line bounding this axis is drawn. */ + /** + * Determines whether or not a line bounding this axis is drawn. + * @default true + */ showline?: boolean; - /** Determines whether or not the tick labels are drawn. */ + /** + * Determines whether or not the tick labels are drawn. + * @default true + */ showticklabels?: boolean; - /** If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. */ + /** + * If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. + * @default 'all' + */ showtickprefix?: 'all' | 'first' | 'last' | 'none'; - /** Same as `showtickprefix` but for tick suffixes. */ + /** + * Same as `showtickprefix` but for tick suffixes. + * @default 'all' + */ showticksuffix?: 'all' | 'first' | 'last' | 'none'; - /** Sets the format unit of the formatted *theta* values. Has an effect only when `angularaxis.type` is *linear*. */ + /** + * Sets the format unit of the formatted *theta* values. Has an effect only when `angularaxis.type` is *linear*. + * @default 'degrees' + */ thetaunit?: 'radians' | 'degrees'; - /** Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears. */ + /** + * Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears. + * Setting this also sets: tickmode = "linear" + */ tick0?: any; - /** Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. */ + /** + * Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. + * @default 'auto' + */ tickangle?: number | 'auto'; - /** Sets the tick color. */ + /** + * Sets the tick color. + * @default '#444' + */ tickcolor?: Color; /** Sets the tick font. */ tickfont?: Font; /** Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ tickformat?: string; tickformatstops?: TickFormatStops[]; - /** Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*. */ + /** + * Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*. + * @default 1 + * Minimum: 1 + */ ticklabelstep?: number; - /** Sets the tick length (in px). */ + /** + * Sets the tick length (in px). + * @default 5 + * Minimum: 0 + */ ticklen?: number; /** Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). */ tickmode?: 'auto' | 'linear' | 'array'; @@ -7535,104 +13449,235 @@ export interface PolarLayout { ticktext?: Datum[] | TypedArray; /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ tickvals?: Datum[] | TypedArray; - /** Sets the tick width (in px). */ + /** + * Sets the tick width (in px). + * @default 1 + * Minimum: 0 + */ tickwidth?: number; - /** Sets the angular axis type. If *linear*, set `thetaunit` to determine the unit in which axis value are shown. If *category, use `period` to set the number of integer coordinates around polar axis. */ + /** + * Sets the angular axis type. If *linear*, set `thetaunit` to determine the unit in which axis value are shown. If *category, use `period` to set the number of integer coordinates around polar axis. + * @default '-' + */ type?: '-' | 'linear' | 'category'; /** Controls persistence of user-driven changes in axis `rotation`. Defaults to `polar.uirevision`. */ uirevision?: any; - /** A single toggle to hide the axis while preserving interaction like dragging. Default is true when a cheater plot is present on the axis, otherwise false */ + /** + * A single toggle to hide the axis while preserving interaction like dragging. Default is true when a cheater plot is present on the axis, otherwise false + * @default true + */ visible?: boolean; }; - /** Set the background color of the subplot */ + /** + * Set the background color of the subplot + * @default '#fff' + */ bgcolor?: Color; domain?: Domain; - /** Determines if the radial axis grid lines and angular axis line are drawn as *circular* sectors or as *linear* (polygon) sectors. Has an effect only when the angular axis has `type` *category*. Note that `radialaxis.angle` is snapped to the angle of the closest vertex when `gridshape` is *circular* (so that radial axis scale is the same as the data scale). */ + /** + * Determines if the radial axis grid lines and angular axis line are drawn as *circular* sectors or as *linear* (polygon) sectors. Has an effect only when the angular axis has `type` *category*. Note that `radialaxis.angle` is snapped to the angle of the closest vertex when `gridshape` is *circular* (so that radial axis scale is the same as the data scale). + * @default 'circular' + */ gridshape?: 'circular' | 'linear'; - /** Sets the fraction of the radius to cut out of the polar subplot. */ + /** + * Sets the fraction of the radius to cut out of the polar subplot. + * @default 0 + * Range: [0, 1] + */ hole?: number; radialaxis?: { /** Sets the angle (in degrees) from which the radial axis is drawn. Note that by default, radial axis line on the theta=0 line corresponds to a line pointing right (like what mathematicians prefer). Defaults to the first `polar.sector` angle. */ angle?: number | 'auto'; - /** Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided and it has a value for both the lower and upper bound, `autorange` is set to *false*. Using *min* applies autorange only to set the minimum. Using *max* applies autorange only to set the maximum. Using *min reversed* applies autorange only to set the minimum on a reversed axis. Using *max reversed* applies autorange only to set the maximum on a reversed axis. Using *reversed* applies autorange on both ends and reverses the axis direction. */ + /** + * Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided and it has a value for both the lower and upper bound, `autorange` is set to *false*. Using *min* applies autorange only to set the minimum. Using *max* applies autorange only to set the maximum. Using *min reversed* applies autorange only to set the minimum on a reversed axis. Using *max reversed* applies autorange only to set the maximum on a reversed axis. Using *reversed* applies autorange on both ends and reverses the axis direction. + * @default true + */ autorange?: true | false | 'reversed' | 'min reversed' | 'max reversed' | 'min' | 'max'; - autorangeoptions?: AutoRangeOptions; - /** When `tickangle` is set to *auto*, it will be set to the first angle in this array that is large enough to prevent label overlap. */ + autorangeoptions?: _internal.AutoRangeOptions; + /** + * When `tickangle` is set to *auto*, it will be set to the first angle in this array that is large enough to prevent label overlap. + * @default [0,30,90] + */ autotickangles?: any[]; - /** Using *strict* a numeric string in trace data is not converted to a number. Using *convert types* a numeric string in trace data may be treated as a number during automatic axis `type` detection. Defaults to layout.autotypenumbers. */ + /** + * Using *strict* a numeric string in trace data is not converted to a number. Using *convert types* a numeric string in trace data may be treated as a number during automatic axis `type` detection. Defaults to layout.autotypenumbers. + * @default 'convert types' + */ autotypenumbers?: 'convert types' | 'strict'; - /** Sets the calendar system to use for `range` and `tick0` if this is a date axis. This does not set the calendar for interpreting data on this axis, that's specified in the trace or via the global `layout.calendar` */ + /** + * Sets the calendar system to use for `range` and `tick0` if this is a date axis. This does not set the calendar for interpreting data on this axis, that's specified in the trace or via the global `layout.calendar` + * @default 'gregorian' + */ calendar?: Calendar; /** Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`. */ categoryarray?: Datum[] | TypedArray; - /** Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. Set `categoryorder` to *total ascending* or *total descending* if order should be determined by the numerical order of the values. Similarly, the order can be determined by the min, max, sum, mean, geometric mean or median of all the values. */ + /** + * Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. Set `categoryorder` to *total ascending* or *total descending* if order should be determined by the numerical order of the values. Similarly, the order can be determined by the min, max, sum, mean, geometric mean or median of all the values. + * @default 'trace' + */ categoryorder?: 'trace' | 'category ascending' | 'category descending' | 'array' | 'total ascending' | 'total descending' | 'min ascending' | 'min descending' | 'max ascending' | 'max descending' | 'sum ascending' | 'sum descending' | 'mean ascending' | 'mean descending' | 'geometric mean ascending' | 'geometric mean descending' | 'median ascending' | 'median descending'; - /** Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. */ + /** + * Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. + * @default '#444' + */ color?: Color; - /** Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48* */ + /** + * Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48* + * Setting this also sets: tickmode = "linear" + */ dtick?: any; - /** Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from "femto" f (10^-15) to "tera" T (10^12). *SI extended* covers instead the full SI range from "quecto" q (10^-30) to "quetta" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation. */ + /** + * Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from "femto" f (10^-15) to "tera" T (10^12). *SI extended* covers instead the full SI range from "quecto" q (10^-30) to "quetta" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation. + * @default 'B' + */ exponentformat?: 'none' | 'e' | 'E' | 'power' | 'SI' | 'B' | 'SI extended'; - /** Sets the color of the grid lines. */ + /** + * Sets the color of the grid lines. + * @default '#eee' + */ gridcolor?: Color; - /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ griddash?: Dash; - /** Sets the width (in px) of the grid lines. */ + /** + * Sets the width (in px) of the grid lines. + * @default 1 + * Minimum: 0 + */ gridwidth?: number; /** Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ hoverformat?: string; - /** Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. */ + /** + * Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. + * @default false + */ labelalias?: any; - /** Sets the layer on which this axis is displayed. If *above traces*, this axis is displayed above all the subplot's traces If *below traces*, this axis is displayed below all the subplot's traces, but above the grid lines. Useful when used together with scatter-like traces with `cliponaxis` set to *false* to show markers and/or text nodes above this axis. */ + /** + * Sets the layer on which this axis is displayed. If *above traces*, this axis is displayed above all the subplot's traces If *below traces*, this axis is displayed below all the subplot's traces, but above the grid lines. Useful when used together with scatter-like traces with `cliponaxis` set to *false* to show markers and/or text nodes above this axis. + * @default 'above traces' + */ layer?: 'above traces' | 'below traces'; - /** Sets the axis line color. */ + /** + * Sets the axis line color. + * @default '#444' + */ linecolor?: Color; - /** Sets the width (in px) of the axis line. */ + /** + * Sets the width (in px) of the axis line. + * @default 1 + * Minimum: 0 + */ linewidth?: number; - /** Determines the maximum range of this axis. */ + /** + * Determines the maximum range of this axis. + * Setting this also sets: ^autorange = false + */ maxallowed?: any; - /** Determines the minimum range of this axis. */ + /** + * Determines the minimum range of this axis. + * Setting this also sets: ^autorange = false + */ minallowed?: any; - /** Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*. */ + /** + * Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*. + * @default 3 + * Minimum: 0 + */ minexponent?: number; - /** Determines how minor log labels are displayed. If *small digits*, small digits i.e. 2 or 5 are displayed. If *complete*, complete digits are displayed. If *none*, no labels are displayed. */ + /** + * Determines how minor log labels are displayed. If *small digits*, small digits i.e. 2 or 5 are displayed. If *complete*, complete digits are displayed. If *none*, no labels are displayed. + * @default 'small digits' + */ minorloglabels?: 'small digits' | 'complete' | 'none'; - /** Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. */ + /** + * Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. + * @default 0 + * Minimum: 0 + */ nticks?: number; - /** Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears. Leaving either or both elements `null` impacts the default `autorange`. */ + /** + * Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears. Leaving either or both elements `null` impacts the default `autorange`. + * Setting this also sets: autorange = false + */ range?: [any, any]; - /** If *tozero*, the range extends to 0, regardless of the input data If *nonnegative*, the range is non-negative, regardless of the input data. If *normal*, the range is computed in relation to the extrema of the input data (same behavior as for cartesian axes). */ + /** + * If *tozero*, the range extends to 0, regardless of the input data If *nonnegative*, the range is non-negative, regardless of the input data. If *normal*, the range is computed in relation to the extrema of the input data (same behavior as for cartesian axes). + * @default 'tozero' + */ rangemode?: 'tozero' | 'nonnegative' | 'normal'; - /** If "true", even 4-digit integers are separated */ + /** + * If "true", even 4-digit integers are separated + * @default false + */ separatethousands?: boolean; - /** If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. */ + /** + * If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. + * @default 'all' + */ showexponent?: 'all' | 'first' | 'last' | 'none'; - /** Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. */ + /** + * Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. + * @default true + */ showgrid?: boolean; - /** Determines whether or not a line bounding this axis is drawn. */ + /** + * Determines whether or not a line bounding this axis is drawn. + * @default true + */ showline?: boolean; - /** Determines whether or not the tick labels are drawn. */ + /** + * Determines whether or not the tick labels are drawn. + * @default true + */ showticklabels?: boolean; - /** If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. */ + /** + * If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. + * @default 'all' + */ showtickprefix?: 'all' | 'first' | 'last' | 'none'; - /** Same as `showtickprefix` but for tick suffixes. */ + /** + * Same as `showtickprefix` but for tick suffixes. + * @default 'all' + */ showticksuffix?: 'all' | 'first' | 'last' | 'none'; - /** Determines on which side of radial axis line the tick and tick labels appear. */ + /** + * Determines on which side of radial axis line the tick and tick labels appear. + * @default 'clockwise' + */ side?: 'clockwise' | 'counterclockwise'; - /** Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears. */ + /** + * Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears. + * Setting this also sets: tickmode = "linear" + */ tick0?: any; - /** Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. */ + /** + * Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. + * @default 'auto' + */ tickangle?: number | 'auto'; - /** Sets the tick color. */ + /** + * Sets the tick color. + * @default '#444' + */ tickcolor?: Color; /** Sets the tick font. */ tickfont?: Font; /** Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ tickformat?: string; tickformatstops?: TickFormatStops[]; - /** Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*. */ + /** + * Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*. + * @default 1 + * Minimum: 1 + */ ticklabelstep?: number; - /** Sets the tick length (in px). */ + /** + * Sets the tick length (in px). + * @default 5 + * Minimum: 0 + */ ticklen?: number; /** Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). */ tickmode?: 'auto' | 'linear' | 'array'; @@ -7646,17 +13691,30 @@ export interface PolarLayout { ticktext?: Datum[] | TypedArray; /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ tickvals?: Datum[] | TypedArray; - /** Sets the tick width (in px). */ + /** + * Sets the tick width (in px). + * @default 1 + * Minimum: 0 + */ tickwidth?: number; title?: LegendGroupTitle; - /** Sets the axis type. By default, plotly attempts to determined the axis type by looking into the data of the traces that referenced the axis in question. */ + /** + * Sets the axis type. By default, plotly attempts to determined the axis type by looking into the data of the traces that referenced the axis in question. + * @default '-' + */ type?: '-' | 'linear' | 'log' | 'date' | 'category'; /** Controls persistence of user-driven changes in axis `range`, `autorange`, `angle`, and `title` if in `editable: true` configuration. Defaults to `polar.uirevision`. */ uirevision?: any; - /** A single toggle to hide the axis while preserving interaction like dragging. Default is true when a cheater plot is present on the axis, otherwise false */ + /** + * A single toggle to hide the axis while preserving interaction like dragging. Default is true when a cheater plot is present on the axis, otherwise false + * @default true + */ visible?: boolean; }; - /** Sets angular span of this polar subplot with two angles (in degrees). Sector are assumed to be spanned in the counterclockwise direction with *0* corresponding to rightmost limit of the polar subplot. */ + /** + * Sets angular span of this polar subplot with two angles (in degrees). Sector are assumed to be spanned in the counterclockwise direction with *0* corresponding to rightmost limit of the polar subplot. + * @default [0,360] + */ sector?: [number, number]; /** Controls persistence of user-driven changes in axis attributes, if not overridden in the individual axes. Defaults to `layout.uirevision`. */ uirevision?: any; @@ -7664,35 +13722,69 @@ export interface PolarLayout { export interface Scene { annotations?: Array<{ - /** Sets the horizontal alignment of the `text` within the box. Has an effect only if `text` spans two or more lines (i.e. `text` contains one or more
HTML tags) or if an explicit width is set to override the text width. */ + /** + * Sets the horizontal alignment of the `text` within the box. Has an effect only if `text` spans two or more lines (i.e. `text` contains one or more
HTML tags) or if an explicit width is set to override the text width. + * @default 'center' + */ align?: 'left' | 'center' | 'right'; /** Sets the color of the annotation arrow. */ arrowcolor?: Color; - /** Sets the end annotation arrow head style. */ + /** + * Sets the end annotation arrow head style. + * @default 1 + * Range: [0, 8] + */ arrowhead?: number; - /** Sets the annotation arrow head position. */ + /** + * Sets the annotation arrow head position. + * @default 'end' + */ arrowside?: 'end' | 'start' | 'none' | (string & {}); - /** Sets the size of the end annotation arrow head, relative to `arrowwidth`. A value of 1 (default) gives a head about 3x as wide as the line. */ + /** + * Sets the size of the end annotation arrow head, relative to `arrowwidth`. A value of 1 (default) gives a head about 3x as wide as the line. + * @default 1 + * Minimum: 0.3 + */ arrowsize?: number; - /** Sets the width (in px) of annotation arrow line. */ + /** + * Sets the width (in px) of annotation arrow line. + * Minimum: 0.1 + */ arrowwidth?: number; /** Sets the x component of the arrow tail about the arrow head (in pixels). */ ax?: number; /** Sets the y component of the arrow tail about the arrow head (in pixels). */ ay?: number; - /** Sets the background color of the annotation. */ + /** + * Sets the background color of the annotation. + * @default 'rgba(0,0,0,0)' + */ bgcolor?: Color; - /** Sets the color of the border enclosing the annotation `text`. */ + /** + * Sets the color of the border enclosing the annotation `text`. + * @default 'rgba(0,0,0,0)' + */ bordercolor?: Color; - /** Sets the padding (in px) between the `text` and the enclosing border. */ + /** + * Sets the padding (in px) between the `text` and the enclosing border. + * @default 1 + * Minimum: 0 + */ borderpad?: number; - /** Sets the width (in px) of the border enclosing the annotation `text`. */ + /** + * Sets the width (in px) of the border enclosing the annotation `text`. + * @default 1 + * Minimum: 0 + */ borderwidth?: number; /** Determines whether the annotation text box captures mouse move and click events, or allows those events to pass through to data points in the plot that may be behind the annotation. By default `captureevents` is *false* unless `hovertext` is provided. If you use the event `plotly_clickannotation` without `hovertext` you must explicitly enable `captureevents`. */ captureevents?: boolean; /** Sets the annotation text font. */ font?: Font; - /** Sets an explicit height for the text box. null (default) lets the text set the box height. Taller text will be clipped. */ + /** + * Sets an explicit height for the text box. null (default) lets the text set the box height. Taller text will be clipped. + * Minimum: 1 + */ height?: number; hoverlabel?: { /** Sets the background color of the hover label. By default uses the annotation's `bgcolor` made opaque, or white if it was transparent. */ @@ -7706,169 +13798,384 @@ export interface Scene { hovertext?: string; /** When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template. */ name?: string; - /** Sets the opacity of the annotation (text + arrow). */ + /** + * Sets the opacity of the annotation (text + arrow). + * @default 1 + * Range: [0, 1] + */ opacity?: number; - /** Determines whether or not the annotation is drawn with an arrow. If *true*, `text` is placed near the arrow's tail. If *false*, `text` lines up with the `x` and `y` provided. */ + /** + * Determines whether or not the annotation is drawn with an arrow. If *true*, `text` is placed near the arrow's tail. If *false*, `text` lines up with the `x` and `y` provided. + * @default true + */ showarrow?: boolean; - /** Sets a distance, in pixels, to move the end arrowhead away from the position it is pointing at, for example to point at the edge of a marker independent of zoom. Note that this shortens the arrow from the `ax` / `ay` vector, in contrast to `xshift` / `yshift` which moves everything by this amount. */ + /** + * Sets a distance, in pixels, to move the end arrowhead away from the position it is pointing at, for example to point at the edge of a marker independent of zoom. Note that this shortens the arrow from the `ax` / `ay` vector, in contrast to `xshift` / `yshift` which moves everything by this amount. + * @default 0 + * Minimum: 0 + */ standoff?: number; - /** Sets the start annotation arrow head style. */ + /** + * Sets the start annotation arrow head style. + * @default 1 + * Range: [0, 8] + */ startarrowhead?: number; - /** Sets the size of the start annotation arrow head, relative to `arrowwidth`. A value of 1 (default) gives a head about 3x as wide as the line. */ + /** + * Sets the size of the start annotation arrow head, relative to `arrowwidth`. A value of 1 (default) gives a head about 3x as wide as the line. + * @default 1 + * Minimum: 0.3 + */ startarrowsize?: number; - /** Sets a distance, in pixels, to move the start arrowhead away from the position it is pointing at, for example to point at the edge of a marker independent of zoom. Note that this shortens the arrow from the `ax` / `ay` vector, in contrast to `xshift` / `yshift` which moves everything by this amount. */ + /** + * Sets a distance, in pixels, to move the start arrowhead away from the position it is pointing at, for example to point at the edge of a marker independent of zoom. Note that this shortens the arrow from the `ax` / `ay` vector, in contrast to `xshift` / `yshift` which moves everything by this amount. + * @default 0 + * Minimum: 0 + */ startstandoff?: number; /** Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`. */ templateitemname?: string; /** Sets the text associated with this annotation. Plotly uses a subset of HTML tags to do things like newline (`
`), bold (``), italics (``), hyperlinks (`
`). Tags ``, ``, ``, ``, ``, and `` are also supported. */ text?: string; - /** Sets the angle at which the `text` is drawn with respect to the horizontal. */ + /** + * Sets the angle at which the `text` is drawn with respect to the horizontal. + * @default 0 + */ textangle?: number | 'auto'; - /** Sets the vertical alignment of the `text` within the box. Has an effect only if an explicit height is set to override the text height. */ + /** + * Sets the vertical alignment of the `text` within the box. Has an effect only if an explicit height is set to override the text height. + * @default 'middle' + */ valign?: 'top' | 'middle' | 'bottom'; - /** Determines whether or not this annotation is visible. */ + /** + * Determines whether or not this annotation is visible. + * @default true + */ visible?: boolean; - /** Sets an explicit width for the text box. null (default) lets the text set the box width. Wider text will be clipped. There is no automatic wrapping; use
to start a new line. */ + /** + * Sets an explicit width for the text box. null (default) lets the text set the box width. Wider text will be clipped. There is no automatic wrapping; use
to start a new line. + * Minimum: 1 + */ width?: number; /** Sets the annotation's x position. */ x?: any; - /** Sets the text box's horizontal position anchor This anchor binds the `x` position to the *left*, *center* or *right* of the annotation. For example, if `x` is set to 1, `xref` to *paper* and `xanchor` to *right* then the right-most portion of the annotation lines up with the right-most edge of the plotting area. If *auto*, the anchor is equivalent to *center* for data-referenced annotations or if there is an arrow, whereas for paper-referenced with no arrow, the anchor picked corresponds to the closest side. */ + /** + * Sets the text box's horizontal position anchor This anchor binds the `x` position to the *left*, *center* or *right* of the annotation. For example, if `x` is set to 1, `xref` to *paper* and `xanchor` to *right* then the right-most portion of the annotation lines up with the right-most edge of the plotting area. If *auto*, the anchor is equivalent to *center* for data-referenced annotations or if there is an arrow, whereas for paper-referenced with no arrow, the anchor picked corresponds to the closest side. + * @default 'auto' + */ xanchor?: 'auto' | 'left' | 'center' | 'right'; - /** Shifts the position of the whole annotation and arrow to the right (positive) or left (negative) by this many pixels. */ + /** + * Shifts the position of the whole annotation and arrow to the right (positive) or left (negative) by this many pixels. + * @default 0 + */ xshift?: number; /** Sets the annotation's y position. */ y?: any; - /** Sets the text box's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the annotation. For example, if `y` is set to 1, `yref` to *paper* and `yanchor` to *top* then the top-most portion of the annotation lines up with the top-most edge of the plotting area. If *auto*, the anchor is equivalent to *middle* for data-referenced annotations or if there is an arrow, whereas for paper-referenced with no arrow, the anchor picked corresponds to the closest side. */ + /** + * Sets the text box's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the annotation. For example, if `y` is set to 1, `yref` to *paper* and `yanchor` to *top* then the top-most portion of the annotation lines up with the top-most edge of the plotting area. If *auto*, the anchor is equivalent to *middle* for data-referenced annotations or if there is an arrow, whereas for paper-referenced with no arrow, the anchor picked corresponds to the closest side. + * @default 'auto' + */ yanchor?: 'auto' | 'top' | 'middle' | 'bottom'; - /** Shifts the position of the whole annotation and arrow up (positive) or down (negative) by this many pixels. */ + /** + * Shifts the position of the whole annotation and arrow up (positive) or down (negative) by this many pixels. + * @default 0 + */ yshift?: number; /** Sets the annotation's z position. */ z?: any; }>; - /** If *cube*, this scene's axes are drawn as a cube, regardless of the axes' ranges. If *data*, this scene's axes are drawn in proportion with the axes' ranges. If *manual*, this scene's axes are drawn in proportion with the input of *aspectratio* (the default behavior if *aspectratio* is provided). If *auto*, this scene's axes are drawn using the results of *data* except when one axis is more than four times the size of the two others, where in that case the results of *cube* are used. */ + /** + * If *cube*, this scene's axes are drawn as a cube, regardless of the axes' ranges. If *data*, this scene's axes are drawn in proportion with the axes' ranges. If *manual*, this scene's axes are drawn in proportion with the input of *aspectratio* (the default behavior if *aspectratio* is provided). If *auto*, this scene's axes are drawn using the results of *data* except when one axis is more than four times the size of the two others, where in that case the results of *cube* are used. + * @default 'auto' + */ aspectmode?: 'auto' | 'cube' | 'data' | 'manual'; - /** Sets this scene's axis aspectratio. */ + /** + * Sets this scene's axis aspectratio. + * Setting this also sets: aspectmode = "manual", role = "object" + */ aspectratio?: { + /** + * Minimum: 0 + * Setting this also sets: ^aspectmode = "manual" + */ x?: number; + /** + * Minimum: 0 + * Setting this also sets: ^aspectmode = "manual" + */ y?: number; + /** + * Minimum: 0 + * Setting this also sets: ^aspectmode = "manual" + */ z?: number; }; + /** + * @default 'rgba(0,0,0,0)' + */ bgcolor?: Color; camera?: { /** Sets the (x,y,z) components of the 'center' camera vector This vector determines the translation (x,y,z) space about the center of this scene. By default, there is no such translation. */ center?: { + /** + * @default 0 + */ x?: number; + /** + * @default 0 + */ y?: number; + /** + * @default 0 + */ z?: number; }; /** Sets the (x,y,z) components of the 'eye' camera vector. This vector determines the view point about the origin of this scene. */ eye?: { + /** + * @default 1.25 + */ x?: number; + /** + * @default 1.25 + */ y?: number; + /** + * @default 1.25 + */ z?: number; }; projection?: { - /** Sets the projection type. The projection type could be either *perspective* or *orthographic*. The default is *perspective*. */ + /** + * Sets the projection type. The projection type could be either *perspective* or *orthographic*. The default is *perspective*. + * @default 'perspective' + */ type?: 'perspective' | 'orthographic'; }; /** Sets the (x,y,z) components of the 'up' camera vector. This vector determines the up direction of this scene with respect to the page. The default is *{x: 0, y: 0, z: 1}* which means that the z axis points up. */ up?: { + /** + * @default 0 + */ x?: number; + /** + * @default 0 + */ y?: number; + /** + * @default 1 + */ z?: number; }; }; domain?: Domain; /** Determines the mode of drag interactions for this scene. */ dragmode?: 'orbit' | 'turntable' | 'zoom' | 'pan' | false; - /** Determines the mode of hover interactions for this scene. */ + /** + * Determines the mode of hover interactions for this scene. + * @default 'closest' + */ hovermode?: 'closest' | false; /** Controls persistence of user-driven changes in camera attributes. Defaults to `layout.uirevision`. */ uirevision?: any; xaxis?: { - /** Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided and it has a value for both the lower and upper bound, `autorange` is set to *false*. Using *min* applies autorange only to set the minimum. Using *max* applies autorange only to set the maximum. Using *min reversed* applies autorange only to set the minimum on a reversed axis. Using *max reversed* applies autorange only to set the maximum on a reversed axis. Using *reversed* applies autorange on both ends and reverses the axis direction. */ + /** + * Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided and it has a value for both the lower and upper bound, `autorange` is set to *false*. Using *min* applies autorange only to set the minimum. Using *max* applies autorange only to set the maximum. Using *min reversed* applies autorange only to set the minimum on a reversed axis. Using *max reversed* applies autorange only to set the maximum on a reversed axis. Using *reversed* applies autorange on both ends and reverses the axis direction. + * @default true + */ autorange?: true | false | 'reversed' | 'min reversed' | 'max reversed' | 'min' | 'max'; - autorangeoptions?: AutoRangeOptions; - /** Using *strict* a numeric string in trace data is not converted to a number. Using *convert types* a numeric string in trace data may be treated as a number during automatic axis `type` detection. Defaults to layout.autotypenumbers. */ + autorangeoptions?: _internal.AutoRangeOptions; + /** + * Using *strict* a numeric string in trace data is not converted to a number. Using *convert types* a numeric string in trace data may be treated as a number during automatic axis `type` detection. Defaults to layout.autotypenumbers. + * @default 'convert types' + */ autotypenumbers?: 'convert types' | 'strict'; - /** Sets the background color of this axis' wall. */ + /** + * Sets the background color of this axis' wall. + * @default 'rgba(204, 204, 204, 0.5)' + */ backgroundcolor?: Color; - /** Sets the calendar system to use for `range` and `tick0` if this is a date axis. This does not set the calendar for interpreting data on this axis, that's specified in the trace or via the global `layout.calendar` */ + /** + * Sets the calendar system to use for `range` and `tick0` if this is a date axis. This does not set the calendar for interpreting data on this axis, that's specified in the trace or via the global `layout.calendar` + * @default 'gregorian' + */ calendar?: Calendar; /** Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`. */ categoryarray?: Datum[] | TypedArray; - /** Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. Set `categoryorder` to *total ascending* or *total descending* if order should be determined by the numerical order of the values. Similarly, the order can be determined by the min, max, sum, mean, geometric mean or median of all the values. */ + /** + * Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. Set `categoryorder` to *total ascending* or *total descending* if order should be determined by the numerical order of the values. Similarly, the order can be determined by the min, max, sum, mean, geometric mean or median of all the values. + * @default 'trace' + */ categoryorder?: 'trace' | 'category ascending' | 'category descending' | 'array' | 'total ascending' | 'total descending' | 'min ascending' | 'min descending' | 'max ascending' | 'max descending' | 'sum ascending' | 'sum descending' | 'mean ascending' | 'mean descending' | 'geometric mean ascending' | 'geometric mean descending' | 'median ascending' | 'median descending'; - /** Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. */ + /** + * Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. + * @default '#444' + */ color?: Color; - /** Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48* */ + /** + * Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48* + * Setting this also sets: tickmode = "linear" + */ dtick?: any; - /** Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from "femto" f (10^-15) to "tera" T (10^12). *SI extended* covers instead the full SI range from "quecto" q (10^-30) to "quetta" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation. */ + /** + * Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from "femto" f (10^-15) to "tera" T (10^12). *SI extended* covers instead the full SI range from "quecto" q (10^-30) to "quetta" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation. + * @default 'B' + */ exponentformat?: 'none' | 'e' | 'E' | 'power' | 'SI' | 'B' | 'SI extended'; - /** Sets the color of the grid lines. */ + /** + * Sets the color of the grid lines. + * @default 'rgb(204, 204, 204)' + */ gridcolor?: Color; - /** Sets the width (in px) of the grid lines. */ + /** + * Sets the width (in px) of the grid lines. + * @default 1 + * Minimum: 0 + */ gridwidth?: number; /** Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ hoverformat?: string; - /** Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. */ + /** + * Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. + * @default false + */ labelalias?: any; - /** Sets the axis line color. */ + /** + * Sets the axis line color. + * @default '#444' + */ linecolor?: Color; - /** Sets the width (in px) of the axis line. */ + /** + * Sets the width (in px) of the axis line. + * @default 1 + * Minimum: 0 + */ linewidth?: number; - /** Determines the maximum range of this axis. */ + /** + * Determines the maximum range of this axis. + * Setting this also sets: ^autorange = false + */ maxallowed?: any; - /** Determines the minimum range of this axis. */ + /** + * Determines the minimum range of this axis. + * Setting this also sets: ^autorange = false + */ minallowed?: any; - /** Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*. */ + /** + * Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*. + * @default 3 + * Minimum: 0 + */ minexponent?: number; - /** Determines if the axis lines or/and ticks are mirrored to the opposite side of the plotting area. If *true*, the axis lines are mirrored. If *ticks*, the axis lines and ticks are mirrored. If *false*, mirroring is disable. If *all*, axis lines are mirrored on all shared-axes subplots. If *allticks*, axis lines and ticks are mirrored on all shared-axes subplots. */ + /** + * Determines if the axis lines or/and ticks are mirrored to the opposite side of the plotting area. If *true*, the axis lines are mirrored. If *ticks*, the axis lines and ticks are mirrored. If *false*, mirroring is disable. If *all*, axis lines are mirrored on all shared-axes subplots. If *allticks*, axis lines and ticks are mirrored on all shared-axes subplots. + * @default false + */ mirror?: true | 'ticks' | false | 'all' | 'allticks'; - /** Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. */ + /** + * Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. + * @default 0 + * Minimum: 0 + */ nticks?: number; - /** Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears. Leaving either or both elements `null` impacts the default `autorange`. */ + /** + * Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears. Leaving either or both elements `null` impacts the default `autorange`. + * Setting this also sets: autorange = false + */ range?: [any, any]; - /** If *normal*, the range is computed in relation to the extrema of the input data. If *tozero*, the range extends to 0, regardless of the input data If *nonnegative*, the range is non-negative, regardless of the input data. Applies only to linear axes. */ + /** + * If *normal*, the range is computed in relation to the extrema of the input data. If *tozero*, the range extends to 0, regardless of the input data If *nonnegative*, the range is non-negative, regardless of the input data. Applies only to linear axes. + * @default 'normal' + */ rangemode?: 'normal' | 'tozero' | 'nonnegative'; - /** If "true", even 4-digit integers are separated */ + /** + * If "true", even 4-digit integers are separated + * @default false + */ separatethousands?: boolean; - /** Sets whether or not this axis is labeled */ + /** + * Sets whether or not this axis is labeled + * @default true + */ showaxeslabels?: boolean; - /** Sets whether or not this axis' wall has a background color. */ + /** + * Sets whether or not this axis' wall has a background color. + * @default false + */ showbackground?: boolean; - /** If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. */ + /** + * If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. + * @default 'all' + */ showexponent?: 'all' | 'first' | 'last' | 'none'; /** Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. */ showgrid?: boolean; - /** Determines whether or not a line bounding this axis is drawn. */ + /** + * Determines whether or not a line bounding this axis is drawn. + * @default false + */ showline?: boolean; - /** Sets whether or not spikes starting from data points to this axis' wall are shown on hover. */ + /** + * Sets whether or not spikes starting from data points to this axis' wall are shown on hover. + * @default true + */ showspikes?: boolean; - /** Determines whether or not the tick labels are drawn. */ + /** + * Determines whether or not the tick labels are drawn. + * @default true + */ showticklabels?: boolean; - /** If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. */ + /** + * If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. + * @default 'all' + */ showtickprefix?: 'all' | 'first' | 'last' | 'none'; - /** Same as `showtickprefix` but for tick suffixes. */ + /** + * Same as `showtickprefix` but for tick suffixes. + * @default 'all' + */ showticksuffix?: 'all' | 'first' | 'last' | 'none'; - /** Sets the color of the spikes. */ + /** + * Sets the color of the spikes. + * @default '#444' + */ spikecolor?: Color; - /** Sets whether or not spikes extending from the projection data points to this axis' wall boundaries are shown on hover. */ + /** + * Sets whether or not spikes extending from the projection data points to this axis' wall boundaries are shown on hover. + * @default true + */ spikesides?: boolean; - /** Sets the thickness (in px) of the spikes. */ + /** + * Sets the thickness (in px) of the spikes. + * @default 2 + * Minimum: 0 + */ spikethickness?: number; - /** Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears. */ + /** + * Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears. + * Setting this also sets: tickmode = "linear" + */ tick0?: any; - /** Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. */ + /** + * Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. + * @default 'auto' + */ tickangle?: number | 'auto'; - /** Sets the tick color. */ + /** + * Sets the tick color. + * @default '#444' + */ tickcolor?: Color; /** Sets the tick font. */ tickfont?: Font; /** Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ tickformat?: string; tickformatstops?: TickFormatStops[]; - /** Sets the tick length (in px). */ + /** + * Sets the tick length (in px). + * @default 5 + * Minimum: 0 + */ ticklen?: number; /** Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). */ tickmode?: 'auto' | 'linear' | 'array'; @@ -7882,104 +14189,231 @@ export interface Scene { ticktext?: Datum[] | TypedArray; /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ tickvals?: Datum[] | TypedArray; - /** Sets the tick width (in px). */ + /** + * Sets the tick width (in px). + * @default 1 + * Minimum: 0 + */ tickwidth?: number; title?: LegendGroupTitle; - /** Sets the axis type. By default, plotly attempts to determined the axis type by looking into the data of the traces that referenced the axis in question. */ + /** + * Sets the axis type. By default, plotly attempts to determined the axis type by looking into the data of the traces that referenced the axis in question. + * @default '-' + */ type?: '-' | 'linear' | 'log' | 'date' | 'category'; /** A single toggle to hide the axis while preserving interaction like dragging. Default is true when a cheater plot is present on the axis, otherwise false */ visible?: boolean; /** Determines whether or not a line is drawn at along the 0 value of this axis. If *true*, the zero line is drawn on top of the grid lines. */ zeroline?: boolean; - /** Sets the line color of the zero line. */ + /** + * Sets the line color of the zero line. + * @default '#444' + */ zerolinecolor?: Color; - /** Sets the width (in px) of the zero line. */ + /** + * Sets the width (in px) of the zero line. + * @default 1 + */ zerolinewidth?: number; }; yaxis?: { - /** Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided and it has a value for both the lower and upper bound, `autorange` is set to *false*. Using *min* applies autorange only to set the minimum. Using *max* applies autorange only to set the maximum. Using *min reversed* applies autorange only to set the minimum on a reversed axis. Using *max reversed* applies autorange only to set the maximum on a reversed axis. Using *reversed* applies autorange on both ends and reverses the axis direction. */ + /** + * Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided and it has a value for both the lower and upper bound, `autorange` is set to *false*. Using *min* applies autorange only to set the minimum. Using *max* applies autorange only to set the maximum. Using *min reversed* applies autorange only to set the minimum on a reversed axis. Using *max reversed* applies autorange only to set the maximum on a reversed axis. Using *reversed* applies autorange on both ends and reverses the axis direction. + * @default true + */ autorange?: true | false | 'reversed' | 'min reversed' | 'max reversed' | 'min' | 'max'; - autorangeoptions?: AutoRangeOptions; - /** Using *strict* a numeric string in trace data is not converted to a number. Using *convert types* a numeric string in trace data may be treated as a number during automatic axis `type` detection. Defaults to layout.autotypenumbers. */ + autorangeoptions?: _internal.AutoRangeOptions; + /** + * Using *strict* a numeric string in trace data is not converted to a number. Using *convert types* a numeric string in trace data may be treated as a number during automatic axis `type` detection. Defaults to layout.autotypenumbers. + * @default 'convert types' + */ autotypenumbers?: 'convert types' | 'strict'; - /** Sets the background color of this axis' wall. */ + /** + * Sets the background color of this axis' wall. + * @default 'rgba(204, 204, 204, 0.5)' + */ backgroundcolor?: Color; - /** Sets the calendar system to use for `range` and `tick0` if this is a date axis. This does not set the calendar for interpreting data on this axis, that's specified in the trace or via the global `layout.calendar` */ + /** + * Sets the calendar system to use for `range` and `tick0` if this is a date axis. This does not set the calendar for interpreting data on this axis, that's specified in the trace or via the global `layout.calendar` + * @default 'gregorian' + */ calendar?: Calendar; /** Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`. */ categoryarray?: Datum[] | TypedArray; - /** Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. Set `categoryorder` to *total ascending* or *total descending* if order should be determined by the numerical order of the values. Similarly, the order can be determined by the min, max, sum, mean, geometric mean or median of all the values. */ + /** + * Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. Set `categoryorder` to *total ascending* or *total descending* if order should be determined by the numerical order of the values. Similarly, the order can be determined by the min, max, sum, mean, geometric mean or median of all the values. + * @default 'trace' + */ categoryorder?: 'trace' | 'category ascending' | 'category descending' | 'array' | 'total ascending' | 'total descending' | 'min ascending' | 'min descending' | 'max ascending' | 'max descending' | 'sum ascending' | 'sum descending' | 'mean ascending' | 'mean descending' | 'geometric mean ascending' | 'geometric mean descending' | 'median ascending' | 'median descending'; - /** Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. */ + /** + * Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. + * @default '#444' + */ color?: Color; - /** Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48* */ + /** + * Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48* + * Setting this also sets: tickmode = "linear" + */ dtick?: any; - /** Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from "femto" f (10^-15) to "tera" T (10^12). *SI extended* covers instead the full SI range from "quecto" q (10^-30) to "quetta" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation. */ + /** + * Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from "femto" f (10^-15) to "tera" T (10^12). *SI extended* covers instead the full SI range from "quecto" q (10^-30) to "quetta" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation. + * @default 'B' + */ exponentformat?: 'none' | 'e' | 'E' | 'power' | 'SI' | 'B' | 'SI extended'; - /** Sets the color of the grid lines. */ + /** + * Sets the color of the grid lines. + * @default 'rgb(204, 204, 204)' + */ gridcolor?: Color; - /** Sets the width (in px) of the grid lines. */ + /** + * Sets the width (in px) of the grid lines. + * @default 1 + * Minimum: 0 + */ gridwidth?: number; /** Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ hoverformat?: string; - /** Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. */ + /** + * Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. + * @default false + */ labelalias?: any; - /** Sets the axis line color. */ + /** + * Sets the axis line color. + * @default '#444' + */ linecolor?: Color; - /** Sets the width (in px) of the axis line. */ + /** + * Sets the width (in px) of the axis line. + * @default 1 + * Minimum: 0 + */ linewidth?: number; - /** Determines the maximum range of this axis. */ + /** + * Determines the maximum range of this axis. + * Setting this also sets: ^autorange = false + */ maxallowed?: any; - /** Determines the minimum range of this axis. */ + /** + * Determines the minimum range of this axis. + * Setting this also sets: ^autorange = false + */ minallowed?: any; - /** Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*. */ + /** + * Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*. + * @default 3 + * Minimum: 0 + */ minexponent?: number; - /** Determines if the axis lines or/and ticks are mirrored to the opposite side of the plotting area. If *true*, the axis lines are mirrored. If *ticks*, the axis lines and ticks are mirrored. If *false*, mirroring is disable. If *all*, axis lines are mirrored on all shared-axes subplots. If *allticks*, axis lines and ticks are mirrored on all shared-axes subplots. */ + /** + * Determines if the axis lines or/and ticks are mirrored to the opposite side of the plotting area. If *true*, the axis lines are mirrored. If *ticks*, the axis lines and ticks are mirrored. If *false*, mirroring is disable. If *all*, axis lines are mirrored on all shared-axes subplots. If *allticks*, axis lines and ticks are mirrored on all shared-axes subplots. + * @default false + */ mirror?: true | 'ticks' | false | 'all' | 'allticks'; - /** Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. */ + /** + * Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. + * @default 0 + * Minimum: 0 + */ nticks?: number; - /** Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears. Leaving either or both elements `null` impacts the default `autorange`. */ + /** + * Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears. Leaving either or both elements `null` impacts the default `autorange`. + * Setting this also sets: autorange = false + */ range?: [any, any]; - /** If *normal*, the range is computed in relation to the extrema of the input data. If *tozero*, the range extends to 0, regardless of the input data If *nonnegative*, the range is non-negative, regardless of the input data. Applies only to linear axes. */ + /** + * If *normal*, the range is computed in relation to the extrema of the input data. If *tozero*, the range extends to 0, regardless of the input data If *nonnegative*, the range is non-negative, regardless of the input data. Applies only to linear axes. + * @default 'normal' + */ rangemode?: 'normal' | 'tozero' | 'nonnegative'; - /** If "true", even 4-digit integers are separated */ + /** + * If "true", even 4-digit integers are separated + * @default false + */ separatethousands?: boolean; - /** Sets whether or not this axis is labeled */ + /** + * Sets whether or not this axis is labeled + * @default true + */ showaxeslabels?: boolean; - /** Sets whether or not this axis' wall has a background color. */ + /** + * Sets whether or not this axis' wall has a background color. + * @default false + */ showbackground?: boolean; - /** If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. */ + /** + * If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. + * @default 'all' + */ showexponent?: 'all' | 'first' | 'last' | 'none'; /** Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. */ showgrid?: boolean; - /** Determines whether or not a line bounding this axis is drawn. */ + /** + * Determines whether or not a line bounding this axis is drawn. + * @default false + */ showline?: boolean; - /** Sets whether or not spikes starting from data points to this axis' wall are shown on hover. */ + /** + * Sets whether or not spikes starting from data points to this axis' wall are shown on hover. + * @default true + */ showspikes?: boolean; - /** Determines whether or not the tick labels are drawn. */ + /** + * Determines whether or not the tick labels are drawn. + * @default true + */ showticklabels?: boolean; - /** If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. */ + /** + * If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. + * @default 'all' + */ showtickprefix?: 'all' | 'first' | 'last' | 'none'; - /** Same as `showtickprefix` but for tick suffixes. */ + /** + * Same as `showtickprefix` but for tick suffixes. + * @default 'all' + */ showticksuffix?: 'all' | 'first' | 'last' | 'none'; - /** Sets the color of the spikes. */ + /** + * Sets the color of the spikes. + * @default '#444' + */ spikecolor?: Color; - /** Sets whether or not spikes extending from the projection data points to this axis' wall boundaries are shown on hover. */ + /** + * Sets whether or not spikes extending from the projection data points to this axis' wall boundaries are shown on hover. + * @default true + */ spikesides?: boolean; - /** Sets the thickness (in px) of the spikes. */ + /** + * Sets the thickness (in px) of the spikes. + * @default 2 + * Minimum: 0 + */ spikethickness?: number; - /** Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears. */ + /** + * Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears. + * Setting this also sets: tickmode = "linear" + */ tick0?: any; - /** Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. */ + /** + * Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. + * @default 'auto' + */ tickangle?: number | 'auto'; - /** Sets the tick color. */ + /** + * Sets the tick color. + * @default '#444' + */ tickcolor?: Color; /** Sets the tick font. */ tickfont?: Font; /** Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ tickformat?: string; tickformatstops?: TickFormatStops[]; - /** Sets the tick length (in px). */ + /** + * Sets the tick length (in px). + * @default 5 + * Minimum: 0 + */ ticklen?: number; /** Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). */ tickmode?: 'auto' | 'linear' | 'array'; @@ -7993,104 +14427,231 @@ export interface Scene { ticktext?: Datum[] | TypedArray; /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ tickvals?: Datum[] | TypedArray; - /** Sets the tick width (in px). */ + /** + * Sets the tick width (in px). + * @default 1 + * Minimum: 0 + */ tickwidth?: number; title?: LegendGroupTitle; - /** Sets the axis type. By default, plotly attempts to determined the axis type by looking into the data of the traces that referenced the axis in question. */ + /** + * Sets the axis type. By default, plotly attempts to determined the axis type by looking into the data of the traces that referenced the axis in question. + * @default '-' + */ type?: '-' | 'linear' | 'log' | 'date' | 'category'; /** A single toggle to hide the axis while preserving interaction like dragging. Default is true when a cheater plot is present on the axis, otherwise false */ visible?: boolean; /** Determines whether or not a line is drawn at along the 0 value of this axis. If *true*, the zero line is drawn on top of the grid lines. */ zeroline?: boolean; - /** Sets the line color of the zero line. */ + /** + * Sets the line color of the zero line. + * @default '#444' + */ zerolinecolor?: Color; - /** Sets the width (in px) of the zero line. */ + /** + * Sets the width (in px) of the zero line. + * @default 1 + */ zerolinewidth?: number; }; zaxis?: { - /** Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided and it has a value for both the lower and upper bound, `autorange` is set to *false*. Using *min* applies autorange only to set the minimum. Using *max* applies autorange only to set the maximum. Using *min reversed* applies autorange only to set the minimum on a reversed axis. Using *max reversed* applies autorange only to set the maximum on a reversed axis. Using *reversed* applies autorange on both ends and reverses the axis direction. */ + /** + * Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided and it has a value for both the lower and upper bound, `autorange` is set to *false*. Using *min* applies autorange only to set the minimum. Using *max* applies autorange only to set the maximum. Using *min reversed* applies autorange only to set the minimum on a reversed axis. Using *max reversed* applies autorange only to set the maximum on a reversed axis. Using *reversed* applies autorange on both ends and reverses the axis direction. + * @default true + */ autorange?: true | false | 'reversed' | 'min reversed' | 'max reversed' | 'min' | 'max'; - autorangeoptions?: AutoRangeOptions; - /** Using *strict* a numeric string in trace data is not converted to a number. Using *convert types* a numeric string in trace data may be treated as a number during automatic axis `type` detection. Defaults to layout.autotypenumbers. */ + autorangeoptions?: _internal.AutoRangeOptions; + /** + * Using *strict* a numeric string in trace data is not converted to a number. Using *convert types* a numeric string in trace data may be treated as a number during automatic axis `type` detection. Defaults to layout.autotypenumbers. + * @default 'convert types' + */ autotypenumbers?: 'convert types' | 'strict'; - /** Sets the background color of this axis' wall. */ + /** + * Sets the background color of this axis' wall. + * @default 'rgba(204, 204, 204, 0.5)' + */ backgroundcolor?: Color; - /** Sets the calendar system to use for `range` and `tick0` if this is a date axis. This does not set the calendar for interpreting data on this axis, that's specified in the trace or via the global `layout.calendar` */ + /** + * Sets the calendar system to use for `range` and `tick0` if this is a date axis. This does not set the calendar for interpreting data on this axis, that's specified in the trace or via the global `layout.calendar` + * @default 'gregorian' + */ calendar?: Calendar; /** Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`. */ categoryarray?: Datum[] | TypedArray; - /** Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. Set `categoryorder` to *total ascending* or *total descending* if order should be determined by the numerical order of the values. Similarly, the order can be determined by the min, max, sum, mean, geometric mean or median of all the values. */ + /** + * Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. Set `categoryorder` to *total ascending* or *total descending* if order should be determined by the numerical order of the values. Similarly, the order can be determined by the min, max, sum, mean, geometric mean or median of all the values. + * @default 'trace' + */ categoryorder?: 'trace' | 'category ascending' | 'category descending' | 'array' | 'total ascending' | 'total descending' | 'min ascending' | 'min descending' | 'max ascending' | 'max descending' | 'sum ascending' | 'sum descending' | 'mean ascending' | 'mean descending' | 'geometric mean ascending' | 'geometric mean descending' | 'median ascending' | 'median descending'; - /** Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. */ + /** + * Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. + * @default '#444' + */ color?: Color; - /** Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48* */ + /** + * Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48* + * Setting this also sets: tickmode = "linear" + */ dtick?: any; - /** Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from "femto" f (10^-15) to "tera" T (10^12). *SI extended* covers instead the full SI range from "quecto" q (10^-30) to "quetta" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation. */ + /** + * Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from "femto" f (10^-15) to "tera" T (10^12). *SI extended* covers instead the full SI range from "quecto" q (10^-30) to "quetta" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation. + * @default 'B' + */ exponentformat?: 'none' | 'e' | 'E' | 'power' | 'SI' | 'B' | 'SI extended'; - /** Sets the color of the grid lines. */ + /** + * Sets the color of the grid lines. + * @default 'rgb(204, 204, 204)' + */ gridcolor?: Color; - /** Sets the width (in px) of the grid lines. */ + /** + * Sets the width (in px) of the grid lines. + * @default 1 + * Minimum: 0 + */ gridwidth?: number; /** Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ hoverformat?: string; - /** Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. */ + /** + * Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. + * @default false + */ labelalias?: any; - /** Sets the axis line color. */ + /** + * Sets the axis line color. + * @default '#444' + */ linecolor?: Color; - /** Sets the width (in px) of the axis line. */ + /** + * Sets the width (in px) of the axis line. + * @default 1 + * Minimum: 0 + */ linewidth?: number; - /** Determines the maximum range of this axis. */ + /** + * Determines the maximum range of this axis. + * Setting this also sets: ^autorange = false + */ maxallowed?: any; - /** Determines the minimum range of this axis. */ + /** + * Determines the minimum range of this axis. + * Setting this also sets: ^autorange = false + */ minallowed?: any; - /** Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*. */ + /** + * Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*. + * @default 3 + * Minimum: 0 + */ minexponent?: number; - /** Determines if the axis lines or/and ticks are mirrored to the opposite side of the plotting area. If *true*, the axis lines are mirrored. If *ticks*, the axis lines and ticks are mirrored. If *false*, mirroring is disable. If *all*, axis lines are mirrored on all shared-axes subplots. If *allticks*, axis lines and ticks are mirrored on all shared-axes subplots. */ + /** + * Determines if the axis lines or/and ticks are mirrored to the opposite side of the plotting area. If *true*, the axis lines are mirrored. If *ticks*, the axis lines and ticks are mirrored. If *false*, mirroring is disable. If *all*, axis lines are mirrored on all shared-axes subplots. If *allticks*, axis lines and ticks are mirrored on all shared-axes subplots. + * @default false + */ mirror?: true | 'ticks' | false | 'all' | 'allticks'; - /** Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. */ + /** + * Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. + * @default 0 + * Minimum: 0 + */ nticks?: number; - /** Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears. Leaving either or both elements `null` impacts the default `autorange`. */ + /** + * Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears. Leaving either or both elements `null` impacts the default `autorange`. + * Setting this also sets: autorange = false + */ range?: [any, any]; - /** If *normal*, the range is computed in relation to the extrema of the input data. If *tozero*, the range extends to 0, regardless of the input data If *nonnegative*, the range is non-negative, regardless of the input data. Applies only to linear axes. */ + /** + * If *normal*, the range is computed in relation to the extrema of the input data. If *tozero*, the range extends to 0, regardless of the input data If *nonnegative*, the range is non-negative, regardless of the input data. Applies only to linear axes. + * @default 'normal' + */ rangemode?: 'normal' | 'tozero' | 'nonnegative'; - /** If "true", even 4-digit integers are separated */ + /** + * If "true", even 4-digit integers are separated + * @default false + */ separatethousands?: boolean; - /** Sets whether or not this axis is labeled */ + /** + * Sets whether or not this axis is labeled + * @default true + */ showaxeslabels?: boolean; - /** Sets whether or not this axis' wall has a background color. */ + /** + * Sets whether or not this axis' wall has a background color. + * @default false + */ showbackground?: boolean; - /** If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. */ + /** + * If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. + * @default 'all' + */ showexponent?: 'all' | 'first' | 'last' | 'none'; /** Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. */ showgrid?: boolean; - /** Determines whether or not a line bounding this axis is drawn. */ + /** + * Determines whether or not a line bounding this axis is drawn. + * @default false + */ showline?: boolean; - /** Sets whether or not spikes starting from data points to this axis' wall are shown on hover. */ + /** + * Sets whether or not spikes starting from data points to this axis' wall are shown on hover. + * @default true + */ showspikes?: boolean; - /** Determines whether or not the tick labels are drawn. */ + /** + * Determines whether or not the tick labels are drawn. + * @default true + */ showticklabels?: boolean; - /** If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. */ + /** + * If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. + * @default 'all' + */ showtickprefix?: 'all' | 'first' | 'last' | 'none'; - /** Same as `showtickprefix` but for tick suffixes. */ + /** + * Same as `showtickprefix` but for tick suffixes. + * @default 'all' + */ showticksuffix?: 'all' | 'first' | 'last' | 'none'; - /** Sets the color of the spikes. */ + /** + * Sets the color of the spikes. + * @default '#444' + */ spikecolor?: Color; - /** Sets whether or not spikes extending from the projection data points to this axis' wall boundaries are shown on hover. */ + /** + * Sets whether or not spikes extending from the projection data points to this axis' wall boundaries are shown on hover. + * @default true + */ spikesides?: boolean; - /** Sets the thickness (in px) of the spikes. */ + /** + * Sets the thickness (in px) of the spikes. + * @default 2 + * Minimum: 0 + */ spikethickness?: number; - /** Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears. */ + /** + * Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears. + * Setting this also sets: tickmode = "linear" + */ tick0?: any; - /** Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. */ + /** + * Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. + * @default 'auto' + */ tickangle?: number | 'auto'; - /** Sets the tick color. */ + /** + * Sets the tick color. + * @default '#444' + */ tickcolor?: Color; /** Sets the tick font. */ tickfont?: Font; /** Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ tickformat?: string; tickformatstops?: TickFormatStops[]; - /** Sets the tick length (in px). */ + /** + * Sets the tick length (in px). + * @default 5 + * Minimum: 0 + */ ticklen?: number; /** Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). */ tickmode?: 'auto' | 'linear' | 'array'; @@ -8104,62 +14665,126 @@ export interface Scene { ticktext?: Datum[] | TypedArray; /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ tickvals?: Datum[] | TypedArray; - /** Sets the tick width (in px). */ + /** + * Sets the tick width (in px). + * @default 1 + * Minimum: 0 + */ tickwidth?: number; title?: LegendGroupTitle; - /** Sets the axis type. By default, plotly attempts to determined the axis type by looking into the data of the traces that referenced the axis in question. */ + /** + * Sets the axis type. By default, plotly attempts to determined the axis type by looking into the data of the traces that referenced the axis in question. + * @default '-' + */ type?: '-' | 'linear' | 'log' | 'date' | 'category'; /** A single toggle to hide the axis while preserving interaction like dragging. Default is true when a cheater plot is present on the axis, otherwise false */ visible?: boolean; /** Determines whether or not a line is drawn at along the 0 value of this axis. If *true*, the zero line is drawn on top of the grid lines. */ zeroline?: boolean; - /** Sets the line color of the zero line. */ + /** + * Sets the line color of the zero line. + * @default '#444' + */ zerolinecolor?: Color; - /** Sets the width (in px) of the zero line. */ + /** + * Sets the width (in px) of the zero line. + * @default 1 + */ zerolinewidth?: number; }; } export interface SmithLayout { - /** Set the background color of the subplot */ + /** + * Set the background color of the subplot + * @default '#fff' + */ bgcolor?: Color; domain?: Domain; imaginaryaxis?: { - /** Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. */ + /** + * Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. + * @default '#444' + */ color?: Color; - /** Sets the color of the grid lines. */ + /** + * Sets the color of the grid lines. + * @default '#eee' + */ gridcolor?: Color; - /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ griddash?: Dash; - /** Sets the width (in px) of the grid lines. */ + /** + * Sets the width (in px) of the grid lines. + * @default 1 + * Minimum: 0 + */ gridwidth?: number; /** Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ hoverformat?: string; - /** Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. */ + /** + * Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. + * @default false + */ labelalias?: any; - /** Sets the layer on which this axis is displayed. If *above traces*, this axis is displayed above all the subplot's traces If *below traces*, this axis is displayed below all the subplot's traces, but above the grid lines. Useful when used together with scatter-like traces with `cliponaxis` set to *false* to show markers and/or text nodes above this axis. */ + /** + * Sets the layer on which this axis is displayed. If *above traces*, this axis is displayed above all the subplot's traces If *below traces*, this axis is displayed below all the subplot's traces, but above the grid lines. Useful when used together with scatter-like traces with `cliponaxis` set to *false* to show markers and/or text nodes above this axis. + * @default 'above traces' + */ layer?: 'above traces' | 'below traces'; - /** Sets the axis line color. */ + /** + * Sets the axis line color. + * @default '#444' + */ linecolor?: Color; - /** Sets the width (in px) of the axis line. */ + /** + * Sets the width (in px) of the axis line. + * @default 1 + * Minimum: 0 + */ linewidth?: number; - /** Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. */ + /** + * Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. + * @default true + */ showgrid?: boolean; - /** Determines whether or not a line bounding this axis is drawn. */ + /** + * Determines whether or not a line bounding this axis is drawn. + * @default true + */ showline?: boolean; - /** Determines whether or not the tick labels are drawn. */ + /** + * Determines whether or not the tick labels are drawn. + * @default true + */ showticklabels?: boolean; - /** If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. */ + /** + * If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. + * @default 'all' + */ showtickprefix?: 'all' | 'first' | 'last' | 'none'; - /** Same as `showtickprefix` but for tick suffixes. */ + /** + * Same as `showtickprefix` but for tick suffixes. + * @default 'all' + */ showticksuffix?: 'all' | 'first' | 'last' | 'none'; - /** Sets the tick color. */ + /** + * Sets the tick color. + * @default '#444' + */ tickcolor?: Color; /** Sets the tick font. */ tickfont?: Font; /** Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ tickformat?: string; - /** Sets the tick length (in px). */ + /** + * Sets the tick length (in px). + * @default 5 + * Minimum: 0 + */ ticklen?: number; /** Sets a tick label prefix. */ tickprefix?: string; @@ -8169,51 +14794,112 @@ export interface SmithLayout { ticksuffix?: string; /** Sets the values at which ticks on this axis appear. Defaults to `realaxis.tickvals` plus the same as negatives and zero. */ tickvals?: Datum[] | TypedArray; - /** Sets the tick width (in px). */ + /** + * Sets the tick width (in px). + * @default 2 + * Minimum: 0 + */ tickwidth?: number; - /** A single toggle to hide the axis while preserving interaction like dragging. Default is true when a cheater plot is present on the axis, otherwise false */ + /** + * A single toggle to hide the axis while preserving interaction like dragging. Default is true when a cheater plot is present on the axis, otherwise false + * @default true + */ visible?: boolean; }; realaxis?: { - /** Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. */ + /** + * Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. + * @default '#444' + */ color?: Color; - /** Sets the color of the grid lines. */ + /** + * Sets the color of the grid lines. + * @default '#eee' + */ gridcolor?: Color; - /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ griddash?: Dash; - /** Sets the width (in px) of the grid lines. */ + /** + * Sets the width (in px) of the grid lines. + * @default 1 + * Minimum: 0 + */ gridwidth?: number; /** Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ hoverformat?: string; - /** Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. */ + /** + * Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. + * @default false + */ labelalias?: any; - /** Sets the layer on which this axis is displayed. If *above traces*, this axis is displayed above all the subplot's traces If *below traces*, this axis is displayed below all the subplot's traces, but above the grid lines. Useful when used together with scatter-like traces with `cliponaxis` set to *false* to show markers and/or text nodes above this axis. */ + /** + * Sets the layer on which this axis is displayed. If *above traces*, this axis is displayed above all the subplot's traces If *below traces*, this axis is displayed below all the subplot's traces, but above the grid lines. Useful when used together with scatter-like traces with `cliponaxis` set to *false* to show markers and/or text nodes above this axis. + * @default 'above traces' + */ layer?: 'above traces' | 'below traces'; - /** Sets the axis line color. */ + /** + * Sets the axis line color. + * @default '#444' + */ linecolor?: Color; - /** Sets the width (in px) of the axis line. */ + /** + * Sets the width (in px) of the axis line. + * @default 1 + * Minimum: 0 + */ linewidth?: number; - /** Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. */ + /** + * Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. + * @default true + */ showgrid?: boolean; - /** Determines whether or not a line bounding this axis is drawn. */ + /** + * Determines whether or not a line bounding this axis is drawn. + * @default true + */ showline?: boolean; - /** Determines whether or not the tick labels are drawn. */ + /** + * Determines whether or not the tick labels are drawn. + * @default true + */ showticklabels?: boolean; - /** If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. */ + /** + * If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. + * @default 'all' + */ showtickprefix?: 'all' | 'first' | 'last' | 'none'; - /** Same as `showtickprefix` but for tick suffixes. */ + /** + * Same as `showtickprefix` but for tick suffixes. + * @default 'all' + */ showticksuffix?: 'all' | 'first' | 'last' | 'none'; - /** Determines on which side of real axis line the tick and tick labels appear. */ + /** + * Determines on which side of real axis line the tick and tick labels appear. + * @default 'top' + */ side?: 'top' | 'bottom'; - /** Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. */ + /** + * Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. + * @default 90 + */ tickangle?: number | 'auto'; - /** Sets the tick color. */ + /** + * Sets the tick color. + * @default '#444' + */ tickcolor?: Color; /** Sets the tick font. */ tickfont?: Font; /** Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ tickformat?: string; - /** Sets the tick length (in px). */ + /** + * Sets the tick length (in px). + * @default 5 + * Minimum: 0 + */ ticklen?: number; /** Sets a tick label prefix. */ tickprefix?: string; @@ -8221,73 +14907,165 @@ export interface SmithLayout { ticks?: 'top' | 'bottom' | ''; /** Sets a tick label suffix. */ ticksuffix?: string; - /** Sets the values at which ticks on this axis appear. */ + /** + * Sets the values at which ticks on this axis appear. + * @default [0.2,0.5,1,2,5] + */ tickvals?: Datum[] | TypedArray; - /** Sets the tick width (in px). */ + /** + * Sets the tick width (in px). + * @default 2 + * Minimum: 0 + */ tickwidth?: number; - /** A single toggle to hide the axis while preserving interaction like dragging. Default is true when a cheater plot is present on the axis, otherwise false */ + /** + * A single toggle to hide the axis while preserving interaction like dragging. Default is true when a cheater plot is present on the axis, otherwise false + * @default true + */ visible?: boolean; }; } export interface TernaryLayout { aaxis?: { - /** Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. */ + /** + * Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. + * @default '#444' + */ color?: Color; - /** Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48* */ + /** + * Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48* + * Setting this also sets: tickmode = "linear" + */ dtick?: any; - /** Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from "femto" f (10^-15) to "tera" T (10^12). *SI extended* covers instead the full SI range from "quecto" q (10^-30) to "quetta" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation. */ + /** + * Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from "femto" f (10^-15) to "tera" T (10^12). *SI extended* covers instead the full SI range from "quecto" q (10^-30) to "quetta" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation. + * @default 'B' + */ exponentformat?: 'none' | 'e' | 'E' | 'power' | 'SI' | 'B' | 'SI extended'; - /** Sets the color of the grid lines. */ + /** + * Sets the color of the grid lines. + * @default '#eee' + */ gridcolor?: Color; - /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ griddash?: Dash; - /** Sets the width (in px) of the grid lines. */ + /** + * Sets the width (in px) of the grid lines. + * @default 1 + * Minimum: 0 + */ gridwidth?: number; /** Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ hoverformat?: string; - /** Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. */ + /** + * Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. + * @default false + */ labelalias?: any; - /** Sets the layer on which this axis is displayed. If *above traces*, this axis is displayed above all the subplot's traces If *below traces*, this axis is displayed below all the subplot's traces, but above the grid lines. Useful when used together with scatter-like traces with `cliponaxis` set to *false* to show markers and/or text nodes above this axis. */ + /** + * Sets the layer on which this axis is displayed. If *above traces*, this axis is displayed above all the subplot's traces If *below traces*, this axis is displayed below all the subplot's traces, but above the grid lines. Useful when used together with scatter-like traces with `cliponaxis` set to *false* to show markers and/or text nodes above this axis. + * @default 'above traces' + */ layer?: 'above traces' | 'below traces'; - /** Sets the axis line color. */ + /** + * Sets the axis line color. + * @default '#444' + */ linecolor?: Color; - /** Sets the width (in px) of the axis line. */ + /** + * Sets the width (in px) of the axis line. + * @default 1 + * Minimum: 0 + */ linewidth?: number; - /** The minimum value visible on this axis. The maximum is determined by the sum minus the minimum values of the other two axes. The full view corresponds to all the minima set to zero. */ + /** + * The minimum value visible on this axis. The maximum is determined by the sum minus the minimum values of the other two axes. The full view corresponds to all the minima set to zero. + * @default 0 + * Minimum: 0 + */ min?: number; - /** Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*. */ + /** + * Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*. + * @default 3 + * Minimum: 0 + */ minexponent?: number; - /** Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. */ + /** + * Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. + * @default 6 + * Minimum: 1 + */ nticks?: number; - /** If "true", even 4-digit integers are separated */ + /** + * If "true", even 4-digit integers are separated + * @default false + */ separatethousands?: boolean; - /** If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. */ + /** + * If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. + * @default 'all' + */ showexponent?: 'all' | 'first' | 'last' | 'none'; - /** Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. */ + /** + * Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. + * @default true + */ showgrid?: boolean; - /** Determines whether or not a line bounding this axis is drawn. */ + /** + * Determines whether or not a line bounding this axis is drawn. + * @default true + */ showline?: boolean; - /** Determines whether or not the tick labels are drawn. */ + /** + * Determines whether or not the tick labels are drawn. + * @default true + */ showticklabels?: boolean; - /** If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. */ + /** + * If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. + * @default 'all' + */ showtickprefix?: 'all' | 'first' | 'last' | 'none'; - /** Same as `showtickprefix` but for tick suffixes. */ + /** + * Same as `showtickprefix` but for tick suffixes. + * @default 'all' + */ showticksuffix?: 'all' | 'first' | 'last' | 'none'; - /** Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears. */ + /** + * Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears. + * Setting this also sets: tickmode = "linear" + */ tick0?: any; - /** Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. */ + /** + * Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. + * @default 'auto' + */ tickangle?: number | 'auto'; - /** Sets the tick color. */ + /** + * Sets the tick color. + * @default '#444' + */ tickcolor?: Color; /** Sets the tick font. */ tickfont?: Font; /** Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ tickformat?: string; tickformatstops?: TickFormatStops[]; - /** Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*. */ + /** + * Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*. + * @default 1 + * Minimum: 1 + */ ticklabelstep?: number; - /** Sets the tick length (in px). */ + /** + * Sets the tick length (in px). + * @default 5 + * Minimum: 0 + */ ticklen?: number; /** Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). */ tickmode?: 'auto' | 'linear' | 'array'; @@ -8301,69 +15079,155 @@ export interface TernaryLayout { ticktext?: Datum[] | TypedArray; /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ tickvals?: Datum[] | TypedArray; - /** Sets the tick width (in px). */ + /** + * Sets the tick width (in px). + * @default 1 + * Minimum: 0 + */ tickwidth?: number; title?: LegendGroupTitle; /** Controls persistence of user-driven changes in axis `min`, and `title` if in `editable: true` configuration. Defaults to `ternary.uirevision`. */ uirevision?: any; }; baxis?: { - /** Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. */ + /** + * Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. + * @default '#444' + */ color?: Color; - /** Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48* */ + /** + * Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48* + * Setting this also sets: tickmode = "linear" + */ dtick?: any; - /** Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from "femto" f (10^-15) to "tera" T (10^12). *SI extended* covers instead the full SI range from "quecto" q (10^-30) to "quetta" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation. */ + /** + * Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from "femto" f (10^-15) to "tera" T (10^12). *SI extended* covers instead the full SI range from "quecto" q (10^-30) to "quetta" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation. + * @default 'B' + */ exponentformat?: 'none' | 'e' | 'E' | 'power' | 'SI' | 'B' | 'SI extended'; - /** Sets the color of the grid lines. */ + /** + * Sets the color of the grid lines. + * @default '#eee' + */ gridcolor?: Color; - /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ griddash?: Dash; - /** Sets the width (in px) of the grid lines. */ + /** + * Sets the width (in px) of the grid lines. + * @default 1 + * Minimum: 0 + */ gridwidth?: number; /** Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ hoverformat?: string; - /** Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. */ + /** + * Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. + * @default false + */ labelalias?: any; - /** Sets the layer on which this axis is displayed. If *above traces*, this axis is displayed above all the subplot's traces If *below traces*, this axis is displayed below all the subplot's traces, but above the grid lines. Useful when used together with scatter-like traces with `cliponaxis` set to *false* to show markers and/or text nodes above this axis. */ + /** + * Sets the layer on which this axis is displayed. If *above traces*, this axis is displayed above all the subplot's traces If *below traces*, this axis is displayed below all the subplot's traces, but above the grid lines. Useful when used together with scatter-like traces with `cliponaxis` set to *false* to show markers and/or text nodes above this axis. + * @default 'above traces' + */ layer?: 'above traces' | 'below traces'; - /** Sets the axis line color. */ + /** + * Sets the axis line color. + * @default '#444' + */ linecolor?: Color; - /** Sets the width (in px) of the axis line. */ + /** + * Sets the width (in px) of the axis line. + * @default 1 + * Minimum: 0 + */ linewidth?: number; - /** The minimum value visible on this axis. The maximum is determined by the sum minus the minimum values of the other two axes. The full view corresponds to all the minima set to zero. */ + /** + * The minimum value visible on this axis. The maximum is determined by the sum minus the minimum values of the other two axes. The full view corresponds to all the minima set to zero. + * @default 0 + * Minimum: 0 + */ min?: number; - /** Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*. */ + /** + * Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*. + * @default 3 + * Minimum: 0 + */ minexponent?: number; - /** Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. */ + /** + * Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. + * @default 6 + * Minimum: 1 + */ nticks?: number; - /** If "true", even 4-digit integers are separated */ + /** + * If "true", even 4-digit integers are separated + * @default false + */ separatethousands?: boolean; - /** If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. */ + /** + * If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. + * @default 'all' + */ showexponent?: 'all' | 'first' | 'last' | 'none'; - /** Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. */ + /** + * Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. + * @default true + */ showgrid?: boolean; - /** Determines whether or not a line bounding this axis is drawn. */ + /** + * Determines whether or not a line bounding this axis is drawn. + * @default true + */ showline?: boolean; - /** Determines whether or not the tick labels are drawn. */ + /** + * Determines whether or not the tick labels are drawn. + * @default true + */ showticklabels?: boolean; - /** If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. */ + /** + * If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. + * @default 'all' + */ showtickprefix?: 'all' | 'first' | 'last' | 'none'; - /** Same as `showtickprefix` but for tick suffixes. */ + /** + * Same as `showtickprefix` but for tick suffixes. + * @default 'all' + */ showticksuffix?: 'all' | 'first' | 'last' | 'none'; - /** Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears. */ + /** + * Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears. + * Setting this also sets: tickmode = "linear" + */ tick0?: any; - /** Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. */ + /** + * Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. + * @default 'auto' + */ tickangle?: number | 'auto'; - /** Sets the tick color. */ + /** + * Sets the tick color. + * @default '#444' + */ tickcolor?: Color; /** Sets the tick font. */ tickfont?: Font; /** Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ tickformat?: string; tickformatstops?: TickFormatStops[]; - /** Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*. */ + /** + * Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*. + * @default 1 + * Minimum: 1 + */ ticklabelstep?: number; - /** Sets the tick length (in px). */ + /** + * Sets the tick length (in px). + * @default 5 + * Minimum: 0 + */ ticklen?: number; /** Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). */ tickmode?: 'auto' | 'linear' | 'array'; @@ -8377,71 +15241,160 @@ export interface TernaryLayout { ticktext?: Datum[] | TypedArray; /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ tickvals?: Datum[] | TypedArray; - /** Sets the tick width (in px). */ + /** + * Sets the tick width (in px). + * @default 1 + * Minimum: 0 + */ tickwidth?: number; title?: LegendGroupTitle; /** Controls persistence of user-driven changes in axis `min`, and `title` if in `editable: true` configuration. Defaults to `ternary.uirevision`. */ uirevision?: any; }; - /** Set the background color of the subplot */ + /** + * Set the background color of the subplot + * @default '#fff' + */ bgcolor?: Color; caxis?: { - /** Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. */ + /** + * Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this. + * @default '#444' + */ color?: Color; - /** Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48* */ + /** + * Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48* + * Setting this also sets: tickmode = "linear" + */ dtick?: any; - /** Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from "femto" f (10^-15) to "tera" T (10^12). *SI extended* covers instead the full SI range from "quecto" q (10^-30) to "quetta" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation. */ + /** + * Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from "femto" f (10^-15) to "tera" T (10^12). *SI extended* covers instead the full SI range from "quecto" q (10^-30) to "quetta" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation. + * @default 'B' + */ exponentformat?: 'none' | 'e' | 'E' | 'power' | 'SI' | 'B' | 'SI extended'; - /** Sets the color of the grid lines. */ + /** + * Sets the color of the grid lines. + * @default '#eee' + */ gridcolor?: Color; - /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ griddash?: Dash; - /** Sets the width (in px) of the grid lines. */ + /** + * Sets the width (in px) of the grid lines. + * @default 1 + * Minimum: 0 + */ gridwidth?: number; /** Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ hoverformat?: string; - /** Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. */ + /** + * Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax. + * @default false + */ labelalias?: any; - /** Sets the layer on which this axis is displayed. If *above traces*, this axis is displayed above all the subplot's traces If *below traces*, this axis is displayed below all the subplot's traces, but above the grid lines. Useful when used together with scatter-like traces with `cliponaxis` set to *false* to show markers and/or text nodes above this axis. */ + /** + * Sets the layer on which this axis is displayed. If *above traces*, this axis is displayed above all the subplot's traces If *below traces*, this axis is displayed below all the subplot's traces, but above the grid lines. Useful when used together with scatter-like traces with `cliponaxis` set to *false* to show markers and/or text nodes above this axis. + * @default 'above traces' + */ layer?: 'above traces' | 'below traces'; - /** Sets the axis line color. */ + /** + * Sets the axis line color. + * @default '#444' + */ linecolor?: Color; - /** Sets the width (in px) of the axis line. */ + /** + * Sets the width (in px) of the axis line. + * @default 1 + * Minimum: 0 + */ linewidth?: number; - /** The minimum value visible on this axis. The maximum is determined by the sum minus the minimum values of the other two axes. The full view corresponds to all the minima set to zero. */ + /** + * The minimum value visible on this axis. The maximum is determined by the sum minus the minimum values of the other two axes. The full view corresponds to all the minima set to zero. + * @default 0 + * Minimum: 0 + */ min?: number; - /** Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*. */ + /** + * Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*. + * @default 3 + * Minimum: 0 + */ minexponent?: number; - /** Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. */ + /** + * Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*. + * @default 6 + * Minimum: 1 + */ nticks?: number; - /** If "true", even 4-digit integers are separated */ + /** + * If "true", even 4-digit integers are separated + * @default false + */ separatethousands?: boolean; - /** If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. */ + /** + * If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear. + * @default 'all' + */ showexponent?: 'all' | 'first' | 'last' | 'none'; - /** Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. */ + /** + * Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark. + * @default true + */ showgrid?: boolean; - /** Determines whether or not a line bounding this axis is drawn. */ + /** + * Determines whether or not a line bounding this axis is drawn. + * @default true + */ showline?: boolean; - /** Determines whether or not the tick labels are drawn. */ + /** + * Determines whether or not the tick labels are drawn. + * @default true + */ showticklabels?: boolean; - /** If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. */ + /** + * If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden. + * @default 'all' + */ showtickprefix?: 'all' | 'first' | 'last' | 'none'; - /** Same as `showtickprefix` but for tick suffixes. */ + /** + * Same as `showtickprefix` but for tick suffixes. + * @default 'all' + */ showticksuffix?: 'all' | 'first' | 'last' | 'none'; - /** Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears. */ + /** + * Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears. + * Setting this also sets: tickmode = "linear" + */ tick0?: any; - /** Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. */ + /** + * Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically. + * @default 'auto' + */ tickangle?: number | 'auto'; - /** Sets the tick color. */ + /** + * Sets the tick color. + * @default '#444' + */ tickcolor?: Color; /** Sets the tick font. */ tickfont?: Font; /** Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ tickformat?: string; tickformatstops?: TickFormatStops[]; - /** Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*. */ + /** + * Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*. + * @default 1 + * Minimum: 1 + */ ticklabelstep?: number; - /** Sets the tick length (in px). */ + /** + * Sets the tick length (in px). + * @default 5 + * Minimum: 0 + */ ticklen?: number; /** Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). */ tickmode?: 'auto' | 'linear' | 'array'; @@ -8455,55 +15408,106 @@ export interface TernaryLayout { ticktext?: Datum[] | TypedArray; /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ tickvals?: Datum[] | TypedArray; - /** Sets the tick width (in px). */ + /** + * Sets the tick width (in px). + * @default 1 + * Minimum: 0 + */ tickwidth?: number; title?: LegendGroupTitle; /** Controls persistence of user-driven changes in axis `min`, and `title` if in `editable: true` configuration. Defaults to `ternary.uirevision`. */ uirevision?: any; }; domain?: Domain; - /** The number each triplet should sum to, and the maximum range of each axis */ + /** + * The number each triplet should sum to, and the maximum range of each axis + * @default 1 + * Minimum: 0 + */ sum?: number; /** Controls persistence of user-driven changes in axis `min` and `title`, if not overridden in the individual axes. Defaults to `layout.uirevision`. */ uirevision?: any; } export interface Annotation { - /** Sets the horizontal alignment of the `text` within the box. Has an effect only if `text` spans two or more lines (i.e. `text` contains one or more
HTML tags) or if an explicit width is set to override the text width. */ + /** + * Sets the horizontal alignment of the `text` within the box. Has an effect only if `text` spans two or more lines (i.e. `text` contains one or more
HTML tags) or if an explicit width is set to override the text width. + * @default 'center' + */ align?: 'left' | 'center' | 'right'; /** Sets the color of the annotation arrow. */ arrowcolor?: Color; - /** Sets the end annotation arrow head style. */ + /** + * Sets the end annotation arrow head style. + * @default 1 + * Range: [0, 8] + */ arrowhead?: number; - /** Sets the annotation arrow head position. */ + /** + * Sets the annotation arrow head position. + * @default 'end' + */ arrowside?: 'end' | 'start' | 'none' | (string & {}); - /** Sets the size of the end annotation arrow head, relative to `arrowwidth`. A value of 1 (default) gives a head about 3x as wide as the line. */ + /** + * Sets the size of the end annotation arrow head, relative to `arrowwidth`. A value of 1 (default) gives a head about 3x as wide as the line. + * @default 1 + * Minimum: 0.3 + */ arrowsize?: number; - /** Sets the width (in px) of annotation arrow line. */ + /** + * Sets the width (in px) of annotation arrow line. + * Minimum: 0.1 + */ arrowwidth?: number; /** Sets the x component of the arrow tail about the arrow head. If `axref` is `pixel`, a positive (negative) component corresponds to an arrow pointing from right to left (left to right). If `axref` is not `pixel` and is exactly the same as `xref`, this is an absolute value on that axis, like `x`, specified in the same coordinates as `xref`. */ ax?: any; - /** Indicates in what coordinates the tail of the annotation (ax,ay) is specified. If set to a x axis id (e.g. *x* or *x2*), the `x` position refers to a x coordinate. If set to *paper*, the `x` position refers to the distance from the left of the plotting area in normalized coordinates where *0* (*1*) corresponds to the left (right). If set to a x axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the left of the domain of that axis: e.g., *x2 domain* refers to the domain of the second x axis and a x position of 0.5 refers to the point between the left and the right of the domain of the second x axis. In order for absolute positioning of the arrow to work, *axref* must be exactly the same as *xref*, otherwise *axref* will revert to *pixel* (explained next). For relative positioning, *axref* can be set to *pixel*, in which case the *ax* value is specified in pixels relative to *x*. Absolute positioning is useful for trendline annotations which should continue to indicate the correct trend when zoomed. Relative positioning is useful for specifying the text offset for an annotated point. */ + /** + * Indicates in what coordinates the tail of the annotation (ax,ay) is specified. If set to a x axis id (e.g. *x* or *x2*), the `x` position refers to a x coordinate. If set to *paper*, the `x` position refers to the distance from the left of the plotting area in normalized coordinates where *0* (*1*) corresponds to the left (right). If set to a x axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the left of the domain of that axis: e.g., *x2 domain* refers to the domain of the second x axis and a x position of 0.5 refers to the point between the left and the right of the domain of the second x axis. In order for absolute positioning of the arrow to work, *axref* must be exactly the same as *xref*, otherwise *axref* will revert to *pixel* (explained next). For relative positioning, *axref* can be set to *pixel*, in which case the *ax* value is specified in pixels relative to *x*. Absolute positioning is useful for trendline annotations which should continue to indicate the correct trend when zoomed. Relative positioning is useful for specifying the text offset for an annotated point. + * @default 'pixel' + */ axref?: 'pixel' | '/^x([2-9]|[1-9][0-9]+)?( domain)?$/'; /** Sets the y component of the arrow tail about the arrow head. If `ayref` is `pixel`, a positive (negative) component corresponds to an arrow pointing from bottom to top (top to bottom). If `ayref` is not `pixel` and is exactly the same as `yref`, this is an absolute value on that axis, like `y`, specified in the same coordinates as `yref`. */ ay?: any; - /** Indicates in what coordinates the tail of the annotation (ax,ay) is specified. If set to a y axis id (e.g. *y* or *y2*), the `y` position refers to a y coordinate. If set to *paper*, the `y` position refers to the distance from the bottom of the plotting area in normalized coordinates where *0* (*1*) corresponds to the bottom (top). If set to a y axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the bottom of the domain of that axis: e.g., *y2 domain* refers to the domain of the second y axis and a y position of 0.5 refers to the point between the bottom and the top of the domain of the second y axis. In order for absolute positioning of the arrow to work, *ayref* must be exactly the same as *yref*, otherwise *ayref* will revert to *pixel* (explained next). For relative positioning, *ayref* can be set to *pixel*, in which case the *ay* value is specified in pixels relative to *y*. Absolute positioning is useful for trendline annotations which should continue to indicate the correct trend when zoomed. Relative positioning is useful for specifying the text offset for an annotated point. */ + /** + * Indicates in what coordinates the tail of the annotation (ax,ay) is specified. If set to a y axis id (e.g. *y* or *y2*), the `y` position refers to a y coordinate. If set to *paper*, the `y` position refers to the distance from the bottom of the plotting area in normalized coordinates where *0* (*1*) corresponds to the bottom (top). If set to a y axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the bottom of the domain of that axis: e.g., *y2 domain* refers to the domain of the second y axis and a y position of 0.5 refers to the point between the bottom and the top of the domain of the second y axis. In order for absolute positioning of the arrow to work, *ayref* must be exactly the same as *yref*, otherwise *ayref* will revert to *pixel* (explained next). For relative positioning, *ayref* can be set to *pixel*, in which case the *ay* value is specified in pixels relative to *y*. Absolute positioning is useful for trendline annotations which should continue to indicate the correct trend when zoomed. Relative positioning is useful for specifying the text offset for an annotated point. + * @default 'pixel' + */ ayref?: 'pixel' | '/^y([2-9]|[1-9][0-9]+)?( domain)?$/'; - /** Sets the background color of the annotation. */ + /** + * Sets the background color of the annotation. + * @default 'rgba(0,0,0,0)' + */ bgcolor?: Color; - /** Sets the color of the border enclosing the annotation `text`. */ + /** + * Sets the color of the border enclosing the annotation `text`. + * @default 'rgba(0,0,0,0)' + */ bordercolor?: Color; - /** Sets the padding (in px) between the `text` and the enclosing border. */ + /** + * Sets the padding (in px) between the `text` and the enclosing border. + * @default 1 + * Minimum: 0 + */ borderpad?: number; - /** Sets the width (in px) of the border enclosing the annotation `text`. */ + /** + * Sets the width (in px) of the border enclosing the annotation `text`. + * @default 1 + * Minimum: 0 + */ borderwidth?: number; /** Determines whether the annotation text box captures mouse move and click events, or allows those events to pass through to data points in the plot that may be behind the annotation. By default `captureevents` is *false* unless `hovertext` is provided. If you use the event `plotly_clickannotation` without `hovertext` you must explicitly enable `captureevents`. */ captureevents?: boolean; - /** Makes this annotation respond to clicks on the plot. If you click a data point that exactly matches the `x` and `y` values of this annotation, and it is hidden (visible: false), it will appear. In *onoff* mode, you must click the same point again to make it disappear, so if you click multiple points, you can show multiple annotations. In *onout* mode, a click anywhere else in the plot (on another data point or not) will hide this annotation. If you need to show/hide this annotation in response to different `x` or `y` values, you can set `xclick` and/or `yclick`. This is useful for example to label the side of a bar. To label markers though, `standoff` is preferred over `xclick` and `yclick`. */ + /** + * Makes this annotation respond to clicks on the plot. If you click a data point that exactly matches the `x` and `y` values of this annotation, and it is hidden (visible: false), it will appear. In *onoff* mode, you must click the same point again to make it disappear, so if you click multiple points, you can show multiple annotations. In *onout* mode, a click anywhere else in the plot (on another data point or not) will hide this annotation. If you need to show/hide this annotation in response to different `x` or `y` values, you can set `xclick` and/or `yclick`. This is useful for example to label the side of a bar. To label markers though, `standoff` is preferred over `xclick` and `yclick`. + * @default false + */ clicktoshow?: false | 'onoff' | 'onout'; /** Sets the annotation text font. */ font?: Font; - /** Sets an explicit height for the text box. null (default) lets the text set the box height. Taller text will be clipped. */ + /** + * Sets an explicit height for the text box. null (default) lets the text set the box height. Taller text will be clipped. + * Minimum: 1 + */ height?: number; hoverlabel?: { /** Sets the background color of the hover label. By default uses the annotation's `bgcolor` made opaque, or white if it was transparent. */ @@ -8517,82 +15521,166 @@ export interface Annotation { hovertext?: string; /** When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template. */ name?: string; - /** Sets the opacity of the annotation (text + arrow). */ + /** + * Sets the opacity of the annotation (text + arrow). + * @default 1 + * Range: [0, 1] + */ opacity?: number; - /** Determines whether or not the annotation is drawn with an arrow. If *true*, `text` is placed near the arrow's tail. If *false*, `text` lines up with the `x` and `y` provided. */ + /** + * Determines whether or not the annotation is drawn with an arrow. If *true*, `text` is placed near the arrow's tail. If *false*, `text` lines up with the `x` and `y` provided. + * @default true + */ showarrow?: boolean; - /** Sets a distance, in pixels, to move the end arrowhead away from the position it is pointing at, for example to point at the edge of a marker independent of zoom. Note that this shortens the arrow from the `ax` / `ay` vector, in contrast to `xshift` / `yshift` which moves everything by this amount. */ + /** + * Sets a distance, in pixels, to move the end arrowhead away from the position it is pointing at, for example to point at the edge of a marker independent of zoom. Note that this shortens the arrow from the `ax` / `ay` vector, in contrast to `xshift` / `yshift` which moves everything by this amount. + * @default 0 + * Minimum: 0 + */ standoff?: number; - /** Sets the start annotation arrow head style. */ + /** + * Sets the start annotation arrow head style. + * @default 1 + * Range: [0, 8] + */ startarrowhead?: number; - /** Sets the size of the start annotation arrow head, relative to `arrowwidth`. A value of 1 (default) gives a head about 3x as wide as the line. */ + /** + * Sets the size of the start annotation arrow head, relative to `arrowwidth`. A value of 1 (default) gives a head about 3x as wide as the line. + * @default 1 + * Minimum: 0.3 + */ startarrowsize?: number; - /** Sets a distance, in pixels, to move the start arrowhead away from the position it is pointing at, for example to point at the edge of a marker independent of zoom. Note that this shortens the arrow from the `ax` / `ay` vector, in contrast to `xshift` / `yshift` which moves everything by this amount. */ + /** + * Sets a distance, in pixels, to move the start arrowhead away from the position it is pointing at, for example to point at the edge of a marker independent of zoom. Note that this shortens the arrow from the `ax` / `ay` vector, in contrast to `xshift` / `yshift` which moves everything by this amount. + * @default 0 + * Minimum: 0 + */ startstandoff?: number; /** Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`. */ templateitemname?: string; /** Sets the text associated with this annotation. Plotly uses a subset of HTML tags to do things like newline (`
`), bold (``), italics (``), hyperlinks (``). Tags ``, ``, ``, ``, ``, and `` are also supported. */ text?: string; - /** Sets the angle at which the `text` is drawn with respect to the horizontal. */ + /** + * Sets the angle at which the `text` is drawn with respect to the horizontal. + * @default 0 + */ textangle?: number | 'auto'; - /** Sets the vertical alignment of the `text` within the box. Has an effect only if an explicit height is set to override the text height. */ + /** + * Sets the vertical alignment of the `text` within the box. Has an effect only if an explicit height is set to override the text height. + * @default 'middle' + */ valign?: 'top' | 'middle' | 'bottom'; - /** Determines whether or not this annotation is visible. */ + /** + * Determines whether or not this annotation is visible. + * @default true + */ visible?: boolean; - /** Sets an explicit width for the text box. null (default) lets the text set the box width. Wider text will be clipped. There is no automatic wrapping; use
to start a new line. */ + /** + * Sets an explicit width for the text box. null (default) lets the text set the box width. Wider text will be clipped. There is no automatic wrapping; use
to start a new line. + * Minimum: 1 + */ width?: number; /** Sets the annotation's x position. If the axis `type` is *log*, then you must take the log of your desired range. If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears. */ x?: any; - /** Sets the text box's horizontal position anchor This anchor binds the `x` position to the *left*, *center* or *right* of the annotation. For example, if `x` is set to 1, `xref` to *paper* and `xanchor` to *right* then the right-most portion of the annotation lines up with the right-most edge of the plotting area. If *auto*, the anchor is equivalent to *center* for data-referenced annotations or if there is an arrow, whereas for paper-referenced with no arrow, the anchor picked corresponds to the closest side. */ + /** + * Sets the text box's horizontal position anchor This anchor binds the `x` position to the *left*, *center* or *right* of the annotation. For example, if `x` is set to 1, `xref` to *paper* and `xanchor` to *right* then the right-most portion of the annotation lines up with the right-most edge of the plotting area. If *auto*, the anchor is equivalent to *center* for data-referenced annotations or if there is an arrow, whereas for paper-referenced with no arrow, the anchor picked corresponds to the closest side. + * @default 'auto' + */ xanchor?: 'auto' | 'left' | 'center' | 'right'; /** Toggle this annotation when clicking a data point whose `x` value is `xclick` rather than the annotation's `x` value. */ xclick?: any; /** Sets the annotation's x coordinate axis. If set to a x axis id (e.g. *x* or *x2*), the `x` position refers to a x coordinate. If set to *paper*, the `x` position refers to the distance from the left of the plotting area in normalized coordinates where *0* (*1*) corresponds to the left (right). If set to a x axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the left of the domain of that axis: e.g., *x2 domain* refers to the domain of the second x axis and a x position of 0.5 refers to the point between the left and the right of the domain of the second x axis. */ xref?: 'paper' | '/^x([2-9]|[1-9][0-9]+)?( domain)?$/'; - /** Shifts the position of the whole annotation and arrow to the right (positive) or left (negative) by this many pixels. */ + /** + * Shifts the position of the whole annotation and arrow to the right (positive) or left (negative) by this many pixels. + * @default 0 + */ xshift?: number; /** Sets the annotation's y position. If the axis `type` is *log*, then you must take the log of your desired range. If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears. */ y?: any; - /** Sets the text box's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the annotation. For example, if `y` is set to 1, `yref` to *paper* and `yanchor` to *top* then the top-most portion of the annotation lines up with the top-most edge of the plotting area. If *auto*, the anchor is equivalent to *middle* for data-referenced annotations or if there is an arrow, whereas for paper-referenced with no arrow, the anchor picked corresponds to the closest side. */ + /** + * Sets the text box's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the annotation. For example, if `y` is set to 1, `yref` to *paper* and `yanchor` to *top* then the top-most portion of the annotation lines up with the top-most edge of the plotting area. If *auto*, the anchor is equivalent to *middle* for data-referenced annotations or if there is an arrow, whereas for paper-referenced with no arrow, the anchor picked corresponds to the closest side. + * @default 'auto' + */ yanchor?: 'auto' | 'top' | 'middle' | 'bottom'; /** Toggle this annotation when clicking a data point whose `y` value is `yclick` rather than the annotation's `y` value. */ yclick?: any; /** Sets the annotation's y coordinate axis. If set to a y axis id (e.g. *y* or *y2*), the `y` position refers to a y coordinate. If set to *paper*, the `y` position refers to the distance from the bottom of the plotting area in normalized coordinates where *0* (*1*) corresponds to the bottom (top). If set to a y axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the bottom of the domain of that axis: e.g., *y2 domain* refers to the domain of the second y axis and a y position of 0.5 refers to the point between the bottom and the top of the domain of the second y axis. */ yref?: 'paper' | '/^y([2-9]|[1-9][0-9]+)?( domain)?$/'; - /** Shifts the position of the whole annotation and arrow up (positive) or down (negative) by this many pixels. */ + /** + * Shifts the position of the whole annotation and arrow up (positive) or down (negative) by this many pixels. + * @default 0 + */ yshift?: number; } export interface LayoutImage { - /** Specifies whether images are drawn below or above traces. When `xref` and `yref` are both set to `paper`, image is drawn below the entire plot area. */ + /** + * Specifies whether images are drawn below or above traces. When `xref` and `yref` are both set to `paper`, image is drawn below the entire plot area. + * @default 'above' + */ layer?: 'below' | 'above'; /** When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template. */ name?: string; - /** Sets the opacity of the image. */ + /** + * Sets the opacity of the image. + * @default 1 + * Range: [0, 1] + */ opacity?: number; - /** Sets the image container size horizontally. The image will be sized based on the `position` value. When `xref` is set to `paper`, units are sized relative to the plot width. When `xref` ends with ` domain`, units are sized relative to the axis width. */ + /** + * Sets the image container size horizontally. The image will be sized based on the `position` value. When `xref` is set to `paper`, units are sized relative to the plot width. When `xref` ends with ` domain`, units are sized relative to the axis width. + * @default 0 + */ sizex?: number; - /** Sets the image container size vertically. The image will be sized based on the `position` value. When `yref` is set to `paper`, units are sized relative to the plot height. When `yref` ends with ` domain`, units are sized relative to the axis height. */ + /** + * Sets the image container size vertically. The image will be sized based on the `position` value. When `yref` is set to `paper`, units are sized relative to the plot height. When `yref` ends with ` domain`, units are sized relative to the axis height. + * @default 0 + */ sizey?: number; - /** Specifies which dimension of the image to constrain. */ + /** + * Specifies which dimension of the image to constrain. + * @default 'contain' + */ sizing?: 'fill' | 'contain' | 'stretch'; /** Specifies the URL of the image to be used. The URL must be accessible from the domain where the plot code is run, and can be either relative or absolute. */ source?: string; /** Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`. */ templateitemname?: string; - /** Determines whether or not this image is visible. */ + /** + * Determines whether or not this image is visible. + * @default true + */ visible?: boolean; - /** Sets the image's x position. When `xref` is set to `paper`, units are sized relative to the plot height. See `xref` for more info */ + /** + * Sets the image's x position. When `xref` is set to `paper`, units are sized relative to the plot height. See `xref` for more info + * @default 0 + */ x?: any; - /** Sets the anchor for the x position */ + /** + * Sets the anchor for the x position + * @default 'left' + */ xanchor?: 'left' | 'center' | 'right'; - /** Sets the images's x coordinate axis. If set to a x axis id (e.g. *x* or *x2*), the `x` position refers to a x coordinate. If set to *paper*, the `x` position refers to the distance from the left of the plotting area in normalized coordinates where *0* (*1*) corresponds to the left (right). If set to a x axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the left of the domain of that axis: e.g., *x2 domain* refers to the domain of the second x axis and a x position of 0.5 refers to the point between the left and the right of the domain of the second x axis. */ + /** + * Sets the images's x coordinate axis. If set to a x axis id (e.g. *x* or *x2*), the `x` position refers to a x coordinate. If set to *paper*, the `x` position refers to the distance from the left of the plotting area in normalized coordinates where *0* (*1*) corresponds to the left (right). If set to a x axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the left of the domain of that axis: e.g., *x2 domain* refers to the domain of the second x axis and a x position of 0.5 refers to the point between the left and the right of the domain of the second x axis. + * @default 'paper' + */ xref?: 'paper' | '/^x([2-9]|[1-9][0-9]+)?( domain)?$/'; - /** Sets the image's y position. When `yref` is set to `paper`, units are sized relative to the plot height. See `yref` for more info */ + /** + * Sets the image's y position. When `yref` is set to `paper`, units are sized relative to the plot height. See `yref` for more info + * @default 0 + */ y?: any; - /** Sets the anchor for the y position. */ + /** + * Sets the anchor for the y position. + * @default 'top' + */ yanchor?: 'top' | 'middle' | 'bottom'; - /** Sets the images's y coordinate axis. If set to a y axis id (e.g. *y* or *y2*), the `y` position refers to a y coordinate. If set to *paper*, the `y` position refers to the distance from the bottom of the plotting area in normalized coordinates where *0* (*1*) corresponds to the bottom (top). If set to a y axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the bottom of the domain of that axis: e.g., *y2 domain* refers to the domain of the second y axis and a y position of 0.5 refers to the point between the bottom and the top of the domain of the second y axis. */ + /** + * Sets the images's y coordinate axis. If set to a y axis id (e.g. *y* or *y2*), the `y` position refers to a y coordinate. If set to *paper*, the `y` position refers to the distance from the bottom of the plotting area in normalized coordinates where *0* (*1*) corresponds to the bottom (top). If set to a y axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the bottom of the domain of that axis: e.g., *y2 domain* refers to the domain of the second y axis and a y position of 0.5 refers to the point between the bottom and the top of the domain of the second y axis. + * @default 'paper' + */ yref?: 'paper' | '/^y([2-9]|[1-9][0-9]+)?( domain)?$/'; } @@ -8600,14 +15688,25 @@ export interface LayoutSelection { line?: { /** Sets the line color. */ color?: Color; - /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'dot' + */ dash?: Dash; - /** Sets the line width (in px). */ + /** + * Sets the line width (in px). + * @default 1 + * Minimum: 1 + */ width?: number; }; /** When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template. */ name?: string; - /** Sets the opacity of the selection. */ + /** + * Sets the opacity of the selection. + * @default 0.7 + * Range: [0, 1] + */ opacity?: number; /** For `type` *path* - a valid SVG path similar to `shapes.path` in data coordinates. Allowed segments are: M, L and Z. */ path?: string; @@ -8630,149 +15729,277 @@ export interface LayoutSelection { } export interface Shape { - /** Determines whether the shape could be activated for edit or not. Has no effect when the older editable shapes mode is enabled via `config.editable` or `config.edits.shapePosition`. */ + /** + * Determines whether the shape could be activated for edit or not. Has no effect when the older editable shapes mode is enabled via `config.editable` or `config.edits.shapePosition`. + * @default false + */ editable?: boolean; - /** Sets the color filling the shape's interior. Only applies to closed shapes. */ + /** + * Sets the color filling the shape's interior. Only applies to closed shapes. + * @default 'rgba(0,0,0,0)' + */ fillcolor?: Color; - /** Determines which regions of complex paths constitute the interior. For more info please visit https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/fill-rule */ + /** + * Determines which regions of complex paths constitute the interior. For more info please visit https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/fill-rule + * @default 'evenodd' + */ fillrule?: 'evenodd' | 'nonzero'; label?: { /** Sets the shape label text font. */ font?: Font; - /** Sets padding (in px) between edge of label and edge of shape. */ + /** + * Sets padding (in px) between edge of label and edge of shape. + * @default 3 + * Minimum: 0 + */ padding?: number; /** Sets the text to display with shape. It is also used for legend item if `name` is not provided. */ text?: string; - /** Sets the angle at which the label text is drawn with respect to the horizontal. For lines, angle *auto* is the same angle as the line. For all other shapes, angle *auto* is horizontal. */ + /** + * Sets the angle at which the label text is drawn with respect to the horizontal. For lines, angle *auto* is the same angle as the line. For all other shapes, angle *auto* is horizontal. + * @default 'auto' + */ textangle?: number | 'auto'; /** Sets the position of the label text relative to the shape. Supported values for rectangles, circles and paths are *top left*, *top center*, *top right*, *middle left*, *middle center*, *middle right*, *bottom left*, *bottom center*, and *bottom right*. Supported values for lines are *start*, *middle*, and *end*. Default: *middle center* for rectangles, circles, and paths; *middle* for lines. */ textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right' | 'start' | 'middle' | 'end'; /** Template string used for rendering the shape's label. Note that this will override `text`. Variables are inserted using %{variable}, for example "x0: %{x0}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{x0:$.2f}". See https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{x0|%m %b %Y}". See https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. A single multiplication or division operation may be applied to numeric variables, and combined with d3 number formatting, for example "Length in cm: %{x0*2.54}", "%{slope*60:.1f} meters per second." For log axes, variable values are given in log units. For date axes, x/y coordinate variables and center variables use datetimes, while all other variable values use values in ms. Finally, the template string has access to variables `x0`, `x1`, `y0`, `y1`, `slope`, `dx`, `dy`, `width`, `height`, `length`, `xcenter`, `ycenter`, `simpleXVariables` and `simpleYVariables`. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. */ texttemplate?: string; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ texttemplatefallback?: any; - /** Sets the label's horizontal position anchor This anchor binds the specified `textposition` to the *left*, *center* or *right* of the label text. For example, if `textposition` is set to *top right* and `xanchor` to *right* then the right-most portion of the label text lines up with the right-most edge of the shape. */ + /** + * Sets the label's horizontal position anchor This anchor binds the specified `textposition` to the *left*, *center* or *right* of the label text. For example, if `textposition` is set to *top right* and `xanchor` to *right* then the right-most portion of the label text lines up with the right-most edge of the shape. + * @default 'auto' + */ xanchor?: 'auto' | 'left' | 'center' | 'right'; /** Sets the label's vertical position anchor This anchor binds the specified `textposition` to the *top*, *middle* or *bottom* of the label text. For example, if `textposition` is set to *top right* and `yanchor` to *top* then the top-most portion of the label text lines up with the top-most edge of the shape. */ yanchor?: 'top' | 'middle' | 'bottom'; }; - /** Specifies whether shapes are drawn below gridlines (*below*), between gridlines and traces (*between*) or above traces (*above*). */ + /** + * Specifies whether shapes are drawn below gridlines (*below*), between gridlines and traces (*between*) or above traces (*above*). + * @default 'above' + */ layer?: 'below' | 'above' | 'between'; - /** Sets the reference to a legend to show this shape in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show this shape in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string; /** Sets the legend group for this shape. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ legendgroup?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for this shape. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. */ + /** + * Sets the legend rank for this shape. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ legendrank?: number; - /** Sets the width (in px or fraction) of the legend for this shape. */ + /** + * Sets the width (in px or fraction) of the legend for this shape. + * Minimum: 0 + */ legendwidth?: number; line?: { /** Sets the line color. */ color?: Color; - /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ dash?: Dash; - /** Sets the line width (in px). */ + /** + * Sets the line width (in px). + * @default 2 + * Minimum: 0 + */ width?: number; }; /** When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template. */ name?: string; - /** Sets the opacity of the shape. */ + /** + * Sets the opacity of the shape. + * @default 1 + * Range: [0, 1] + */ opacity?: number; /** For `type` *path* - a valid SVG path with the pixel values replaced by data values in `xsizemode`/`ysizemode` being *scaled* and taken unmodified as pixels relative to `xanchor` and `yanchor` in case of *pixel* size mode. There are a few restrictions / quirks only absolute instructions, not relative. So the allowed segments are: M, L, H, V, Q, C, T, S, and Z arcs (A) are not allowed because radius rx and ry are relative. In the future we could consider supporting relative commands, but we would have to decide on how to handle date and log axes. Note that even as is, Q and C Bezier paths that are smooth on linear axes may not be smooth on log, and vice versa. no chained "polybezier" commands - specify the segment type for each one. On category axes, values are numbers scaled to the serial numbers of categories because using the categories themselves there would be no way to describe fractional positions On data axes: because space and T are both normal components of path strings, we can't use either to separate date from time parts. Therefore we'll use underscore for this purpose: 2015-02-21_13:45:56.789 */ path?: string; - /** Determines whether or not this shape is shown in the legend. */ + /** + * Determines whether or not this shape is shown in the legend. + * @default false + */ showlegend?: boolean; /** Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`. */ templateitemname?: string; /** Specifies the shape type to be drawn. If *line*, a line is drawn from (`x0`,`y0`) to (`x1`,`y1`) with respect to the axes' sizing mode. If *circle*, a circle is drawn from ((`x0`+`x1`)/2, (`y0`+`y1`)/2)) with radius (|(`x0`+`x1`)/2 - `x0`|, |(`y0`+`y1`)/2 -`y0`)|) with respect to the axes' sizing mode. If *rect*, a rectangle is drawn linking (`x0`,`y0`), (`x1`,`y0`), (`x1`,`y1`), (`x0`,`y1`), (`x0`,`y0`) with respect to the axes' sizing mode. If *path*, draw a custom SVG path using `path`. with respect to the axes' sizing mode. */ type?: 'circle' | 'rect' | 'path' | 'line'; - /** Determines whether or not this shape is visible. If *legendonly*, the shape is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not this shape is visible. If *legendonly*, the shape is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; /** Sets the shape's starting x position. See `type` and `xsizemode` for more info. */ x0?: any; - /** Shifts `x0` away from the center of the category when `xref` is a *category* or *multicategory* axis. -0.5 corresponds to the start of the category and 0.5 corresponds to the end of the category. */ + /** + * Shifts `x0` away from the center of the category when `xref` is a *category* or *multicategory* axis. -0.5 corresponds to the start of the category and 0.5 corresponds to the end of the category. + * @default 0 + * Range: [-1, 1] + */ x0shift?: number; /** Sets the shape's end x position. See `type` and `xsizemode` for more info. */ x1?: any; - /** Shifts `x1` away from the center of the category when `xref` is a *category* or *multicategory* axis. -0.5 corresponds to the start of the category and 0.5 corresponds to the end of the category. */ + /** + * Shifts `x1` away from the center of the category when `xref` is a *category* or *multicategory* axis. -0.5 corresponds to the start of the category and 0.5 corresponds to the end of the category. + * @default 0 + * Range: [-1, 1] + */ x1shift?: number; /** Only relevant in conjunction with `xsizemode` set to *pixel*. Specifies the anchor point on the x axis to which `x0`, `x1` and x coordinates within `path` are relative to. E.g. useful to attach a pixel sized shape to a certain data value. No effect when `xsizemode` not set to *pixel*. */ xanchor?: any; /** Sets the shape's x coordinate axis. If set to a x axis id (e.g. *x* or *x2*), the `x` position refers to a x coordinate. If set to *paper*, the `x` position refers to the distance from the left of the plotting area in normalized coordinates where *0* (*1*) corresponds to the left (right). If set to a x axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the left of the domain of that axis: e.g., *x2 domain* refers to the domain of the second x axis and a x position of 0.5 refers to the point between the left and the right of the domain of the second x axis. If an array of axis IDs is provided, each `x` value will refer to the corresponding axis, e.g., ['x', 'x2'] for a rectangle, line, or circle means `x0` uses the `x` axis and `x1` uses the `x2` axis. Path shapes using an array should have one entry for each x coordinate in the string. */ xref?: 'paper' | '/^x([2-9]|[1-9][0-9]+)?( domain)?$/' | ('paper' | '/^x([2-9]|[1-9][0-9]+)?( domain)?$/')[]; - /** Sets the shapes's sizing mode along the x axis. If set to *scaled*, `x0`, `x1` and x coordinates within `path` refer to data values on the x axis or a fraction of the plot area's width (`xref` set to *paper*). If set to *pixel*, `xanchor` specifies the x position in terms of data or plot fraction but `x0`, `x1` and x coordinates within `path` are pixels relative to `xanchor`. This way, the shape can have a fixed width while maintaining a position relative to data or plot fraction. Note: `xsizemode` *pixel* is not supported when `xref` is an array. */ + /** + * Sets the shapes's sizing mode along the x axis. If set to *scaled*, `x0`, `x1` and x coordinates within `path` refer to data values on the x axis or a fraction of the plot area's width (`xref` set to *paper*). If set to *pixel*, `xanchor` specifies the x position in terms of data or plot fraction but `x0`, `x1` and x coordinates within `path` are pixels relative to `xanchor`. This way, the shape can have a fixed width while maintaining a position relative to data or plot fraction. Note: `xsizemode` *pixel* is not supported when `xref` is an array. + * @default 'scaled' + */ xsizemode?: 'scaled' | 'pixel'; /** Sets the shape's starting y position. See `type` and `ysizemode` for more info. */ y0?: any; - /** Shifts `y0` away from the center of the category when `yref` is a *category* or *multicategory* axis. -0.5 corresponds to the start of the category and 0.5 corresponds to the end of the category. */ + /** + * Shifts `y0` away from the center of the category when `yref` is a *category* or *multicategory* axis. -0.5 corresponds to the start of the category and 0.5 corresponds to the end of the category. + * @default 0 + * Range: [-1, 1] + */ y0shift?: number; /** Sets the shape's end y position. See `type` and `ysizemode` for more info. */ y1?: any; - /** Shifts `y1` away from the center of the category when `yref` is a *category* or *multicategory* axis. -0.5 corresponds to the start of the category and 0.5 corresponds to the end of the category. */ + /** + * Shifts `y1` away from the center of the category when `yref` is a *category* or *multicategory* axis. -0.5 corresponds to the start of the category and 0.5 corresponds to the end of the category. + * @default 0 + * Range: [-1, 1] + */ y1shift?: number; /** Only relevant in conjunction with `ysizemode` set to *pixel*. Specifies the anchor point on the y axis to which `y0`, `y1` and y coordinates within `path` are relative to. E.g. useful to attach a pixel sized shape to a certain data value. No effect when `ysizemode` not set to *pixel*. */ yanchor?: any; /** Sets the shape's y coordinate axis. If set to a y axis id (e.g. *y* or *y2*), the `y` position refers to a y coordinate. If set to *paper*, the `y` position refers to the distance from the bottom of the plotting area in normalized coordinates where *0* (*1*) corresponds to the bottom (top). If set to a y axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the bottom of the domain of that axis: e.g., *y2 domain* refers to the domain of the second y axis and a y position of 0.5 refers to the point between the bottom and the top of the domain of the second y axis. If an array of axis IDs is provided, each `y` value will refer to the corresponding axis, e.g., ['y', 'y2'] for a rectangle, line, or circle means `y0` uses the `y` axis and `y1` uses the `y2` axis. Path shapes using an array should have one entry for each y coordinate in the string. */ yref?: 'paper' | '/^y([2-9]|[1-9][0-9]+)?( domain)?$/' | ('paper' | '/^y([2-9]|[1-9][0-9]+)?( domain)?$/')[]; - /** Sets the shapes's sizing mode along the y axis. If set to *scaled*, `y0`, `y1` and y coordinates within `path` refer to data values on the y axis or a fraction of the plot area's height (`yref` set to *paper*). If set to *pixel*, `yanchor` specifies the y position in terms of data or plot fraction but `y0`, `y1` and y coordinates within `path` are pixels relative to `yanchor`. This way, the shape can have a fixed height while maintaining a position relative to data or plot fraction. Note: `ysizemode` *pixel* is not supported when `yref` is an array. */ + /** + * Sets the shapes's sizing mode along the y axis. If set to *scaled*, `y0`, `y1` and y coordinates within `path` refer to data values on the y axis or a fraction of the plot area's height (`yref` set to *paper*). If set to *pixel*, `yanchor` specifies the y position in terms of data or plot fraction but `y0`, `y1` and y coordinates within `path` are pixels relative to `yanchor`. This way, the shape can have a fixed height while maintaining a position relative to data or plot fraction. Note: `ysizemode` *pixel* is not supported when `yref` is an array. + * @default 'scaled' + */ ysizemode?: 'scaled' | 'pixel'; } export interface Slider { - /** Determines which button (by index starting from 0) is considered active. */ + /** + * Determines which button (by index starting from 0) is considered active. + * @default 0 + * Minimum: 0 + */ active?: number; - /** Sets the background color of the slider grip while dragging. */ + /** + * Sets the background color of the slider grip while dragging. + * @default '#dbdde0' + */ activebgcolor?: Color; - /** Sets the background color of the slider. */ + /** + * Sets the background color of the slider. + * @default '#f8fafc' + */ bgcolor?: Color; - /** Sets the color of the border enclosing the slider. */ + /** + * Sets the color of the border enclosing the slider. + * @default '#bec8d9' + */ bordercolor?: Color; - /** Sets the width (in px) of the border enclosing the slider. */ + /** + * Sets the width (in px) of the border enclosing the slider. + * @default 1 + * Minimum: 0 + */ borderwidth?: number; currentvalue?: { /** Sets the font of the current value label text. */ font?: Font; - /** The amount of space, in pixels, between the current value label and the slider. */ + /** + * The amount of space, in pixels, between the current value label and the slider. + * @default 10 + */ offset?: number; /** When currentvalue.visible is true, this sets the prefix of the label. */ prefix?: string; /** When currentvalue.visible is true, this sets the suffix of the label. */ suffix?: string; - /** Shows the currently-selected value above the slider. */ + /** + * Shows the currently-selected value above the slider. + * @default true + */ visible?: boolean; - /** The alignment of the value readout relative to the length of the slider. */ + /** + * The alignment of the value readout relative to the length of the slider. + * @default 'left' + */ xanchor?: 'left' | 'center' | 'right'; }; /** Sets the font of the slider step labels. */ font?: Font; - /** Sets the length of the slider This measure excludes the padding of both ends. That is, the slider's length is this length minus the padding on both ends. */ + /** + * Sets the length of the slider This measure excludes the padding of both ends. That is, the slider's length is this length minus the padding on both ends. + * @default 1 + * Minimum: 0 + */ len?: number; - /** Determines whether this slider length is set in units of plot *fraction* or in *pixels. Use `len` to set the value. */ + /** + * Determines whether this slider length is set in units of plot *fraction* or in *pixels. Use `len` to set the value. + * @default 'fraction' + */ lenmode?: 'fraction' | 'pixels'; - /** Sets the length in pixels of minor step tick marks */ + /** + * Sets the length in pixels of minor step tick marks + * @default 4 + * Minimum: 0 + */ minorticklen?: number; /** When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template. */ name?: string; /** Set the padding of the slider component along each side. */ pad?: { - /** The amount of padding (in px) along the bottom of the component. */ + /** + * The amount of padding (in px) along the bottom of the component. + * @default 0 + */ b?: number; - /** The amount of padding (in px) on the left side of the component. */ + /** + * The amount of padding (in px) on the left side of the component. + * @default 0 + */ l?: number; - /** The amount of padding (in px) on the right side of the component. */ + /** + * The amount of padding (in px) on the right side of the component. + * @default 0 + */ r?: number; - /** The amount of padding (in px) along the top of the component. */ + /** + * The amount of padding (in px) along the top of the component. + * @default 20 + */ t?: number; }; steps?: Array<{ /** Sets the arguments values to be passed to the Plotly method set in `method` on slide. */ args?: any[]; - /** When true, the API method is executed. When false, all other behaviors are the same and command execution is skipped. This may be useful when hooking into, for example, the `plotly_sliderchange` method and executing the API command manually without losing the benefit of the slider automatically binding to the state of the plot through the specification of `method` and `args`. */ + /** + * When true, the API method is executed. When false, all other behaviors are the same and command execution is skipped. This may be useful when hooking into, for example, the `plotly_sliderchange` method and executing the API command manually without losing the benefit of the slider automatically binding to the state of the plot through the specification of `method` and `args`. + * @default true + */ execute?: boolean; /** Sets the text label to appear on the slider */ label?: string; - /** Sets the Plotly method to be called when the slider value is changed. If the `skip` method is used, the API slider will function as normal but will perform no API calls and will not bind automatically to state updates. This may be used to create a component interface and attach to slider events manually via JavaScript. */ + /** + * Sets the Plotly method to be called when the slider value is changed. If the `skip` method is used, the API slider will function as normal but will perform no API calls and will not bind automatically to state updates. This may be used to create a component interface and attach to slider events manually via JavaScript. + * @default 'restyle' + */ method?: 'restyle' | 'relayout' | 'animate' | 'update' | 'skip'; /** When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template. */ name?: string; @@ -8780,54 +16007,109 @@ export interface Slider { templateitemname?: string; /** Sets the value of the slider step, used to refer to the step programatically. Defaults to the slider label if not provided. */ value?: string; - /** Determines whether or not this step is included in the slider. */ + /** + * Determines whether or not this step is included in the slider. + * @default true + */ visible?: boolean; }>; /** Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`. */ templateitemname?: string; - /** Sets the color of the border enclosing the slider. */ + /** + * Sets the color of the border enclosing the slider. + * @default '#333' + */ tickcolor?: Color; - /** Sets the length in pixels of step tick marks */ + /** + * Sets the length in pixels of step tick marks + * @default 7 + * Minimum: 0 + */ ticklen?: number; - /** Sets the tick width (in px). */ + /** + * Sets the tick width (in px). + * @default 1 + * Minimum: 0 + */ tickwidth?: number; transition?: { - /** Sets the duration of the slider transition */ + /** + * Sets the duration of the slider transition + * @default 150 + * Minimum: 0 + */ duration?: number; - /** Sets the easing function of the slider transition */ + /** + * Sets the easing function of the slider transition + * @default 'cubic-in-out' + */ easing?: TransitionEasing; }; - /** Determines whether or not the slider is visible. */ + /** + * Determines whether or not the slider is visible. + * @default true + */ visible?: boolean; - /** Sets the x position (in normalized coordinates) of the slider. */ + /** + * Sets the x position (in normalized coordinates) of the slider. + * @default 0 + * Range: [-2, 3] + */ x?: number; - /** Sets the slider's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the range selector. */ + /** + * Sets the slider's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the range selector. + * @default 'left' + */ xanchor?: 'auto' | 'left' | 'center' | 'right'; - /** Sets the y position (in normalized coordinates) of the slider. */ + /** + * Sets the y position (in normalized coordinates) of the slider. + * @default 0 + * Range: [-2, 3] + */ y?: number; - /** Sets the slider's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the range selector. */ + /** + * Sets the slider's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the range selector. + * @default 'top' + */ yanchor?: 'auto' | 'top' | 'middle' | 'bottom'; } export interface UpdateMenu { - /** Determines which button (by index starting from 0) is considered active. */ + /** + * Determines which button (by index starting from 0) is considered active. + * @default 0 + * Minimum: -1 + */ active?: number; /** Sets the background color of the update menu buttons. */ bgcolor?: Color; - /** Sets the color of the border enclosing the update menu. */ + /** + * Sets the color of the border enclosing the update menu. + * @default '#BEC8D9' + */ bordercolor?: Color; - /** Sets the width (in px) of the border enclosing the update menu. */ + /** + * Sets the width (in px) of the border enclosing the update menu. + * @default 1 + * Minimum: 0 + */ borderwidth?: number; buttons?: Array<{ /** Sets the arguments values to be passed to the Plotly method set in `method` on click. */ args?: any[]; /** Sets a 2nd set of `args`, these arguments values are passed to the Plotly method set in `method` when clicking this button while in the active state. Use this to create toggle buttons. */ args2?: any[]; - /** When true, the API method is executed. When false, all other behaviors are the same and command execution is skipped. This may be useful when hooking into, for example, the `plotly_buttonclicked` method and executing the API command manually without losing the benefit of the updatemenu automatically binding to the state of the plot through the specification of `method` and `args`. */ + /** + * When true, the API method is executed. When false, all other behaviors are the same and command execution is skipped. This may be useful when hooking into, for example, the `plotly_buttonclicked` method and executing the API command manually without losing the benefit of the updatemenu automatically binding to the state of the plot through the specification of `method` and `args`. + * @default true + */ execute?: boolean; /** Sets the text label to appear on the button. */ label?: string; - /** Sets the Plotly method to be called on click. If the `skip` method is used, the API updatemenu will function as normal but will perform no API calls and will not bind automatically to state updates. This may be used to create a component interface and attach to updatemenu events manually via JavaScript. */ + /** + * Sets the Plotly method to be called on click. If the `skip` method is used, the API updatemenu will function as normal but will perform no API calls and will not bind automatically to state updates. This may be used to create a component interface and attach to updatemenu events manually via JavaScript. + * @default 'restyle' + */ method?: 'restyle' | 'relayout' | 'animate' | 'update' | 'skip'; /** When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template. */ name?: string; @@ -8836,7 +16118,10 @@ export interface UpdateMenu { /** Determines whether or not this button is visible. */ visible?: boolean; }>; - /** Determines the direction in which the buttons are laid out, whether in a dropdown menu or a row/column of buttons. For `left` and `up`, the buttons will still appear in left-to-right or top-to-bottom order respectively. */ + /** + * Determines the direction in which the buttons are laid out, whether in a dropdown menu or a row/column of buttons. For `left` and `up`, the buttons will still appear in left-to-right or top-to-bottom order respectively. + * @default 'down' + */ direction?: 'left' | 'right' | 'up' | 'down'; /** Sets the font of the update menu button text. */ font?: Font; @@ -8844,30 +16129,62 @@ export interface UpdateMenu { name?: string; /** Sets the padding around the buttons or dropdown menu. */ pad?: { - /** The amount of padding (in px) along the bottom of the component. */ + /** + * The amount of padding (in px) along the bottom of the component. + * @default 0 + */ b?: number; - /** The amount of padding (in px) on the left side of the component. */ + /** + * The amount of padding (in px) on the left side of the component. + * @default 0 + */ l?: number; - /** The amount of padding (in px) on the right side of the component. */ + /** + * The amount of padding (in px) on the right side of the component. + * @default 0 + */ r?: number; - /** The amount of padding (in px) along the top of the component. */ + /** + * The amount of padding (in px) along the top of the component. + * @default 0 + */ t?: number; }; - /** Highlights active dropdown item or active button if true. */ + /** + * Highlights active dropdown item or active button if true. + * @default true + */ showactive?: boolean; /** Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`. */ templateitemname?: string; - /** Determines whether the buttons are accessible via a dropdown menu or whether the buttons are stacked horizontally or vertically */ + /** + * Determines whether the buttons are accessible via a dropdown menu or whether the buttons are stacked horizontally or vertically + * @default 'dropdown' + */ type?: 'dropdown' | 'buttons'; /** Determines whether or not the update menu is visible. */ visible?: boolean; - /** Sets the x position (in normalized coordinates) of the update menu. */ + /** + * Sets the x position (in normalized coordinates) of the update menu. + * @default -0.05 + * Range: [-2, 3] + */ x?: number; - /** Sets the update menu's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the range selector. */ + /** + * Sets the update menu's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the range selector. + * @default 'right' + */ xanchor?: 'auto' | 'left' | 'center' | 'right'; - /** Sets the y position (in normalized coordinates) of the update menu. */ + /** + * Sets the y position (in normalized coordinates) of the update menu. + * @default 1 + * Range: [-2, 3] + */ y?: number; - /** Sets the update menu's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the range selector. */ + /** + * Sets the update menu's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the range selector. + * @default 'top' + */ yanchor?: 'auto' | 'top' | 'middle' | 'bottom'; } @@ -8877,15 +16194,29 @@ export interface UpdateMenu { export interface Layout { activeselection?: { - /** Sets the color filling the active selection' interior. */ + /** + * Sets the color filling the active selection' interior. + * @default 'rgba(0,0,0,0)' + */ fillcolor?: Color; - /** Sets the opacity of the active selection. */ + /** + * Sets the opacity of the active selection. + * @default 0.5 + * Range: [0, 1] + */ opacity?: number; }; activeshape?: { - /** Sets the color filling the active shape' interior. */ + /** + * Sets the color filling the active shape' interior. + * @default 'rgb(255,0,255)' + */ fillcolor?: Color; - /** Sets the opacity of the active shape. */ + /** + * Sets the opacity of the active shape. + * @default 0.5 + * Range: [0, 1] + */ opacity?: number; }; annotations?: Annotation[]; @@ -8896,11 +16227,20 @@ export interface Layout { clickmode?: 'event' | 'select' | 'none' | (string & {}); coloraxis?: ColorAxis; colorscale?: { - /** Sets the default diverging colorscale. Note that `autocolorscale` must be true for this attribute to work. */ + /** + * Sets the default diverging colorscale. Note that `autocolorscale` must be true for this attribute to work. + * @default [[0,"rgb(5,10,172)"],[0.35,"rgb(106,137,247)"],[0.5,"rgb(190,190,190)"],[0.6,"rgb(220,170,132)"],[0.7,"rgb(230,145,90)"],[1,"rgb(178,10,28)"]] + */ diverging?: ColorScale; - /** Sets the default sequential colorscale for positive values. Note that `autocolorscale` must be true for this attribute to work. */ + /** + * Sets the default sequential colorscale for positive values. Note that `autocolorscale` must be true for this attribute to work. + * @default [[0,"rgb(220,220,220)"],[0.2,"rgb(245,195,157)"],[0.4,"rgb(245,160,105)"],[1,"rgb(178,10,28)"]] + */ sequential?: ColorScale; - /** Sets the default sequential colorscale for negative values. Note that `autocolorscale` must be true for this attribute to work. */ + /** + * Sets the default sequential colorscale for negative values. Note that `autocolorscale` must be true for this attribute to work. + * @default [[0,"rgb(5,10,172)"],[0.35,"rgb(40,60,190)"],[0.5,"rgb(70,100,245)"],[0.6,"rgb(90,120,245)"],[0.7,"rgb(106,137,247)"],[1,"rgb(220,220,220)"]] + */ sequentialminus?: ColorScale; }; colorway?: Color[]; @@ -8911,33 +16251,63 @@ export interface Layout { font?: Font; geo?: GeoLayout; grid?: { - /** The number of columns in the grid. If you provide a 2D `subplots` array, the length of its longest row is used as the default. If you give an `xaxes` array, its length is used as the default. But it's also possible to have a different length, if you want to leave a row at the end for non-cartesian subplots. */ + /** + * The number of columns in the grid. If you provide a 2D `subplots` array, the length of its longest row is used as the default. If you give an `xaxes` array, its length is used as the default. But it's also possible to have a different length, if you want to leave a row at the end for non-cartesian subplots. + * Minimum: 1 + */ columns?: number; domain?: { - /** Sets the horizontal domain of this grid subplot (in plot fraction). The first and last cells end exactly at the domain edges, with no grout around the edges. */ + /** + * Sets the horizontal domain of this grid subplot (in plot fraction). The first and last cells end exactly at the domain edges, with no grout around the edges. + * @default [0,1] + */ x?: [number, number]; - /** Sets the vertical domain of this grid subplot (in plot fraction). The first and last cells end exactly at the domain edges, with no grout around the edges. */ + /** + * Sets the vertical domain of this grid subplot (in plot fraction). The first and last cells end exactly at the domain edges, with no grout around the edges. + * @default [0,1] + */ y?: [number, number]; }; - /** If no `subplots`, `xaxes`, or `yaxes` are given but we do have `rows` and `columns`, we can generate defaults using consecutive axis IDs, in two ways: *coupled* gives one x axis per column and one y axis per row. *independent* uses a new xy pair for each cell, left-to-right across each row then iterating rows according to `roworder`. */ + /** + * If no `subplots`, `xaxes`, or `yaxes` are given but we do have `rows` and `columns`, we can generate defaults using consecutive axis IDs, in two ways: *coupled* gives one x axis per column and one y axis per row. *independent* uses a new xy pair for each cell, left-to-right across each row then iterating rows according to `roworder`. + * @default 'coupled' + */ pattern?: 'independent' | 'coupled'; - /** Is the first row the top or the bottom? Note that columns are always enumerated from left to right. */ + /** + * Is the first row the top or the bottom? Note that columns are always enumerated from left to right. + * @default 'top to bottom' + */ roworder?: 'top to bottom' | 'bottom to top'; - /** The number of rows in the grid. If you provide a 2D `subplots` array or a `yaxes` array, its length is used as the default. But it's also possible to have a different length, if you want to leave a row at the end for non-cartesian subplots. */ + /** + * The number of rows in the grid. If you provide a 2D `subplots` array or a `yaxes` array, its length is used as the default. But it's also possible to have a different length, if you want to leave a row at the end for non-cartesian subplots. + * Minimum: 1 + */ rows?: number; /** Used for freeform grids, where some axes may be shared across subplots but others are not. Each entry should be a cartesian subplot id, like *xy* or *x3y2*, or ** to leave that cell empty. You may reuse x axes within the same column, and y axes within the same row. Non-cartesian subplots and traces that support `domain` can place themselves in this grid separately using the `gridcell` attribute. */ subplots?: any[]; /** Used with `yaxes` when the x and y axes are shared across columns and rows. Each entry should be an x axis id like *x*, *x2*, etc., or ** to not put an x axis in that column. Entries other than ** must be unique. Ignored if `subplots` is present. If missing but `yaxes` is present, will generate consecutive IDs. */ xaxes?: any[]; - /** Horizontal space between grid cells, expressed as a fraction of the total width available to one cell. Defaults to 0.1 for coupled-axes grids and 0.2 for independent grids. */ + /** + * Horizontal space between grid cells, expressed as a fraction of the total width available to one cell. Defaults to 0.1 for coupled-axes grids and 0.2 for independent grids. + * Range: [0, 1] + */ xgap?: number; - /** Sets where the x axis labels and titles go. *bottom* means the very bottom of the grid. *bottom plot* is the lowest plot that each x axis is used in. *top* and *top plot* are similar. */ + /** + * Sets where the x axis labels and titles go. *bottom* means the very bottom of the grid. *bottom plot* is the lowest plot that each x axis is used in. *top* and *top plot* are similar. + * @default 'bottom plot' + */ xside?: 'bottom' | 'bottom plot' | 'top plot' | 'top'; /** Used with `yaxes` when the x and y axes are shared across columns and rows. Each entry should be an y axis id like *y*, *y2*, etc., or ** to not put a y axis in that row. Entries other than ** must be unique. Ignored if `subplots` is present. If missing but `xaxes` is present, will generate consecutive IDs. */ yaxes?: any[]; - /** Vertical space between grid cells, expressed as a fraction of the total height available to one cell. Defaults to 0.1 for coupled-axes grids and 0.3 for independent grids. */ + /** + * Vertical space between grid cells, expressed as a fraction of the total height available to one cell. Defaults to 0.1 for coupled-axes grids and 0.3 for independent grids. + * Range: [0, 1] + */ ygap?: number; - /** Sets where the y axis labels and titles go. *left* means the very left edge of the grid. *left plot* is the leftmost plot that each y axis is used in. *right* and *right plot* are similar. */ + /** + * Sets where the y axis labels and titles go. *left* means the very left edge of the grid. *left plot* is the leftmost plot that each y axis is used in. *right* and *right plot* are similar. + * @default 'left plot' + */ yside?: 'left' | 'left plot' | 'right plot' | 'right'; }; height?: number; @@ -8945,7 +16315,10 @@ export interface Layout { hoveranywhere?: boolean; hoverdistance?: number; hoverlabel?: { - /** Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines */ + /** + * Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines + * @default 'auto' + */ align?: 'left' | 'right' | 'auto'; /** Sets the background color of all hover labels on graph */ bgcolor?: Color; @@ -8955,9 +16328,16 @@ export interface Layout { font?: Font; /** Sets the font for group titles in hover (unified modes). Defaults to `hoverlabel.font`. */ grouptitlefont?: Font; - /** Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis. */ + /** + * Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis. + * @default 15 + * Minimum: -1 + */ namelength?: number; - /** Sets whether or not to show the hover label arrow/triangle pointing to the data point. */ + /** + * Sets whether or not to show the hover label arrow/triangle pointing to the data point. + * @default true + */ showarrow?: boolean; }; hovermode?: 'x' | 'y' | 'closest' | false | 'x unified' | 'y unified'; @@ -8968,17 +16348,40 @@ export interface Layout { map?: MapLayout; mapbox?: MapLayout; margin?: { - /** Turns on/off margin expansion computations. Legends, colorbars, updatemenus, sliders, axis rangeselector and rangeslider are allowed to push the margins by defaults. */ + /** + * Turns on/off margin expansion computations. Legends, colorbars, updatemenus, sliders, axis rangeselector and rangeslider are allowed to push the margins by defaults. + * @default true + */ autoexpand?: boolean; - /** Sets the bottom margin (in px). */ + /** + * Sets the bottom margin (in px). + * @default 80 + * Minimum: 0 + */ b?: number; - /** Sets the left margin (in px). */ + /** + * Sets the left margin (in px). + * @default 80 + * Minimum: 0 + */ l?: number; - /** Sets the amount of padding (in px) between the plotting area and the axis lines */ + /** + * Sets the amount of padding (in px) between the plotting area and the axis lines + * @default 0 + * Minimum: 0 + */ pad?: number; - /** Sets the right margin (in px). */ + /** + * Sets the right margin (in px). + * @default 80 + * Minimum: 0 + */ r?: number; - /** Sets the top margin (in px). */ + /** + * Sets the top margin (in px). + * @default 100 + * Minimum: 0 + */ t?: number; }; meta?: any; @@ -8993,7 +16396,10 @@ export interface Layout { bgcolor?: Color; /** Sets the color of the icons in the modebar. */ color?: Color; - /** Sets the orientation of the modebar. */ + /** + * Sets the orientation of the modebar. + * @default 'h' + */ orientation?: 'v' | 'h'; /** Determines which predefined modebar buttons to remove. Similar to `config.modeBarButtonsToRemove` option. This may include *autoScale2d*, *autoscale*, *editInChartStudio*, *editinchartstudio*, *hoverCompareCartesian*, *hovercompare*, *lasso*, *lasso2d*, *orbitRotation*, *orbitrotation*, *pan*, *pan2d*, *pan3d*, *reset*, *resetCameraDefault3d*, *resetCameraLastSave3d*, *resetGeo*, *resetSankeyGroup*, *resetScale2d*, *resetViewMap*, *resetViewMapbox*, *resetViews*, *resetcameradefault*, *resetcameralastsave*, *resetsankeygroup*, *resetscale*, *resetview*, *resetviews*, *select*, *select2d*, *sendDataToCloud*, *senddatatocloud*, *tableRotation*, *tablerotation*, *toImage*, *toggleHover*, *toggleSpikelines*, *togglehover*, *togglespikelines*, *toimage*, *zoom*, *zoom2d*, *zoom3d*, *zoomIn2d*, *zoomInGeo*, *zoomInMap*, *zoomInMapbox*, *zoomOut2d*, *zoomOutGeo*, *zoomOutMap*, *zoomOutMapbox*, *zoomin*, *zoomout*. */ remove?: string | string[]; @@ -9004,67 +16410,128 @@ export interface Layout { line?: { /** Sets the line color. By default uses either dark grey or white to increase contrast with background color. */ color?: Color; - /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'dot' + */ dash?: Dash; - /** Sets the line width (in px). */ + /** + * Sets the line width (in px). + * @default 1 + * Minimum: 1 + */ width?: number; }; - /** Describes how a new selection is created. If `immediate`, a new selection is created after first mouse up. If `gradual`, a new selection is not created after first mouse. By adding to and subtracting from the initial selection, this option allows declaring extra outlines of the selection. */ + /** + * Describes how a new selection is created. If `immediate`, a new selection is created after first mouse up. If `gradual`, a new selection is not created after first mouse. By adding to and subtracting from the initial selection, this option allows declaring extra outlines of the selection. + * @default 'immediate' + */ mode?: 'immediate' | 'gradual'; }; newshape?: { - /** When `dragmode` is set to *drawrect*, *drawline* or *drawcircle* this limits the drag to be horizontal, vertical or diagonal. Using *diagonal* there is no limit e.g. in drawing lines in any direction. *ortho* limits the draw to be either horizontal or vertical. *horizontal* allows horizontal extend. *vertical* allows vertical extend. */ + /** + * When `dragmode` is set to *drawrect*, *drawline* or *drawcircle* this limits the drag to be horizontal, vertical or diagonal. Using *diagonal* there is no limit e.g. in drawing lines in any direction. *ortho* limits the draw to be either horizontal or vertical. *horizontal* allows horizontal extend. *vertical* allows vertical extend. + * @default 'diagonal' + */ drawdirection?: 'ortho' | 'horizontal' | 'vertical' | 'diagonal'; - /** Sets the color filling new shapes' interior. Please note that if using a fillcolor with alpha greater than half, drag inside the active shape starts moving the shape underneath, otherwise a new shape could be started over. */ + /** + * Sets the color filling new shapes' interior. Please note that if using a fillcolor with alpha greater than half, drag inside the active shape starts moving the shape underneath, otherwise a new shape could be started over. + * @default 'rgba(0,0,0,0)' + */ fillcolor?: Color; - /** Determines the path's interior. For more info please visit https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/fill-rule */ + /** + * Determines the path's interior. For more info please visit https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/fill-rule + * @default 'evenodd' + */ fillrule?: 'evenodd' | 'nonzero'; label?: { /** Sets the new shape label text font. */ font?: Font; - /** Sets padding (in px) between edge of label and edge of new shape. */ + /** + * Sets padding (in px) between edge of label and edge of new shape. + * @default 3 + * Minimum: 0 + */ padding?: number; /** Sets the text to display with the new shape. It is also used for legend item if `name` is not provided. */ text?: string; - /** Sets the angle at which the label text is drawn with respect to the horizontal. For lines, angle *auto* is the same angle as the line. For all other shapes, angle *auto* is horizontal. */ + /** + * Sets the angle at which the label text is drawn with respect to the horizontal. For lines, angle *auto* is the same angle as the line. For all other shapes, angle *auto* is horizontal. + * @default 'auto' + */ textangle?: number | 'auto'; /** Sets the position of the label text relative to the new shape. Supported values for rectangles, circles and paths are *top left*, *top center*, *top right*, *middle left*, *middle center*, *middle right*, *bottom left*, *bottom center*, and *bottom right*. Supported values for lines are *start*, *middle*, and *end*. Default: *middle center* for rectangles, circles, and paths; *middle* for lines. */ textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right' | 'start' | 'middle' | 'end'; /** Template string used for rendering the new shape's label. Note that this will override `text`. Variables are inserted using %{variable}, for example "x0: %{x0}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{x0:$.2f}". See https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{x0|%m %b %Y}". See https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. A single multiplication or division operation may be applied to numeric variables, and combined with d3 number formatting, for example "Length in cm: %{x0*2.54}", "%{slope*60:.1f} meters per second." For log axes, variable values are given in log units. For date axes, x/y coordinate variables and center variables use datetimes, while all other variable values use values in ms. Finally, the template string has access to variables `x0`, `x1`, `y0`, `y1`, `slope`, `dx`, `dy`, `width`, `height`, `length`, `xcenter`, `ycenter`, `simpleXVariables` and `simpleYVariables`. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. */ texttemplate?: string; - /** Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. */ + /** + * Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed. + * @default '-' + */ texttemplatefallback?: any; - /** Sets the label's horizontal position anchor This anchor binds the specified `textposition` to the *left*, *center* or *right* of the label text. For example, if `textposition` is set to *top right* and `xanchor` to *right* then the right-most portion of the label text lines up with the right-most edge of the new shape. */ + /** + * Sets the label's horizontal position anchor This anchor binds the specified `textposition` to the *left*, *center* or *right* of the label text. For example, if `textposition` is set to *top right* and `xanchor` to *right* then the right-most portion of the label text lines up with the right-most edge of the new shape. + * @default 'auto' + */ xanchor?: 'auto' | 'left' | 'center' | 'right'; /** Sets the label's vertical position anchor This anchor binds the specified `textposition` to the *top*, *middle* or *bottom* of the label text. For example, if `textposition` is set to *top right* and `yanchor` to *top* then the top-most portion of the label text lines up with the top-most edge of the new shape. */ yanchor?: 'top' | 'middle' | 'bottom'; }; - /** Specifies whether new shapes are drawn below gridlines (*below*), between gridlines and traces (*between*) or above traces (*above*). */ + /** + * Specifies whether new shapes are drawn below gridlines (*below*), between gridlines and traces (*between*) or above traces (*above*). + * @default 'above' + */ layer?: 'below' | 'above' | 'between'; - /** Sets the reference to a legend to show new shape in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. */ + /** + * Sets the reference to a legend to show new shape in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ legend?: string; /** Sets the legend group for new shape. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ legendgroup?: string; legendgrouptitle?: LegendGroupTitle; - /** Sets the legend rank for new shape. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. */ + /** + * Sets the legend rank for new shape. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. + * @default 1000 + */ legendrank?: number; - /** Sets the width (in px or fraction) of the legend for new shape. */ + /** + * Sets the width (in px or fraction) of the legend for new shape. + * Minimum: 0 + */ legendwidth?: number; line?: { /** Sets the line color. By default uses either dark grey or white to increase contrast with background color. */ color?: Color; - /** Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). */ + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ dash?: Dash; - /** Sets the line width (in px). */ + /** + * Sets the line width (in px). + * @default 4 + * Minimum: 0 + */ width?: number; }; /** Sets new shape name. The name appears as the legend item. */ name?: string; - /** Sets the opacity of new shapes. */ + /** + * Sets the opacity of new shapes. + * @default 1 + * Range: [0, 1] + */ opacity?: number; - /** Determines whether or not new shape is shown in the legend. */ + /** + * Determines whether or not new shape is shown in the legend. + * @default false + */ showlegend?: boolean; - /** Determines whether or not new shape is visible. If *legendonly*, the shape is not drawn, but can appear as a legend item (provided that the legend itself is visible). */ + /** + * Determines whether or not new shape is visible. If *legendonly*, the shape is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ visible?: true | false | 'legendonly'; }; paper_bgcolor?: Color; @@ -9083,43 +16550,85 @@ export interface Layout { template?: any; ternary?: TernaryLayout; title?: { - /** Determines whether the title can automatically push the figure margins. If `yref='paper'` then the margin will expand to ensure that the title doesn’t overlap with the edges of the container. If `yref='container'` then the margins will ensure that the title doesn’t overlap with the plot area, tick labels, and axis titles. If `automargin=true` and the margins need to be expanded, then y will be set to a default 1 and yanchor will be set to an appropriate default to ensure that minimal margin space is needed. Note that when `yref='paper'`, only 1 or 0 are allowed y values. Invalid values will be reset to the default 1. */ + /** + * Determines whether the title can automatically push the figure margins. If `yref='paper'` then the margin will expand to ensure that the title doesn’t overlap with the edges of the container. If `yref='container'` then the margins will ensure that the title doesn’t overlap with the plot area, tick labels, and axis titles. If `automargin=true` and the margins need to be expanded, then y will be set to a default 1 and yanchor will be set to an appropriate default to ensure that minimal margin space is needed. Note that when `yref='paper'`, only 1 or 0 are allowed y values. Invalid values will be reset to the default 1. + * @default false + */ automargin?: boolean; /** Sets the title font. */ font?: Font; /** Sets the padding of the title. Each padding value only applies when the corresponding `xanchor`/`yanchor` value is set accordingly. E.g. for left padding to take effect, `xanchor` must be set to *left*. The same rule applies if `xanchor`/`yanchor` is determined automatically. Padding is muted if the respective anchor value is *middle*\/*center*. */ pad?: { - /** The amount of padding (in px) along the bottom of the component. */ + /** + * The amount of padding (in px) along the bottom of the component. + * @default 0 + */ b?: number; - /** The amount of padding (in px) on the left side of the component. */ + /** + * The amount of padding (in px) on the left side of the component. + * @default 0 + */ l?: number; - /** The amount of padding (in px) on the right side of the component. */ + /** + * The amount of padding (in px) on the right side of the component. + * @default 0 + */ r?: number; - /** The amount of padding (in px) along the top of the component. */ + /** + * The amount of padding (in px) along the top of the component. + * @default 0 + */ t?: number; }; subtitle?: LegendGroupTitle; /** Sets the plot's title. */ text?: string; - /** Sets the x position with respect to `xref` in normalized coordinates from *0* (left) to *1* (right). */ + /** + * Sets the x position with respect to `xref` in normalized coordinates from *0* (left) to *1* (right). + * @default 0.5 + * Range: [0, 1] + */ x?: number; - /** Sets the title's horizontal alignment with respect to its x position. *left* means that the title starts at x, *right* means that the title ends at x and *center* means that the title's center is at x. *auto* divides `xref` by three and calculates the `xanchor` value automatically based on the value of `x`. */ + /** + * Sets the title's horizontal alignment with respect to its x position. *left* means that the title starts at x, *right* means that the title ends at x and *center* means that the title's center is at x. *auto* divides `xref` by three and calculates the `xanchor` value automatically based on the value of `x`. + * @default 'auto' + */ xanchor?: 'auto' | 'left' | 'center' | 'right'; - /** Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only. */ + /** + * Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only. + * @default 'container' + */ xref?: YRef; - /** Sets the y position with respect to `yref` in normalized coordinates from *0* (bottom) to *1* (top). *auto* places the baseline of the title onto the vertical center of the top margin. */ + /** + * Sets the y position with respect to `yref` in normalized coordinates from *0* (bottom) to *1* (top). *auto* places the baseline of the title onto the vertical center of the top margin. + * @default 'auto' + * Range: [0, 1] + */ y?: number; - /** Sets the title's vertical alignment with respect to its y position. *top* means that the title's cap line is at y, *bottom* means that the title's baseline is at y and *middle* means that the title's midline is at y. *auto* divides `yref` by three and calculates the `yanchor` value automatically based on the value of `y`. */ + /** + * Sets the title's vertical alignment with respect to its y position. *top* means that the title's cap line is at y, *bottom* means that the title's baseline is at y and *middle* means that the title's midline is at y. *auto* divides `yref` by three and calculates the `yanchor` value automatically based on the value of `y`. + * @default 'auto' + */ yanchor?: 'auto' | 'top' | 'middle' | 'bottom'; - /** Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only. */ + /** + * Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only. + * @default 'container' + */ yref?: YRef; }; transition?: Transition; uirevision?: any; uniformtext?: { - /** Sets the minimum text size between traces of the same type. */ + /** + * Sets the minimum text size between traces of the same type. + * @default 0 + * Minimum: 0 + */ minsize?: number; - /** Determines how the font size for various text elements are uniformed between each trace type. If the computed text sizes were smaller than the minimum size defined by `uniformtext.minsize` using *hide* option hides the text; and using *show* option shows the text without further downscaling. Please note that if the size defined by `minsize` is greater than the font size defined by trace, then the `minsize` is used. */ + /** + * Determines how the font size for various text elements are uniformed between each trace type. If the computed text sizes were smaller than the minimum size defined by `uniformtext.minsize` using *hide* option hides the text; and using *show* option shows the text without further downscaling. Please note that if the size defined by `minsize` is greater than the font size defined by trace, then the `minsize` is used. + * @default false + */ mode?: false | 'hide' | 'show'; }; updatemenus?: UpdateMenu[]; @@ -9146,12 +16655,21 @@ export interface Layout { // --------------------------------------------------------------------------- export interface AnimationOpts { - /** The direction in which to play the frames triggered by the animation call */ + /** + * The direction in which to play the frames triggered by the animation call + * @default 'forward' + */ direction?: 'forward' | 'reverse'; frame?: AnimationFrameOpts; - /** Play frames starting at the current frame instead of the beginning. */ + /** + * Play frames starting at the current frame instead of the beginning. + * @default false + */ fromcurrent?: boolean; - /** Describes how a new animate call interacts with currently-running animations. If `immediate`, current animations are interrupted and the new animation is started. If `next`, the current frame is allowed to complete, after which the new animation is started. If `afterall` all existing frames are animated to completion before the new animation is started. */ + /** + * Describes how a new animate call interacts with currently-running animations. If `immediate`, current animations are interrupted and the new animation is started. If `next`, the current frame is allowed to complete, after which the new animation is started. If `afterall` all existing frames are animated to completion before the new animation is started. + * @default 'afterall' + */ mode?: 'immediate' | 'next' | 'afterall'; transition?: Transition; } @@ -9172,24 +16690,54 @@ export interface Frame { } export interface Edits { - /** Determines if the main anchor of the annotation is editable. The main anchor corresponds to the text (if no arrow) or the arrow (which drags the whole thing leaving the arrow length & direction unchanged). */ + /** + * Determines if the main anchor of the annotation is editable. The main anchor corresponds to the text (if no arrow) or the arrow (which drags the whole thing leaving the arrow length & direction unchanged). + * @default false + */ annotationPosition?: boolean; - /** Has only an effect for annotations with arrows. Enables changing the length and direction of the arrow. */ + /** + * Has only an effect for annotations with arrows. Enables changing the length and direction of the arrow. + * @default false + */ annotationTail?: boolean; - /** Enables editing annotation text. */ + /** + * Enables editing annotation text. + * @default false + */ annotationText?: boolean; - /** Enables editing axis title text. */ + /** + * Enables editing axis title text. + * @default false + */ axisTitleText?: boolean; - /** Enables moving colorbars. */ + /** + * Enables moving colorbars. + * @default false + */ colorbarPosition?: boolean; - /** Enables editing colorbar title text. */ + /** + * Enables editing colorbar title text. + * @default false + */ colorbarTitleText?: boolean; - /** Enables moving the legend. */ + /** + * Enables moving the legend. + * @default false + */ legendPosition?: boolean; - /** Enables editing the trace name fields from the legend */ + /** + * Enables editing the trace name fields from the legend + * @default false + */ legendText?: boolean; - /** Enables moving shapes. */ + /** + * Enables moving shapes. + * @default false + */ shapePosition?: boolean; - /** Enables editing the global layout title. */ + /** + * Enables editing the global layout title. + * @default false + */ titleText?: boolean; } diff --git a/tasks/generate_schema_types.mjs b/tasks/generate_schema_types.mjs index 1c0f00cb9d7..e4e5da93a60 100644 --- a/tasks/generate_schema_types.mjs +++ b/tasks/generate_schema_types.mjs @@ -62,6 +62,33 @@ const VALUES_TO_COMMON_TYPE = new Map(); /** Attribute name patterns that should use a specific common type. */ const ATTR_NAME_OVERRIDES = new Map([['marker.symbol', 'MarkerSymbol']]); +/** + * Shared interfaces wrapped inside `export namespace _internal { ... }`. + * + * These are publicly importable but the namespace path signals they are + * either schema-internal helpers (AutoRangeOptions, Lighting, Stream), + * superseded by a hand-written alternative (ErrorY → ErrorBar), or have + * names that would mislead if surfaced directly (Marker is scatter-only, + * Line is the marker outline rather than the trace line). + * + * Inside the namespace, sibling references are bare (`line?: Line`); outside, + * references are prefixed (`marker?: _internal.Marker`) via `refName()`. + */ +const INTERNAL_INTERFACES = new Set([ + 'AutoRangeOptions', + 'ErrorY', + 'Lighting', + 'Line', + 'Marker', + 'Stream' +]); + +function refName(name, inInternalNamespace) { + if (inInternalNamespace) return name; + if (INTERNAL_INTERFACES.has(name)) return `_internal.${name}`; + return name; +} + /** * Walk the schema to find the canonical `values` array for each anchor in * `COMMON_TYPE_ANCHORS`. The first matching enumerated attribute wins. @@ -241,19 +268,75 @@ function simpleValType(valType) { } /** - * Format a schema description as a JSDoc comment block. - * Returns an array of lines (including the indent), or an empty array - * if the attribute has no description. + * Format schema attribute metadata as a JSDoc comment block. + * Emits the description plus `@default`, min/max bounds, and `impliedEdits` + * lines when present. Containers (no valType) only carry a description, so + * the extra-metadata branches are no-ops for them. * - * @param {string|undefined} description - * @param {string} indent + * @param {object|undefined} attr - The schema attribute object + * @param {string} indent - Indentation string for each emitted line * @returns {string[]} */ -function formatJSDoc(description, indent) { - if (!description) return []; - // Escape stray */ sequences that would close the JSDoc comment - const text = description.replace(/\*\//g, '*\\/'); - return [`${indent}/** ${text} */`]; +function formatJSDoc(attr, indent) { + if (!attr || typeof attr !== 'object') return []; + + const description = attr.description; + const tags = []; + + // @default — skip null and empty string (uninformative noise) + if ('dflt' in attr && attr.dflt !== null && attr.dflt !== '') { + let dfltStr; + if (typeof attr.dflt === 'string') { + dfltStr = `'${attr.dflt.replace(/'/g, "\\'")}'`; + } else if (Array.isArray(attr.dflt) || (typeof attr.dflt === 'object' && attr.dflt !== null)) { + dfltStr = JSON.stringify(attr.dflt); + } else { + dfltStr = String(attr.dflt); + } + tags.push(`@default ${dfltStr}`); + } + + // Numeric bounds + const hasMin = typeof attr.min === 'number'; + const hasMax = typeof attr.max === 'number'; + if (hasMin && hasMax) { + tags.push(`Range: [${attr.min}, ${attr.max}]`); + } else if (hasMin) { + tags.push(`Minimum: ${attr.min}`); + } else if (hasMax) { + tags.push(`Maximum: ${attr.max}`); + } + + // impliedEdits — attributes that get reset/changed alongside this one + if (attr.impliedEdits && typeof attr.impliedEdits === 'object') { + const entries = Object.entries(attr.impliedEdits); + if (entries.length > 0) { + const parts = entries.map(([k, v]) => `${k} = ${JSON.stringify(v)}`).join(', '); + tags.push(`Setting this also sets: ${parts}`); + } + } + + if (!description && tags.length === 0) return []; + + // Single-line — preserve original compact format when there's only a description + if (description && tags.length === 0) { + const text = description.replace(/\*\//g, '*\\/'); + return [`${indent}/** ${text} */`]; + } + + // Multi-line block + const out = [`${indent}/**`]; + if (description) { + const text = description.replace(/\*\//g, '*\\/'); + for (const line of text.split('\n')) { + out.push(`${indent} * ${line}`); + } + } + for (const tag of tags) { + out.push(`${indent} * ${tag}`); + } + out.push(`${indent} */`); + return out; } /** @@ -675,7 +758,7 @@ function mergeSubsets(collector, shared) { * Frame.layout points to the entire Layout shape). * @returns {string[]} Array of TS property declaration lines */ -function attrsToProperties(attrs, indent, pathPrefix, sharedTypes, fieldOverrides) { +function attrsToProperties(attrs, indent, pathPrefix, sharedTypes, fieldOverrides, inInternalNamespace = false) { const lines = []; for (const key of Object.keys(attrs).sort()) { @@ -695,7 +778,7 @@ function attrsToProperties(attrs, indent, pathPrefix, sharedTypes, fieldOverride // Field-level override — bypass schema typing entirely if (fieldOverrides && Object.prototype.hasOwnProperty.call(fieldOverrides, key)) { if (val && typeof val === 'object' && val.description) { - lines.push(...formatJSDoc(val.description, indent)); + lines.push(...formatJSDoc(val, indent)); } lines.push(`${indent}${key}?: ${fieldOverrides[key]};`); continue; @@ -713,7 +796,7 @@ function attrsToProperties(attrs, indent, pathPrefix, sharedTypes, fieldOverride // Leaf attribute (has valType) if (val.valType) { const tsType = valTypeToTS(val, attrPath); - lines.push(...formatJSDoc(val.description, indent)); + lines.push(...formatJSDoc(val, indent)); lines.push(`${indent}${key}?: ${tsType};`); continue; } @@ -724,13 +807,13 @@ function attrsToProperties(attrs, indent, pathPrefix, sharedTypes, fieldOverride const fp = containerFingerprint(itemChild); const sharedName = sharedTypes.get(fp); if (sharedName) { - lines.push(...formatJSDoc(val.description, indent)); - lines.push(`${indent}${key}?: ${sharedName}[];`); + lines.push(...formatJSDoc(val, indent)); + lines.push(`${indent}${key}?: ${refName(sharedName, inInternalNamespace)}[];`); continue; } - const nested = attrsToProperties(itemChild, indent + ' ', attrPath, sharedTypes); + const nested = attrsToProperties(itemChild, indent + ' ', attrPath, sharedTypes, undefined, inInternalNamespace); if (nested.length > 0) { - lines.push(...formatJSDoc(val.description, indent)); + lines.push(...formatJSDoc(val, indent)); lines.push(`${indent}${key}?: Array<{`); lines.push(...nested); lines.push(`${indent}}>;`); @@ -742,15 +825,15 @@ function attrsToProperties(attrs, indent, pathPrefix, sharedTypes, fieldOverride const fp = containerFingerprint(val); const sharedName = sharedTypes.get(fp); if (sharedName) { - lines.push(...formatJSDoc(val.description, indent)); - lines.push(`${indent}${key}?: ${sharedName};`); + lines.push(...formatJSDoc(val, indent)); + lines.push(`${indent}${key}?: ${refName(sharedName, inInternalNamespace)};`); continue; } // Container object — recurse - const nested = attrsToProperties(val, indent + ' ', attrPath, sharedTypes); + const nested = attrsToProperties(val, indent + ' ', attrPath, sharedTypes, undefined, inInternalNamespace); if (nested.length > 0) { - lines.push(...formatJSDoc(val.description, indent)); + lines.push(...formatJSDoc(val, indent)); lines.push(`${indent}${key}?: {`); lines.push(...nested); lines.push(`${indent}};`); @@ -882,7 +965,7 @@ function generateLayoutProperties(layoutAttrs, sharedTypes, subplotGroups, array const fp = containerFingerprint(val); const sharedName = sharedTypes.get(fp); if (sharedName) { - lines.push(` ${key}?: ${sharedName};`); + lines.push(` ${key}?: ${refName(sharedName, false)};`); continue; } @@ -988,7 +1071,8 @@ export function generateSchemaTypes(schema, outputPath) { innerShared.set(fp, name); } } - return attrsToProperties(attrs, ' ', '', innerShared); + const inNs = INTERNAL_INTERFACES.has(selfName); + return attrsToProperties(attrs, ' ', '', innerShared, undefined, inNs); }; // ----- Phase 3: Layout-specific interfaces ----- @@ -1017,14 +1101,19 @@ export function generateSchemaTypes(schema, outputPath) { chunks.push(''); } - // Emit shared interfaces - if (sharedList.length > 0) { + // Emit shared interfaces — public ones at the top level, "internal" ones + // wrapped in `export namespace _internal { ... }` so consumers reach them + // via the namespace prefix rather than directly. + const publicShared = sharedList.filter(([name]) => !INTERNAL_INTERFACES.has(name)); + const internalShared = sharedList.filter(([name]) => INTERNAL_INTERFACES.has(name)); + + if (publicShared.length > 0) { chunks.push('// ---------------------------------------------------------------------------'); chunks.push('// Shared interfaces — extracted from repeated attribute subtrees'); chunks.push('// ---------------------------------------------------------------------------'); chunks.push(''); - for (const [name, { fp, attrs }] of sharedList) { + for (const [name, { fp, attrs }] of publicShared) { const properties = emitSharedBody(attrs, name); chunks.push(`export interface ${name} {`); chunks.push(...properties); @@ -1033,6 +1122,26 @@ export function generateSchemaTypes(schema, outputPath) { } } + if (internalShared.length > 0) { + chunks.push('// ---------------------------------------------------------------------------'); + chunks.push('// Internal shared interfaces — schema helpers or types whose direct names'); + chunks.push('// would mislead consumers. Reach them via `_internal.X` or, preferably,'); + chunks.push('// through indexed access on the parent type (e.g. `ScatterData["marker"]`).'); + chunks.push('// ---------------------------------------------------------------------------'); + chunks.push(''); + chunks.push('export namespace _internal {'); + for (const [name, { fp, attrs }] of internalShared) { + const properties = emitSharedBody(attrs, name); + chunks.push(` export interface ${name} {`); + // Reindent the body — each line gets 4 more spaces (or stays blank). + for (const line of properties) chunks.push(line === '' ? line : ' ' + line); + chunks.push(' }'); + chunks.push(''); + } + chunks.push('}'); + chunks.push(''); + } + // Emit per-trace interfaces chunks.push('// ---------------------------------------------------------------------------'); chunks.push('// Trace interfaces'); @@ -1131,10 +1240,16 @@ export function generateSchemaTypes(schema, outputPath) { `Generated ${traceNames.length} trace(s) + ${layoutCount} layout type(s) + ${sharedCount} shared interface(s) + ${extraCount} animation/config interface(s) → ${outputPath}` ); - // Return all exported interface names so callers can verify re-exports + // Return all top-level exported interface names so callers can verify + // re-exports. Excludes names wrapped inside `namespace _internal` — they + // are exported via the namespace but their bare names aren't importable + // from the module's top level, so a per-name re-export check would + // falsely flag them as missing. const exportedNames = new Set(); for (const name of commonTypes.keys()) exportedNames.add(name); - for (const [name] of sharedList) exportedNames.add(name); + for (const [name] of sharedList) { + if (!INTERNAL_INTERFACES.has(name)) exportedNames.add(name); + } for (const traceName of traceNames) exportedNames.add(traceNameToInterfaceName(traceName)); for (const name of subplotGroups.keys()) exportedNames.add(name); for (const name of arrayItems.keys()) exportedNames.add(name); diff --git a/tasks/schema.mjs b/tasks/schema.mjs index f151078c326..c363f1404ef 100644 --- a/tasks/schema.mjs +++ b/tasks/schema.mjs @@ -72,38 +72,14 @@ await build(localDevConfig); // output plot-schema JSON makeSchema(pathToPlotly, pathToSchema); -// generate TypeScript types from the schema (traces + layout) +// generate TypeScript types from the schema — traces, layout, common enum +// aliases, animation/frame/config interfaces, and an `_internal` namespace. +// +// New schema-derived types automatically reach `plotly.js` consumers because +// `lib/index.d.ts` uses `export type * from '../src/types/generated/schema'`. +// If you ever swap that wildcard for an explicit allowlist, restore the +// per-name re-export verifier that lived here (see git history) — otherwise +// new types will silently fail to surface in the public API. const schema = JSON.parse(fs.readFileSync(pathToSchema, 'utf-8')); const pathToGeneratedTypes = path.join(constants.pathToSrc, 'types/generated/schema.d.ts'); -const exportedNames = generateSchemaTypes(schema, pathToGeneratedTypes); - -// Warn about generated interfaces not re-exported from the public API. -// Types listed here are intentionally internal-only and won't trigger warnings. -const PUBLIC_API_EXEMPTIONS = new Set([ - 'AutoRangeOptions', - 'ErrorY', - 'LegendGroupTitle', - 'Lighting', - 'Line', - 'Marker', - 'Stream', -]); - -const pathToPublicTypes = path.join(constants.pathToLib, 'index.d.ts'); -const publicTypes = fs.readFileSync(pathToPublicTypes, 'utf-8'); -// Use word-boundary regex to avoid substring false positives (e.g. "Stream" matching "StreamtubeData") -const missing = [...exportedNames].filter((name) => !new RegExp(`\\b${name}\\b`).test(publicTypes)).sort(); -if (missing.length > 0) { - const unexempted = missing.filter((name) => !PUBLIC_API_EXEMPTIONS.has(name)); - const exempted = missing.filter((name) => PUBLIC_API_EXEMPTIONS.has(name)); - - if (unexempted.length > 0) { - console.warn(`\n⚠ ${unexempted.length} generated type(s) not re-exported in lib/index.d.ts:`); - for (const name of unexempted) console.warn(` - ${name}`); - } - if (exempted.length > 0) { - console.log(`\n ${exempted.length} exempted (intentionally internal-only):`); - for (const name of exempted) console.log(` - ${name}`); - } - console.log(''); -} +generateSchemaTypes(schema, pathToGeneratedTypes); From 379d815d79ec8702115b21b8f3af6e43c5f69bb6 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Tue, 26 May 2026 15:04:07 -0600 Subject: [PATCH 070/241] Update TS docs --- src/types/ARCHITECTURE.md | 84 ++++++++-- src/types/CONVERTING_ATTRIBUTES.md | 35 ++-- src/types/GENERATOR.md | 254 +++++++++++++++++++++++------ src/types/README.md | 22 ++- 4 files changed, 307 insertions(+), 88 deletions(-) diff --git a/src/types/ARCHITECTURE.md b/src/types/ARCHITECTURE.md index 3c9f60fbd96..4171290373c 100644 --- a/src/types/ARCHITECTURE.md +++ b/src/types/ARCHITECTURE.md @@ -38,15 +38,32 @@ The split: - **Generated types** are the single source of truth for everything in Plotly's attribute schema. - - **`src/types/generated/schema.d.ts`** — all 49 trace data interfaces, - layout component interfaces (LayoutAxis, Legend, Scene, Annotation, - Shape, Slider, UpdateMenu, etc.), the Layout interface itself, plus - shared sub-interfaces (Font, ColorBar, HoverLabel, etc.). + - **`src/types/generated/schema.d.ts`** contains: + - **Common enum aliases** discovered from the schema (Calendar, Dash, + AxisType, PatternShape, XRef, YRef, TransitionEasing, PlotType). + - **Shared sub-interfaces** extracted from repeated subtrees (Font, + FontArray, ColorBar, HoverLabel, Domain, Pattern, TickFormatStops, + LegendGroupTitle). + - **Per-trace data interfaces** — all 49 (BarData, ScatterData, + IndicatorData, etc.). + - **Layout component interfaces** (LayoutAxis, Legend, Scene, + Annotation, Shape, Slider, UpdateMenu, etc.) and the Layout + interface itself. + - **Animation, frames, and config interfaces** (Transition, + AnimationFrameOpts, AnimationOpts, Frame, Edits) generated from + `schema.animation`, `schema.frames`, and `schema.config.edits`. + - **`_internal` namespace** wrapping types whose direct names would + mislead consumers (Marker is scatter-only, Line is the marker + outline) or are schema-internal helpers (AutoRangeOptions, + Lighting, Stream, ErrorY). Reachable as `_internal.Marker` etc. + but not at the top level. + Generated from `plot-schema.json` by `tasks/generate_schema_types.mjs`. Run `npm run schema` to regenerate. - **Hand-written types** cover everything the schema doesn't describe: events, internal runtime state, public API function signatures, - utility types, behavioral types (ModeBarButton, Icon, etc.). + utility types (Color, Datum, MarkerSymbol, ErrorBar), behavioral types + (ModeBarButton, Icon, etc.). ## Public vs. private (the underscore convention) @@ -61,12 +78,18 @@ This split is reflected in the types: | User-facing | Internal | Where defined | |---|---|---| | `Layout` | `FullLayout` | `Layout` in `generated/schema.d.ts`; `FullLayout` in `core/layout.internal.d.ts` | -| `PlotData` | `FullData` | `PlotData` in `core/data.d.ts`; `FullData` in `core/data.internal.d.ts` | +| `Data` (union over `type`) | `FullData` | `Data` in `core/data.d.ts` (union of schema `*Data` interfaces); `FullData = Data & FullDataInternals` in `core/data.internal.d.ts` | | (n/a) | `GraphDiv` (the `gd` param) | `core/graph-div.internal.d.ts` — DOM element with `_fullLayout`, `_fullData`, `calcdata`, etc. | +`FullData` is the discriminated union of schema trace types intersected with +the internal `_`-prefixed fields. Internal code that narrows on `trace.type` +gets trace-specific fields plus the internal state in the same expression. + Internal types use index signatures (`[key: string]: any`) liberally to allow incremental migration without blocking. As `_` properties get -discovered during JS→TS conversion, add them to `FullLayout`/`FullData`/etc. +discovered during JS→TS conversion, add them to `FullLayout` or +`FullDataInternals` (the file-local intersection target inside +`data.internal.d.ts`). ## Directory layout @@ -76,7 +99,7 @@ src/types/ ├── core/ # hand-written types for the core API │ ├── api.d.ts # public API function signatures (newPlot, etc.) │ ├── config.d.ts # Config, ToImgopts (Edits re-exported from generated) -│ ├── data.d.ts # PlotData, PlotMarker, ScatterLine, Data union +│ ├── data.d.ts # Data union (over all schema `*Data` interfaces) │ ├── data.internal.d.ts # CalcData, FullData │ ├── events.d.ts # PlotMouseEvent, PlotlyHTMLElement, etc. │ ├── graph-div.internal.d.ts # GraphDiv, GraphContext @@ -102,31 +125,56 @@ If a file has no `.internal` suffix, all its exports are public. ## How schema type generation works ``` -test/plot-schema.json (runtime schema with all 49 traces + full layout) +test/plot-schema.json (runtime schema: traces + layout + animation + config) │ ▼ [ tasks/generate_schema_types.mjs ] │ - │ 1. Fingerprint every container subtree across ALL traces AND layout - │ 2. Extract shared interfaces (Font, ColorBar, HoverLabel, etc.) + │ 0. Discover common enum aliases via COMMON_TYPE_ANCHORS + │ (Calendar/Dash/AxisType/PatternShape/XRef/YRef/TransitionEasing, + │ plus PlotType derived from the trace-names list) + │ 1. Fingerprint every container subtree across traces and layout + │ 2. Extract shared interfaces (Font, ColorBar, HoverLabel, etc.). + │ Inject Transition and AnimationFrameOpts as shared types + │ (animation has < MIN_OCCURRENCES sites otherwise) │ 3. Emit per-trace interfaces referencing shared types │ 4. Emit layout component interfaces (LayoutAxis, Legend, Scene, etc.) - │ 5. Emit the Layout interface with subplot index signatures + │ and the Layout interface with subplot index signatures + │ 5. Emit AnimationOpts (from schema.animation), Frame (from + │ schema.frames with field overrides for the recursive data/layout + │ fields), and Edits (from schema.config.edits) + │ 6. Wrap names in INTERNAL_INTERFACES inside `export namespace _internal` + │ and rewrite outside-namespace references to `_internal.X` │ ▼ src/types/generated/schema.d.ts + │ // Common enum aliases + │ export type Calendar = 'chinese' | 'coptic' | ...; + │ export type PlotType = 'bar' | 'scatter' | ...; + │ // Shared interfaces (public) │ export interface Font { ... } │ export interface ColorBar { ... } - │ export interface ScatterData { ... } + │ // Internal namespace + │ export namespace _internal { + │ export interface Marker { ... } + │ export interface Line { ... } + │ // ... + │ } + │ // Trace interfaces + │ export interface ScatterData { marker?: _internal.Marker; ... } │ export interface BarData { ... } - │ export interface LayoutAxis { ... } - │ export interface Legend { ... } + │ // Layout + │ export interface LayoutAxis { autorangeoptions?: _internal.AutoRangeOptions; ... } │ export interface Layout { ... } - │ // ... 49 traces + layout types + shared interfaces + │ // Animation / config + │ export interface AnimationOpts { transition?: Transition; ... } + │ export interface Frame { data?: any[]; layout?: Partial; ... } + │ export interface Edits { ... } │ ▼ -src/types/index.d.ts re-exports all types (internal). -lib/index.d.ts re-exports public types to consumers. +src/types/index.d.ts re-exports all types (internal authoring index). +lib/index.d.ts uses `export type * from '.../generated/schema'` so every +public schema-derived type is automatically re-exported to consumers. ``` Regenerate with `npm run schema` (which rebuilds plot-schema.json diff --git a/src/types/CONVERTING_ATTRIBUTES.md b/src/types/CONVERTING_ATTRIBUTES.md index 4fa36766ef7..46c7fffc229 100644 --- a/src/types/CONVERTING_ATTRIBUTES.md +++ b/src/types/CONVERTING_ATTRIBUTES.md @@ -147,22 +147,25 @@ The schema does not describe these — they remain in `src/types/`: If you find yourself converting one of these, stop and ask. -## What if my type doesn't match the hand-written one? - -Almost certainly the hand-written one was wrong, narrowed for ergonomics, or -based on an older schema. Order of operations: - -1. **Compare**. Look at the schema-generated type in `schema.d.ts` next to - the hand-written one. -2. **If schema is too loose** (e.g. `string` where the hand-written type had - a typed union of valid values), check whether the schema's `values` array - could be expanded. The schema is the authoritative truth — fix it there. -3. **If the hand-written type had additional fields** not in the schema, - they're probably internal/runtime-only and should stay hand-written - (add them to the corresponding `.internal.d.ts` file, e.g. `FullLayout` - in `layout.internal.d.ts`). -4. **If the schema has fields the hand-written type lacked**, that's a free - coverage win — accept the generated type. +## What if I need a type the schema doesn't describe well? + +The schema-generated types are authoritative for everything in +`plot-schema.json`. If something is missing or too loose: + +1. **Compare**. Look at the schema-generated type in `schema.d.ts`. +2. **If schema is too loose** (e.g. `string` where the schema should have + a typed union of valid values, or `any` where a proper shape could be + described), fix it at the JS attribute source so every language port + benefits — not via a generator-side override. +3. **If the field is an internal runtime artifact** (not in the user-facing + schema), add it to the appropriate `.internal.d.ts` file. For trace + internal fields, that's `FullDataInternals` inside + `core/data.internal.d.ts` (which `FullData` intersects with `Data`). + For layout internal fields, it's `FullLayout` in `layout.internal.d.ts`. +4. **If the schema has fields and a generator-side override is the only + path** (e.g. recursive references like `Frame.data` pointing back to the + trace-data union), use the `fieldOverrides` parameter on + `attrsToProperties` in the generator. See GENERATOR.md. ## Schema-generated types diff --git a/src/types/GENERATOR.md b/src/types/GENERATOR.md index 9a764da1ed9..2342ad70af2 100644 --- a/src/types/GENERATOR.md +++ b/src/types/GENERATOR.md @@ -1,44 +1,89 @@ # Type Generator Internals The **schema-based generator** (`tasks/generate_schema_types.mjs`) -reads `plot-schema.json` and emits all 49 trace data interfaces, -layout component interfaces, the Layout interface, and shared -sub-interfaces into `src/types/generated/schema.d.ts`. +reads `plot-schema.json` and emits all the schema-derived TypeScript +types into `src/types/generated/schema.d.ts`: + +- Common enum aliases (Calendar, Dash, AxisType, PatternShape, XRef, YRef, + TransitionEasing, PlotType) +- Shared sub-interfaces (Font, ColorBar, HoverLabel, etc.) +- 49 per-trace data interfaces (BarData, ScatterData, IndicatorData, ...) +- Layout component interfaces (LayoutAxis, Legend, Scene, Annotation, etc.) + and the Layout interface itself +- Animation / frame / edits interfaces (AnimationOpts, Frame, Edits) +- An `_internal` namespace wrapping types whose direct names would mislead + consumers or are schema-internal helpers + Run via `npm run schema`. ## How it works `tasks/generate_schema_types.mjs` is called by `tasks/schema.mjs` after -writing `plot-schema.json`. It walks both `schema.traces` and -`schema.layout.layoutAttributes`, mapping each attribute's `valType` -metadata to TypeScript types. +writing `plot-schema.json`. The generator walks `schema.traces`, +`schema.layout.layoutAttributes`, `schema.animation`, `schema.frames`, and +`schema.config.edits`, mapping each attribute's `valType` metadata to a +TypeScript type. + +### Phase 0: Common enum discovery + +`discoverCommonTypes(schema)` walks the schema looking for enumerated +attributes whose key/path/values match an entry in `COMMON_TYPE_ANCHORS`: + +```js +const COMMON_TYPE_ANCHORS = [ + { name: 'Calendar', match: (key) => /^[xyz]?calendar$/.test(key) }, + { name: 'Dash', match: (key) => key === 'dash' }, + { name: 'AxisType', match: (key, path) => key === 'type' && /[xyz]axis\.type$/.test(path) }, + // ... +]; +``` + +When multiple sites match an anchor (e.g. 3D scene axes vs cartesian axes +both have `xaxis.type` enumerations), the generator picks the largest +value set — the superset — so the alias is always permissive enough. +`PlotType` is special-cased: derived from `Object.keys(schema.traces)` +rather than from an attribute. + +Each discovered alias is emitted as `export type Name = 'a' | 'b' | ...` +and registered in `VALUES_TO_COMMON_TYPE` so subsequent emission of any +attribute whose `values` array matches an anchor produces a reference +to the alias instead of an inlined literal union. ### Phase 1: Fingerprinting -The generator fingerprints every container subtree across **all traces -and layout** simultaneously. Two containers are considered identical when -their sorted keys and leaf `valType`s produce the same fingerprint string. -Containers that appear in 2+ locations become shared interfaces (Font, -ColorBar, HoverLabel, etc.). +The generator fingerprints every container subtree across all traces and +layout. Two containers are considered identical when their sorted keys +and leaf `valType`s produce the same fingerprint string. ### Phase 2: Shared interface extraction -Shared containers are extracted as named interfaces. The generator uses -override maps to ensure correct PascalCase naming: +Containers that appear at least `MIN_OCCURRENCES` (= 5) times AND have at +least `MIN_PROPERTIES` (= 4) properties become shared interfaces (Font, +ColorBar, HoverLabel, etc.). PascalCase naming is controlled by +`SHARED_NAME_OVERRIDES` so e.g. `colorbar` becomes `ColorBar` rather than +`Colorbar`: ```js const SHARED_NAME_OVERRIDES = new Map([ ['colorbar', 'ColorBar'], ['hoverlabel', 'HoverLabel'], ['tickformatstops', 'TickFormatStops'], + ['autorangeoptions', 'AutoRangeOptions'], + ['legendgrouptitle', 'LegendGroupTitle'], + ['error_y', 'ErrorY'], + ['error_x', 'ErrorX'], ['stream', 'Stream'], - // ... ]); ``` -Containers listed in `SHARED_NAME_OVERRIDES` bypass the `MIN_PROPERTIES` -threshold, so small containers like `Stream` (2 properties, 49 occurrences) -can be explicitly opted in as shared interfaces. +Names in `SHARED_NAME_OVERRIDES` bypass `MIN_PROPERTIES`, so small +containers like `Stream` (2 properties) can be opted in as shared. + +After fingerprinting completes, the generator **injects** the `transition` +and `frame` subtrees from `schema.animation` as shared types (`Transition` +and `AnimationFrameOpts`). These occur fewer than `MIN_OCCURRENCES` times +so the automatic extractor skips them, but they need to be named for +`AnimationOpts` to reference them cleanly. ### Phase 3: Trace interfaces @@ -64,21 +109,80 @@ The Layout interface includes subplot index signatures: // etc. ``` -### JSDoc descriptions +### Phase 5: Animation, frame, and edits interfaces + +`AnimationOpts` is emitted from `schema.animation` (references the +injected `Transition` and `AnimationFrameOpts` shared types). `Frame` is +emitted from `schema.frames.items.frames_entry` with **field overrides** +for the recursively-typed fields the schema describes as `valType: any`: + +```js +attrsToProperties(frameEntry, ' ', 'frame', sharedTypes, { + data: 'any[]', + layout: 'Partial' +}); +``` -Every property with a `description` field in the schema gets a single-line -JSDoc comment in the output. Plotly's `*emphasis*` markers are preserved -as-is (they render as italics in IDE hover tooltips). Any `*/` sequences -in descriptions are escaped to prevent prematurely closing the comment. +The override mechanism is the `fieldOverrides` param on `attrsToProperties` +— useful for any field whose schema description is too loose because the +schema can't self-reference. `Edits` is emitted from `schema.config.edits` +without overrides (all fields are concrete booleans). + +### Phase 6: Internal namespace + +Names in `INTERNAL_INTERFACES` are wrapped in `export namespace _internal { +... }` rather than emitted at the top level: + +```js +const INTERNAL_INTERFACES = new Set([ + 'AutoRangeOptions', 'ErrorY', 'Lighting', 'Line', 'Marker', 'Stream' +]); +``` + +When emitting a reference to one of these types from outside the namespace +(e.g. `ScatterData.marker?: _internal.Marker`), the generator calls +`refName(name, /*inInternalNamespace=*/false)` which adds the `_internal.` +prefix. Inside the namespace, the same helper returns the bare name so +sibling references stay clean (`Marker.line?: Line`). + +This pattern makes the names module-private to consumers: `import { +Marker }` from `plotly.js` fails because `Marker` isn't a top-level +declaration. The names are only reachable via `_internal.Marker` (or via +indexed access on the parent type — `ScatterData['marker']`, which is the +preferred path). + +Why a namespace and not just dropping `export`? TypeScript's `.d.ts` file +semantics let non-exported top-level declarations leak through `export *` +re-exports — a long-standing quirk for backwards compatibility with +hand-written DefinitelyTyped declarations. Wrapping the names in a +namespace makes them non-top-level, so the leak doesn't apply. + +### JSDoc descriptions and metadata + +`formatJSDoc(attr, indent)` emits a multi-line JSDoc block for each leaf +attribute. The block contains the schema's `description` plus `@default`, +numeric bounds (`min`/`max`), and any `impliedEdits` lines when present. +Containers (no `valType`) only carry a description, so the metadata +branches no-op. Plotly's `*emphasis*` markers are preserved as-is (they +render as italics in IDE hover tooltips). Any `*/` sequences in +descriptions are escaped to prevent prematurely closing the comment. ### Output structure ``` src/types/generated/schema.d.ts -├── Shared interfaces (Font, FontArray, ColorBar, HoverLabel, etc.) +├── import { Color, ColorScale, Datum, MarkerSymbol, TypedArray } from '../lib/common' +├── Common enum types (Calendar, Dash, AxisType, PatternShape, XRef, YRef, +│ TransitionEasing, PlotType) +├── Shared interfaces — public (Font, FontArray, ColorBar, HoverLabel, Domain, +│ Pattern, TickFormatStops, LegendGroupTitle, ...) +├── Internal shared interfaces in `namespace _internal` (Marker, Line, +│ AutoRangeOptions, +│ Lighting, Stream, ErrorY) ├── Trace interfaces (ScatterData, BarData, ... — 49 traces) ├── Layout component interfaces (LayoutAxis, Legend, Scene, Annotation, etc.) -└── Layout interface (references all of the above) +├── Layout interface +└── Animation / frames / config (AnimationOpts, Frame, Edits) ``` Regenerate with `npm run schema`. @@ -90,47 +194,96 @@ Summary: | valType | TS produced | |---|---| | `data_array` | `Datum[] \| TypedArray` | -| `number`, `integer` | `number` (or `number \| number[]` if `arrayOk`) | -| `string` | `string`, narrowed to `values[number]` if `values` provided | +| `number`, `integer` | `number` (with `extras` appended as literals; `number \| 'auto'` style) | +| `string` | literal union if `values` provided; matches a common-enum alias when applicable; otherwise `string` | | `boolean` | `boolean` | | `color` | `Color` | | `colorscale` | `ColorScale` | | `colorlist` | `Color[]` | | `angle` | `number \| 'auto'` | | `subplotid` | `string` | -| `enumerated` | `values[number]` (literal union) | -| `flaglist` | `string` (combinatorial expansion not yet implemented) | -| `info_array` | `unknown[]` | +| `enumerated` | literal union of `values`; matches a common-enum alias when applicable | +| `flaglist` | union of flags + extras + `(string & {})` to allow `+`-joined combinations while preserving autocomplete | +| `info_array` | tuple of element `valType`s when fixed-length; `T[]` when `freeLength`; `any[]` fallback | | `any` | `any` | `arrayOk: true` wraps the result in `T | T[]`. -Reserved keys stripped from the output: `editType`, `role`, -`_isLinkedToArray`, `_isSubplotObj`, `_arrayAttrRegexps`, `_deprecated`. +Attribute name overrides via `ATTR_NAME_OVERRIDES` map specific attribute +paths to a type alias regardless of valType (e.g. `marker.symbol` → +`MarkerSymbol`). + +Reserved keys stripped from the output: `editType`, `role`, `description`, +`impliedEdits`, `_isSubplotObj`, `_isLinkedToArray`, `_arrayAttrRegexps`, +`_deprecated`. ## Extending the schema generator +### Adding a new common enum alias (Calendar/Dash style) + +If the schema repeats the same enumerated value-set in multiple places and +you want a named alias for it: + +1. Add an entry to `COMMON_TYPE_ANCHORS` with a `name` and a + `match(key, path, values)` predicate that uniquely identifies the + anchor attribute. The discovery walker picks the largest matching + value set as the canonical alias body. +2. Run `npm run schema`. The generator emits `export type = ...` + and rewrites matching enumerated attributes to reference the alias. +3. Run `npm run typecheck` to verify. + +`PlotType` is a special case derived from `Object.keys(schema.traces)` +rather than from an enumerated attribute; it doesn't follow the anchor +mechanism. + ### Adding a new layout container If a new subplot type or array container is added to the schema: -1. Add an entry to `LAYOUT_CONTAINER_NAMES` (for subplots) or - `LAYOUT_ARRAY_NAMES` (for linked-to-array containers) in - `generate_schema_types.mjs` -2. Run `npm run schema` to regenerate -3. Run `npm run typecheck` to ensure no regressions +1. Add an entry to `LAYOUT_CONTAINER_NAMES` (for subplots marked + `_isSubplotObj`) or `LAYOUT_ARRAY_NAMES` (for linked-to-array + containers). +2. Run `npm run schema` to regenerate. +3. Run `npm run typecheck` to ensure no regressions. -### Improving flaglist support +### Hiding a type inside `_internal` -Currently flag lists like `hoverinfo` map to `string`. To produce a -combinatorial union of valid `+`-joined combinations: +Add the name to `INTERNAL_INTERFACES`. The generator will wrap it in the +`_internal` namespace and rewrite all external references to the +`_internal.X` form. Use this when: -```ts -type Combinations = ... // template literal magic +- The name would mislead consumers (it's only one trace's variant, or the + semantics don't match the bare name). +- The type is a schema-internal helper that consumers rarely construct + directly. +- A hand-written type supersedes it (e.g. `ErrorY` is hidden because + `ErrorBar` is the preferred public type). + +### Adding a field override + +If a schema attribute is `valType: 'any'` because it's recursively +self-referential (e.g. `Frame.data` is "the same shape as the trace +data"), pass a `fieldOverrides` map to `attrsToProperties`: + +```js +attrsToProperties(frameEntry, ' ', 'frame', sharedTypes, { + data: 'any[]', + layout: 'Partial' +}); ``` -This is doable but produces large unions (15+ members for `hoverinfo`). -Consider whether the type-check cost is worth the autocomplete win. +The override bypasses the schema-derived type for those field names. Use +this sparingly — when the schema CAN be improved at the source (in the +JS attribute file), prefer that. + +### Improving flaglist support + +Flag lists like `hoverinfo` currently emit a union with `(string & {})` +to allow flag combinations while preserving autocomplete for individual +flags. A fully combinatorial union (`'x' | 'x+y' | 'x+y+text' | ...`) +would produce huge types — 15+ members for `hoverinfo` — and slow down +type checking. Not implemented today; consider whether the autocomplete +win is worth the cost before changing this. ## Debugging @@ -151,11 +304,16 @@ console.log(s.traces.scatter.attributes); // inspect trace attrs ## Public API re-export check -After generation, `tasks/schema.mjs` compares the exported interface -names against `lib/index.d.ts`. Any generated type not re-exported -triggers a warning in the console output. Types that are intentionally -internal-only are listed in `PUBLIC_API_EXEMPTIONS` and shown separately -as exempted rather than warned about. +`lib/index.d.ts` uses `export type * from '../src/types/generated/schema'`, +so every top-level exported type from `schema.d.ts` is automatically +re-exported to consumers. Types inside the `_internal` namespace are still +reachable via `_internal.X` (the namespace itself is exported by the +wildcard) but their bare names are not. + +`tasks/schema.mjs` short-circuits its per-name re-export verification +when the wildcard is detected. If you ever replace the wildcard with an +explicit allowlist, the per-name check runs and warns about any +exported-but-not-re-exported types. ## CI integration diff --git a/src/types/README.md b/src/types/README.md index 02c4800986f..703a4e63a53 100644 --- a/src/types/README.md +++ b/src/types/README.md @@ -26,12 +26,22 @@ here, public types are re-exported through `lib/index.d.ts` to consumers. ## Generated types -All 49 trace data interfaces, layout component interfaces (LayoutAxis, -Legend, Scene, Annotation, Shape, Slider, UpdateMenu, etc.), the Layout -interface itself, and shared sub-interfaces (Font, ColorBar, HoverLabel, -etc.) are **auto-generated from `plot-schema.json`** by -`tasks/generate_schema_types.mjs`. Run `npm run schema` to regenerate. -The output lives at `src/types/generated/schema.d.ts`. +The following are **auto-generated from `plot-schema.json`** by +`tasks/generate_schema_types.mjs`: + +- Common enum aliases (Calendar, Dash, AxisType, PatternShape, XRef, YRef, + TransitionEasing, PlotType) +- All 49 per-trace data interfaces (BarData, ScatterData, IndicatorData, ...) +- Layout component interfaces (LayoutAxis, Legend, Scene, Annotation, + Shape, Slider, UpdateMenu, etc.) and the Layout interface itself +- Shared sub-interfaces (Font, ColorBar, HoverLabel, LegendGroupTitle, etc.) +- Animation / frame / edits interfaces (AnimationOpts, Frame, Edits) +- An `_internal` namespace with helpers like `_internal.Marker`, + `_internal.AutoRangeOptions` that aren't meant as direct public surface + +Run `npm run schema` to regenerate. The output lives at +`src/types/generated/schema.d.ts`. See [GENERATOR.md](GENERATOR.md) for +the generator's internals. ## How to help From d8f9b9f1978b720e074f4418d4d7e26b2b9e5890 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Tue, 26 May 2026 15:40:07 -0600 Subject: [PATCH 071/241] Generate (most) config type info from schema --- src/types/core/config.d.ts | 225 ++++---------------------------- src/types/generated/schema.d.ts | 194 +++++++++++++++++++++++++++ tasks/generate_schema_types.mjs | 40 ++++-- 3 files changed, 252 insertions(+), 207 deletions(-) diff --git a/src/types/core/config.d.ts b/src/types/core/config.d.ts index 9a02fcfa89d..691779d3b21 100644 --- a/src/types/core/config.d.ts +++ b/src/types/core/config.d.ts @@ -1,10 +1,14 @@ /** * Config types * - * Plotly configuration options and edit settings. + * `Config` is built by overlaying a small hand-written interface on top of + * the schema-derived `ConfigBase`. Most fields come straight from the + * schema; the overrides cover seven fields whose schema `valType` is `any` + * because the underlying JS attribute accepts a function value, an + * arbitrary-key map, or a structure too irregular for the schema to model. */ -import type { Edits } from '../generated/schema'; +import type { ConfigBase, Edits } from '../generated/schema'; import type { PlotlyHTMLElement } from './events'; import type { ModeBarButtonAny, ModeBarDefaultButtons } from './layout'; @@ -39,200 +43,29 @@ export interface ToImageButtonOptions { } // --------------------------------------------------------------------------- -// Config +// Config — hybrid (schema-derived + hand-written overrides) // --------------------------------------------------------------------------- -export interface Config { - /** - * No interactivity, for export or image generation. - * @default false - */ - staticPlot: boolean; - /** - * Determines whether math should be typeset when MathJax is present. - * @default true - */ - typesetMath: boolean; - /** - * Base URL for the 'Edit in Chart Studio' button. - * @default '' - */ - plotlyServerURL: string; - /** - * Sets all pieces of `edits` unless overridden. - * @default false - */ - editable: boolean; - edits: Partial; - /** - * Enables moving selections. - * @default true - */ - editSelection: boolean; - /** - * Plot with respect to layout.autosize:true and infer container size. - * @default false - */ - autosizable: boolean; - /** - * Change the layout size when window is resized. - * @default false - */ - responsive: boolean; - /** - * Whether the graph fills the container or the screen. - * @default false - */ - fillFrame: boolean; - /** - * Frame margins in fraction of the graph size. - * @default 0 - */ - frameMargins: number; - /** - * Mouse wheel / two-finger scroll zoom. - * @default 'gl3d+geo+map' - */ - scrollZoom: string | boolean; - /** - * Double click interaction mode. - * @default 'reset+autosize' - */ - doubleClick: 'reset+autosize' | 'reset' | 'autosize' | false; - /** - * Delay for registering a double-click in ms. - * @default 300 - */ - doubleClickDelay: number; - /** - * Show cartesian axis pan/zoom drag handles. - * @default true - */ - showAxisDragHandles: boolean; - /** - * Show direct range entry at the pan/zoom drag points. - * @default true - */ - showAxisRangeEntryBoxes: boolean; - /** - * Show tips while interacting with the resulting graphs. - * @default true - */ - showTips: boolean; - /** - * Display a link to Chart Studio Cloud at the bottom right. - * @default false - */ - showLink: boolean; - /** - * Sets the text appearing in the `showLink` link. - * @default 'Edit chart' - */ - linkText: string; - /** - * If `showLink` is true, send data when linking to Chart Studio Cloud. - * @default true - */ - sendData: boolean; - /** - * Adds a source-displaying function to show sources on the resulting graphs. - * @default false - */ - showSources: false | ((gd: PlotlyHTMLElement) => void | Promise); - /** - * Mode bar display mode. - * @default 'hover' - */ - displayModeBar: 'hover' | boolean; - /** - * Show "Edit in Chart Studio" mode bar button. - * @default false - */ - showSendToCloud: boolean; - /** - * Same as `showSendToCloud`, but use a pencil icon instead of a floppy-disk. - * @default false - */ - showEditInChartStudio: boolean; - /** - * Remove mode bar buttons by name. - * @default [] - */ - modeBarButtonsToRemove: ModeBarDefaultButtons[]; - /** - * Add mode bar button using config objects or default button strings. - * @default [] - */ - modeBarButtonsToAdd: ModeBarButtonAny[]; - /** - * Define fully custom mode bar buttons as nested array of button groups. - * @default false - */ - modeBarButtons: ModeBarButtonAny[][] | false; - /** - * Statically override options for toImage modebar button. - * @default {} - */ - toImageButtonOptions: Partial<{ - filename: string; - scale: number; - format: 'png' | 'svg' | 'jpeg' | 'webp'; - height: number; - width: number; - }>; - /** - * Display the plotly logo on the mode bar. - * @default true - */ - displaylogo: boolean; - /** - * Watermark images with the company's logo. - * @default false - */ - watermark: boolean; - /** - * Pixel ratio during WebGL image export. - * @default 2 - */ - plotGlPixelRatio: number; - /** - * Set background color function or behavior. - * @default 'transparent' - */ - setBackground: ((gd: PlotlyHTMLElement, bgColor: string) => void) | 'opaque' | 'transparent'; - /** - * URL to topojson used in geo charts. - * @default 'https://cdn.plot.ly/' - */ - topojsonURL: string; - /** - * Mapbox access token (required for mapbox trace types). - * @default null - */ - mapboxAccessToken: string | null; - /** - * Console logging level (0-2). Set via Plotly.setPlotConfig. - * @default 1 - */ - logging: 0 | 1 | 2; - /** - * On-graph logging (notifier) level (0-2). Set via Plotly.setPlotConfig. - * @default 0 - */ - notifyOnLogging: 0 | 1 | 2; - /** - * Length of the undo/redo queue. - * @default 0 - */ - queueLength: number; - /** - * Localization to use (e.g. 'en' or 'en-US'). - * @default 'en-US' - */ - locale: string; - /** - * Localization definitions. - * @default {} - */ - locales: Record; format?: Record }>; +/** + * Hand-written overrides for the seven `schema.config` fields whose + * `valType` is `any`. These accept functions or arbitrary-key maps that the + * JSON schema fundamentally cannot describe, so they stay typed by hand. + */ +interface ConfigOverrides { + /** Override the background color: a static color name, or a function called per-render. */ + setBackground?: 'opaque' | 'transparent' | ((gd: PlotlyHTMLElement, bgColor: string) => void); + /** Source attribution shown at the bottom of the graph. */ + showSources?: false | ((gd: PlotlyHTMLElement) => void | Promise); + /** Define fully custom mode bar buttons as nested array of button groups. */ + modeBarButtons?: ModeBarButtonAny[][] | false; + /** Add mode bar buttons using config objects or default-button names. */ + modeBarButtonsToAdd?: ModeBarButtonAny[]; + /** Remove mode bar buttons by name. */ + modeBarButtonsToRemove?: ModeBarDefaultButtons[]; + /** Statically override options for the toImage mode bar button. */ + toImageButtonOptions?: ToImageButtonOptions; + /** Localization definitions keyed by locale id (e.g. `'en-US'`, `'fr'`). */ + locales?: Record; format?: Record }>; } + +export type Config = Omit & ConfigOverrides; diff --git a/src/types/generated/schema.d.ts b/src/types/generated/schema.d.ts index 96a4ae3637c..94b5391bc79 100644 --- a/src/types/generated/schema.d.ts +++ b/src/types/generated/schema.d.ts @@ -16741,3 +16741,197 @@ export interface Edits { */ titleText?: boolean; } + +export interface ConfigBase { + /** + * Determines whether the graphs are plotted with respect to layout.autosize:true and infer its container size. + * @default false + */ + autosizable?: boolean; + /** + * Determines the mode bar display mode. If *true*, the mode bar is always visible. If *false*, the mode bar is always hidden. If *hover*, the mode bar is visible while the mouse cursor is on the graph container. + * @default 'hover' + */ + displayModeBar?: 'hover' | true | false; + /** + * Determines whether or not notifier is displayed. + * @default true + */ + displayNotifier?: boolean; + /** + * Determines whether or not the plotly logo is displayed on the end of the mode bar. + * @default true + */ + displaylogo?: boolean; + /** + * Sets the double click interaction mode. Has an effect only in cartesian plots. If *false*, double click is disable. If *reset*, double click resets the axis ranges to their initial values. If *autosize*, double click set the axis ranges to their autorange values. If *reset+autosize*, the odd double clicks resets the axis ranges to their initial values and even double clicks set the axis ranges to their autorange values. + * @default 'reset+autosize' + */ + doubleClick?: false | 'reset' | 'autosize' | 'reset+autosize'; + /** + * Sets the delay for registering a double-click in ms. This is the time interval (in ms) between first mousedown and 2nd mouseup to constitute a double-click. This setting propagates to all on-subplot double clicks (except for geo, mapbox and map) and on-legend double clicks. + * @default 300 + * Minimum: 0 + */ + doubleClickDelay?: number; + /** + * Enables moving selections. + * @default true + */ + editSelection?: boolean; + /** + * Determines whether the graph is editable or not. Sets all pieces of `edits` unless a separate `edits` config item overrides individual parts. + * @default false + */ + editable?: boolean; + edits?: Edits; + /** + * When `layout.autosize` is turned on, determines whether the graph fills the container (the default) or the screen (if set to *true*). + * @default false + */ + fillFrame?: boolean; + /** + * When `layout.autosize` is turned on, set the frame margins in fraction of the graph size. + * @default 0 + * Range: [0, 0.5] + */ + frameMargins?: number; + /** + * Sets the text appearing in the `showLink` link. + * @default 'Edit chart' + */ + linkText?: string; + /** + * Which localization should we use? Should be a string like 'en' or 'en-US'. + * @default 'en-US' + */ + locale?: string; + /** + * Localization definitions Locales can be provided either here (specific to one chart) or globally by registering them as modules. Should be an object of objects {locale: {dictionary: {...}, format: {...}}} { da: { dictionary: {'Reset axes': 'Nulstil aksler', ...}, format: {months: [...], shortMonths: [...]} }, ... } All parts are optional. When looking for translation or format fields, we look first for an exact match in a config locale, then in a registered module. If those fail, we strip off any regionalization ('en-US' -> 'en') and try each (config, registry) again. The final fallback for translation is untranslated (which is US English) and for formats is the base English (the only consequence being the last fallback date format %x is DD/MM/YYYY instead of MM/DD/YYYY). Currently `grouping` and `currency` are ignored for our automatic number formatting, but can be used in custom formats. + * @default {} + */ + locales?: any; + /** + * Turn all console logging on or off (errors will be thrown) This should ONLY be set via Plotly.setPlotConfig Available levels: 0: no logs 1: warnings and errors, but not informational messages 2: verbose logs + * @default 1 + * Range: [0, 2] + */ + logging?: number; + /** Mapbox access token (required to plot mapbox trace types) If using an Mapbox Atlas server, set this option to '' so that plotly.js won't attempt to authenticate to the public Mapbox server. */ + mapboxAccessToken?: string; + /** + * Define fully custom mode bar buttons as nested array, where the outer arrays represents button groups, and the inner arrays have buttons config objects or names of default buttons See ./components/modebar/buttons.js for more info. + * @default false + */ + modeBarButtons?: any; + /** + * Add mode bar button using config objects See ./components/modebar/buttons.js for list of arguments. To enable predefined modebar buttons e.g. shape drawing, hover and spikelines, simply provide their string name(s). This could include: *v1hovermode*, *hoverclosest*, *hovercompare*, *togglehover*, *togglespikelines*, *drawline*, *drawopenpath*, *drawclosedpath*, *drawcircle*, *drawrect* and *eraseshape*. Please note that these predefined buttons will only be shown if they are compatible with all trace types used in a graph. + * @default [] + */ + modeBarButtonsToAdd?: any; + /** + * Remove mode bar buttons by name. See ./components/modebar/buttons.js for the list of names. + * @default [] + */ + modeBarButtonsToRemove?: any; + /** + * Set on-graph logging (notifier) level This should ONLY be set via Plotly.setPlotConfig Available levels: 0: no on-graph logs 1: warnings and errors, but not informational messages 2: verbose logs + * @default 0 + * Range: [0, 2] + */ + notifyOnLogging?: number; + /** + * Set the pixel ratio during WebGL image export. + * @default 2 + * Range: [1, 4] + */ + plotGlPixelRatio?: number; + /** When set it determines base URL for the 'Edit in Chart Studio' `showEditInChartStudio`/`showSendToCloud` mode bar button and the showLink/sendData on-graph link. To enable sending your data to Chart Studio Cloud, you need to set both `plotlyServerURL` to 'https://chart-studio.plotly.com' and also set `showSendToCloud` to true. */ + plotlyServerURL?: string; + /** + * Sets the length of the undo/redo queue. + * @default 0 + * Minimum: 0 + */ + queueLength?: number; + /** + * Determines whether to change the layout size when window is resized. In v3, this option will be removed and will always be true. + * @default false + */ + responsive?: boolean; + /** + * Determines whether mouse wheel or two-finger scroll zooms is enable. Turned on by default for gl3d, geo, mapbox and map subplots (as these subplot types do not have zoombox via pan), but turned off by default for cartesian subplots. Set `scrollZoom` to *false* to disable scrolling for all subplots. + * @default 'gl3d+geo+map' + */ + scrollZoom?: 'cartesian' | 'gl3d' | 'geo' | 'mapbox' | 'map' | true | false | (string & {}); + /** + * If *showLink* is true, does it contain data just link to a Chart Studio Cloud file? + * @default true + */ + sendData?: boolean; + /** + * Set function to add the background color (i.e. `layout.paper_color`) to a different container. This function take the graph div as first argument and the current background color as second argument. Alternatively, set to string *opaque* to ensure there is white behind it. + * @default 'transparent' + */ + setBackground?: any; + /** + * Set to *false* to omit cartesian axis pan/zoom drag handles. + * @default true + */ + showAxisDragHandles?: boolean; + /** + * Set to *false* to omit direct range entry at the pan/zoom drag points, note that `showAxisDragHandles` must be enabled to have an effect. + * @default true + */ + showAxisRangeEntryBoxes?: boolean; + /** + * Same as `showSendToCloud`, but use a pencil icon instead of a floppy-disk. Note that if both `showSendToCloud` and `showEditInChartStudio` are turned, only `showEditInChartStudio` will be honored. + * @default false + */ + showEditInChartStudio?: boolean; + /** + * Determines whether a link to Chart Studio Cloud is displayed at the bottom right corner of resulting graphs. Use with `sendData` and `linkText`. + * @default false + */ + showLink?: boolean; + /** + * Should we include a ModeBar button, labeled "Edit in Chart Studio", that sends this chart to chart-studio.plotly.com (formerly plot.ly) or another plotly server as specified by `plotlyServerURL` for editing, export, etc? Prior to version 1.43.0 this button was included by default, now it is opt-in using this flag. Note that this button can (depending on `plotlyServerURL` being set) send your data to an external server. However that server does not persist your data until you arrive at the Chart Studio and explicitly click "Save". + * @default false + */ + showSendToCloud?: boolean; + /** + * Adds a source-displaying function to show sources on the resulting graphs. + * @default false + */ + showSources?: any; + /** + * Determines whether or not tips are shown while interacting with the resulting graphs. + * @default true + */ + showTips?: boolean; + /** + * Determines whether the graphs are interactive or not. If *false*, no interactivity, for export or image generation. + * @default false + */ + staticPlot?: boolean; + /** + * Statically override options for toImage modebar button allowed keys are format, filename, width, height, scale see ../components/modebar/buttons.js + * @default {} + */ + toImageButtonOptions?: any; + /** + * Set the URL to topojson used in geo charts. By default, the topojson files are fetched from cdn.plot.ly. For example, set this option to: /dist/topojson/ to render geographical feature using the topojson files that ship with the plotly.js module. + * @default 'https://cdn.plot.ly/un/' + */ + topojsonURL?: string; + /** + * Determines whether math should be typeset or not, when MathJax (either v2 or v3) is present on the page. + * @default true + */ + typesetMath?: boolean; + /** + * watermark the images with the company's logo + * @default false + */ + watermark?: boolean; +} diff --git a/tasks/generate_schema_types.mjs b/tasks/generate_schema_types.mjs index e4e5da93a60..c8aa02adad7 100644 --- a/tasks/generate_schema_types.mjs +++ b/tasks/generate_schema_types.mjs @@ -19,16 +19,11 @@ import * as fs from 'fs'; // Meta keys to skip (not user-facing attributes) // --------------------------------------------------------------------------- -const META_KEYS = new Set([ - 'editType', - 'role', - 'description', - 'impliedEdits', - '_isSubplotObj', - '_isLinkedToArray', - '_arrayAttrRegexps', - '_deprecated' -]); +// Populated from `schema.defs.metaKeys` at the start of `generateSchemaTypes`. +// Empty until then — every helper that consults `META_KEYS` is only called +// from inside the generator's main pipeline, so the initial empty state is +// never observed in practice. +let META_KEYS = new Set(); // --------------------------------------------------------------------------- // Common enum types — discovered from the schema at generation time and @@ -1005,6 +1000,14 @@ export function generateSchemaTypes(schema, outputPath) { const traceNames = Object.keys(schema.traces).sort(); const layoutAttrs = schema.layout.layoutAttributes; + // Populate META_KEYS from the schema's own list of metadata keys so we + // pick up any future additions without code changes. + if (Array.isArray(schema.defs?.metaKeys)) { + META_KEYS = new Set(schema.defs.metaKeys); + } else { + throw new Error('schema.defs.metaKeys is missing — cannot determine which keys to skip during emission'); + } + // ----- Phase 0: Discover common enum types (Calendar, Dash, ...) ----- const commonTypes = discoverCommonTypes(schema); @@ -1194,7 +1197,7 @@ export function generateSchemaTypes(schema, outputPath) { chunks.push('}'); chunks.push(''); - // ----- Phase 5: Animation, Frame, and Edits interfaces ----- + // ----- Phase 5: Animation, Frame, Edits, and ConfigBase interfaces ----- const extraInterfaces = []; if (schema.animation) { const animProps = attrsToProperties(schema.animation, ' ', 'animation', sharedTypes); @@ -1216,6 +1219,21 @@ export function generateSchemaTypes(schema, outputPath) { if (schema.config && schema.config.edits) { const editsProps = attrsToProperties(schema.config.edits, ' ', 'edits', sharedTypes); extraInterfaces.push({ name: 'Edits', properties: editsProps }); + + // Register Edits's fingerprint so the ConfigBase emission below + // references `edits?: Edits` instead of re-inlining the subtree. + sharedTypes.set(containerFingerprint(schema.config.edits), 'Edits'); + } + if (schema.config) { + // Generate the schema-derived Config building block. Fields whose + // schema valType is `any` (locales, modeBarButtons, setBackground, + // showSources, toImageButtonOptions, ...) come through as `any` and + // are overridden with precise types in `core/config.d.ts`'s `Config` + // via Omit/intersection. The schema is fundamentally unable to + // describe functions or arbitrary-key maps, so those overrides are + // permanent. + const configProps = attrsToProperties(schema.config, ' ', 'config', sharedTypes); + extraInterfaces.push({ name: 'ConfigBase', properties: configProps }); } if (extraInterfaces.length > 0) { From a91fe2f66ad1640b674e4a30c7a3977a455a90a0 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Tue, 26 May 2026 15:57:19 -0600 Subject: [PATCH 072/241] Add descriptions to hand written types --- src/types/core/api.d.ts | 116 ++++++++++++++++++ src/types/core/config.d.ts | 28 +++++ src/types/core/data.d.ts | 5 + src/types/core/data.internal.d.ts | 25 +++- src/types/core/events.d.ts | 156 +++++++++++++++++++++++++ src/types/core/graph-div.internal.d.ts | 22 +++- src/types/core/layout.d.ts | 43 ++++++- src/types/core/layout.internal.d.ts | 152 +++++++++++++++++++++++- src/types/lib/attributes.d.ts | 77 +++++++++++- src/types/lib/common.d.ts | 49 ++++++++ 10 files changed, 666 insertions(+), 7 deletions(-) diff --git a/src/types/core/api.d.ts b/src/types/core/api.d.ts index d871f6b03e6..be8f98629fd 100644 --- a/src/types/core/api.d.ts +++ b/src/types/core/api.d.ts @@ -12,24 +12,39 @@ import type { Icon, Template } from './layout'; // Roots and request shapes // --------------------------------------------------------------------------- +/** + * Target accepted by most `Plotly.*` calls — either a DOM id string or the + * `HTMLElement` itself (typically the graph div). + */ export type Root = string | HTMLElement; +/** + * Figure-shaped object accepted by `toImage`/`downloadImage` when called + * without an attached graph div. + */ export interface PlotlyDataLayoutConfig { + /** Trace data array. */ data: Data[]; + /** Optional layout overrides. */ layout?: Partial; + /** Optional config overrides. */ config?: Partial; } +/** Either a regular root target or a figure-shaped object. */ export type RootOrData = Root | PlotlyDataLayoutConfig; // --------------------------------------------------------------------------- // Static plots / icons // --------------------------------------------------------------------------- +/** Namespace of static plot helpers (`Plotly.Plots`). */ export interface StaticPlots { + /** Recompute layout/sizing for the given root. */ resize(root: Root): void; } +/** Names of icons bundled with Plotly's mode-bar. */ export type DefaultIcons = | 'undo' | 'home' @@ -60,65 +75,103 @@ export type DefaultIcons = | 'pencil' | 'newplotlylogo'; +/** Map of built-in icon name → `Icon` definition. */ export type IconsMap = { [K in DefaultIcons]: Icon }; +/** Static map of built-in icons (`Plotly.Icons`). */ export declare const Icons: IconsMap; +/** Static plot helpers namespace (`Plotly.Plots`). */ export declare const Plots: StaticPlots; // --------------------------------------------------------------------------- // Module registration // --------------------------------------------------------------------------- +/** Module descriptor for a trace type (passed to `Plotly.register`). */ export interface RegisterTraceModule { + /** Discriminator: trace module. */ moduleType: 'trace'; + /** Trace type name (e.g. `'bar'`). */ name: string; + /** Categorical tags used by the schema and plot routing. */ categories: string[]; + /** Module metadata shown in schema docs. */ meta: { + /** Free-form description of the trace. */ description: string; }; } +/** Module descriptor for a locale bundle. */ export interface LocaleModule { + /** Discriminator: locale module. */ moduleType: 'locale'; + /** Locale id (e.g. `'fr'`, `'en-US'`). */ name: string; + /** Translation strings keyed by source phrase. */ dictionary: Record; + /** d3-format-style number/date format spec for the locale. */ format: Record; } +/** Module descriptor for a layout component (e.g. shapes, annotations). */ export interface RegisterComponentModule { + /** Discriminator: component module. */ moduleType: 'component'; + /** Component name. */ name: string; } +/** Module descriptor that registers an extra `Plotly.` method. */ export interface ApiMethodModule { + /** Discriminator: API method module. */ moduleType: 'apiMethod'; + /** Name under which the function is exposed on `Plotly`. */ name: string; + /** Implementation function. */ fn: any; } +/** Union of all module descriptors accepted by `Plotly.register`. */ export type PlotlyModule = RegisterTraceModule | LocaleModule | RegisterComponentModule | ApiMethodModule; // --------------------------------------------------------------------------- // Validation // --------------------------------------------------------------------------- +/** Validation issue returned by `Plotly.validate`. */ export interface ValidateResult { + /** Issue code (e.g. `'invisible'`, `'unused'`). */ code: string; + /** Which container the issue is in. */ container: 'data' | 'layout'; + /** Index into `data` (or `null` for layout issues). */ trace: number | null; + /** Path components leading to the offending attribute. */ path: string | (string | number)[]; + /** Dot-joined attribute path string. */ astr: string; + /** Human-readable description of the issue. */ msg: string; } +/** Validation issue returned by `Plotly.validateTemplate`. */ export interface ValidateTemplateResult { + /** Issue code. */ code: string; + /** Index of the offending template entry. */ index?: number; + /** Trace type of the offending entry. */ traceType?: string; + /** Count of matching template entries. */ templateCount?: number; + /** Count of matching data entries. */ dataCount?: number; + /** Attribute path string. */ path?: string; + /** `templateitemname` value involved in the issue. */ templateitemname?: string; + /** Human-readable description of the issue. */ msg: string; } @@ -126,6 +179,15 @@ export interface ValidateTemplateResult { // Function declarations // --------------------------------------------------------------------------- +/** + * Create a new plot at `root`. Replaces any existing plot. + * + * @param root - graph div id or element + * @param data - trace data array + * @param layout - layout overrides + * @param config - config overrides + * @returns the graph div once the plot has rendered + */ export function newPlot( root: Root, data: Data[], @@ -133,11 +195,27 @@ export function newPlot( config?: Partial ): Promise; +/** Update layout properties on an existing plot. */ export function relayout(root: Root, layout: Partial): Promise; +/** Re-render the plot at `root` from its current data/layout. */ export function redraw(root: Root): Promise; +/** Remove a plot and its event listeners from the DOM. */ export function purge(root: Root): void; +/** + * Update trace properties (style) on the existing plot. + * + * @param aobj - update object whose keys are attribute paths + * @param traces - trace index/indices to update (defaults to all) + */ export function restyle(root: Root, aobj: Data, traces?: number[] | number): Promise; +/** + * Update both trace and layout properties in a single call. + * + * @param traceUpdate - per-trace updates + * @param layoutUpdate - layout updates + * @param traces - trace index/indices `traceUpdate` applies to + */ export function update( root: Root, traceUpdate: Data, @@ -145,20 +223,37 @@ export function update( traces?: number[] | number ): Promise; +/** + * Add one or more traces to an existing plot. + * + * @param traces - trace(s) to add + * @param newIndices - position(s) in `data` where the traces should land + */ export function addTraces( root: Root, traces: Data | Data[], newIndices?: number[] | number ): Promise; +/** Remove trace(s) from a plot by index. */ export function deleteTraces(root: Root, indices: number[] | number): Promise; +/** + * Reorder existing traces. + * + * @param currentIndices - current trace indices to move + * @param newIndices - destination indices; if omitted, traces move to the end + */ export function moveTraces( root: Root, currentIndices: number[] | number, newIndices?: number[] | number ): Promise; +/** + * Append new data points to existing traces. Honors `maxPoints` to keep a + * rolling window per trace. + */ export function extendTraces( root: Root, update: Data | Data[], @@ -166,15 +261,22 @@ export function extendTraces( maxPoints?: number ): Promise; +/** Like `extendTraces`, but prepends data instead of appending. */ export function prependTraces( root: Root, update: Data | Data[], indices: number | number[] ): Promise; +/** Render the plot to a data URI or SVG string. */ export function toImage(root: RootOrData, opts?: ToImgopts): Promise; +/** Render the plot and trigger a browser download. */ export function downloadImage(root: RootOrData, opts: DownloadImgopts): Promise; +/** + * Reconcile the plot's current state with the supplied figure. Comparable + * to React's reconciliation: only changed attributes are reapplied. + */ export function react( root: Root, data: Data[], @@ -182,19 +284,33 @@ export function react( config?: Partial ): Promise; +/** Add animation frames to the plot's frame store. */ export function addFrames(root: Root, frames: Array>): Promise; +/** Remove frames from the plot's frame store by index. */ export function deleteFrames(root: Root, frames: number[]): Promise; +/** Register one or more Plotly modules (trace, locale, component, or apiMethod). */ export function register(modules: PlotlyModule | PlotlyModule[]): void; +/** + * Animate to a frame, frame group, or sequence of frames. + * + * @param frameOrGroupNameOrFrameList - frame name, group name, or list of either + * @param opts - animation options (frame timing, transition, mode, …) + */ export function animate( root: Root, frameOrGroupNameOrFrameList?: string | string[] | Partial | Array>, opts?: Partial ): Promise; +/** Validate a figure and return a list of issues (empty array means OK). */ export function validate(data: Data[], layout: Partial): ValidateResult[]; +/** Apply config defaults globally to subsequently-created plots. */ export function setPlotConfig(config: Partial): void; +/** Figure passed to `makeTemplate`/`validateTemplate`. */ export type TemplateFigure = Root | { data: Data[]; layout: Partial }; +/** Build a `Template` object from a representative figure. */ export function makeTemplate(figure: TemplateFigure): Template; +/** Check whether `template` is correctly applied to `figure`. */ export function validateTemplate(figure: TemplateFigure, template: Template): ValidateTemplateResult[]; diff --git a/src/types/core/config.d.ts b/src/types/core/config.d.ts index 691779d3b21..c80c6afae7d 100644 --- a/src/types/core/config.d.ts +++ b/src/types/core/config.d.ts @@ -18,27 +18,50 @@ export type { Edits }; // Image export options // --------------------------------------------------------------------------- +/** + * Options for `Plotly.toImage`. The graph is rendered to a string suitable + * for use as a data URI or as raw SVG markup. + */ export interface ToImgopts { + /** Output image format. */ format: 'jpeg' | 'png' | 'webp' | 'svg'; /** If null, uses current graph width */ width: number | null; /** If null, uses current graph height */ height: number | null; + /** Resolution multiplier for raster formats. */ scale?: number | undefined; } +/** + * Options for `Plotly.downloadImage`. Like `ToImgopts`, but also requires + * a `filename` because the result is saved to disk by the browser. + */ export interface DownloadImgopts { + /** Output image format. */ format: 'jpeg' | 'png' | 'webp' | 'svg'; + /** Output width in pixels. */ width: number | null; + /** Output height in pixels. */ height: number | null; + /** Filename used for the downloaded file (no extension required). */ filename: string; } +/** + * Static defaults applied to the mode-bar "download image" button. Set + * via `config.toImageButtonOptions`. + */ export interface ToImageButtonOptions { + /** Output image format. */ format?: 'png' | 'svg' | 'jpeg' | 'webp'; + /** Downloaded filename. */ filename?: string; + /** Output height in pixels. */ height?: number; + /** Output width in pixels. */ width?: number; + /** Resolution multiplier for raster formats. */ scale?: number; } @@ -68,4 +91,9 @@ interface ConfigOverrides { locales?: Record; format?: Record }>; } +/** + * Full plot config. Combines `ConfigBase` (schema-derived) with the + * hand-written `ConfigOverrides` so the hand-written entries replace the + * loosely-typed `any` versions from the schema. + */ export type Config = Omit & ConfigOverrides; diff --git a/src/types/core/data.d.ts b/src/types/core/data.d.ts index e68ef1d040e..9f2d78d5ca2 100644 --- a/src/types/core/data.d.ts +++ b/src/types/core/data.d.ts @@ -66,6 +66,11 @@ import type { export type { PlotType }; +/** + * Union of every trace shape. All fields are optional via `Partial<…>` — + * narrow with the `type` discriminator before accessing trace-specific + * attributes. + */ export type Data = | Partial | Partial diff --git a/src/types/core/data.internal.d.ts b/src/types/core/data.internal.d.ts index 68c800f7231..a2717eb9ef3 100644 --- a/src/types/core/data.internal.d.ts +++ b/src/types/core/data.internal.d.ts @@ -8,15 +8,25 @@ import type { Data } from './data'; /** - * Calculated trace data (internal) + * Calculated trace data (internal). + * + * Per-trace `calcdata` entries produced during the calc step. The shape is + * loose because each trace module attaches its own bookkeeping fields. */ export interface CalcData { + /** Original index in the user-supplied data array. */ i?: number; + /** Trace-specific transient bag — shape varies by trace module. */ t?: any; + /** Back-reference to the fully-populated trace this calcdata belongs to. */ trace?: FullData; + /** Computed x coordinate(s). */ x?: any; + /** Computed y coordinate(s). */ y?: any; + /** Computed z coordinate(s) (for 3-D traces). */ z?: any; + /** Trace-module-specific calc fields. */ [key: string]: any; } @@ -26,18 +36,31 @@ export interface CalcData { * internal helpers should use `FullData` rather than this directly. */ interface FullDataInternals { + /** Names of attributes whose values were arrays (used by transform machinery). */ _arrayAttrs?: string[]; + /** Trace index after array attribute expansion. */ _expandedIndex?: number; + /** Cached extremes (per axis) for autorange computation. */ _extremes?: Record; + /** Snapshot of the trace before transforms were applied. */ _fullInput?: any; + /** True when the trace has a transform that affects `calcdata`. */ _hasCalcTransform?: boolean; + /** Map from `_expandedIndex` back to original point indices. */ _indexToPoints?: { [key: number]: number[] }; + /** Original user-supplied trace object (pre-defaults). */ _input?: any; + /** Length of the trace's data arrays (after coercion). */ _length?: number; + /** Captured `meta` references from trace and layout for template binding. */ _meta?: { meta?: any; layout?: { meta?: any } }; + /** Reference to the trace module that handles this trace type. */ _module?: any; + /** Resolved template entry applied to this trace, if any. */ _template?: any; + /** Public trace index (also exposed to users on PlotData). */ index?: number; + /** Other internal fields written by trace modules. */ [key: string]: any; } diff --git a/src/types/core/events.d.ts b/src/types/core/events.d.ts index d915445fa9b..c4b14d9eebf 100644 --- a/src/types/core/events.d.ts +++ b/src/types/core/events.d.ts @@ -22,60 +22,105 @@ import type { Data } from './data'; // Point / datum types in events // --------------------------------------------------------------------------- +/** + * Numeric point payload returned by some scatter events that only carry + * coordinate values (no `Datum` widening, no `customdata`). + */ export interface PlotScatterDataPoint { + /** Index of the trace producing this point. */ curveNumber: number; + /** The trace this point belongs to. */ data: Data; + /** Index of the point within the trace's data arrays. */ pointIndex: number; + /** Point index after transforms (often equals `pointIndex`). */ pointNumber: number; + /** Numeric x coordinate. */ x: number; + /** Axis the point's x is plotted against. */ xaxis: LayoutAxis; + /** Numeric y coordinate. */ y: number; + /** Axis the point's y is plotted against. */ yaxis: LayoutAxis; } +/** + * General point payload used by click/hover/selection events. Coordinates + * are `Datum` because they may be strings, dates, or null in addition to + * numbers. + */ export interface PlotDatum { + /** Index of the trace producing this point. */ curveNumber: number; + /** The trace this point belongs to. */ data: Data; + /** User-supplied `customdata` entry for this point. */ customdata: Datum; + /** Index of the point within the trace's data arrays. */ pointIndex: number; + /** Point index after transforms (often equals `pointIndex`). */ pointNumber: number; + /** x coordinate of the point. */ x: Datum; + /** Axis the point's x is plotted against. */ xaxis: LayoutAxis; + /** y coordinate of the point. */ y: Datum; + /** Axis the point's y is plotted against. */ yaxis: LayoutAxis; + /** Resolved hover/display text for the point. */ text: string; } +/** A 2-D coordinate plus point identifier, used by lasso/select shapes. */ export interface PlotCoordinate { + /** x coordinate. */ x: number; + /** y coordinate. */ y: number; + /** Index of the point within its trace. */ pointNumber: number; } +/** Rectangular selection range in axis coordinates. */ export interface SelectionRange { + /** `[xmin, xmax]`. */ x: number[]; + /** `[ymin, ymax]`. */ y: number[]; } +/** Snapshot of a single point in a selection — all `PlotDatum` fields optional. */ export type PlotSelectedData = Partial; // --------------------------------------------------------------------------- // Mouse / hover / selection events // --------------------------------------------------------------------------- +/** Payload for `plotly_click` and `plotly_unhover` events. */ export interface PlotMouseEvent { + /** Points under the cursor at the moment of the event. */ points: PlotDatum[]; + /** The original DOM mouse event. */ event: MouseEvent; } +/** Payload for `plotly_hover` — augments `PlotMouseEvent` with axis values. */ export interface PlotHoverEvent extends PlotMouseEvent { + /** x values at the hover location, one per active axis. */ xvals: Datum[]; + /** y values at the hover location, one per active axis. */ yvals: Datum[]; } +/** Payload for `plotly_selected` / `plotly_selecting`. */ export interface PlotSelectionEvent { + /** Points inside the selection region. */ points: PlotDatum[]; + /** Rectangular range for box selection, when applicable. */ range?: SelectionRange | undefined; + /** Lasso polygon points, when applicable. */ lassoPoints?: SelectionRange | undefined; } @@ -83,18 +128,34 @@ export interface PlotSelectionEvent { // Restyle / Relayout events // --------------------------------------------------------------------------- +/** + * `update` object emitted by `plotly_restyle`. Keys are attribute paths + * (e.g. `'marker.color'`) and values are the new values being applied. + */ export interface PlotRestyleEventUpdate { + /** Attribute path → new value(s). */ [key: string]: any; } +/** Tuple emitted by `plotly_restyle`: the update object and the affected trace indices. */ export type PlotRestyleEvent = [PlotRestyleEventUpdate, number[]]; +/** + * Payload for `plotly_relayout`. Carries a `Partial` plus a few + * common bracketed axis-range/autorange keys that flatten nested updates. + */ export interface PlotRelayoutEvent extends Partial { + /** New x-axis range minimum, when the user changed the range. */ 'xaxis.range[0]'?: number; + /** New x-axis range maximum, when the user changed the range. */ 'xaxis.range[1]'?: number; + /** New y-axis range minimum, when the user changed the range. */ 'yaxis.range[0]'?: number; + /** New y-axis range maximum, when the user changed the range. */ 'yaxis.range[1]'?: number; + /** True when the user toggled x-axis autoranging on. */ 'xaxis.autorange'?: boolean; + /** True when the user toggled y-axis autoranging on. */ 'yaxis.autorange'?: boolean; } @@ -102,44 +163,77 @@ export interface PlotRelayoutEvent extends Partial { // 3D scene / annotation / animation / legend events // --------------------------------------------------------------------------- +/** Local 3-D coordinate triple used by `PlotScene`. */ interface Point { + /** x coordinate. */ x: number; + /** y coordinate. */ y: number; + /** z coordinate. */ z: number; } +/** Camera state of a 3-D scene (Plotly.js scene). */ export interface PlotScene { + /** Point the camera is looking at. */ center: Point; + /** Position of the camera. */ eye: Point; + /** Up direction of the camera. */ up: Point; } +/** Payload for `plotly_clickannotation`. */ export interface ClickAnnotationEvent { + /** Index of the annotation in `layout.annotations`. */ index: number; + /** User-supplied annotation object. */ annotation: Annotation; + /** Fully-resolved annotation with defaults applied. */ fullAnnotation: Annotation; + /** The original DOM mouse event. */ event: MouseEvent; } +/** Payload for `plotly_animatingframe`, emitted as each frame is rendered. */ export interface FrameAnimationEvent { + /** Name of the active frame. */ name: string; + /** The frame being animated. */ frame: Frame; + /** Animation options applied for this frame. */ animation: { + /** Per-frame animation options (duration, redraw, etc.). */ frame: AnimationFrameOpts; + /** Transition options (duration, easing). */ transition: Transition; }; } +/** + * Payload for `plotly_legendclick` and `plotly_legenddoubleclick`. Return + * `false` from the handler to suppress Plotly's default toggle behavior. + */ export interface LegendClickEvent { + /** The original DOM mouse event. */ event: MouseEvent; + /** The graph div element. */ node: PlotlyHTMLElement; + /** Trace index for the legend entry. */ curveNumber: number; + /** Expanded trace index (after array attribute expansion). */ expandedIndex: number; + /** User-supplied data array. */ data: Data[]; + /** User-supplied layout object. */ layout: Partial; + /** All animation frames defined on the graph. */ frames: Frame[]; + /** User-supplied config object. */ config: Partial; + /** Fully-resolved data array (defaults applied). */ fullData: Data[]; + /** Fully-resolved layout object (defaults applied). */ fullLayout: Partial; } @@ -147,21 +241,32 @@ export interface LegendClickEvent { // Slider events // --------------------------------------------------------------------------- +/** Convenience alias for a single step entry on a `Slider`. */ type SliderStep = NonNullable[number]; +/** Payload for `plotly_sliderchange`, fired when the active step changes. */ export interface SliderChangeEvent { + /** The slider whose state changed. */ slider: Slider; + /** The newly-active step. */ step: SliderStep; + /** True when triggered by user interaction (vs. programmatic). */ interaction: boolean; + /** Index of the previously-active step. */ previousActive: number; } +/** Payload for `plotly_sliderstart`, fired when slider interaction begins. */ export interface SliderStartEvent { + /** The slider being interacted with. */ slider: Slider; } +/** Payload for `plotly_sliderend`, fired when slider interaction ends. */ export interface SliderEndEvent { + /** The slider being interacted with. */ slider: Slider; + /** The step at which interaction ended. */ step: SliderStep; } @@ -169,33 +274,60 @@ export interface SliderEndEvent { // Sunburst / before-plot // --------------------------------------------------------------------------- +/** Point payload for `plotly_sunburstclick`. */ export interface SunburstPlotDatum { + /** Color value associated with the sector. */ color: number; + /** Index of the trace producing this sector. */ curveNumber: number; + /** The trace this sector belongs to. */ data: Data; + /** Entry sector id (the entry point of the sunburst hierarchy). */ entry: string; + /** Fully-resolved trace data. */ fullData: Data; + /** Hover text shown for this sector. */ hovertext: string; + /** Hierarchical id of the sector. */ id: string; + /** Display label of the sector. */ label: string; + /** Parent sector id. */ parent: string; + /** Percentage of the immediate entry sector this sector represents. */ percentEntry: number; + /** Percentage of the parent sector this sector represents. */ percentParent: number; + /** Percentage of the root sector this sector represents. */ percentRoot: number; + /** Index of the sector within the trace. */ pointNumber: number; + /** Root sector id. */ root: string; + /** Numeric value of the sector. */ value: number; } +/** Payload for `plotly_sunburstclick`, including the next-level entry. */ export interface SunburstClickEvent { + /** The original DOM mouse event. */ event: MouseEvent; + /** Sector id that becomes the entry on click. */ nextLevel: string; + /** Clicked sector(s). */ points: SunburstPlotDatum[]; } +/** + * Payload for `plotly_beforeplot`. Returning `false` from the handler + * cancels the plot operation. + */ export interface BeforePlotEvent { + /** Data array about to be plotted. */ data: Data[]; + /** Layout about to be applied. */ layout: Partial; + /** Config about to be applied. */ config: Partial; } @@ -203,21 +335,41 @@ export interface BeforePlotEvent { // PlotlyHTMLElement // --------------------------------------------------------------------------- +/** + * The graph div returned by `Plotly.newPlot` and friends. Extends + * `HTMLElement` with Plotly-specific event subscriptions, the resolved + * data/layout, and lifecycle helpers. + */ export interface PlotlyHTMLElement extends HTMLElement { + /** Subscribe to click or unhover events. */ on(event: 'plotly_click' | 'plotly_unhover', callback: (event: PlotMouseEvent) => void): void; + /** Subscribe to hover events. */ on(event: 'plotly_hover', callback: (event: PlotHoverEvent) => void): void; + /** Subscribe to selection events (in-progress and finalized). */ on(event: 'plotly_selecting' | 'plotly_selected', callback: (event: PlotSelectionEvent) => void): void; + /** Subscribe to restyle events (trace attribute updates). */ on(event: 'plotly_restyle', callback: (data: PlotRestyleEvent) => void): void; + /** Subscribe to relayout events (layout updates, including in-progress). */ on(event: 'plotly_relayout' | 'plotly_relayouting', callback: (event: PlotRelayoutEvent) => void): void; + /** Subscribe to annotation click events. */ on(event: 'plotly_clickannotation', callback: (event: ClickAnnotationEvent) => void): void; + /** Subscribe to per-frame animation events. */ on(event: 'plotly_animatingframe', callback: (event: FrameAnimationEvent) => void): void; + /** Subscribe to legend click events; return `false` to suppress default toggle. */ on(event: 'plotly_legendclick' | 'plotly_legenddoubleclick', callback: (event: LegendClickEvent) => boolean): void; + /** Subscribe to slider change events. */ on(event: 'plotly_sliderchange', callback: (event: SliderChangeEvent) => void): void; + /** Subscribe to slider end-of-interaction events. */ on(event: 'plotly_sliderend', callback: (event: SliderEndEvent) => void): void; + /** Subscribe to slider start-of-interaction events. */ on(event: 'plotly_sliderstart', callback: (event: SliderStartEvent) => void): void; + /** Subscribe to sunburst sector click events. */ on(event: 'plotly_sunburstclick', callback: (event: SunburstClickEvent) => void): void; + /** Subscribe to generic plotly events (low-level catch-all). */ on(event: 'plotly_event', callback: (data: any) => void): void; + /** Subscribe to pre-plot events; return `false` to cancel plotting. */ on(event: 'plotly_beforeplot', callback: (event: BeforePlotEvent) => boolean): void; + /** Subscribe to bare lifecycle events that carry no payload. */ on( event: | 'plotly_afterexport' @@ -234,8 +386,11 @@ export interface PlotlyHTMLElement extends HTMLElement { | 'plotly_transitioninterrupted', callback: () => void ): void; + /** Remove all listeners for the named event. */ removeAllListeners: (handler: string) => void; + /** Resolved data array currently rendered on the graph. */ data: Data[]; + /** Resolved layout currently applied to the graph. */ layout: Layout; } @@ -243,6 +398,7 @@ export interface PlotlyHTMLElement extends HTMLElement { // Event name union (kept for convenience) // --------------------------------------------------------------------------- +/** Union of every plotly event name. Use to constrain `event` parameters. */ export type PlotlyEventName = | 'plotly_afterexport' | 'plotly_afterplot' diff --git a/src/types/core/graph-div.internal.d.ts b/src/types/core/graph-div.internal.d.ts index 49632fda473..a87362a38cb 100644 --- a/src/types/core/graph-div.internal.d.ts +++ b/src/types/core/graph-div.internal.d.ts @@ -13,9 +13,14 @@ import type { CalcData, FullData } from './data.internal'; import type { FullLayout } from './layout.internal'; /** - * Graph context containing environment info (mirrors Config for internal storage) + * Graph context containing environment info (mirrors Config for internal storage). + * + * Stored on `gd._context`. Mostly the resolved `Config`, but the index + * signature allows trace modules and components to stash module-specific + * runtime state alongside the user-visible config. */ export interface GraphContext extends Partial { + /** Module-specific runtime state attached to the context. */ [key: string]: any; } @@ -24,19 +29,34 @@ export interface GraphContext extends Partial { * This is an HTMLDivElement with additional Plotly-specific properties. */ export interface GraphDiv extends HTMLDivElement { + /** Resolved configuration plus internal context. */ _context?: GraphContext; + /** True while an inline edit is in progress (e.g. axis title rename). */ _editing?: boolean; + /** Trace data after defaults are applied. */ _fullData?: FullData[]; + /** Layout after defaults are applied. */ _fullLayout?: FullLayout; + /** Most recent hover payloads (used to deduplicate hover events). */ _hoverdata?: any[]; + /** True once `Plotly.plot`/`newPlot` has run at least once. */ _initialized?: boolean; + /** Outstanding async operations the next call must await. */ _promises?: Promise[]; + /** Transient state used during transitions and animations. */ _transitionData?: any; + /** True while a transition/animation is running. */ _transitioning?: boolean; + /** Per-subplot, per-trace `calcdata` arrays produced by the calc step. */ calcdata?: CalcData[][]; + /** User-supplied config object. */ config?: Partial; + /** User-supplied data array. */ data?: Data[]; + /** Plotly event emitter; bound to `EventEmitter` once initialized. */ emit?: (event: string, ...args: any[]) => void; + /** User-supplied layout object. */ layout?: Partial; + /** Misc plotly-internal properties (module bookkeeping, caches, etc.). */ [key: string]: any; } diff --git a/src/types/core/layout.d.ts b/src/types/core/layout.d.ts index e904649e2d2..bf2a38140ca 100644 --- a/src/types/core/layout.d.ts +++ b/src/types/core/layout.d.ts @@ -16,19 +16,30 @@ import type { PlotlyHTMLElement } from './events'; // Axis name types (template literal utilities — not in schema) // --------------------------------------------------------------------------- +/** + * Numeric axis suffix plus the optional ` domain` qualifier. The suffix is + * empty for the first axis (`x` / `y`) and `2` through `99` otherwise. + */ type xYAxisNames = `${ | '' | `${2 | 3 | 4 | 5 | 6 | 7 | 8 | 9}` | `${1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9}${0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9}`}${'' | ' domain'}`; +/** Any valid x-axis reference: `'x'`, `'x2'`, …, `'x99'`, optionally `' domain'`. */ export type XAxisName = `x${xYAxisNames}`; +/** Any valid y-axis reference: `'y'`, `'y2'`, …, `'y99'`, optionally `' domain'`. */ export type YAxisName = `y${xYAxisNames}`; +/** Any valid axis reference (x or y, numbered or not, domain-qualified or not). */ export type AxisName = XAxisName | YAxisName; // --------------------------------------------------------------------------- // ModeBar / Icon (behavioral types — not in schema) // --------------------------------------------------------------------------- +/** + * Names of built-in mode-bar buttons. Used by `config.modeBarButtonsToAdd` + * and `config.modeBarButtonsToRemove` to reference Plotly's defaults. + */ export type ModeBarDefaultButtons = | 'lasso2d' | 'select2d' @@ -71,38 +82,68 @@ export type ModeBarDefaultButtons = | 'hoverclosest' | 'v1hovermode'; +/** Click handler signature for custom mode-bar buttons. */ export type ButtonClickEvent = (gd: PlotlyHTMLElement, ev: MouseEvent) => void; +/** + * SVG icon definition for a custom mode-bar button or modebar logo + * (matches the format used by Plotly's bundled icon set). + */ export interface Icon { + /** Icon viewBox height. */ height?: number | undefined; + /** Icon viewBox width. */ width?: number | undefined; + /** SVG font-ascent value. */ ascent?: number | undefined; + /** SVG font-descent value. */ descent?: number | undefined; + /** Internal icon name (used by the bundled set). */ name?: string | undefined; + /** SVG `path` data for a single-path icon. */ path?: string | undefined; + /** Raw SVG markup for multi-element icons. */ svg?: string | undefined; + /** Optional SVG `transform` applied to the icon. */ transform?: string | undefined; } +/** Definition of a custom mode-bar button. */ export interface ModeBarButton { + /** Unique identifier for this button. */ name: string; + /** Tooltip text shown on hover. */ title: string; + /** SVG icon — either a registered icon name or an `Icon` definition. */ icon: string | Icon; + /** Optional gravity hint controlling button placement. */ gravity?: string | undefined; + /** Handler invoked when the button is clicked. */ click: ButtonClickEvent; + /** Attribute path the button toggles (paired with `val`). */ attr?: string | undefined; + /** Value applied when the button activates (paired with `attr`). */ val?: any; + /** When true, the button can show an active/inactive state. */ toggle?: boolean | undefined; } +/** Union accepted by `config.modeBarButtons*`: a default name or a custom button. */ export type ModeBarButtonAny = ModeBarDefaultButtons | ModeBarButton; // --------------------------------------------------------------------------- // Template (circular reference — schema says `any`) // --------------------------------------------------------------------------- +/** + * A plot template — a partial figure (`data` and/or `layout`) that supplies + * default styling. Hand-written because the schema's `valType: 'any'` + * cannot self-reference. + */ export interface Template { + /** Template trace defaults, keyed by trace type. */ data?: { [type in PlotType]?: Data[] } | undefined; + /** Template layout defaults. */ layout?: Partial | undefined; } @@ -110,5 +151,5 @@ export interface Template { // Deprecated aliases // --------------------------------------------------------------------------- +/** @deprecated `Mapbox` traces are deprecated; use the unified `Map`/`MapLayout` types. */ export type { MapLayout as Mapbox } from '../generated/schema'; - diff --git a/src/types/core/layout.internal.d.ts b/src/types/core/layout.internal.d.ts index 6916feea4c4..658b7c55bab 100644 --- a/src/types/core/layout.internal.d.ts +++ b/src/types/core/layout.internal.d.ts @@ -11,169 +11,315 @@ import type { Layout } from '../generated/schema'; import type { Color } from '../lib/common'; /** - * Fully processed layout with all defaults applied (internal use) + * Fully processed layout with all defaults applied (internal use). + * + * Extends the public `Layout` with the `_`-prefixed bookkeeping fields the + * defaults/supply/plot pipeline attaches. Trace and component modules read + * and write these fields; users should not touch them directly. */ export interface FullLayout extends Layout { // Core internal state + /** Resolved list of base-plot modules in use (cartesian, polar, …). */ _basePlotModules?: any[]; + /** Recomputes inverse-transform caches after a transform change. */ _calcInverseTransform?: (gd: any) => void; + /** True once initial autosize has completed at least once. */ _initialAutoSizeIsDone?: boolean; + /** Cached inverse CSS transform for hit-testing. */ _invTransform?: any; + /** Names of legend containers present in the layout. */ _legends?: string[]; + /** Captured `meta` references for template binding. */ _meta?: { meta?: any; layout?: { meta?: any } }; + /** Resolved list of trace modules in use. */ _modules?: any[]; + /** Map of subplot id → subplot object (cartesian/3D/geo/…). */ _plots?: { [key: string]: any }; + /** Accumulated margin pushes from components like colorbars. */ _pushmargin?: { [key: string]: any }; + /** Resolved plot area dimensions and margins. */ _size?: LayoutSize; + /** Grouping of subplot ids by family (cartesian, polar, …). */ _subplots?: SubplotInfo; + /** Resolved template applied to this layout. */ _template?: any; + /** Unique identifier for this layout instance. */ _uid?: string; // SVG layers + /** Background-layer selection. */ _bgLayer?: Selection; + /** Cartesian subplot layer selection. */ _cartesianlayer?: Selection; + /** Clip-path defs selection. */ _clips?: Selection; + /** Top-level container selection (the graph div's inner wrapper). */ _container?: Selection; + /** SVG `` selection. */ _defs?: Selection; + /** Drag-cover overlay used during interactions. */ _dragCover?: Selection; + /** Drag handle layer selection. */ _draggers?: Selection; + /** Funnel-area subplot layer selection. */ _funnelarealayer?: Selection; + /** Geo subplot layer selection. */ _geolayer?: Selection; + /** WebGL canvas selection. */ _glcanvas?: Selection; + /** WebGL container selection. */ _glcontainer?: Selection; + /** WebGL image overlay selection. */ _glimages?: Selection; + /** Icicle subplot layer selection. */ _iciclelayer?: Selection; + /** Lower-layer images selection. */ _imageLowerLayer?: Selection; + /** Upper-layer images selection. */ _imageUpperLayer?: Selection; + /** Indicator subplot layer selection. */ _indicatorlayer?: Selection; + /** Info layer (annotations, titles, etc.) selection. */ _infolayer?: Selection; + /** Menu (updatemenu) layer selection. */ _menulayer?: Selection; + /** Mode-bar container div selection. */ _modebardiv?: Selection; + /** Root SVG paper selection. */ _paper?: Selection; + /** Paper-div selection (the container holding `_paper`). */ _paperdiv?: Selection; + /** Pie subplot layer selection. */ _pielayer?: Selection; + /** Polar subplot layer selection. */ _polarlayer?: Selection; + /** Selection-overlay layer. */ _selectionLayer?: Selection; + /** Lower shapes layer selection. */ _shapeLowerLayer?: Selection; + /** Upper shapes layer selection. */ _shapeUpperLayer?: Selection; + /** Smith subplot layer selection. */ _smithlayer?: Selection; + /** Sunburst subplot layer selection. */ _sunburstlayer?: Selection; + /** Ternary subplot layer selection. */ _ternarylayer?: Selection; + /** Top-level defs selection (rendered on top of `_paper`). */ _topdefs?: Selection; + /** Top-level clip-path defs selection. */ _topclips?: Selection; + /** Top-paper SVG selection (overlay layer). */ _toppaper?: Selection; + /** Treemap subplot layer selection. */ _treemaplayer?: Selection; + /** Zoom-box overlay selection. */ _zoomlayer?: Selection; // Hover state + /** Hover-label SVG layer selection. */ _hoverlayer?: Selection; + /** Hover paper selection (separate from the main paper for overlays). */ _hoverpaper?: Selection; + /** Subplot id currently showing hover labels. */ _hoversubplot?: string | null; + /** Selection of the last-rendered hover label group. */ _lasthover?: Selection | null; + /** Callback to redo the most recent hover (used after resize/relayout). */ _rehover?: (() => void) | null; // Modebar + /** Active mode-bar instance. */ _modeBar?: any; // Cross-trace computation state + /** Bar/box alignment options keyed by axis pair. */ _alignmentOpts?: Record; + /** Groups of axes joined by `constrain` settings. */ _axisConstraintGroups?: any[]; + /** Groups of axes joined by `matches` settings. */ _axisMatchGroups?: any[]; + /** Resolved coloraxis containers keyed by id. */ _colorAxes?: Record; + /** Trace-defaults derived from the active template. */ _dataTemplate?: Record; + /** Extra d3-format specifiers from layout/trace settings. */ _extraFormat?: Record; + /** First scatter trace per subplot (used for hover styling). */ _firstScatter?: Record; + /** Funnelarea color map keyed by label. */ _funnelareacolormap?: Record; + /** Shared histogram-binning options across stacked traces. */ _histogramBinOpts?: Record; + /** Icicle color map keyed by id. */ _iciclecolormap?: Record; + /** Number of box traces currently visible. */ _numBoxes?: number; + /** Number of violin traces currently visible. */ _numViolins?: number; + /** Pie color map keyed by label. */ _piecolormap?: Record; + /** Resolved range-slider trace data. */ _rangeSliderData?: any[]; + /** Axis ids that have requested a range slider. */ _requestRangeslider?: Record; + /** Numeric-rounding options keyed by axis. */ _roundFnOpts?: Record; + /** Scatter stacking groups keyed by stackgroup id. */ _scatterStackOpts?: Record; + /** Splom axes resolved by direction. */ _splomAxes?: { x: Record; y: Record }; + /** Splom shared grid renderer. */ _splomGrid?: any; + /** Default splom grid options. */ _splomGridDflt?: Record; + /** Splom WebGL scenes keyed by subplot. */ _splomScenes?: Record; + /** Splom subplot lookup. */ _splomSubplots?: Record; + /** Sunburst color map keyed by id. */ _sunburstcolormap?: Record; + /** Resolved list of transform modules in use. */ _transformModules?: any[]; + /** Treemap color map keyed by id. */ _treemapcolormap?: Record; + /** Violin scale-group statistics keyed by group id. */ _violinScaleGroupStats?: Record; + /** Trace modules that are visible after applying `visible`. */ _visibleModules?: any[]; // Scalar flags and values + /** Whether cartesian spikelines are currently active. */ _cartesianSpikesEnabled?: 'on' | 'off'; + /** Name of the currently-active animation frame. */ _currentFrame?: string; + /** Active d3 locale for number/date formatting. */ _d3locale?: Locale; + /** Total number of data points across traces. */ _dataLength?: number; + /** Whether scroll-zoom is enabled by config. */ _enablescrollzoom?: boolean; + /** Default titles keyed by container (axis title fallback, etc.). */ _dfltTitle?: Record; + /** True while a GUI-driven edit (chart-studio) is happening. */ _guiEditing?: boolean; + /** Predicate checking whether a category (`'cartesian'`, `'gl3d'`, …) is active. */ _has?: (category: string) => boolean; + /** Optimization flag: only large splom traces present. */ _hasOnlyLargeSploms?: boolean; + /** Inside-tick-label range overrides keyed by axis. */ _insideTickLabelsUpdaterange?: Record; + /** Inverse horizontal scale factor for CSS transforms. */ _invScaleX?: number; + /** Inverse vertical scale factor for CSS transforms. */ _invScaleY?: number; + /** Most recent bounding box of the graph div. */ _lastBBox?: DOMRect; + /** Mapbox access token captured from config. */ _mapboxAccessToken?: string; + /** Push-margin ids keyed by component path. */ _pushmarginIds?: Record; + /** Counter to prevent infinite auto-margin redraw loops. */ _redrawFromAutoMarginCount?: number; + /** True while a relayout/replot is in progress. */ _replotting?: boolean; + /** Reserved margin pixels per side. */ _reservedMargin?: Record; + /** Whether the background layer needs to be (re)created. */ _shouldCreateBgLayer?: boolean; + /** Skip the defaults step (used by certain test/edit paths). */ _skipDefaults?: boolean; + /** Stable unique ids for each trace. */ _traceUids?: string[]; + /** Localized noun for "trace" (used in default titles). */ _traceWord?: string; + /** Z-index ordering of subplot layers. */ _zindices?: number[]; // Interaction state + /** Index of the active selection in `layout.selections`. */ _activeSelectionIndex?: number; + /** Index of the active shape in `layout.shapes`. */ _activeShapeIndex?: number; + /** Callback to deactivate the active selection. */ _deactivateSelection?: (gd: any) => void; + /** Callback to deactivate the active shape. */ _deactivateShape?: (gd: any) => void; + /** Cached deselect callback. */ _deselect?: any; + /** Vertical offset for colorbar title repositioning. */ _hColorbarMoveCBTitle?: number; + /** Vertical offset for colorbar move title. */ _hColorbarMoveTitle?: number; + /** Subplot id of the last selection interaction. */ _lastSelectedSubplot?: string; + /** Suppress emitting `plotly_selected` at the start of selection. */ _noEmitSelectedAtStart?: boolean; + /** True while a draw outline is being rendered (lasso/select). */ _outlining?: boolean; + /** Pre-GUI state snapshot for undo support. */ _preGUI?: Record; + /** Previous selection snapshots for restoration. */ _previousSelections?: any[]; + /** Callback to redo the most recent drag. */ _redrag?: (() => void) | null; + /** Callback to redo the most recent selection. */ _reselect?: (() => void) | null; + /** Per-trace pre-GUI state snapshot. */ _tracePreGUI?: Record>; + /** Other internal fields written by trace modules. */ [key: string]: any; } /** - * Layout size information (internal) + * Layout size information (internal). + * + * Pixel dimensions of the plot area and its margins. Single-letter field + * names match the historical Plotly internal convention. */ export interface LayoutSize { + /** Bottom margin (px). */ b: number; + /** Plot-area height (px). */ h: number; + /** Left margin (px). */ l: number; + /** Pad (px) — additional inside-edge spacing. */ p: number; + /** Right margin (px). */ r: number; + /** Top margin (px). */ t: number; + /** Plot-area width (px). */ w: number; } /** - * Subplot information (internal) + * Subplot information (internal). + * + * Lists subplot identifiers per subplot family. The catch-all index + * signature accommodates additional families added by trace modules. */ export interface SubplotInfo { + /** Additional subplot families keyed by name. */ [key: string]: string[] | undefined; + /** Cartesian subplot ids (e.g. `'xy'`, `'x2y2'`). */ cartesian?: string[]; + /** Geo subplot ids. */ geo?: string[]; + /** GL2D subplot ids. */ gl2d?: string[]; + /** Map subplot ids. */ map?: string[]; + /** Mapbox subplot ids (deprecated alias of `map`). */ mapbox?: string[]; + /** Pie subplot ids. */ pie?: string[]; + /** Polar subplot ids. */ polar?: string[]; + /** Sankey subplot ids. */ sankey?: string[]; + /** Ternary subplot ids. */ ternary?: string[]; } diff --git a/src/types/lib/attributes.d.ts b/src/types/lib/attributes.d.ts index f95989ede38..70010f41384 100644 --- a/src/types/lib/attributes.d.ts +++ b/src/types/lib/attributes.d.ts @@ -28,12 +28,23 @@ import type { ColorScale, Datum, TypedArray } from './common'; // Attribute info — discriminated union by valType // --------------------------------------------------------------------------- +/** + * Fields shared by every attribute kind, regardless of `valType`. Specific + * attribute interfaces extend this with their `valType` discriminator and + * any type-specific options. + */ interface BaseAttrInfo { + /** Human-readable description of the attribute, surfaced in the schema. */ description?: string; + /** Plotly editType bucket — what kind of redraw is triggered on change. */ editType?: string; + /** Semantic role used by the schema and template machinery. */ role?: 'object' | 'info' | 'style' | 'data'; + /** When true, the attribute accepts a per-point array of values. */ arrayOk?: boolean; + /** When true, the attribute can be animated via `Plotly.animate`. */ anim?: boolean; + /** Default value used when the attribute is omitted. */ dflt?: unknown; /** Names a reusable item slot in template processing */ _isLinkedToArray?: string; @@ -41,88 +52,152 @@ interface BaseAttrInfo { _isSubplotObj?: boolean; } +/** Attribute backed by a data array (`x`, `y`, `z`, marker channels, etc.). */ export interface DataArrayAttr extends BaseAttrInfo { + /** Discriminator: data array. */ valType: 'data_array'; + /** Optional default data array. */ dflt?: Datum[] | TypedArray; } +/** Numeric attribute (may be fractional). */ export interface NumberAttr extends BaseAttrInfo { + /** Discriminator: number. */ valType: 'number'; + /** Default numeric value. */ dflt?: number; + /** Inclusive lower bound. */ min?: number; + /** Inclusive upper bound. */ max?: number; } +/** Integer-valued attribute. */ export interface IntegerAttr extends BaseAttrInfo { + /** Discriminator: integer. */ valType: 'integer'; + /** Default integer value. */ dflt?: number; + /** Inclusive lower bound. */ min?: number; + /** Inclusive upper bound. */ max?: number; } +/** Free-form string attribute, optionally constrained to a set of values. */ export interface StringAttr extends BaseAttrInfo { + /** Discriminator: string. */ valType: 'string'; + /** Default string value. */ dflt?: string; /** Allow whitespace-only strings */ noBlank?: boolean; + /** When true, the coercer rejects non-string inputs instead of stringifying. */ strict?: boolean; + /** Optional allow-list of values (still typed as string for flexibility). */ values?: readonly string[]; } +/** Boolean attribute. */ export interface BooleanAttr extends BaseAttrInfo { + /** Discriminator: boolean. */ valType: 'boolean'; + /** Default boolean value. */ dflt?: boolean; } +/** Color attribute — CSS color string. */ export interface ColorAttr extends BaseAttrInfo { + /** Discriminator: color. */ valType: 'color'; + /** Default color (CSS color string). */ dflt?: string; } +/** Colorscale attribute — a built-in name or an array of stops. */ export interface ColorScaleAttr extends BaseAttrInfo { + /** Discriminator: colorscale. */ valType: 'colorscale'; + /** Default colorscale. */ dflt?: ColorScale; } +/** Array of CSS color strings, used for categorical palettes. */ export interface ColorListAttr extends BaseAttrInfo { + /** Discriminator: list of colors. */ valType: 'colorlist'; + /** Default color list. */ dflt?: string[]; } +/** Angle attribute — degrees, or `'auto'`. */ export interface AngleAttr extends BaseAttrInfo { + /** Discriminator: angle. */ valType: 'angle'; + /** Default angle, or `'auto'`. */ dflt?: number | 'auto'; } +/** Subplot identifier (e.g. `'x2'`, `'yaxis3'`); pattern-matched at runtime. */ export interface SubplotIdAttr extends BaseAttrInfo { + /** Discriminator: subplot id. */ valType: 'subplotid'; + /** Default subplot id. */ dflt?: string; + /** Optional regex validation pattern. */ regex?: string; } +/** + * Enumerated attribute — value must be one of `values`. Generic parameter + * `V` narrows the union when authors declare the values with `as const`. + */ export interface EnumeratedAttr extends BaseAttrInfo { + /** Discriminator: enumerated. */ valType: 'enumerated'; + /** Allowed values. */ values: V; + /** Default value, must appear in `values`. */ dflt?: V[number]; + /** When true, numeric values are coerced to their nearest enum entry. */ coerceNumber?: boolean; } +/** + * Flag-list attribute — value is a `+`-joined combination of `flags` plus + * any single value from `extras` (e.g. `'x+y'`, `'all'`). + */ export interface FlagListAttr extends BaseAttrInfo { + /** Discriminator: flag list. */ valType: 'flaglist'; + /** Combinable flag tokens. */ flags: F; + /** Standalone values that replace (rather than combine with) flags. */ extras?: readonly string[]; + /** Default flag-list value. */ dflt?: string; } +/** + * Info-array attribute — fixed- or variable-length tuple. `items` is one + * descriptor (variable length) or an array of descriptors (per-slot). + */ export interface InfoArrayAttr extends BaseAttrInfo { + /** Discriminator: info array. */ valType: 'info_array'; + /** Per-slot or single-element shape descriptor. */ items?: AttrInfo | readonly AttrInfo[]; + /** When true, the array can have arbitrary length. */ freeLength?: boolean; + /** Dimensionality of the array (`1`, `2`, or `'1-2'` for either). */ dimensions?: 1 | 2 | '1-2'; + /** Default array value. */ dflt?: unknown[]; } +/** Catch-all attribute — accepts anything; weakest typing. */ export interface AnyAttr extends BaseAttrInfo { + /** Discriminator: any. */ valType: 'any'; } @@ -151,6 +226,6 @@ export type AttrInfo = * (editType, role, _isLinkedToArray, etc.) live alongside attributes. */ export interface AttributeMap { + /** Either a leaf attribute, a nested map, or one of the meta-key primitives. */ [key: string]: AttrInfo | AttributeMap | string | boolean | undefined; } - diff --git a/src/types/lib/common.d.ts b/src/types/lib/common.d.ts index 15764df875f..14c54e0001e 100644 --- a/src/types/lib/common.d.ts +++ b/src/types/lib/common.d.ts @@ -8,8 +8,17 @@ // Scalar / union types // --------------------------------------------------------------------------- +/** + * A single data value as accepted by axes and marker channels. `null` + * represents a missing point. + */ export type Datum = string | number | Date | null; +/** + * Any numeric typed array plotly.js accepts in place of a plain `number[]`. + * Typed arrays avoid per-element boxing and are recommended for large + * datasets. + */ export type TypedArray = | Int8Array | Uint8Array @@ -21,43 +30,83 @@ export type TypedArray = | Float32Array | Float64Array; +/** + * A color value. Accepts CSS color strings, raw numeric values (mapped via + * a colorscale), or arrays/2-D arrays for per-point/per-grid coloring. + */ export type Color = | string | number | Array | Array>; +/** + * A colorscale specification: a named built-in scale (`'Viridis'`), an + * array of CSS color strings, or an array of `[stop, color]` tuples where + * `stop` is in `[0, 1]`. + */ export type ColorScale = string | string[] | Array<[number, string]>; +/** + * Value for `dtick` (tick spacing): a number for numeric axes, a + * string for date/log/category axes (e.g. `'M1'` = one month). + */ export type DTickValue = number | string; +/** + * Marker symbol — a symbol name (`'circle'`, `'square-open'`), a symbol + * index, or an array thereof for per-point symbols. + */ export type MarkerSymbol = string | number | Array; +/** Horizontal anchor position for components (legend, annotation, etc.). */ export type XAnchor = 'auto' | 'left' | 'center' | 'right'; +/** Vertical anchor position for components (legend, annotation, etc.). */ export type YAnchor = 'auto' | 'top' | 'middle' | 'bottom'; // --------------------------------------------------------------------------- // Error bars // --------------------------------------------------------------------------- +/** + * Shared options applicable to all error bar variants. Composed into + * `ErrorBar` along with type-specific fields. + */ export interface ErrorOptions { + /** Whether error bars are drawn. */ visible: boolean; + /** When true, the same length is used on both sides of each point. */ symmetric: boolean; + /** Color of the error bar lines. */ color: Color; + /** Line thickness in pixels. */ thickness: number; + /** Cross-tick width in pixels at the end of each error bar. */ width: number; } +/** + * Error bar configuration — a tagged union over `type`: + * - `'constant'` / `'percent'` carry a scalar `value` (and optional + * `valueminus` for asymmetric bars). + * - `'data'` carries explicit `array` (and optional `arrayminus`) data. + */ export type ErrorBar = Partial & ( | { + /** Bar length is computed from `value` (constant or percent of point). */ type: 'constant' | 'percent'; + /** Magnitude of the upper (or symmetric) bar. */ value: number; + /** Magnitude of the lower bar when asymmetric. */ valueminus?: number | undefined; } | { + /** Bar lengths are taken from explicit data arrays. */ type: 'data'; + /** Per-point magnitudes for the upper (or symmetric) bar. */ array: Datum[]; + /** Per-point magnitudes for the lower bar when asymmetric. */ arrayminus?: Datum[] | undefined; } ); From 6d8db8829749707b2db816e8a2f2ff7f3ea5da73 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Tue, 26 May 2026 15:58:49 -0600 Subject: [PATCH 073/241] Update CI type diff check --- package.json | 2 +- src/types/CONVERTING_ATTRIBUTES.md | 18 ++++++++++-------- src/types/GENERATOR.md | 16 ++++++++++++---- 3 files changed, 23 insertions(+), 13 deletions(-) diff --git a/package.json b/package.json index d82dcc62bf0..a078c8a4630 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "extra-bundles": "node tasks/extra_bundles.mjs", "locales": "node tasks/locales.js", "schema": "node tasks/schema.mjs", - "schema-typegen-diff-check": "npm run schema && git diff --exit-code src/types/generated/", + "schema-typegen-diff-check": "npm run schema && git diff --exit-code src/types/generated/ test/plot-schema.json", "stats": "node tasks/stats.js", "find-strings": "node tasks/find_locale_strings.js", "preprocess": "ts-node tasks/preprocess.js", diff --git a/src/types/CONVERTING_ATTRIBUTES.md b/src/types/CONVERTING_ATTRIBUTES.md index 46c7fffc229..faf87571eee 100644 --- a/src/types/CONVERTING_ATTRIBUTES.md +++ b/src/types/CONVERTING_ATTRIBUTES.md @@ -94,16 +94,18 @@ should be added to the corresponding `Full*` interface instead. ### 6. Verify ```bash -npm run typecheck # zero errors -npm run schema # schema regenerates clean -git diff test/plot-schema.json - # the relevant section should be byte-identical - # to before the conversion +npm run typecheck # zero errors +npm run schema-typegen-diff-check # regen + check test/plot-schema.json + # and src/types/generated/ are unchanged ``` -If the schema diff is non-empty, the attribute object's runtime shape -changed somewhere — most often a missed `as const` or a typo. Compare -character-by-character with the original `.js` file. +The `schema-typegen-diff-check` script regenerates both the runtime schema +and the generated `.d.ts`, then `git diff --exit-code`s them. A correct +conversion produces a byte-identical schema; CI fails otherwise. This is +the conversion's safety net — if either file diffs after the conversion, +the attribute object's runtime shape changed (most often a missed +`as const` or a typo). Compare character-by-character with the original +`.js` file. ### 7. Commit diff --git a/src/types/GENERATOR.md b/src/types/GENERATOR.md index 2342ad70af2..167f3eae672 100644 --- a/src/types/GENERATOR.md +++ b/src/types/GENERATOR.md @@ -317,7 +317,15 @@ exported-but-not-re-exported types. ## CI integration -`npm run schema-typegen-diff-check` runs the generator and then verifies the output -hasn't drifted via `git diff --exit-code`. If the working tree differs, -exit code 1 — meaning a developer changed the schema but didn't commit -the regenerated declarations. +`npm run schema-typegen-diff-check` runs the generator and then verifies that +both `test/plot-schema.json` and `src/types/generated/` are unchanged via +`git diff --exit-code`. If either differs, exit code 1 — meaning either a +developer changed the source schema but didn't commit the regenerated +artifacts, or an attribute-file conversion silently altered the runtime +schema and the change wasn't intentionally committed. + +This is what makes the JS-to-TS conversion workflow safe: a correct +conversion produces a byte-identical schema, so the check passes; an +incorrect conversion (typo in a `values` array, missed default, wrong +`valType`) changes the schema and CI fails until the developer fixes the +source or commits a deliberate change. From 6c73ea3b44f9fc98286cff94e9363b273fd25071 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Tue, 26 May 2026 16:19:39 -0600 Subject: [PATCH 074/241] Clarify docs about source of truth --- src/types/ARCHITECTURE.md | 7 +++++-- src/types/CONVERTING_ATTRIBUTES.md | 19 ++++++++++++------- src/types/SETUP.md | 2 +- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/types/ARCHITECTURE.md b/src/types/ARCHITECTURE.md index 4171290373c..afa9ec32531 100644 --- a/src/types/ARCHITECTURE.md +++ b/src/types/ARCHITECTURE.md @@ -36,8 +36,11 @@ re-exports. The split: -- **Generated types** are the single source of truth for everything in - Plotly's attribute schema. +- **Generated types** are the authoritative TypeScript representation of + the runtime schema. The schema itself is produced from Plotly's JS + attribute files (`src/.../attributes.js`), which remain the source of + truth: chain is **attribute files → `plot-schema.json` → generated + types**. - **`src/types/generated/schema.d.ts`** contains: - **Common enum aliases** discovered from the schema (Calendar, Dash, AxisType, PatternShape, XRef, YRef, TransitionEasing, PlotType). diff --git a/src/types/CONVERTING_ATTRIBUTES.md b/src/types/CONVERTING_ATTRIBUTES.md index faf87571eee..6030ec3ebc3 100644 --- a/src/types/CONVERTING_ATTRIBUTES.md +++ b/src/types/CONVERTING_ATTRIBUTES.md @@ -1,17 +1,22 @@ # Converting Attribute Files to TypeScript This is the **active workflow** for migrating Plotly's `attributes.js` files -to TypeScript. Each conversion turns one attribute file into the single -source of truth for both the runtime schema and the public TypeScript type. +to TypeScript. Attribute files are the source of truth for the runtime +schema; the schema in turn drives the generated public TypeScript types. +Conversion doesn't change that chain — it adds compile-time validation on +top of it. ## Why -Today, attribute metadata lives in `src/.../attributes.js` files and the -matching TypeScript types live separately in `src/types/`. They drift. +Without `as const satisfies AttributeMap`, malformed attribute objects +(missing `valType`, typo'd `values` arrays, wrong `dflt` shape, etc.) only +fail when the runtime tries to use them. Converted attribute files catch +those structural mistakes at TypeScript-compile time, before they ever +reach the schema. -After conversion, the `attributes.ts` file is validated against `AttributeMap` -at compile time, catching structural errors and typos before they reach the -runtime schema. +Conversion is also a small step toward typing the rest of the file (and +eventually the rest of the source tree) in TypeScript, but the immediate +value is the compile-time structural check. ## Recipe diff --git a/src/types/SETUP.md b/src/types/SETUP.md index f8540e7f23b..fbd900e6807 100644 --- a/src/types/SETUP.md +++ b/src/types/SETUP.md @@ -32,7 +32,7 @@ npm run typecheck # tsc --noEmit, errors reported, no output npm run typecheck-watch # incremental rechecking on change npm run schema # rebuild test/plot-schema.json + regenerate types -npm run schema-typegen-diff-check # regenerate + verify no uncommitted drift in schema.d.ts +npm run schema-typegen-diff-check # regenerate + verify no uncommitted drift in test/plot-schema.json or schema.d.ts npm run bundle # esbuild → dist/plotly.js npm run build # full production build ``` From 504aa33a4399c65e4f6a9533f1615571538eca98 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Tue, 26 May 2026 16:25:20 -0600 Subject: [PATCH 075/241] Update docs per recent changes --- src/types/ARCHITECTURE.md | 10 ++++---- src/types/CONVERTING_ATTRIBUTES.md | 17 +++++++------- src/types/GENERATOR.md | 37 ++++++++++++++++++++---------- src/types/SETUP.md | 2 +- 4 files changed, 41 insertions(+), 25 deletions(-) diff --git a/src/types/ARCHITECTURE.md b/src/types/ARCHITECTURE.md index afa9ec32531..61197ae34df 100644 --- a/src/types/ARCHITECTURE.md +++ b/src/types/ARCHITECTURE.md @@ -8,8 +8,9 @@ How TypeScript types are organized in plotly.js. ┌──────────────────────────────────────────────────────────────┐ │ Consumer surface (what `npm install plotly.js` exposes) │ │ lib/index.d.ts — wired via package.json#types │ -│ Curated re-exports of public types + 'export as namespace │ -│ Plotly' for namespace and global usage. │ +│ `export type *` for generated schema types + explicit │ +│ re-exports of hand-written types + `export as namespace │ +│ Plotly` for global/namespace usage. │ └──────────────────────────────────────────────────────────────┘ │ ▼ @@ -23,8 +24,9 @@ How TypeScript types are organized in plotly.js. │ Hand-written types │ │ Generated types │ │ src/types/core/*.d.ts │ │ src/types/generated/... │ │ src/types/lib/*.d.ts │ │ │ -│ │ │ schema.d.ts — from schema │ -│ │ │ (traces + layout + shared) │ +│ │ │ schema.d.ts — common enums, │ +│ │ │ traces, layout, animation, │ +│ │ │ config, _internal namespace │ └──────────────────────────┘ └────────────────────────────────┘ ``` diff --git a/src/types/CONVERTING_ATTRIBUTES.md b/src/types/CONVERTING_ATTRIBUTES.md index 6030ec3ebc3..19fd43a71ac 100644 --- a/src/types/CONVERTING_ATTRIBUTES.md +++ b/src/types/CONVERTING_ATTRIBUTES.md @@ -116,13 +116,14 @@ the attribute object's runtime shape changed (most often a missed ```bash git add src//attributes.ts \ - src//index.js src//defaults.js # (whichever consumers you updated) \ - src/types/core/.d.ts \ - src/types/generated/ + src//index.js src//defaults.js # (whichever consumers you updated) git commit -m "Convert attributes to TypeScript" ``` -The conversion is a single self-contained commit per file. +The conversion is a single self-contained commit per file. There's +nothing to commit under `src/types/` for a correct conversion — the +generated types are byte-identical (which is exactly what +`schema-typegen-diff-check` confirmed in step 6). ## Worked example: modebar @@ -149,8 +150,8 @@ The schema does not describe these — they remain in `src/types/`: - **Events** (`PlotMouseEvent`, `LegendClickEvent`, etc.) - **Public API function signatures** (`Plotly.newPlot`, `relayout`, ...) - **Internal types** (`FullLayout._modules`, `GraphDiv._fullData`, ...) -- **Utility types** the mapped type bottoms out on (`Color`, `Datum`, - `TypedArray`, `MarkerSymbol`, ...) +- **Utility types** (`Color`, `Datum`, `TypedArray`, `MarkerSymbol`, etc.) — + these are the primitives the generator's emitted types reference. If you find yourself converting one of these, stop and ask. @@ -211,5 +212,5 @@ Pick from this priority list. Lower-numbered items are smaller / simpler. ## Working in parallel Multiple converters can work on different attribute files in parallel. -Merge conflicts are rare and limited to the hand-written type files when -removing types — manual conflict if two converters touch the same file. +Each conversion is self-contained within one component's directory plus +its direct `require()`-callers, so merge conflicts are rare. diff --git a/src/types/GENERATOR.md b/src/types/GENERATOR.md index 167f3eae672..95d2c71d3b3 100644 --- a/src/types/GENERATOR.md +++ b/src/types/GENERATOR.md @@ -21,8 +21,10 @@ Run via `npm run schema`. `tasks/generate_schema_types.mjs` is called by `tasks/schema.mjs` after writing `plot-schema.json`. The generator walks `schema.traces`, `schema.layout.layoutAttributes`, `schema.animation`, `schema.frames`, and -`schema.config.edits`, mapping each attribute's `valType` metadata to a -TypeScript type. +`schema.config` (including `schema.config.edits`), mapping each attribute's +`valType` metadata to a TypeScript type. The set of meta keys to strip +during emission is read from `schema.defs.metaKeys` so any addition to the +schema's metadata format is picked up automatically. ### Phase 0: Common enum discovery @@ -109,7 +111,7 @@ The Layout interface includes subplot index signatures: // etc. ``` -### Phase 5: Animation, frame, and edits interfaces +### Phase 5: Animation, frame, edits, and config interfaces `AnimationOpts` is emitted from `schema.animation` (references the injected `Transition` and `AnimationFrameOpts` shared types). `Frame` is @@ -128,6 +130,15 @@ The override mechanism is the `fieldOverrides` param on `attrsToProperties` schema can't self-reference. `Edits` is emitted from `schema.config.edits` without overrides (all fields are concrete booleans). +`ConfigBase` is emitted from `schema.config` after registering Edits' +fingerprint in `sharedTypes`, so `edits?: Edits` references the named +interface rather than re-inlining the subtree. Seven config fields whose +schema `valType` is `any` (`locales`, `modeBarButtons`, +`modeBarButtonsToAdd`, `modeBarButtonsToRemove`, `setBackground`, +`showSources`, `toImageButtonOptions`) come through as `any`; the +hand-written `Config` in `core/config.d.ts` overrides them via +`Omit & ConfigOverrides`. + ### Phase 6: Internal namespace Names in `INTERNAL_INTERFACES` are wrapped in `export namespace _internal { @@ -182,7 +193,7 @@ src/types/generated/schema.d.ts ├── Trace interfaces (ScatterData, BarData, ... — 49 traces) ├── Layout component interfaces (LayoutAxis, Legend, Scene, Annotation, etc.) ├── Layout interface -└── Animation / frames / config (AnimationOpts, Frame, Edits) +└── Animation / frames / config (AnimationOpts, Frame, Edits, ConfigBase) ``` Regenerate with `npm run schema`. @@ -213,9 +224,10 @@ Attribute name overrides via `ATTR_NAME_OVERRIDES` map specific attribute paths to a type alias regardless of valType (e.g. `marker.symbol` → `MarkerSymbol`). -Reserved keys stripped from the output: `editType`, `role`, `description`, -`impliedEdits`, `_isSubplotObj`, `_isLinkedToArray`, `_arrayAttrRegexps`, -`_deprecated`. +Reserved keys stripped from the output come from `schema.defs.metaKeys` — +currently `editType`, `role`, `description`, `impliedEdits`, +`_isSubplotObj`, `_isLinkedToArray`, `_arrayAttrRegexps`, `_deprecated`. +New additions to that list are picked up automatically on regen. ## Extending the schema generator @@ -302,7 +314,7 @@ console.log(s.layout.layoutAttributes.xaxis); // inspect layout attrs console.log(s.traces.scatter.attributes); // inspect trace attrs ``` -## Public API re-export check +## Public API re-export `lib/index.d.ts` uses `export type * from '../src/types/generated/schema'`, so every top-level exported type from `schema.d.ts` is automatically @@ -310,10 +322,11 @@ re-exported to consumers. Types inside the `_internal` namespace are still reachable via `_internal.X` (the namespace itself is exported by the wildcard) but their bare names are not. -`tasks/schema.mjs` short-circuits its per-name re-export verification -when the wildcard is detected. If you ever replace the wildcard with an -explicit allowlist, the per-name check runs and warns about any -exported-but-not-re-exported types. +The wildcard is load-bearing: it removes the maintenance burden of keeping +`lib/index.d.ts` in sync with new schema additions. If anyone ever swaps +it for an explicit allowlist, restore the per-name re-export verifier +that previously lived in `tasks/schema.mjs` (see git history) — otherwise +new generated types will silently fail to surface in the public API. ## CI integration diff --git a/src/types/SETUP.md b/src/types/SETUP.md index fbd900e6807..554a2566990 100644 --- a/src/types/SETUP.md +++ b/src/types/SETUP.md @@ -23,7 +23,7 @@ Quick reference for the TypeScript toolchain in plotly.js. - [tsconfig.json](../../tsconfig.json) — type checker config - [esbuild-config.js](../../esbuild-config.js) — bundler config -Both target ES2016. Strict mode is currently **off** (`strict: false`) for incremental adoption — types tighten over time as files convert. +Both target ES2016. `strict: true` is on in `tsconfig.json` — the type system is fully strict for the `.d.ts` declarations and converted TypeScript sources. The remaining JS files coexist via `allowJs: true` and are type-checked loosely (no strict null checks etc. on the JS side). ## npm scripts From 117a8c2fb9ca90c271779d01143ffd2ffe22af3e Mon Sep 17 00:00:00 2001 From: Martha Cryan Date: Thu, 28 May 2026 12:36:04 -0700 Subject: [PATCH 076/241] Remove chart studio upload APIs --- src/plot_api/plot_api.js | 2 - src/plot_api/plot_config.js | 37 +- src/plots/attributes.js | 26 - src/plots/plots.js | 97 --- src/snapshot/cloneplot.js | 1 - test/jasmine/tests/config_test.js | 35 - test/jasmine/tests/snapshot_test.js | 1 - test/plot-schema.json | 954 +--------------------------- 8 files changed, 2 insertions(+), 1151 deletions(-) diff --git a/src/plot_api/plot_api.js b/src/plot_api/plot_api.js index fd46fdedb0f..d072afd24bd 100644 --- a/src/plot_api/plot_api.js +++ b/src/plot_api/plot_api.js @@ -373,7 +373,6 @@ function _doPlot(gd, data, layout, config) { subroutines.drawData, subroutines.finalDraw, initInteractions, - Plots.addLinks, Plots.rehover, Plots.redrag, Plots.reselect, @@ -485,7 +484,6 @@ function setPlotContext(gd, config) { context.scrollZoom = false; context.doubleClick = false; context.showTips = false; - context.showLink = false; context.displayModeBar = false; } diff --git a/src/plot_api/plot_config.js b/src/plot_api/plot_config.js index 09a22f99e55..edd89a1cba7 100644 --- a/src/plot_api/plot_config.js +++ b/src/plot_api/plot_config.js @@ -36,8 +36,7 @@ var configAttributes = { dflt: '', description: [ 'When set it determines base URL for', - 'the \'Edit in Chart Studio\' `showEditInChartStudio`/`showSendToCloud` mode bar button', - 'and the showLink/sendData on-graph link.', + 'the \'Edit in Chart Studio\' `showEditInChartStudio`/`showSendToCloud` mode bar button.', 'To enable sending your data to Chart Studio Cloud, you need to', 'set both `plotlyServerURL` to \'https://chart-studio.plotly.com\' and', 'also set `showSendToCloud` to true.' @@ -227,40 +226,6 @@ var configAttributes = { description: 'Determines whether or not notifier is displayed.' }, - showLink: { - valType: 'boolean', - dflt: false, - description: [ - 'Determines whether a link to Chart Studio Cloud is displayed', - 'at the bottom right corner of resulting graphs.', - 'Use with `sendData` and `linkText`.' - ].join(' ') - }, - linkText: { - valType: 'string', - dflt: 'Edit chart', - noBlank: true, - description: [ - 'Sets the text appearing in the `showLink` link.' - ].join(' ') - }, - sendData: { - valType: 'boolean', - dflt: true, - description: [ - 'If *showLink* is true, does it contain data', - 'just link to a Chart Studio Cloud file?' - ].join(' ') - }, - showSources: { - valType: 'any', - dflt: false, - description: [ - 'Adds a source-displaying function to show sources on', - 'the resulting graphs.' - ].join(' ') - }, - displayModeBar: { valType: 'enumerated', values: ['hover', true, false], diff --git a/src/plots/attributes.js b/src/plots/attributes.js index bad077693c3..758a2bb7db2 100644 --- a/src/plots/attributes.js +++ b/src/plots/attributes.js @@ -188,32 +188,6 @@ module.exports = { ].join(' ') }, hoverlabel: fxAttrs.hoverlabel, - stream: { - token: { - valType: 'string', - noBlank: true, - strict: true, - editType: 'calc', - description: [ - 'The stream id number links a data trace on a plot with a stream.', - 'See https://chart-studio.plotly.com/settings for more details.' - ].join(' ') - }, - maxpoints: { - valType: 'number', - min: 0, - max: 10000, - dflt: 500, - editType: 'calc', - description: [ - 'Sets the maximum number of points to keep on the plots from an', - 'incoming stream.', - 'If `maxpoints` is set to *50*, only the newest 50 points will', - 'be displayed on the plot.' - ].join(' ') - }, - editType: 'calc' - }, uirevision: { valType: 'any', editType: 'none', diff --git a/src/plots/plots.js b/src/plots/plots.js index b3ef101ef33..08d1bf615bb 100644 --- a/src/plots/plots.js +++ b/src/plots/plots.js @@ -113,93 +113,6 @@ plots.previousPromises = function(gd) { } }; -/** - * Adds the 'Edit chart' link. - * Note that now _doPlot calls this so it can regenerate whenever it replots - * - * Add source links to your graph inside the 'showSources' config argument. - */ -plots.addLinks = function(gd) { - // Do not do anything if showLink and showSources are not set to true in config - if(!gd._context.showLink && !gd._context.showSources) return; - - var fullLayout = gd._fullLayout; - - var linkContainer = Lib.ensureSingle(fullLayout._paper, 'text', 'js-plot-link-container', function(s) { - s.style({ - 'font-family': '"Open Sans", Arial, sans-serif', - 'font-size': '12px', - fill: Color.defaultLine, - 'pointer-events': 'all' - }) - .each(function() { - var links = d3.select(this); - links.append('tspan').classed('js-link-to-tool', true); - links.append('tspan').classed('js-link-spacer', true); - links.append('tspan').classed('js-sourcelinks', true); - }); - }); - - // The text node inside svg - var text = linkContainer.node(); - var attrs = {y: fullLayout._paper.attr('height') - 9}; - - // If text's width is bigger than the layout - // Check that text is a child node or document.body - // because otherwise Edge might throw an exception - // when calling getComputedTextLength(). - // Apparently offsetParent is null for invisibles. - if(document.body.contains(text) && text.getComputedTextLength() >= (fullLayout.width - 20)) { - // Align the text at the left - attrs['text-anchor'] = 'start'; - attrs.x = 5; - } else { - // Align the text at the right - attrs['text-anchor'] = 'end'; - attrs.x = fullLayout._paper.attr('width') - 7; - } - - linkContainer.attr(attrs); - - var toolspan = linkContainer.select('.js-link-to-tool'); - var spacespan = linkContainer.select('.js-link-spacer'); - var sourcespan = linkContainer.select('.js-sourcelinks'); - - if(gd._context.showSources) gd._context.showSources(gd); - - // 'view in plotly' link for embedded plots - if(gd._context.showLink) positionPlayWithData(gd, toolspan); - - // separator if we have both sources and tool link - spacespan.text((toolspan.text() && sourcespan.text()) ? ' - ' : ''); -}; - -// note that now this function is only adding the brand in -// iframes and 3rd-party apps -function positionPlayWithData(gd, container) { - container.text(''); - var link = container.append('a') - .attr({ - 'xlink:xlink:href': '#', - class: 'link--impt link--embedview', - 'font-weight': 'bold' - }) - .text(gd._context.linkText + ' ' + String.fromCharCode(187)); - - if(gd._context.sendData) { - link.on('click', function() { - plots.sendDataToCloud(gd); - }); - } else { - var path = window.location.pathname.split('/'); - var query = window.location.search; - link.attr({ - 'xlink:xlink:show': 'new', - 'xlink:xlink:href': '/' + path[2].split('.')[0] + '/' + path[1] + query - }); - } -} - plots.sendDataToCloud = function(gd) { var baseUrl = (window.PLOTLYENV || {}).BASE_URL || gd._context.plotlyServerURL; if(!baseUrl) return; @@ -2106,16 +2019,6 @@ plots.graphJson = function(gd, dataonly, mode, output, useDefaults, includeConfi if(v.slice(-3) === 'src') { return; } - } else if(mode === 'keepstream') { - // keep sourced data if it's being streamed. - // similar to keepref, but if the 'stream' object exists - // in a trace, we will keep the data array. - src = d[v + 'src']; - if(typeof src === 'string' && src.indexOf(':') > 0) { - if(!Lib.isPlainObject(d.stream)) { - return; - } - } } else if(mode !== 'keepall') { // keepref: remove sourced data but only // if the source tag is well-formed diff --git a/src/snapshot/cloneplot.js b/src/snapshot/cloneplot.js index b210c6d673e..78c51b58be4 100644 --- a/src/snapshot/cloneplot.js +++ b/src/snapshot/cloneplot.js @@ -141,7 +141,6 @@ module.exports = function clonePlot(graphObj, options) { 2 : options.plotGlPixelRatio, displaylogo: options.displaylogo || false, - showLink: options.showLink || false, showTips: options.showTips || false, mapboxAccessToken: context.mapboxAccessToken } diff --git a/test/jasmine/tests/config_test.js b/test/jasmine/tests/config_test.js index 1b642a80d43..6fd4f9f2543 100644 --- a/test/jasmine/tests/config_test.js +++ b/test/jasmine/tests/config_test.js @@ -219,41 +219,6 @@ describe('config argument', function() { }); }); - describe('showLink attribute', function() { - var gd; - - beforeEach(function() { - gd = createGraphDiv(); - }); - - afterEach(destroyGraphDiv); - - it('should not display the edit link by default', function(done) { - Plotly.newPlot(gd, [], {}) - .then(function() { - var link = document.getElementsByClassName('js-plot-link-container')[0]; - - expect(link).toBeUndefined(); - }) - .then(done, done.fail); - }); - - it('should display a link when true', function(done) { - Plotly.newPlot(gd, [], {}, { showLink: true }) - .then(function() { - var link = document.getElementsByClassName('js-plot-link-container')[0]; - - expect(link.textContent).toBe('Edit chart »'); - - var bBox = link.getBoundingClientRect(); - expect(bBox.width).toBeGreaterThan(0); - expect(bBox.height).toBeGreaterThan(0); - }) - .then(done, done.fail); - }); - }); - - describe('editable attribute', function() { var gd; diff --git a/test/jasmine/tests/snapshot_test.js b/test/jasmine/tests/snapshot_test.js index 5eafa16e0a0..746d1bf8eb1 100644 --- a/test/jasmine/tests/snapshot_test.js +++ b/test/jasmine/tests/snapshot_test.js @@ -80,7 +80,6 @@ describe('Plotly.Snapshot', function() { staticPlot: true, plotGlPixelRatio: 2, displaylogo: false, - showLink: false, showTips: false, setBackground: 'opaque', mapboxAccessToken: undefined diff --git a/test/plot-schema.json b/test/plot-schema.json index 318c0578d92..b08c2d8d70f 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -221,12 +221,6 @@ "min": 0, "valType": "number" }, - "linkText": { - "description": "Sets the text appearing in the `showLink` link.", - "dflt": "Edit chart", - "noBlank": true, - "valType": "string" - }, "locale": { "description": "Which localization should we use? Should be a string like 'en' or 'en-US'.", "dflt": "en-US", @@ -279,7 +273,7 @@ "valType": "number" }, "plotlyServerURL": { - "description": "When set it determines base URL for the 'Edit in Chart Studio' `showEditInChartStudio`/`showSendToCloud` mode bar button and the showLink/sendData on-graph link. To enable sending your data to Chart Studio Cloud, you need to set both `plotlyServerURL` to 'https://chart-studio.plotly.com' and also set `showSendToCloud` to true.", + "description": "When set it determines base URL for the 'Edit in Chart Studio' `showEditInChartStudio`/`showSendToCloud` mode bar button. To enable sending your data to Chart Studio Cloud, you need to set both `plotlyServerURL` to 'https://chart-studio.plotly.com' and also set `showSendToCloud` to true.", "dflt": "", "valType": "string" }, @@ -310,11 +304,6 @@ ], "valType": "flaglist" }, - "sendData": { - "description": "If *showLink* is true, does it contain data just link to a Chart Studio Cloud file?", - "dflt": true, - "valType": "boolean" - }, "setBackground": { "description": "Set function to add the background color (i.e. `layout.paper_color`) to a different container. This function take the graph div as first argument and the current background color as second argument. Alternatively, set to string *opaque* to ensure there is white behind it.", "dflt": "transparent", @@ -335,21 +324,11 @@ "dflt": false, "valType": "boolean" }, - "showLink": { - "description": "Determines whether a link to Chart Studio Cloud is displayed at the bottom right corner of resulting graphs. Use with `sendData` and `linkText`.", - "dflt": false, - "valType": "boolean" - }, "showSendToCloud": { "description": "Should we include a ModeBar button, labeled \"Edit in Chart Studio\", that sends this chart to chart-studio.plotly.com (formerly plot.ly) or another plotly server as specified by `plotlyServerURL` for editing, export, etc? Prior to version 1.43.0 this button was included by default, now it is opt-in using this flag. Note that this button can (depending on `plotlyServerURL` being set) send your data to an external server. However that server does not persist your data until you arrive at the Chart Studio and explicitly click \"Save\".", "dflt": false, "valType": "boolean" }, - "showSources": { - "description": "Adds a source-displaying function to show sources on the resulting graphs.", - "dflt": false, - "valType": "any" - }, "showTips": { "description": "Determines whether or not tips are shown while interacting with the resulting graphs.", "dflt": true, @@ -18340,25 +18319,6 @@ "editType": "style", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "text": { "arrayOk": true, "description": "Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", @@ -20255,25 +20215,6 @@ "editType": "style", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "subplot": { "description": "Sets a reference between this trace's data coordinates and a polar subplot. If *polar* (the default value), the data refer to `layout.polar`. If *polar2*, the data refer to `layout.polar2`, and so on.", "dflt": "polar", @@ -21660,25 +21601,6 @@ "sd" ] }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "text": { "arrayOk": true, "description": "Sets the text elements associated with each sample value. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", @@ -22509,25 +22431,6 @@ "editType": "style", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "text": { "arrayOk": true, "description": "Sets hover text elements associated with each sample point. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to this trace's sample points.", @@ -24327,25 +24230,6 @@ "min": 0, "valType": "number" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "type": "carpet", "uid": { "anim": true, @@ -25597,25 +25481,6 @@ "editType": "calc", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "text": { "arrayOk": true, "description": "Sets the text elements associated with each location.", @@ -26879,25 +26744,6 @@ "editType": "calc", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "subplot": { "description": "Sets a reference between this trace's data coordinates and a map subplot. If *map* (the default value), the data refer to `layout.map`. If *map2*, the data refer to `layout.map2`, and so on.", "dflt": "map", @@ -28169,25 +28015,6 @@ "editType": "calc", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "subplot": { "description": "mapbox subplots and traces are deprecated! Please consider switching to `map` subplots and traces. Learn more at: https://plotly.com/python/maplibre-migration/ as well as https://plotly.com/javascript/maplibre-migration/ Sets a reference between this trace's data coordinates and a mapbox subplot. If *mapbox* (the default value), the data refer to `layout.mapbox`. If *mapbox2*, the data refer to `layout.mapbox2`, and so on.", "dflt": "mapbox", @@ -29534,25 +29361,6 @@ "min": 0, "valType": "number" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "text": { "arrayOk": true, "description": "Sets the text elements associated with the cones. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", @@ -31045,25 +30853,6 @@ "editType": "calc", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "text": { "description": "Sets the text elements associated with each z value.", "editType": "calc", @@ -32622,25 +32411,6 @@ "editType": "calc", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "text": { "description": "Sets the text elements associated with each z value.", "editType": "calc", @@ -33873,25 +33643,6 @@ "editType": "calc", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "subplot": { "description": "Sets a reference between this trace's data coordinates and a map subplot. If *map* (the default value), the data refer to `layout.map`. If *map2*, the data refer to `layout.map2`, and so on.", "dflt": "map", @@ -35101,25 +34852,6 @@ "editType": "calc", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "subplot": { "description": "mapbox subplots and traces are deprecated! Please consider switching to `map` subplots and traces. Learn more at: https://plotly.com/python/maplibre-migration/ as well as https://plotly.com/javascript/maplibre-migration/ Sets a reference between this trace's data coordinates and a mapbox subplot. If *mapbox* (the default value), the data refer to `layout.mapbox`. If *mapbox2*, the data refer to `layout.mapbox2`, and so on.", "dflt": "mapbox", @@ -36849,25 +36581,6 @@ "editType": "style", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "text": { "arrayOk": true, "description": "Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", @@ -38092,25 +37805,6 @@ "editType": "style", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "text": { "description": "Sets text elements associated with each sector. If trace `textinfo` contains a *text* flag, these elements will be seen on the chart. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", "editType": "plot", @@ -39646,25 +39340,6 @@ "editType": "calc", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "text": { "description": "Sets the text elements associated with each z value.", "editType": "calc", @@ -41962,25 +41637,6 @@ "editType": "style", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "text": { "arrayOk": true, "description": "Sets hover text elements associated with each bar. If a single string, the same string appears over all bars. If an array of string, the items are mapped in order to the this trace's coordinates.", @@ -43498,25 +43154,6 @@ "editType": "calc", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "textfont": { "color": { "dflt": "auto", @@ -45252,25 +44889,6 @@ "editType": "calc", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "textfont": { "color": { "dflt": "auto", @@ -47460,25 +47078,6 @@ "editType": "calc", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "text": { "description": "Sets text elements associated with each sector. If trace `textinfo` contains a *text* flag, these elements will be seen on the chart. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", "editType": "plot", @@ -48219,25 +47818,6 @@ "editType": "calc", "valType": "string" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "text": { "description": "Sets the text elements associated with each z value.", "editType": "plot", @@ -49416,25 +48996,6 @@ "valType": "string" } }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "title": { "align": { "description": "Sets the horizontal alignment of the title. It defaults to `center` except for bullet charts for which it defaults to right.", @@ -50993,25 +50554,6 @@ "valType": "boolean" } }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "surface": { "count": { "description": "Sets the number of iso-surfaces between minimum and maximum iso-values. By default this value is 2 meaning that only minimum and maximum surfaces would be drawn.", @@ -52478,25 +52020,6 @@ "editType": "calc", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "text": { "arrayOk": true, "description": "Sets the text elements associated with the vertices. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", @@ -53252,25 +52775,6 @@ "editType": "style", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "text": { "arrayOk": true, "description": "Sets hover text elements associated with each sample point. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to this trace's sample points.", @@ -54546,25 +54050,6 @@ "backward" ] }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "tickfont": { "color": { "editType": "calc", @@ -55962,25 +55447,6 @@ "valType": "integer" } }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "tickfont": { "color": { "editType": "plot", @@ -57166,25 +56632,6 @@ "editType": "calc", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "text": { "description": "Sets text elements associated with each sector. If trace `textinfo` contains a *text* flag, these elements will be seen on the chart. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", "editType": "plot", @@ -58858,25 +58305,6 @@ "editType": "calc", "valType": "any" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "textfont": { "color": { "editType": "calc", @@ -61421,25 +60849,6 @@ "editType": "calc", "valType": "string" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "text": { "arrayOk": true, "description": "Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", @@ -64252,25 +63661,6 @@ "editType": "style", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "surfaceaxis": { "description": "If *-1*, the scatter points are not fill with a surface If *0*, *1*, *2*, the scatter points are filled with a Delaunay surface about the x, y, z respectively.", "dflt": -1, @@ -66611,25 +66001,6 @@ "editType": "style", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "text": { "arrayOk": true, "description": "Sets text elements associated with each (a,b) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the the data points in (a,b). If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", @@ -68930,25 +68301,6 @@ "editType": "style", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "text": { "arrayOk": true, "description": "Sets text elements associated with each (lon,lat) pair or item in `locations`. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) or `locations` coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", @@ -71304,25 +70656,6 @@ "editType": "style", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "text": { "arrayOk": true, "description": "Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", @@ -73061,25 +72394,6 @@ "editType": "style", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "subplot": { "description": "Sets a reference between this trace's data coordinates and a map subplot. If *map* (the default value), the data refer to `layout.map`. If *map2*, the data refer to `layout.map2`, and so on.", "dflt": "map", @@ -74617,25 +73931,6 @@ "editType": "style", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "subplot": { "description": "mapbox subplots and traces are deprecated! Please consider switching to `map` subplots and traces. Learn more at: https://plotly.com/python/maplibre-migration/ as well as https://plotly.com/javascript/maplibre-migration/ Sets a reference between this trace's data coordinates and a mapbox subplot. If *mapbox* (the default value), the data refer to `layout.mapbox`. If *mapbox2*, the data refer to `layout.mapbox2`, and so on.", "dflt": "mapbox", @@ -76829,25 +76124,6 @@ "editType": "style", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "subplot": { "description": "Sets a reference between this trace's data coordinates and a polar subplot. If *polar* (the default value), the data refer to `layout.polar`. If *polar2*, the data refer to `layout.polar2`, and so on.", "dflt": "polar", @@ -79055,25 +78331,6 @@ "editType": "style", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "subplot": { "description": "Sets a reference between this trace's data coordinates and a polar subplot. If *polar* (the default value), the data refer to `layout.polar`. If *polar2*, the data refer to `layout.polar2`, and so on.", "dflt": "polar", @@ -81345,25 +80602,6 @@ "editType": "style", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "subplot": { "description": "Sets a reference between this trace's data coordinates and a smith subplot. If *smith* (the default value), the data refer to `layout.smith`. If *smith2*, the data refer to `layout.smith2`, and so on.", "dflt": "smith", @@ -83674,25 +82912,6 @@ "editType": "style", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "subplot": { "description": "Sets a reference between this trace's data coordinates and a ternary subplot. If *ternary* (the default value), the data refer to `layout.ternary`. If *ternary2*, the data refer to `layout.ternary2`, and so on.", "dflt": "ternary", @@ -85859,25 +85078,6 @@ "editType": "calc", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "text": { "arrayOk": true, "description": "Sets text elements associated with each (x,y) pair to appear on hover. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates.", @@ -87236,25 +86436,6 @@ "valType": "string" } }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "text": { "description": "Sets a text element associated with this trace. If trace `hoverinfo` contains a *text* flag, this text element will be seen in all hover labels. Note that streamtube traces do not support array `text` values.", "dflt": "", @@ -89084,25 +88265,6 @@ "editType": "calc", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "text": { "description": "Sets text elements associated with each sector. If trace `textinfo` contains a *text* flag, these elements will be seen on the chart. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", "editType": "plot", @@ -90825,25 +89987,6 @@ "editType": "calc", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "surfacecolor": { "description": "Sets the surface color values, used for setting a color scale independent of `z`.", "editType": "calc", @@ -92007,25 +91150,6 @@ "editType": "style", "valType": "string" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "type": "table", "uid": { "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", @@ -93950,25 +93074,6 @@ "editType": "calc", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "text": { "description": "Sets text elements associated with each sector. If trace `textinfo` contains a *text* flag, these elements will be seen on the chart. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", "editType": "plot", @@ -95511,25 +94616,6 @@ "manual" ] }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "text": { "arrayOk": true, "description": "Sets the text elements associated with each sample value. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", @@ -97116,25 +96202,6 @@ "valType": "boolean" } }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "surface": { "count": { "description": "Sets the number of iso-surfaces between minimum and maximum iso-values. By default this value is 2 meaning that only minimum and maximum surfaces would be drawn.", @@ -98221,25 +97288,6 @@ "editType": "style", "valType": "boolean" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "text": { "arrayOk": true, "description": "Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", From 2ef7d47513c76ac8dabb3620c0f3fe1d61e496c0 Mon Sep 17 00:00:00 2001 From: Martha Cryan Date: Thu, 28 May 2026 12:53:08 -0700 Subject: [PATCH 077/241] Remove show edit in chart studio button --- src/components/modebar/buttons.js | 9 --------- src/components/modebar/manage.js | 3 +-- src/plot_api/plot_config.js | 11 +---------- test/jasmine/tests/modebar_test.js | 14 ++------------ test/plot-schema.json | 9 ++------- 5 files changed, 6 insertions(+), 40 deletions(-) diff --git a/src/components/modebar/buttons.js b/src/components/modebar/buttons.js index a67fd18b0f0..09b0dc0003d 100644 --- a/src/components/modebar/buttons.js +++ b/src/components/modebar/buttons.js @@ -76,15 +76,6 @@ modeBarButtons.sendDataToCloud = { } }; -modeBarButtons.editInChartStudio = { - name: 'editInChartStudio', - title: function(gd) { return _(gd, 'Edit in Chart Studio'); }, - icon: Icons.pencil, - click: function(gd) { - Plots.sendDataToCloud(gd); - } -}; - modeBarButtons.zoom2d = { name: 'zoom2d', _cat: 'zoom', diff --git a/src/components/modebar/manage.js b/src/components/modebar/manage.js index 3c9a4626192..a25ff0460f6 100644 --- a/src/components/modebar/manage.js +++ b/src/components/modebar/manage.js @@ -145,8 +145,7 @@ function getButtonGroups(gd) { // buttons common to all plot types var commonGroup = ['toImage']; - if(context.showEditInChartStudio) commonGroup.push('editInChartStudio'); - else if(context.showSendToCloud) commonGroup.push('sendDataToCloud'); + if(context.showSendToCloud) commonGroup.push('sendDataToCloud'); addGroup(commonGroup); var zoomGroup = []; diff --git a/src/plot_api/plot_config.js b/src/plot_api/plot_config.js index edd89a1cba7..042df40d6fe 100644 --- a/src/plot_api/plot_config.js +++ b/src/plot_api/plot_config.js @@ -36,7 +36,7 @@ var configAttributes = { dflt: '', description: [ 'When set it determines base URL for', - 'the \'Edit in Chart Studio\' `showEditInChartStudio`/`showSendToCloud` mode bar button.', + 'the \'Edit in Chart Studio\' `showSendToCloud` mode bar button.', 'To enable sending your data to Chart Studio Cloud, you need to', 'set both `plotlyServerURL` to \'https://chart-studio.plotly.com\' and', 'also set `showSendToCloud` to true.' @@ -251,15 +251,6 @@ var configAttributes = { 'until you arrive at the Chart Studio and explicitly click "Save".' ].join(' ') }, - showEditInChartStudio: { - valType: 'boolean', - dflt: false, - description: [ - 'Same as `showSendToCloud`, but use a pencil icon instead of a floppy-disk.', - 'Note that if both `showSendToCloud` and `showEditInChartStudio` are turned,', - 'only `showEditInChartStudio` will be honored.' - ].join(' ') - }, modeBarButtonsToRemove: { valType: 'any', dflt: [], diff --git a/test/jasmine/tests/modebar_test.js b/test/jasmine/tests/modebar_test.js index ede3177f289..363f8aa20c0 100644 --- a/test/jasmine/tests/modebar_test.js +++ b/test/jasmine/tests/modebar_test.js @@ -54,7 +54,6 @@ describe('ModeBar', function() { _context: { displaylogo: true, showSendToCloud: false, - showEditInChartStudio: false, displayModeBar: true, modeBarButtonsToRemove: [], modeBarButtonsToAdd: [], @@ -810,7 +809,7 @@ describe('ModeBar', function() { expect(countLogo(gd._fullLayout._modeBar)).toEqual(0); }); - it('displays/hides cloud link according to showSendToCloud and/or showEditInChartStudio config arg', function() { + it('displays/hides cloud link according to showSendToCloud config arg', function() { var gd = getMockGraphInfo(); gd._fullLayout._basePlotModules = [{ name: 'pie' }]; gd._fullData = [{type: 'pie'}]; @@ -820,24 +819,15 @@ describe('ModeBar', function() { ]), 1); gd._context.showSendToCloud = true; - gd._context.showEditInChartStudio = false; manageModeBar(gd); checkButtons(gd._fullLayout._modeBar, getButtons([ ['toImage', 'sendDataToCloud'] ]), 1); gd._context.showSendToCloud = false; - gd._context.showEditInChartStudio = true; manageModeBar(gd); checkButtons(gd._fullLayout._modeBar, getButtons([ - ['toImage', 'editInChartStudio'] - ]), 1); - - gd._context.showSendToCloud = true; - gd._context.showEditInChartStudio = true; - manageModeBar(gd); - checkButtons(gd._fullLayout._modeBar, getButtons([ - ['toImage', 'editInChartStudio'] + ['toImage'] ]), 1); }); diff --git a/test/plot-schema.json b/test/plot-schema.json index b08c2d8d70f..bf99c898a98 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -273,7 +273,7 @@ "valType": "number" }, "plotlyServerURL": { - "description": "When set it determines base URL for the 'Edit in Chart Studio' `showEditInChartStudio`/`showSendToCloud` mode bar button. To enable sending your data to Chart Studio Cloud, you need to set both `plotlyServerURL` to 'https://chart-studio.plotly.com' and also set `showSendToCloud` to true.", + "description": "When set it determines base URL for the 'Edit in Chart Studio' `showSendToCloud` mode bar button. To enable sending your data to Chart Studio Cloud, you need to set both `plotlyServerURL` to 'https://chart-studio.plotly.com' and also set `showSendToCloud` to true.", "dflt": "", "valType": "string" }, @@ -319,11 +319,6 @@ "dflt": true, "valType": "boolean" }, - "showEditInChartStudio": { - "description": "Same as `showSendToCloud`, but use a pencil icon instead of a floppy-disk. Note that if both `showSendToCloud` and `showEditInChartStudio` are turned, only `showEditInChartStudio` will be honored.", - "dflt": false, - "valType": "boolean" - }, "showSendToCloud": { "description": "Should we include a ModeBar button, labeled \"Edit in Chart Studio\", that sends this chart to chart-studio.plotly.com (formerly plot.ly) or another plotly server as specified by `plotlyServerURL` for editing, export, etc? Prior to version 1.43.0 this button was included by default, now it is opt-in using this flag. Note that this button can (depending on `plotlyServerURL` being set) send your data to an external server. However that server does not persist your data until you arrive at the Chart Studio and explicitly click \"Save\".", "dflt": false, @@ -4618,7 +4613,7 @@ }, "remove": { "arrayOk": true, - "description": "Determines which predefined modebar buttons to remove. Similar to `config.modeBarButtonsToRemove` option. This may include *autoScale2d*, *autoscale*, *editInChartStudio*, *editinchartstudio*, *hoverCompareCartesian*, *hovercompare*, *lasso*, *lasso2d*, *orbitRotation*, *orbitrotation*, *pan*, *pan2d*, *pan3d*, *reset*, *resetCameraDefault3d*, *resetCameraLastSave3d*, *resetGeo*, *resetSankeyGroup*, *resetScale2d*, *resetViewMap*, *resetViewMapbox*, *resetViews*, *resetcameradefault*, *resetcameralastsave*, *resetsankeygroup*, *resetscale*, *resetview*, *resetviews*, *select*, *select2d*, *sendDataToCloud*, *senddatatocloud*, *tableRotation*, *tablerotation*, *toImage*, *toggleHover*, *toggleSpikelines*, *togglehover*, *togglespikelines*, *toimage*, *zoom*, *zoom2d*, *zoom3d*, *zoomIn2d*, *zoomInGeo*, *zoomInMap*, *zoomInMapbox*, *zoomOut2d*, *zoomOutGeo*, *zoomOutMap*, *zoomOutMapbox*, *zoomin*, *zoomout*.", + "description": "Determines which predefined modebar buttons to remove. Similar to `config.modeBarButtonsToRemove` option. This may include *autoScale2d*, *autoscale*, *hoverCompareCartesian*, *hovercompare*, *lasso*, *lasso2d*, *orbitRotation*, *orbitrotation*, *pan*, *pan2d*, *pan3d*, *reset*, *resetCameraDefault3d*, *resetCameraLastSave3d*, *resetGeo*, *resetSankeyGroup*, *resetScale2d*, *resetViewMap*, *resetViewMapbox*, *resetViews*, *resetcameradefault*, *resetcameralastsave*, *resetsankeygroup*, *resetscale*, *resetview*, *resetviews*, *select*, *select2d*, *sendDataToCloud*, *senddatatocloud*, *tableRotation*, *tablerotation*, *toImage*, *toggleHover*, *toggleSpikelines*, *togglehover*, *togglespikelines*, *toimage*, *zoom*, *zoom2d*, *zoom3d*, *zoomIn2d*, *zoomInGeo*, *zoomInMap*, *zoomInMapbox*, *zoomOut2d*, *zoomOutGeo*, *zoomOutMap*, *zoomOutMapbox*, *zoomin*, *zoomout*.", "dflt": "", "editType": "modebar", "valType": "string" From 9e625cc72b14dcf35f7e2a7de761990ebe4cc20e Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Wed, 3 Jun 2026 08:44:43 -0600 Subject: [PATCH 078/241] Linting/formatting --- src/components/colorbar/attributes.js | 442 ++++++++++++----------- src/plots/cartesian/layout_attributes.js | 225 +++++------- 2 files changed, 318 insertions(+), 349 deletions(-) diff --git a/src/components/colorbar/attributes.js b/src/components/colorbar/attributes.js index 4063ab3ce73..8558c07d4df 100644 --- a/src/components/colorbar/attributes.js +++ b/src/components/colorbar/attributes.js @@ -5,227 +5,233 @@ var fontAttrs = require('../../plots/font_attributes'); var extendFlat = require('../../lib/extend').extendFlat; var overrideAll = require('../../plot_api/edit_types').overrideAll; - -module.exports = overrideAll({ - orientation: { - valType: 'enumerated', - values: ['h', 'v'], - dflt: 'v', - description: 'Sets the orientation of the colorbar.' - }, - thicknessmode: { - valType: 'enumerated', - values: ['fraction', 'pixels'], - dflt: 'pixels', - description: [ - 'Determines whether this color bar\'s thickness', - '(i.e. the measure in the constant color direction)', - 'is set in units of plot *fraction* or in *pixels*.', - 'Use `thickness` to set the value.' - ].join(' ') - }, - thickness: { - valType: 'number', - min: 0, - dflt: 30, - description: [ - 'Sets the thickness of the color bar', - 'This measure excludes the size of the padding, ticks and labels.' - ].join(' ') - }, - lenmode: { - valType: 'enumerated', - values: ['fraction', 'pixels'], - dflt: 'fraction', - description: [ - 'Determines whether this color bar\'s length', - '(i.e. the measure in the color variation direction)', - 'is set in units of plot *fraction* or in *pixels.', - 'Use `len` to set the value.' - ].join(' ') - }, - len: { - valType: 'number', - min: 0, - dflt: 1, - description: [ - 'Sets the length of the color bar', - 'This measure excludes the padding of both ends.', - 'That is, the color bar length is this length minus the', - 'padding on both ends.' - ].join(' ') - }, - x: { - valType: 'number', - description: [ - 'Sets the x position with respect to `xref` of the color bar (in plot fraction).', - 'When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and', - '0.5 when `orientation` is *h*.', - 'When `xref` is *container*, defaults to *1* when `orientation` is *v* and', - '0.5 when `orientation` is *h*.', - 'Must be between *0* and *1* if `xref` is *container*', - 'and between *-2* and *3* if `xref` is *paper*.' - ].join(' ') - }, - xref: { - valType: 'enumerated', - dflt: 'paper', - values: ['container', 'paper'], - editType: 'layoutstyle', - description: [ - 'Sets the container `x` refers to.', - '*container* spans the entire `width` of the plot.', - '*paper* refers to the width of the plotting area only.' - ].join(' ') - }, - xanchor: { - valType: 'enumerated', - values: ['left', 'center', 'right'], - description: [ - 'Sets this color bar\'s horizontal position anchor.', - 'This anchor binds the `x` position to the *left*, *center*', - 'or *right* of the color bar.', - 'Defaults to *left* when `orientation` is *v* and', - '*center* when `orientation` is *h*.' - ].join(' ') - }, - xpad: { - valType: 'number', - min: 0, - dflt: 10, - description: 'Sets the amount of padding (in px) along the x direction.' - }, - y: { - valType: 'number', - description: [ - 'Sets the y position with respect to `yref` of the color bar (in plot fraction).', - 'When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and', - '1.02 when `orientation` is *h*.', - 'When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and', - '1 when `orientation` is *h*.', - 'Must be between *0* and *1* if `yref` is *container*', - 'and between *-2* and *3* if `yref` is *paper*.' - ].join(' ') - }, - yref: { - valType: 'enumerated', - dflt: 'paper', - values: ['container', 'paper'], - editType: 'layoutstyle', - description: [ - 'Sets the container `y` refers to.', - '*container* spans the entire `height` of the plot.', - '*paper* refers to the height of the plotting area only.' - ].join(' '), - }, - yanchor: { - valType: 'enumerated', - values: ['top', 'middle', 'bottom'], - description: [ - 'Sets this color bar\'s vertical position anchor', - 'This anchor binds the `y` position to the *top*, *middle*', - 'or *bottom* of the color bar.', - 'Defaults to *middle* when `orientation` is *v* and', - '*bottom* when `orientation` is *h*.' - ].join(' ') - }, - ypad: { - valType: 'number', - min: 0, - dflt: 10, - description: 'Sets the amount of padding (in px) along the y direction.' - }, - // a possible line around the bar itself - outlinecolor: axesAttrs.linecolor, - outlinewidth: axesAttrs.linewidth, - // Should outlinewidth have {dflt: 0} ? - // another possible line outside the padding and tick labels - bordercolor: axesAttrs.linecolor, - borderwidth: { - valType: 'number', - min: 0, - dflt: 0, - description: [ - 'Sets the width (in px) or the border enclosing this color bar.' - ].join(' ') - }, - bgcolor: { - valType: 'color', - dflt: 'rgba(0,0,0,0)', - description: 'Sets the color of padded area.' - }, - // tick and title properties named and function exactly as in axes - tickmode: axesAttrs.minor.tickmode, - nticks: axesAttrs.nticks, - tick0: axesAttrs.tick0, - dtick: axesAttrs.dtick, - tickvals: axesAttrs.tickvals, - ticktext: axesAttrs.ticktext, - ticks: extendFlat({}, axesAttrs.ticks, {dflt: ''}), - ticklabeloverflow: extendFlat({}, axesAttrs.ticklabeloverflow, { - description: [ - 'Determines how we handle tick labels that would overflow either the graph div or the domain of the axis.', - 'The default value for inside tick labels is *hide past domain*.', - 'In other cases the default is *hide past div*.' - ].join(' ') - }), - - // ticklabelposition: not used directly, as values depend on orientation - // left/right options are for x axes, and top/bottom options are for y axes - ticklabelposition: { - valType: 'enumerated', - values: [ - 'outside', 'inside', - 'outside top', 'inside top', - 'outside left', 'inside left', - 'outside right', 'inside right', - 'outside bottom', 'inside bottom' - ], - dflt: 'outside', - description: [ - 'Determines where tick labels are drawn relative to the ticks.', - 'Left and right options are used when `orientation` is *h*,', - 'top and bottom when `orientation` is *v*.' - ].join(' ') - }, - - ticklen: axesAttrs.ticklen, - tickwidth: axesAttrs.tickwidth, - tickcolor: axesAttrs.tickcolor, - ticklabelstep: axesAttrs.ticklabelstep, - showticklabels: axesAttrs.showticklabels, - labelalias: axesAttrs.labelalias, - tickfont: fontAttrs({ - description: 'Sets the color bar\'s tick label font' - }), - tickangle: axesAttrs.tickangle, - tickformat: axesAttrs.tickformat, - tickformatstops: axesAttrs.tickformatstops, - tickprefix: axesAttrs.tickprefix, - showtickprefix: axesAttrs.showtickprefix, - ticksuffix: axesAttrs.ticksuffix, - showticksuffix: axesAttrs.showticksuffix, - separatethousands: axesAttrs.separatethousands, - exponentformat: axesAttrs.exponentformat, - minexponent: axesAttrs.minexponent, - showexponent: axesAttrs.showexponent, - title: { - text: { - valType: 'string', - description: 'Sets the title of the color bar.' - }, - font: fontAttrs({ - description: 'Sets this color bar\'s title font.' +module.exports = overrideAll( + { + orientation: { + valType: 'enumerated', + values: ['h', 'v'], + dflt: 'v', + description: 'Sets the orientation of the colorbar.' + }, + thicknessmode: { + valType: 'enumerated', + values: ['fraction', 'pixels'], + dflt: 'pixels', + description: [ + "Determines whether this color bar's thickness", + '(i.e. the measure in the constant color direction)', + 'is set in units of plot *fraction* or in *pixels*.', + 'Use `thickness` to set the value.' + ].join(' ') + }, + thickness: { + valType: 'number', + min: 0, + dflt: 30, + description: [ + 'Sets the thickness of the color bar', + 'This measure excludes the size of the padding, ticks and labels.' + ].join(' ') + }, + lenmode: { + valType: 'enumerated', + values: ['fraction', 'pixels'], + dflt: 'fraction', + description: [ + "Determines whether this color bar's length", + '(i.e. the measure in the color variation direction)', + 'is set in units of plot *fraction* or in *pixels.', + 'Use `len` to set the value.' + ].join(' ') + }, + len: { + valType: 'number', + min: 0, + dflt: 1, + description: [ + 'Sets the length of the color bar', + 'This measure excludes the padding of both ends.', + 'That is, the color bar length is this length minus the', + 'padding on both ends.' + ].join(' ') + }, + x: { + valType: 'number', + description: [ + 'Sets the x position with respect to `xref` of the color bar (in plot fraction).', + 'When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and', + '0.5 when `orientation` is *h*.', + 'When `xref` is *container*, defaults to *1* when `orientation` is *v* and', + '0.5 when `orientation` is *h*.', + 'Must be between *0* and *1* if `xref` is *container*', + 'and between *-2* and *3* if `xref` is *paper*.' + ].join(' ') + }, + xref: { + valType: 'enumerated', + dflt: 'paper', + values: ['container', 'paper'], + editType: 'layoutstyle', + description: [ + 'Sets the container `x` refers to.', + '*container* spans the entire `width` of the plot.', + '*paper* refers to the width of the plotting area only.' + ].join(' ') + }, + xanchor: { + valType: 'enumerated', + values: ['left', 'center', 'right'], + description: [ + "Sets this color bar's horizontal position anchor.", + 'This anchor binds the `x` position to the *left*, *center*', + 'or *right* of the color bar.', + 'Defaults to *left* when `orientation` is *v* and', + '*center* when `orientation` is *h*.' + ].join(' ') + }, + xpad: { + valType: 'number', + min: 0, + dflt: 10, + description: 'Sets the amount of padding (in px) along the x direction.' + }, + y: { + valType: 'number', + description: [ + 'Sets the y position with respect to `yref` of the color bar (in plot fraction).', + 'When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and', + '1.02 when `orientation` is *h*.', + 'When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and', + '1 when `orientation` is *h*.', + 'Must be between *0* and *1* if `yref` is *container*', + 'and between *-2* and *3* if `yref` is *paper*.' + ].join(' ') + }, + yref: { + valType: 'enumerated', + dflt: 'paper', + values: ['container', 'paper'], + editType: 'layoutstyle', + description: [ + 'Sets the container `y` refers to.', + '*container* spans the entire `height` of the plot.', + '*paper* refers to the height of the plotting area only.' + ].join(' ') + }, + yanchor: { + valType: 'enumerated', + values: ['top', 'middle', 'bottom'], + description: [ + "Sets this color bar's vertical position anchor", + 'This anchor binds the `y` position to the *top*, *middle*', + 'or *bottom* of the color bar.', + 'Defaults to *middle* when `orientation` is *v* and', + '*bottom* when `orientation` is *h*.' + ].join(' ') + }, + ypad: { + valType: 'number', + min: 0, + dflt: 10, + description: 'Sets the amount of padding (in px) along the y direction.' + }, + // a possible line around the bar itself + outlinecolor: axesAttrs.linecolor, + outlinewidth: axesAttrs.linewidth, + // Should outlinewidth have {dflt: 0} ? + // another possible line outside the padding and tick labels + bordercolor: axesAttrs.linecolor, + borderwidth: { + valType: 'number', + min: 0, + dflt: 0, + description: ['Sets the width (in px) or the border enclosing this color bar.'].join(' ') + }, + bgcolor: { + valType: 'color', + dflt: 'rgba(0,0,0,0)', + description: 'Sets the color of padded area.' + }, + // tick and title properties named and function exactly as in axes + tickmode: axesAttrs.minor.tickmode, + nticks: axesAttrs.nticks, + tick0: axesAttrs.tick0, + dtick: axesAttrs.dtick, + tickvals: axesAttrs.tickvals, + ticktext: axesAttrs.ticktext, + ticks: extendFlat({}, axesAttrs.ticks, { dflt: '' }), + ticklabeloverflow: extendFlat({}, axesAttrs.ticklabeloverflow, { + description: [ + 'Determines how we handle tick labels that would overflow either the graph div or the domain of the axis.', + 'The default value for inside tick labels is *hide past domain*.', + 'In other cases the default is *hide past div*.' + ].join(' ') }), - side: { + + // ticklabelposition: not used directly, as values depend on orientation + // left/right options are for x axes, and top/bottom options are for y axes + ticklabelposition: { valType: 'enumerated', - values: ['right', 'top', 'bottom'], + values: [ + 'outside', + 'inside', + 'outside top', + 'inside top', + 'outside left', + 'inside left', + 'outside right', + 'inside right', + 'outside bottom', + 'inside bottom' + ], + dflt: 'outside', description: [ - 'Determines the location of color bar\'s title', - 'with respect to the color bar.', - 'Defaults to *top* when `orientation` if *v* and', - 'defaults to *right* when `orientation` if *h*.', + 'Determines where tick labels are drawn relative to the ticks.', + 'Left and right options are used when `orientation` is *h*,', + 'top and bottom when `orientation` is *v*.' ].join(' ') + }, + + ticklen: axesAttrs.ticklen, + tickwidth: axesAttrs.tickwidth, + tickcolor: axesAttrs.tickcolor, + ticklabelstep: axesAttrs.ticklabelstep, + showticklabels: axesAttrs.showticklabels, + labelalias: axesAttrs.labelalias, + tickfont: fontAttrs({ + description: "Sets the color bar's tick label font" + }), + tickangle: axesAttrs.tickangle, + tickformat: axesAttrs.tickformat, + tickformatstops: axesAttrs.tickformatstops, + tickprefix: axesAttrs.tickprefix, + showtickprefix: axesAttrs.showtickprefix, + ticksuffix: axesAttrs.ticksuffix, + showticksuffix: axesAttrs.showticksuffix, + separatethousands: axesAttrs.separatethousands, + exponentformat: axesAttrs.exponentformat, + minexponent: axesAttrs.minexponent, + showexponent: axesAttrs.showexponent, + title: { + text: { + valType: 'string', + description: 'Sets the title of the color bar.' + }, + font: fontAttrs({ + description: "Sets this color bar's title font." + }), + side: { + valType: 'enumerated', + values: ['right', 'top', 'bottom'], + description: [ + "Determines the location of color bar's title", + 'with respect to the color bar.', + 'Defaults to *top* when `orientation` if *v* and', + 'defaults to *right* when `orientation` if *h*.' + ].join(' ') + } } }, -}, 'colorbars', 'from-root'); + 'colorbars', + 'from-root' +); diff --git a/src/plots/cartesian/layout_attributes.js b/src/plots/cartesian/layout_attributes.js index 91417573d23..a95e3336977 100644 --- a/src/plots/cartesian/layout_attributes.js +++ b/src/plots/cartesian/layout_attributes.js @@ -17,7 +17,7 @@ var minorTickmode = { valType: 'enumerated', values: ['auto', 'linear', 'array'], editType: 'ticks', - impliedEdits: {tick0: undefined, dtick: undefined}, + impliedEdits: { tick0: undefined, dtick: undefined }, description: [ 'Sets the tick mode for this axis.', 'If *auto*, the number of ticks is set via `nticks`.', @@ -57,7 +57,7 @@ function makeNticks(minor) { var tick0 = { valType: 'any', editType: 'ticks', - impliedEdits: {tickmode: 'linear'}, + impliedEdits: { tickmode: 'linear' }, description: [ 'Sets the placement of the first tick on this axis.', 'Use with `dtick`.', @@ -73,7 +73,7 @@ var tick0 = { var dtick = { valType: 'any', editType: 'ticks', - impliedEdits: {tickmode: 'linear'}, + impliedEdits: { tickmode: 'linear' }, description: [ 'Sets the step in-between ticks on this axis. Use with `tick0`.', 'Must be a positive number, or special strings available to *log* and *date* axes.', @@ -113,8 +113,8 @@ var ticks = { editType: 'ticks', description: [ 'Determines whether ticks are drawn or not.', - 'If **, this axis\' ticks are not drawn.', - 'If *outside* (*inside*), this axis\' are drawn outside (inside)', + "If **, this axis' ticks are not drawn.", + "If *outside* (*inside*), this axis' are drawn outside (inside)", 'the axis lines.' ].join(' ') }; @@ -127,7 +127,7 @@ function makeTicklen(minor) { description: 'Sets the tick length (in px).' }; - if(!minor) obj.dflt = 5; + if (!minor) obj.dflt = 5; return obj; } @@ -140,7 +140,7 @@ function makeTickwidth(minor) { description: 'Sets the tick width (in px).' }; - if(!minor) obj.dflt = 1; + if (!minor) obj.dflt = 1; return obj; } @@ -167,12 +167,12 @@ function makeGridwidth(minor) { description: 'Sets the width (in px) of the grid lines.' }; - if(!minor) obj.dflt = 1; + if (!minor) obj.dflt = 1; return obj; } -var griddash = extendFlat({}, dash, {editType: 'ticks'}); +var griddash = extendFlat({}, dash, { editType: 'ticks' }); var showgrid = { valType: 'boolean', @@ -212,7 +212,7 @@ module.exports = { }, font: fontAttrs({ editType: 'ticks', - description: 'Sets this axis\' title font.' + description: "Sets this axis' title font." }), standoff: { valType: 'number', @@ -267,7 +267,7 @@ module.exports = { values: [true, false, 'reversed', 'min reversed', 'max reversed', 'min', 'max'], dflt: true, editType: 'axrange', - impliedEdits: {'range[0]': undefined, 'range[1]': undefined}, + impliedEdits: { 'range[0]': undefined, 'range[1]': undefined }, description: [ 'Determines whether or not the range of this axis is', 'computed in relation to the input data.', @@ -278,30 +278,26 @@ module.exports = { 'Using *max* applies autorange only to set the maximum.', 'Using *min reversed* applies autorange only to set the minimum on a reversed axis.', 'Using *max reversed* applies autorange only to set the maximum on a reversed axis.', - 'Using *reversed* applies autorange on both ends and reverses the axis direction.', + 'Using *reversed* applies autorange on both ends and reverses the axis direction.' ].join(' ') }, autorangeoptions: { minallowed: { valType: 'any', editType: 'plot', - impliedEdits: {'range[0]': undefined, 'range[1]': undefined}, - description: [ - 'Use this value exactly as autorange minimum.' - ].join(' ') + impliedEdits: { 'range[0]': undefined, 'range[1]': undefined }, + description: ['Use this value exactly as autorange minimum.'].join(' ') }, maxallowed: { valType: 'any', editType: 'plot', - impliedEdits: {'range[0]': undefined, 'range[1]': undefined}, - description: [ - 'Use this value exactly as autorange maximum.' - ].join(' ') + impliedEdits: { 'range[0]': undefined, 'range[1]': undefined }, + description: ['Use this value exactly as autorange maximum.'].join(' ') }, clipmin: { valType: 'any', editType: 'plot', - impliedEdits: {'range[0]': undefined, 'range[1]': undefined}, + impliedEdits: { 'range[0]': undefined, 'range[1]': undefined }, description: [ 'Clip autorange minimum if it goes beyond this value.', 'Has no effect when `autorangeoptions.minallowed` is provided.' @@ -310,7 +306,7 @@ module.exports = { clipmax: { valType: 'any', editType: 'plot', - impliedEdits: {'range[0]': undefined, 'range[1]': undefined}, + impliedEdits: { 'range[0]': undefined, 'range[1]': undefined }, description: [ 'Clip autorange maximum if it goes beyond this value.', 'Has no effect when `autorangeoptions.maxallowed` is provided.' @@ -320,10 +316,8 @@ module.exports = { valType: 'any', arrayOk: true, editType: 'plot', - impliedEdits: {'range[0]': undefined, 'range[1]': undefined}, - description: [ - 'Ensure this value is included in autorange.' - ].join(' ') + impliedEdits: { 'range[0]': undefined, 'range[1]': undefined }, + description: ['Ensure this value is included in autorange.'].join(' ') }, editType: 'plot' }, @@ -345,11 +339,11 @@ module.exports = { range: { valType: 'info_array', items: [ - {valType: 'any', editType: 'axrange', impliedEdits: {'^autorange': false}, anim: true}, - {valType: 'any', editType: 'axrange', impliedEdits: {'^autorange': false}, anim: true} + { valType: 'any', editType: 'axrange', impliedEdits: { '^autorange': false }, anim: true }, + { valType: 'any', editType: 'axrange', impliedEdits: { '^autorange': false }, anim: true } ], editType: 'axrange', - impliedEdits: {autorange: false}, + impliedEdits: { autorange: false }, anim: true, description: [ 'Sets the range of this axis.', @@ -362,33 +356,26 @@ module.exports = { 'If the axis `type` is *category*, it should be numbers,', 'using the scale where each category is assigned a serial', 'number from zero in the order it appears.', - 'Leaving either or both elements `null` impacts the default `autorange`.', + 'Leaving either or both elements `null` impacts the default `autorange`.' ].join(' ') }, minallowed: { valType: 'any', editType: 'plot', - impliedEdits: {'^autorange': false}, - description: [ - 'Determines the minimum range of this axis.' - ].join(' ') + impliedEdits: { '^autorange': false }, + description: ['Determines the minimum range of this axis.'].join(' ') }, maxallowed: { valType: 'any', editType: 'plot', - impliedEdits: {'^autorange': false}, - description: [ - 'Determines the maximum range of this axis.' - ].join(' ') + impliedEdits: { '^autorange': false }, + description: ['Determines the maximum range of this axis.'].join(' ') }, fixedrange: { valType: 'boolean', dflt: false, editType: 'calc', - description: [ - 'Determines whether or not this axis is zoom-able.', - 'If true, then zoom is disabled.' - ].join(' ') + description: ['Determines whether or not this axis is zoom-able.', 'If true, then zoom is disabled.'].join(' ') }, modebardisable: { valType: 'flaglist', @@ -405,8 +392,8 @@ module.exports = { insiderange: { valType: 'info_array', items: [ - {valType: 'any', editType: 'plot'}, - {valType: 'any', editType: 'plot'} + { valType: 'any', editType: 'plot' }, + { valType: 'any', editType: 'plot' } ], editType: 'plot', description: [ @@ -421,11 +408,7 @@ module.exports = { // values are any opposite-letter axis id, or `false`. scaleanchor: { valType: 'enumerated', - values: [ - constants.idRegex.x.toString(), - constants.idRegex.y.toString(), - false - ], + values: [constants.idRegex.x.toString(), constants.idRegex.y.toString(), false], editType: 'plot', description: [ 'If set to another axis id (e.g. `x2`, `y`), the range of this axis', @@ -488,10 +471,7 @@ module.exports = { }, matches: { valType: 'enumerated', - values: [ - constants.idRegex.x.toString(), - constants.idRegex.y.toString() - ], + values: [constants.idRegex.x.toString(), constants.idRegex.y.toString()], editType: 'calc', description: [ 'If set to another axis id (e.g. `x2`, `y`), the range of this axis', @@ -518,8 +498,8 @@ module.exports = { bounds: { valType: 'info_array', items: [ - {valType: 'any', editType: 'calc'}, - {valType: 'any', editType: 'calc'} + { valType: 'any', editType: 'calc' }, + { valType: 'any', editType: 'calc' } ], editType: 'calc', description: [ @@ -534,16 +514,16 @@ module.exports = { editType: 'calc', description: [ 'Determines a pattern on the time line that generates breaks.', - 'If *' + DAY_OF_WEEK + '* - days of the week in English e.g. \'Sunday\' or `\sun\`', + 'If *' + DAY_OF_WEEK + "* - days of the week in English e.g. 'Sunday' or `\sun\`", '(matching is case-insensitive and considers only the first three characters),', 'as well as Sunday-based integers between 0 and 6.', 'If *' + HOUR + '* - hour (24-hour clock) as decimal numbers between 0 and 24.', 'for more info.', 'Examples:', - '- { pattern: \'' + DAY_OF_WEEK + '\', bounds: [6, 1] }', - ' or simply { bounds: [\'sat\', \'mon\'] }', + "- { pattern: '" + DAY_OF_WEEK + "', bounds: [6, 1] }", + " or simply { bounds: ['sat', 'mon'] }", ' breaks from Saturday to Monday (i.e. skips the weekends).', - '- { pattern: \'' + HOUR + '\', bounds: [17, 8] }', + "- { pattern: '" + HOUR + "', bounds: [17, 8] }", ' breaks from 5pm to 8am (i.e. skips non-work hours).' ].join(' ') }, @@ -568,10 +548,7 @@ module.exports = { editType: 'calc', min: 0, dflt: ONEDAY, - description: [ - 'Sets the size of each `values` item.', - 'The default is one day in milliseconds.' - ].join(' ') + description: ['Sets the size of each `values` item.', 'The default is one day in milliseconds.'].join(' ') }, /* @@ -667,11 +644,16 @@ module.exports = { ticklabelposition: { valType: 'enumerated', values: [ - 'outside', 'inside', - 'outside top', 'inside top', - 'outside left', 'inside left', - 'outside right', 'inside right', - 'outside bottom', 'inside bottom' + 'outside', + 'inside', + 'outside top', + 'inside top', + 'outside left', + 'inside left', + 'outside right', + 'inside right', + 'outside bottom', + 'inside bottom' ], dflt: 'outside', editType: 'calc', @@ -690,11 +672,7 @@ module.exports = { }, ticklabeloverflow: { valType: 'enumerated', - values: [ - 'allow', - 'hide past div', - 'hide past domain' - ], + values: ['allow', 'hide past div', 'hide past domain'], editType: 'calc', description: [ 'Determines how we handle tick labels that would overflow either the graph div or the domain of the axis.', @@ -772,7 +750,7 @@ module.exports = { editType: 'ticks', description: [ 'Replacement text for specific tick or hover labels.', - 'For example using {US: \'USA\', CA: \'Canada\'} changes US to USA', + "For example using {US: 'USA', CA: 'Canada'} changes US to USA", 'and CA to Canada. The labels we would have shown must match', 'the keys exactly, after adding any tickprefix or ticksuffix.', 'For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash.', @@ -787,10 +765,7 @@ module.exports = { extras: [true, false], dflt: false, editType: 'ticks', - description: [ - 'Determines whether long tick labels automatically grow the figure', - 'margins.' - ].join(' ') + description: ['Determines whether long tick labels automatically grow the figure', 'margins.'].join(' ') }, showspikes: { valType: 'boolean', @@ -813,7 +788,7 @@ module.exports = { editType: 'none', description: 'Sets the width (in px) of the zero line.' }, - spikedash: extendFlat({}, dash, {dflt: 'dash', editType: 'none'}), + spikedash: extendFlat({}, dash, { dflt: 'dash', editType: 'none' }), spikemode: { valType: 'flaglist', flags: ['toaxis', 'across', 'marker'], @@ -923,7 +898,7 @@ module.exports = { 'If *power*, 1x10^9 (with 9 in a super script).', 'If *SI*, 1G.', 'If *B*, 1B.', - + '*SI* uses prefixes from "femto" f (10^-15) to "tera" T (10^12).', '*SI extended* covers instead the full SI range from "quecto" q (10^-30) to "quetta" Q (10^30).', 'If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule', @@ -944,9 +919,7 @@ module.exports = { valType: 'boolean', dflt: false, editType: 'ticks', - description: [ - 'If "true", even 4-digit integers are separated' - ].join(' ') + description: ['If "true", even 4-digit integers are separated'].join(' ') }, tickformat: { valType: 'string', @@ -967,8 +940,8 @@ module.exports = { dtickrange: { valType: 'info_array', items: [ - {valType: 'any', editType: 'ticks'}, - {valType: 'any', editType: 'ticks'} + { valType: 'any', editType: 'ticks' }, + { valType: 'any', editType: 'ticks' } ], editType: 'ticks', description: [ @@ -981,9 +954,7 @@ module.exports = { valType: 'string', dflt: '', editType: 'ticks', - description: [ - 'string - dtickformat for described zoom level, the same as *tickformat*' - ].join(' ') + description: ['string - dtickformat for described zoom level, the same as *tickformat*'].join(' ') }, editType: 'ticks' }), @@ -994,7 +965,7 @@ module.exports = { description: descriptionWithDates('hover text') }, unifiedhovertitle: { - text : { + text: { valType: 'string', dflt: '', editType: 'none', @@ -1010,9 +981,7 @@ module.exports = { valType: 'boolean', dflt: false, editType: 'ticks+layoutstyle', - description: [ - 'Determines whether or not a line bounding this axis is drawn.' - ].join(' ') + description: ['Determines whether or not a line bounding this axis is drawn.'].join(' ') }, linecolor: { valType: 'color', @@ -1054,8 +1023,8 @@ module.exports = { editType: 'plot', description: [ 'Sets the layer on which this zeroline is displayed.', - 'If *above traces*, this zeroline is displayed above all the subplot\'s traces', - 'If *below traces*, this zeroline is displayed below all the subplot\'s traces,', + "If *above traces*, this zeroline is displayed above all the subplot's traces", + "If *below traces*, this zeroline is displayed below all the subplot's traces,", 'but above the grid lines. Limitation: *zerolinelayer* currently has no effect', 'if the *zorder* property is set on any trace.' ].join(' ') @@ -1081,19 +1050,13 @@ module.exports = { valType: 'color', dflt: colorAttrs.defaultLine, editType: 'ticks', - description: [ - 'Sets the color of the dividers', - 'Only has an effect on *multicategory* axes.' - ].join(' ') + description: ['Sets the color of the dividers', 'Only has an effect on *multicategory* axes.'].join(' ') }, dividerwidth: { valType: 'number', dflt: 1, editType: 'ticks', - description: [ - 'Sets the width (in px) of the dividers', - 'Only has an effect on *multicategory* axes.' - ].join(' ') + description: ['Sets the width (in px) of the dividers', 'Only has an effect on *multicategory* axes.'].join(' ') }, // TODO dividerlen: that would override "to label base" length? @@ -1102,16 +1065,12 @@ module.exports = { // values are any opposite-letter axis id anchor: { valType: 'enumerated', - values: [ - 'free', - constants.idRegex.x.toString(), - constants.idRegex.y.toString() - ], + values: ['free', constants.idRegex.x.toString(), constants.idRegex.y.toString()], editType: 'plot', description: [ 'If set to an opposite-letter axis id (e.g. `x2`, `y`), this axis is bound to', 'the corresponding opposite-letter axis.', - 'If set to *free*, this axis\' position is determined by `position`.' + "If set to *free*, this axis' position is determined by `position`." ].join(' ') }, // side: not used directly, as values depend on direction @@ -1131,11 +1090,7 @@ module.exports = { // itself overlaying anything overlaying: { valType: 'enumerated', - values: [ - 'free', - constants.idRegex.x.toString(), - constants.idRegex.y.toString() - ], + values: ['free', constants.idRegex.x.toString(), constants.idRegex.y.toString()], editType: 'plot', description: [ 'If set a same-letter axis id, this axis is overlaid on top of', @@ -1175,7 +1130,7 @@ module.exports = { 'Determines how minor log labels are displayed.', 'If *small digits*, small digits i.e. 2 or 5 are displayed.', 'If *complete*, complete digits are displayed.', - 'If *none*, no labels are displayed.', + 'If *none*, no labels are displayed.' ].join(' ') }, @@ -1186,8 +1141,8 @@ module.exports = { editType: 'plot', description: [ 'Sets the layer on which this axis is displayed.', - 'If *above traces*, this axis is displayed above all the subplot\'s traces', - 'If *below traces*, this axis is displayed below all the subplot\'s traces,', + "If *above traces*, this axis is displayed above all the subplot's traces", + "If *below traces*, this axis is displayed below all the subplot's traces,", 'but above the grid lines.', 'Useful when used together with scatter-like traces with `cliponaxis`', 'set to *false* to show markers and/or text nodes above this axis.' @@ -1196,14 +1151,12 @@ module.exports = { domain: { valType: 'info_array', items: [ - {valType: 'number', min: 0, max: 1, editType: 'plot'}, - {valType: 'number', min: 0, max: 1, editType: 'plot'} + { valType: 'number', min: 0, max: 1, editType: 'plot' }, + { valType: 'number', min: 0, max: 1, editType: 'plot' } ], dflt: [0, 1], editType: 'plot', - description: [ - 'Sets the domain of this axis (in plot fraction).' - ].join(' ') + description: ['Sets the domain of this axis (in plot fraction).'].join(' ') }, position: { valType: 'number', @@ -1226,7 +1179,7 @@ module.exports = { 'overlap with other axes with the same `overlaying` value.', 'This repositioning will account for any `shift` amount applied to other', 'axes on the same side with `autoshift` is set to true.', - 'Only has an effect if `anchor` is set to *free*.', + 'Only has an effect if `anchor` is set to *free*.' ].join(' ') }, shift: { @@ -1244,14 +1197,24 @@ module.exports = { categoryorder: { valType: 'enumerated', values: [ - 'trace', 'category ascending', 'category descending', 'array', - 'total ascending', 'total descending', - 'min ascending', 'min descending', - 'max ascending', 'max descending', - 'sum ascending', 'sum descending', - 'mean ascending', 'mean descending', - 'geometric mean ascending', 'geometric mean descending', - 'median ascending', 'median descending' + 'trace', + 'category ascending', + 'category descending', + 'array', + 'total ascending', + 'total descending', + 'min ascending', + 'min descending', + 'max ascending', + 'max descending', + 'sum ascending', + 'sum descending', + 'mean ascending', + 'mean descending', + 'geometric mean ascending', + 'geometric mean descending', + 'median ascending', + 'median descending' ], dflt: 'trace', editType: 'calc', @@ -1286,5 +1249,5 @@ module.exports = { 'Defaults to `layout.uirevision`.' ].join(' ') }, - editType: 'calc', + editType: 'calc' }; From 001127b61c3a9863ee10d0cbbed868118424e475 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Wed, 3 Jun 2026 08:44:58 -0600 Subject: [PATCH 079/241] Fix typos --- src/components/colorbar/attributes.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/colorbar/attributes.js b/src/components/colorbar/attributes.js index 8558c07d4df..384701253a6 100644 --- a/src/components/colorbar/attributes.js +++ b/src/components/colorbar/attributes.js @@ -226,8 +226,8 @@ module.exports = overrideAll( description: [ "Determines the location of color bar's title", 'with respect to the color bar.', - 'Defaults to *top* when `orientation` if *v* and', - 'defaults to *right* when `orientation` if *h*.' + 'Defaults to *top* when `orientation` is *v* and', + 'defaults to *right* when `orientation` is *h*.' ].join(' ') } } From e0acefe9882c7391e6b6be9fc27bc3c6dddfd130 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Wed, 3 Jun 2026 08:45:44 -0600 Subject: [PATCH 080/241] Improve description --- src/plots/cartesian/layout_attributes.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/plots/cartesian/layout_attributes.js b/src/plots/cartesian/layout_attributes.js index a95e3336977..d1ce0158ace 100644 --- a/src/plots/cartesian/layout_attributes.js +++ b/src/plots/cartesian/layout_attributes.js @@ -317,7 +317,13 @@ module.exports = { arrayOk: true, editType: 'plot', impliedEdits: { 'range[0]': undefined, 'range[1]': undefined }, - description: ['Ensure this value is included in autorange.'].join(' ') + description: [ + 'Extends the autorange to include this value or array of values,', + 'even when they fall outside the data range.', + 'Has no effect on endpoints set by `autorangeoptions.minallowed`', + 'or `autorangeoptions.maxallowed`.', + 'Subject to `autorangeoptions.clipmin` and `autorangeoptions.clipmax`.' + ].join(' ') }, editType: 'plot' }, From 5fa57a91f2ed8cc5b31952551cf8e6a0ec9663de Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Wed, 3 Jun 2026 08:48:07 -0600 Subject: [PATCH 081/241] Update schema and types --- src/types/generated/schema.d.ts | 4 +- test/plot-schema.json | 90 ++++++++++++++++----------------- 2 files changed, 47 insertions(+), 47 deletions(-) diff --git a/src/types/generated/schema.d.ts b/src/types/generated/schema.d.ts index 94b5391bc79..6c3c95623cd 100644 --- a/src/types/generated/schema.d.ts +++ b/src/types/generated/schema.d.ts @@ -385,7 +385,7 @@ export interface ColorBar { title?: { /** Sets this color bar's title font. */ font?: Font; - /** Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*. */ + /** Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*. */ side?: 'right' | 'top' | 'bottom'; /** Sets the title of the color bar. */ text?: string; @@ -466,7 +466,7 @@ export namespace _internal { clipmax?: any; /** Clip autorange minimum if it goes beyond this value. Has no effect when `autorangeoptions.minallowed` is provided. */ clipmin?: any; - /** Ensure this value is included in autorange. */ + /** Extends the autorange to include this value or array of values, even when they fall outside the data range. Has no effect on endpoints set by `autorangeoptions.minallowed` or `autorangeoptions.maxallowed`. Subject to `autorangeoptions.clipmin` and `autorangeoptions.clipmax`. */ include?: any; /** Use this value exactly as autorange maximum. */ maxallowed?: any; diff --git a/test/plot-schema.json b/test/plot-schema.json index 489ad866c06..eb778a93190 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -1758,7 +1758,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -5747,7 +5747,7 @@ "editType": "plot", "include": { "arrayOk": true, - "description": "Ensure this value is included in autorange.", + "description": "Extends the autorange to include this value or array of values, even when they fall outside the data range. Has no effect on endpoints set by `autorangeoptions.minallowed` or `autorangeoptions.maxallowed`. Subject to `autorangeoptions.clipmin` and `autorangeoptions.clipmax`.", "editType": "plot", "impliedEdits": {}, "valType": "any" @@ -7184,7 +7184,7 @@ "editType": "plot", "include": { "arrayOk": true, - "description": "Ensure this value is included in autorange.", + "description": "Extends the autorange to include this value or array of values, even when they fall outside the data range. Has no effect on endpoints set by `autorangeoptions.minallowed` or `autorangeoptions.maxallowed`. Subject to `autorangeoptions.clipmin` and `autorangeoptions.clipmax`.", "editType": "plot", "impliedEdits": {}, "valType": "any" @@ -7924,7 +7924,7 @@ "editType": "plot", "include": { "arrayOk": true, - "description": "Ensure this value is included in autorange.", + "description": "Extends the autorange to include this value or array of values, even when they fall outside the data range. Has no effect on endpoints set by `autorangeoptions.minallowed` or `autorangeoptions.maxallowed`. Subject to `autorangeoptions.clipmin` and `autorangeoptions.clipmax`.", "editType": "plot", "impliedEdits": {}, "valType": "any" @@ -8664,7 +8664,7 @@ "editType": "plot", "include": { "arrayOk": true, - "description": "Ensure this value is included in autorange.", + "description": "Extends the autorange to include this value or array of values, even when they fall outside the data range. Has no effect on endpoints set by `autorangeoptions.minallowed` or `autorangeoptions.maxallowed`. Subject to `autorangeoptions.clipmin` and `autorangeoptions.clipmax`.", "editType": "plot", "impliedEdits": {}, "valType": "any" @@ -13602,7 +13602,7 @@ "editType": "plot", "include": { "arrayOk": true, - "description": "Ensure this value is included in autorange.", + "description": "Extends the autorange to include this value or array of values, even when they fall outside the data range. Has no effect on endpoints set by `autorangeoptions.minallowed` or `autorangeoptions.maxallowed`. Subject to `autorangeoptions.clipmin` and `autorangeoptions.clipmax`.", "editType": "plot", "impliedEdits": {}, "valType": "any" @@ -15192,7 +15192,7 @@ "editType": "plot", "include": { "arrayOk": true, - "description": "Ensure this value is included in autorange.", + "description": "Extends the autorange to include this value or array of values, even when they fall outside the data range. Has no effect on endpoints set by `autorangeoptions.minallowed` or `autorangeoptions.maxallowed`. Subject to `autorangeoptions.clipmin` and `autorangeoptions.clipmax`.", "editType": "plot", "impliedEdits": {}, "valType": "any" @@ -17784,7 +17784,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -19847,7 +19847,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -24967,7 +24967,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -26267,7 +26267,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -27557,7 +27557,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -28886,7 +28886,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -30244,7 +30244,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -32080,7 +32080,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -33307,7 +33307,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -34535,7 +34535,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -36437,7 +36437,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -39086,7 +39086,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -41459,7 +41459,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -42923,7 +42923,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -44440,7 +44440,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -46832,7 +46832,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -50217,7 +50217,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "calc", "valType": "enumerated", "values": [ @@ -51750,7 +51750,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -54389,7 +54389,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -55679,7 +55679,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -60483,7 +60483,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -63152,7 +63152,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "calc", "valType": "enumerated", "values": [ @@ -63862,7 +63862,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "calc", "valType": "enumerated", "values": [ @@ -65708,7 +65708,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -68034,7 +68034,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "calc", "valType": "enumerated", "values": [ @@ -70475,7 +70475,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "calc", "valType": "enumerated", "values": [ @@ -72816,7 +72816,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "calc", "valType": "enumerated", "values": [ @@ -74372,7 +74372,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "calc", "valType": "enumerated", "values": [ @@ -75911,7 +75911,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -78210,7 +78210,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "calc", "valType": "enumerated", "values": [ @@ -80433,7 +80433,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -82771,7 +82771,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -85040,7 +85040,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -86562,7 +86562,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -88632,7 +88632,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -89920,7 +89920,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "calc", "valType": "enumerated", "values": [ @@ -93277,7 +93277,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -96335,7 +96335,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "calc", "valType": "enumerated", "values": [ From 292acf83dab4bbe305879ae5b1385bb8d8228bd6 Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Wed, 3 Jun 2026 15:18:46 -0400 Subject: [PATCH 082/241] fix issue with symbols not rendering in legend for scattermap traces --- src/components/drawing/index.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/components/drawing/index.js b/src/components/drawing/index.js index 861df3131a5..970fc2e056d 100644 --- a/src/components/drawing/index.js +++ b/src/components/drawing/index.js @@ -1866,7 +1866,10 @@ function getMarkerAngle(d, trace) { if (angle === undefined) { angle = trace.marker.angle; - if (!angle || Lib.isArrayOrTypedArray(angle)) { + // For scattermap traces, `trace.marker.angle` defaults to 'auto', + // which is meaningful for the MapLibre code but not for plotly.js itself. + // Therefore we need to coerce any non-numeric values to 0 (no rotation). + if (!isNumeric(angle) || Lib.isArrayOrTypedArray(angle)) { angle = 0; } } From c338b60a5027509a2cada880fe6dc702e804aa32 Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Thu, 4 Jun 2026 11:57:54 -0400 Subject: [PATCH 083/241] always fall back to circle icon in legend for scattermap --- src/components/legend/style.js | 7 ++++- test/jasmine/tests/scattermap_test.js | 39 +++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) diff --git a/src/components/legend/style.js b/src/components/legend/style.js index d2b3350c0c8..a2a45e9ea5a 100644 --- a/src/components/legend/style.js +++ b/src/components/legend/style.js @@ -207,7 +207,12 @@ module.exports = function style(s, gd, legend) { if (showMarker) { dEdit.mc = boundVal('marker.color', pickFirst); - dEdit.mx = boundVal('marker.symbol', pickFirst); + // Scattermap traces use marker.symbol to specify the Maki icon used in + // the map itself, which usually doesn't correspond to a valid + // Plotly symbol. Always draw a circle so the swatch is consistent + // across symbols rather than silently mismatched. + var isScattermapTrace = trace.type === 'scattermap' || trace.type === 'scattermapbox'; + dEdit.mx = isScattermapTrace ? 'circle' : boundVal('marker.symbol', pickFirst); dEdit.mo = boundVal('marker.opacity', Lib.mean, [0.2, 1]); dEdit.mlc = boundVal('marker.line.color', pickFirst); dEdit.mlw = boundVal('marker.line.width', Lib.mean, [0, 5], CST_MARKER_LINE_WIDTH); diff --git a/test/jasmine/tests/scattermap_test.js b/test/jasmine/tests/scattermap_test.js index e4010848e30..893fbef561e 100644 --- a/test/jasmine/tests/scattermap_test.js +++ b/test/jasmine/tests/scattermap_test.js @@ -1248,6 +1248,45 @@ describe('Test plotly events on a scattermap plot when css transform is present: }); }); +describe('scattermap legend', function() { + var gd; + + beforeEach(function() { + Plotly.setPlotConfig({}); + gd = createGraphDiv(); + }); + + afterEach(function() { + Plotly.purge(gd); + destroyGraphDiv(); + }); + + it('@gl should always draw a circle swatch regardless of marker.symbol', function(done) { + // marker.symbol on map traces is a Maki/sprite icon name that the SVG + // legend can't reproduce, so the swatch should consistently be a circle. + // The circle symbol path is the only one using an arc ('A') command; + // square/triangle/etc. use only straight (H/V/L) segments. + Plotly.newPlot(gd, { + data: [ + { type: 'scattermap', lat: [0], lon: [0], mode: 'markers', name: 'square', marker: { symbol: 'square' } }, + { type: 'scattermap', lat: [1], lon: [1], mode: 'markers', name: 'tri', marker: { symbol: 'triangle-stroked' } } + ], + layout: { + map: { style: 'open-street-map', zoom: 6, center: { lat: 0.5, lon: 0.5 } }, + showlegend: true + } + }).then(function() { + var swatches = gd.querySelectorAll('.legend .legendpoints path.scatterpts'); + expect(swatches.length).toBe(2, 'one swatch per trace'); + swatches.forEach(function(node) { + var d = node.getAttribute('d'); + expect(d.indexOf('A')).toBeGreaterThan(-1, 'swatch is a circle (has arc): ' + d); + expect(d.indexOf('NaN')).toBe(-1, 'swatch path has no NaN: ' + d); + }); + }).then(done, done.fail); + }); +}); + describe('scattermap restyle', function() { var gd; From 7ae7330ad57a42236f8fd36fd093f11dc99dbb3d Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Thu, 4 Jun 2026 11:59:07 -0400 Subject: [PATCH 084/241] make colors work for scattermap icons, and fetch maki icons from jsdelivr instead of unpkg so we can use maki 8 --- src/plots/map/map.js | 4 ++-- src/traces/scattermap/convert.js | 8 +++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/plots/map/map.js b/src/plots/map/map.js index 9a397743482..927e10b23e4 100644 --- a/src/plots/map/map.js +++ b/src/plots/map/map.js @@ -111,10 +111,10 @@ proto.createMap = function(calcData, fullLayout, resolve, reject) { requestedIcons[id] = true; var img = new Image(15, 15); img.onload = function() { - map.addImage(id, img); + map.addImage(id, img, {sdf: true}); }; img.crossOrigin = 'Anonymous'; - img.src = 'https://unpkg.com/maki@2.1.0/icons/' + id + '.svg'; + img.src = "https://cdn.jsdelivr.net/npm/@mapbox/maki@8.2.0/icons/" + id.slice(0, -3) + '.svg'; } }); diff --git a/src/traces/scattermap/convert.js b/src/traces/scattermap/convert.js index c2bfce0c56d..840b5dd7c7d 100644 --- a/src/traces/scattermap/convert.js +++ b/src/traces/scattermap/convert.js @@ -141,9 +141,11 @@ module.exports = function convert(gd, calcTrace) { Lib.extendFlat(symbol.paint, { 'icon-opacity': trace.opacity * trace.marker.opacity, - - // TODO does not work ?? - 'icon-color': trace.marker.color + 'icon-color': trace.marker.color, + // Set a tiny blur to make the edges look nicer + 'icon-halo-color': trace.marker.color, + 'icon-halo-width': 2, + 'icon-halo-blur': 1.5, }); } From 8bfb336ce626859485f3d77ef5b5c2a5ff74ed21 Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Thu, 4 Jun 2026 12:37:19 -0400 Subject: [PATCH 085/241] update baseline image --- test/image/baselines/map_symbol-text.png | Bin 85166 -> 83757 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/test/image/baselines/map_symbol-text.png b/test/image/baselines/map_symbol-text.png index 9b8d497ae32a6dffa6222b07c3b79b7b955e2790..ba81a0652dbcd1733c5c7a9e5b256934f4196055 100644 GIT binary patch literal 83757 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 Hap3;}7<@jl literal 85166 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 -_%g}(Bf{5~hPTF<4D*lw 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 t1=# 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 F{{wn Date: Thu, 4 Jun 2026 18:21:36 -0400 Subject: [PATCH 086/241] stop adding -15 suffix to icon names --- src/plots/map/layers.js | 2 +- src/plots/map/map.js | 4 ++-- src/traces/scattermap/convert.js | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/plots/map/layers.js b/src/plots/map/layers.js index be32c2dc21b..ca4b4aa7b26 100644 --- a/src/plots/map/layers.js +++ b/src/plots/map/layers.js @@ -230,7 +230,7 @@ function convertOpts(opts) { var textOpts = convertTextOpts(symbol.textposition, symbol.iconsize); Lib.extendFlat(layout, { - 'icon-image': symbol.icon + '-15', + 'icon-image': symbol.icon, 'icon-size': symbol.iconsize / 10, 'text-field': symbol.text, diff --git a/src/plots/map/map.js b/src/plots/map/map.js index 927e10b23e4..6c377d456d1 100644 --- a/src/plots/map/map.js +++ b/src/plots/map/map.js @@ -107,14 +107,14 @@ proto.createMap = function(calcData, fullLayout, resolve, reject) { var requestedIcons = {}; map.on('styleimagemissing', function(e) { var id = e.id; - if(!requestedIcons[id] && id.includes('-15')) { + if(!requestedIcons[id] && /^[a-zA-Z0-9-]+$/.test(id)) { requestedIcons[id] = true; var img = new Image(15, 15); img.onload = function() { map.addImage(id, img, {sdf: true}); }; img.crossOrigin = 'Anonymous'; - img.src = "https://cdn.jsdelivr.net/npm/@mapbox/maki@8.2.0/icons/" + id.slice(0, -3) + '.svg'; + img.src = "https://cdn.jsdelivr.net/npm/@mapbox/maki@8.2.0/icons/" + id + '.svg'; } }); diff --git a/src/traces/scattermap/convert.js b/src/traces/scattermap/convert.js index 840b5dd7c7d..a4c35683809 100644 --- a/src/traces/scattermap/convert.js +++ b/src/traces/scattermap/convert.js @@ -116,7 +116,7 @@ module.exports = function convert(gd, calcTrace) { Lib.extendFlat(symbol.layout, { visibility: 'visible', - 'icon-image': '{symbol}-15', + 'icon-image': '{symbol}', 'text-field': '{text}' }); From f34c6631926b9a5ad07e94cd7d86df6c0990cb12 Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Thu, 4 Jun 2026 18:24:26 -0400 Subject: [PATCH 087/241] add draftlog --- draftlogs/7825_update.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 draftlogs/7825_update.md diff --git a/draftlogs/7825_update.md b/draftlogs/7825_update.md new file mode 100644 index 00000000000..a74243ff3ef --- /dev/null +++ b/draftlogs/7825_update.md @@ -0,0 +1 @@ +- Enable scattermap icons to render in color, upgrade Maki icons version to 8.2, and standardize scattermap legend icons to circles [[#7825](https://github.com/plotly/plotly.js/pull/7825)] From 0593acf7ab9cace8a998e709ff261d54e1f1a1e3 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Thu, 4 Jun 2026 20:53:06 -0600 Subject: [PATCH 088/241] Apply suggestions from code review Co-authored-by: Emily KL <4672118+emilykl@users.noreply.github.com> --- src/traces/image/attributes.ts | 4 ---- src/types/ARCHITECTURE.md | 7 ++++--- src/types/CONVERTING_ATTRIBUTES.md | 22 ++------------------ src/types/GENERATOR.md | 19 +++++------------ src/types/README.md | 4 ++-- src/types/SETUP.md | 33 +++++++++--------------------- tasks/generate_schema_types.mjs | 5 +++-- tasks/schema.mjs | 10 ++------- tsconfig.json | 1 - 9 files changed, 28 insertions(+), 77 deletions(-) diff --git a/src/traces/image/attributes.ts b/src/traces/image/attributes.ts index 9000c72b49f..b7f5fea7f51 100644 --- a/src/traces/image/attributes.ts +++ b/src/traces/image/attributes.ts @@ -15,10 +15,6 @@ for (const name of cm) { zmaxDesc.push(`For the \`${name}\` colormodel, it is [${(cr.zmaxDflt || cr.max).join(', ')}].`); } -/** - * Image trace attributes. - * Consumer-facing types are generated from the schema by generate_schema_types.mjs. - */ const attributes = { source: { valType: 'string', diff --git a/src/types/ARCHITECTURE.md b/src/types/ARCHITECTURE.md index 61197ae34df..850cd7ef729 100644 --- a/src/types/ARCHITECTURE.md +++ b/src/types/ARCHITECTURE.md @@ -38,7 +38,7 @@ re-exports. The split: -- **Generated types** are the authoritative TypeScript representation of +- **Generated types** (`src/types/generated`) are the authoritative TypeScript representation of the runtime schema. The schema itself is produced from Plotly's JS attribute files (`src/.../attributes.js`), which remain the source of truth: chain is **attribute files → `plot-schema.json` → generated @@ -49,7 +49,7 @@ The split: - **Shared sub-interfaces** extracted from repeated subtrees (Font, FontArray, ColorBar, HoverLabel, Domain, Pattern, TickFormatStops, LegendGroupTitle). - - **Per-trace data interfaces** — all 49 (BarData, ScatterData, + - **Per-trace data interfaces** for all trace types (BarData, ScatterData, IndicatorData, etc.). - **Layout component interfaces** (LayoutAxis, Legend, Scene, Annotation, Shape, Slider, UpdateMenu, etc.) and the Layout @@ -65,7 +65,8 @@ The split: Generated from `plot-schema.json` by `tasks/generate_schema_types.mjs`. Run `npm run schema` to regenerate. -- **Hand-written types** cover everything the schema doesn't describe: +- **Hand-written types** (everything in `src/types/` besides the `generated/` directory) + cover everything the schema doesn't describe: events, internal runtime state, public API function signatures, utility types (Color, Datum, MarkerSymbol, ErrorBar), behavioral types (ModeBarButton, Icon, etc.). diff --git a/src/types/CONVERTING_ATTRIBUTES.md b/src/types/CONVERTING_ATTRIBUTES.md index 19fd43a71ac..cfe9ff03218 100644 --- a/src/types/CONVERTING_ATTRIBUTES.md +++ b/src/types/CONVERTING_ATTRIBUTES.md @@ -135,25 +135,11 @@ for the canonical example. The full conversion changed: - `.default` added to `require('./attributes')` in `index.js` and `defaults.js` Note: Consumer-facing types for modebar (and all other layout components) -are now generated from `plot-schema.json` by `tasks/generate_schema_types.mjs`, +are generated from `plot-schema.json` by `tasks/generate_schema_types.mjs`, not from the individual `attributes.ts` files. The `attributes.ts` conversion still adds value by type-checking the source attribute definitions against `AttributeMap`. -Schema output verified byte-identical (2547 bytes) before and after the -conversion. - -## What stays hand-written - -The schema does not describe these — they remain in `src/types/`: - -- **Events** (`PlotMouseEvent`, `LegendClickEvent`, etc.) -- **Public API function signatures** (`Plotly.newPlot`, `relayout`, ...) -- **Internal types** (`FullLayout._modules`, `GraphDiv._fullData`, ...) -- **Utility types** (`Color`, `Datum`, `TypedArray`, `MarkerSymbol`, etc.) — - these are the primitives the generator's emitted types reference. - -If you find yourself converting one of these, stop and ask. ## What if I need a type the schema doesn't describe well? @@ -177,17 +163,13 @@ The schema-generated types are authoritative for everything in ## Schema-generated types -All 49 trace data interfaces, layout component interfaces, and the Layout +All trace data interfaces, layout component interfaces, and the Layout interface itself are generated from `plot-schema.json` by `tasks/generate_schema_types.mjs` (run via `npm run schema`). Individual trace and layout `attributes.js` files do **not** need to be converted for their types to appear in the public API — the schema generator covers them automatically. -Converting an `attributes.js` file to TypeScript is still valuable because -it type-checks the source definitions against `AttributeMap`, catching -typos and structural errors at compile time. - ## Order of conversion (for parallel work) Pick from this priority list. Lower-numbered items are smaller / simpler. diff --git a/src/types/GENERATOR.md b/src/types/GENERATOR.md index 95d2c71d3b3..9cdf4366ca8 100644 --- a/src/types/GENERATOR.md +++ b/src/types/GENERATOR.md @@ -7,7 +7,7 @@ types into `src/types/generated/schema.d.ts`: - Common enum aliases (Calendar, Dash, AxisType, PatternShape, XRef, YRef, TransitionEasing, PlotType) - Shared sub-interfaces (Font, ColorBar, HoverLabel, etc.) -- 49 per-trace data interfaces (BarData, ScatterData, IndicatorData, ...) +- Data interfaces for each trace type (BarData, ScatterData, IndicatorData, etc.) - Layout component interfaces (LayoutAxis, Legend, Scene, Annotation, etc.) and the Layout interface itself - Animation / frame / edits interfaces (AnimationOpts, Frame, Edits) @@ -59,8 +59,8 @@ and leaf `valType`s produce the same fingerprint string. ### Phase 2: Shared interface extraction -Containers that appear at least `MIN_OCCURRENCES` (= 5) times AND have at -least `MIN_PROPERTIES` (= 4) properties become shared interfaces (Font, +Containers that appear at least `MIN_OCCURRENCES` times AND have at +least `MIN_PROPERTIES` properties become shared interfaces (Font, ColorBar, HoverLabel, etc.). PascalCase naming is controlled by `SHARED_NAME_OVERRIDES` so e.g. `colorbar` becomes `ColorBar` rather than `Colorbar`: @@ -196,8 +196,6 @@ src/types/generated/schema.d.ts └── Animation / frames / config (AnimationOpts, Frame, Edits, ConfigBase) ``` -Regenerate with `npm run schema`. - ## valType → TypeScript mapping Summary: @@ -322,20 +320,13 @@ re-exported to consumers. Types inside the `_internal` namespace are still reachable via `_internal.X` (the namespace itself is exported by the wildcard) but their bare names are not. -The wildcard is load-bearing: it removes the maintenance burden of keeping -`lib/index.d.ts` in sync with new schema additions. If anyone ever swaps -it for an explicit allowlist, restore the per-name re-export verifier -that previously lived in `tasks/schema.mjs` (see git history) — otherwise -new generated types will silently fail to surface in the public API. ## CI integration `npm run schema-typegen-diff-check` runs the generator and then verifies that both `test/plot-schema.json` and `src/types/generated/` are unchanged via -`git diff --exit-code`. If either differs, exit code 1 — meaning either a -developer changed the source schema but didn't commit the regenerated -artifacts, or an attribute-file conversion silently altered the runtime -schema and the change wasn't intentionally committed. +`git diff --exit-code`. If either differs, the command fails with exit code 1 +and outputs the diff to the console. This is what makes the JS-to-TS conversion workflow safe: a correct conversion produces a byte-identical schema, so the check passes; an diff --git a/src/types/README.md b/src/types/README.md index 703a4e63a53..3dbee7eade5 100644 --- a/src/types/README.md +++ b/src/types/README.md @@ -14,7 +14,7 @@ This directory documents the TypeScript conversion in progress. - TypeScript build infrastructure: ✅ done - Public type surface in `src/types/`: ✅ done - `AttributeMap` validation machinery: ✅ done -- **Schema-based type generator**: ✅ done — all 49 trace types + layout + shared interfaces +- **Schema-based type generator**: ✅ done — all trace types + layout + shared interfaces - Consumer entry point (`lib/index.d.ts`, wired via `package.json#types`): ✅ done - CI gates (`typecheck` + `schema-typegen-diff-check`): ✅ done - First attribute file converted (modebar): ✅ done @@ -31,7 +31,7 @@ The following are **auto-generated from `plot-schema.json`** by - Common enum aliases (Calendar, Dash, AxisType, PatternShape, XRef, YRef, TransitionEasing, PlotType) -- All 49 per-trace data interfaces (BarData, ScatterData, IndicatorData, ...) +- Data interfaces for each trace type (BarData, ScatterData, IndicatorData, etc.) - Layout component interfaces (LayoutAxis, Legend, Scene, Annotation, Shape, Slider, UpdateMenu, etc.) and the Layout interface itself - Shared sub-interfaces (Font, ColorBar, HoverLabel, LegendGroupTitle, etc.) diff --git a/src/types/SETUP.md b/src/types/SETUP.md index 554a2566990..aa9886706f2 100644 --- a/src/types/SETUP.md +++ b/src/types/SETUP.md @@ -4,19 +4,16 @@ Quick reference for the TypeScript toolchain in plotly.js. ## What's installed -- **TypeScript** (`typescript ^5.9.3`) — type checker only, never emits JS -- **ts-node** (`^10.9.2`) — runs TS scripts directly (build helpers) -- **@types/node**, **@types/d3** — third-party type definitions -- esbuild handles `.ts` natively for bundling — no plugins needed +The following dev dependencies are used for maintaining plotly.js types: -## Two tools, two jobs +- `typescript` — used for type-checking only +- `ts-node` — used for running TS scripts (build helpers) +- `@types/node`, `@types/d3` — provide third-party type definitions -| Tool | Job | -|---|---| -| **esbuild** | Bundle for production. Strips types, transpiles to ES2016, emits `dist/plotly.js`. Fast (~450ms full build). Does **not** check types. | -| **tsc** | Type-check only. Reads `.ts` and `.js` (with `allowJs: true`), reports errors, no output. Slower (~2-5s) but catches bugs. | +Note: esbuild handles `.ts` files natively for bundling, so no extra plugins are needed for the bundling process. + +`tsconfig.json` sets `noEmit: true` so that tsc never writes files. esbuild is the build system; tsc is the verifier. -`tsconfig.json` sets `noEmit: true` so tsc never writes files. esbuild is the build system; tsc is the verifier. ## Configuration @@ -31,10 +28,9 @@ Both target ES2016. `strict: true` is on in `tsconfig.json` — the type system npm run typecheck # tsc --noEmit, errors reported, no output npm run typecheck-watch # incremental rechecking on change -npm run schema # rebuild test/plot-schema.json + regenerate types -npm run schema-typegen-diff-check # regenerate + verify no uncommitted drift in test/plot-schema.json or schema.d.ts -npm run bundle # esbuild → dist/plotly.js -npm run build # full production build +npm run schema # rebuild test/plot-schema.json + regenerate types under src/types/generated/ +npm run schema-typegen-diff-check # regenerate + verify no changes to test/plot-schema.json or src/types/generated/schema.d.ts +npm run build # full production build (regenerate all files under `dist/`) ``` ## Workflows @@ -77,12 +73,3 @@ var attributes = require('./attributes').default; This shows up when converting `attributes.js` → `attributes.ts`. See [CONVERTING_ATTRIBUTES.md](CONVERTING_ATTRIBUTES.md) step 4. -## Performance - -For a codebase of ~750 source files: - -| Operation | Time | -|---|---| -| `tsc --noEmit` cold | ~2-5s | -| `tsc --noEmit --watch` incremental | ~100ms | -| esbuild full bundle | ~450ms | diff --git a/tasks/generate_schema_types.mjs b/tasks/generate_schema_types.mjs index c8aa02adad7..1ed6e858c28 100644 --- a/tasks/generate_schema_types.mjs +++ b/tasks/generate_schema_types.mjs @@ -28,8 +28,9 @@ let META_KEYS = new Set(); // --------------------------------------------------------------------------- // Common enum types — discovered from the schema at generation time and // emitted as named type aliases in the output. Each anchor specifies a -// PascalCase type name and a `match(key, path, values)` predicate. The first -// enumerated attribute whose match returns true defines the alias's values. +// PascalCase type name and a `match(key, path, values)` predicate. If multiple +// enumerated attributes match the predicate, the one with the largest set of values +// is chosen. // --------------------------------------------------------------------------- const COMMON_TYPE_ANCHORS = [ diff --git a/tasks/schema.mjs b/tasks/schema.mjs index c363f1404ef..465fde773cb 100644 --- a/tasks/schema.mjs +++ b/tasks/schema.mjs @@ -72,14 +72,8 @@ await build(localDevConfig); // output plot-schema JSON makeSchema(pathToPlotly, pathToSchema); -// generate TypeScript types from the schema — traces, layout, common enum -// aliases, animation/frame/config interfaces, and an `_internal` namespace. -// -// New schema-derived types automatically reach `plotly.js` consumers because -// `lib/index.d.ts` uses `export type * from '../src/types/generated/schema'`. -// If you ever swap that wildcard for an explicit allowlist, restore the -// per-name re-export verifier that lived here (see git history) — otherwise -// new types will silently fail to surface in the public API. +// generate TypeScript types from the schema +// and write to `src/types/generated/schema.d.ts` const schema = JSON.parse(fs.readFileSync(pathToSchema, 'utf-8')); const pathToGeneratedTypes = path.join(constants.pathToSrc, 'types/generated/schema.d.ts'); generateSchemaTypes(schema, pathToGeneratedTypes); diff --git a/tsconfig.json b/tsconfig.json index c09f218ef2b..ac6e0112966 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -26,7 +26,6 @@ "outDir": "./dist", "noEmit": true, - // Type checking - start strict, loosen if necessary "strict": true, // Linting From d26e84c07801cd3c1bde32d84c1236580f831ed0 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Fri, 5 Jun 2026 09:08:03 -0600 Subject: [PATCH 089/241] Update docs --- src/types/ARCHITECTURE.md | 18 ++++++++++++++++++ src/types/CONVERTING_ATTRIBUTES.md | 5 +++-- src/types/GENERATOR.md | 1 - src/types/README.md | 10 +++++++++- src/types/SETUP.md | 2 -- 5 files changed, 30 insertions(+), 6 deletions(-) diff --git a/src/types/ARCHITECTURE.md b/src/types/ARCHITECTURE.md index 850cd7ef729..162227fe9c0 100644 --- a/src/types/ARCHITECTURE.md +++ b/src/types/ARCHITECTURE.md @@ -220,6 +220,24 @@ The `[key: string]: any` index signature is intentional — it absorbs unknown internal properties so JS code can be migrated piecewise without type errors. +## Coding conventions + +### JSDoc on TypeScript functions + +For exported functions in `.ts` source files, use a top-level JSDoc block +with `@param name - description` lines. Omit the type from `@param` +(the TS signature already has it) and use a hyphen separator: + +```ts +/** + * make a regex for matching counter ids/names ie xaxis, xaxis2, xaxis10... + * + * @param head - the head of the pattern, eg 'x' matches 'x', 'x2', 'x10' etc. + * @param tail - a fixed piece after the id + */ +export function counter(head: string, tail: string = '') { ... } +``` + ## See also - [SETUP.md](SETUP.md) — toolchain and npm scripts diff --git a/src/types/CONVERTING_ATTRIBUTES.md b/src/types/CONVERTING_ATTRIBUTES.md index cfe9ff03218..9d06863984a 100644 --- a/src/types/CONVERTING_ATTRIBUTES.md +++ b/src/types/CONVERTING_ATTRIBUTES.md @@ -66,7 +66,9 @@ values: ['v', 'h'], values: ['v', 'h'] as const, ``` -Without this, TypeScript widens to `string[]` and you lose the union. +Without `as const`, `values` widens to `string[]` and `dflt` is no longer +constrained to be one of `values`. `as const` is what lets `AttributeMap` +catch `dflt`-not-in-`values` typos at compile time. ### 4. Update consumers' `require()` calls @@ -140,7 +142,6 @@ not from the individual `attributes.ts` files. The `attributes.ts` conversion still adds value by type-checking the source attribute definitions against `AttributeMap`. - ## What if I need a type the schema doesn't describe well? The schema-generated types are authoritative for everything in diff --git a/src/types/GENERATOR.md b/src/types/GENERATOR.md index 9cdf4366ca8..d25297bdd21 100644 --- a/src/types/GENERATOR.md +++ b/src/types/GENERATOR.md @@ -320,7 +320,6 @@ re-exported to consumers. Types inside the `_internal` namespace are still reachable via `_internal.X` (the namespace itself is exported by the wildcard) but their bare names are not. - ## CI integration `npm run schema-typegen-diff-check` runs the generator and then verifies that diff --git a/src/types/README.md b/src/types/README.md index 3dbee7eade5..1adbc559135 100644 --- a/src/types/README.md +++ b/src/types/README.md @@ -18,7 +18,15 @@ This directory documents the TypeScript conversion in progress. - Consumer entry point (`lib/index.d.ts`, wired via `package.json#types`): ✅ done - CI gates (`typecheck` + `schema-typegen-diff-check`): ✅ done - First attribute file converted (modebar): ✅ done -- Conversion of remaining component attribute files: 🚧 in progress +- Conversion of remaining files: 🚧 in progress + +## Open conversion TODOs + +- **`src/fonts/ploticon.js`** — convert so `DefaultIcons` and `IconsMap` in + [`src/types/core/api.d.ts`](core/api.d.ts) can be derived from the module + (`type DefaultIcons = keyof typeof Ploticon`) instead of maintained as a + hand-written union that can drift. Consumers need `.default` appended per the established + [conversion pattern](CONVERTING_ATTRIBUTES.md#L72-L86). The published consumer surface lives at [`lib/index.d.ts`](../../lib/index.d.ts). This `src/types/` directory is the authoring location — internal types live diff --git a/src/types/SETUP.md b/src/types/SETUP.md index aa9886706f2..3ba19342439 100644 --- a/src/types/SETUP.md +++ b/src/types/SETUP.md @@ -14,7 +14,6 @@ Note: esbuild handles `.ts` files natively for bundling, so no extra plugins are `tsconfig.json` sets `noEmit: true` so that tsc never writes files. esbuild is the build system; tsc is the verifier. - ## Configuration - [tsconfig.json](../../tsconfig.json) — type checker config @@ -72,4 +71,3 @@ var attributes = require('./attributes').default; ``` This shows up when converting `attributes.js` → `attributes.ts`. See [CONVERTING_ATTRIBUTES.md](CONVERTING_ATTRIBUTES.md) step 4. - From 085069ca98d7a64ab850ac41a0596094d4fcb131 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Fri, 5 Jun 2026 09:08:29 -0600 Subject: [PATCH 090/241] Remove dead options from tsconfig --- tsconfig.json | 4 ---- 1 file changed, 4 deletions(-) diff --git a/tsconfig.json b/tsconfig.json index ac6e0112966..e3746f8f198 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -20,10 +20,6 @@ }, // Emit - "declaration": false, - "declarationMap": false, - "sourceMap": true, - "outDir": "./dist", "noEmit": true, "strict": true, From d8028ee52a80e565c474d43aa3f3e28522a0fec6 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Fri, 5 Jun 2026 09:13:35 -0600 Subject: [PATCH 091/241] Update JSDoc descriptions --- src/lib/clean_number.ts | 4 +++- src/lib/mod.ts | 14 ++++++++++---- src/lib/regex.ts | 8 ++++---- src/lib/sort_object_keys.ts | 5 +++++ 4 files changed, 22 insertions(+), 9 deletions(-) diff --git a/src/lib/clean_number.ts b/src/lib/clean_number.ts index 55ca8d8287b..7a09394bfa9 100644 --- a/src/lib/clean_number.ts +++ b/src/lib/clean_number.ts @@ -7,8 +7,10 @@ import { BADNUM } from '../constants/numerical'; const JUNK = /^['"%,$#\s']+|[, ]|['"%,$#\s']+$/g; /** - * cleanNumber: remove common leading and trailing cruft + * Remove common leading and trailing cruft from a value and coerce it to a number. * Always returns either a number or BADNUM. + * + * @param v - value to clean; strings have leading/trailing junk characters stripped before numeric coercion */ function cleanNumber(v: any): number | undefined { if (typeof v === 'string') v = v.replace(JUNK, ''); diff --git a/src/lib/mod.ts b/src/lib/mod.ts index 422ce6dfdf0..3da79bd27d9 100644 --- a/src/lib/mod.ts +++ b/src/lib/mod.ts @@ -1,8 +1,11 @@ 'use strict'; /** - * sanitized modulus function that always returns in the range [0, d) - * rather than (-d, 0] if v is negative + * Sanitized modulus function that always returns in the range [0, d) + * rather than (-d, 0] if v is negative. + * + * @param v - dividend + * @param d - divisor (the modulus); assumed positive */ export function mod(v: number, d: number) { const out = v % d; @@ -10,8 +13,11 @@ export function mod(v: number, d: number) { } /** - * sanitized modulus function that always returns in the range [-d/2, d/2] - * rather than (-d, 0] if v is negative + * Sanitized modulus function that always returns in the range [-d/2, d/2] + * rather than (-d, 0] if v is negative. + * + * @param v - dividend + * @param d - divisor (the modulus); assumed positive */ export function modHalf(v: number, d: number) { return Math.abs(v) > d / 2 ? v - Math.round(v / d) * d : v; diff --git a/src/lib/regex.ts b/src/lib/regex.ts index f66e0205dce..9dc24007b44 100644 --- a/src/lib/regex.ts +++ b/src/lib/regex.ts @@ -5,12 +5,12 @@ const NUMBER_REGEX = '([2-9]|[1-9][0-9]+)?'; /** * make a regex for matching counter ids/names ie xaxis, xaxis2, xaxis10... * - * @param head: the head of the pattern, eg 'x' matches 'x', 'x2', 'x10' etc. + * @param head - the head of the pattern, eg 'x' matches 'x', 'x2', 'x10' etc. * 'xy' is a special case for cartesian subplots: it matches 'x2y3' etc - * @param tail: a fixed piece after the id + * @param tail - a fixed piece after the id * eg counterRegex('scene', '.annotations') for scene2.annotations etc. - * @param openEnded: if true, the string may continue past the match. - * @param matchBeginning: if false, the string may start before the match. + * @param openEnded - if true, the string may continue past the match. + * @param matchBeginning - if false, the string may start before the match. */ export function counter(head: string, tail: string = '', openEnded: boolean, matchBeginning: boolean) { const fullTail = tail + (openEnded ? '' : '$'); diff --git a/src/lib/sort_object_keys.ts b/src/lib/sort_object_keys.ts index 1be0aba0d3c..9984da1c737 100644 --- a/src/lib/sort_object_keys.ts +++ b/src/lib/sort_object_keys.ts @@ -1,5 +1,10 @@ 'use strict'; +/** + * Return the keys of an object in lexicographic (default `Array.prototype.sort`) order. + * + * @param obj - object whose own enumerable keys will be listed and sorted + */ function sortObjectKeys(obj: Record) { return Object.keys(obj).sort(); } From 044e90071236d9f98f2f9d0f6b10eb22094ace82 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Fri, 5 Jun 2026 09:14:47 -0600 Subject: [PATCH 092/241] Tighten up a few types --- src/types/core/api.d.ts | 58 ++++++++++++++++++----------- src/types/core/data.internal.d.ts | 11 +++--- src/types/core/layout.internal.d.ts | 7 ++-- 3 files changed, 46 insertions(+), 30 deletions(-) diff --git a/src/types/core/api.d.ts b/src/types/core/api.d.ts index be8f98629fd..32f041fe658 100644 --- a/src/types/core/api.d.ts +++ b/src/types/core/api.d.ts @@ -19,8 +19,8 @@ import type { Icon, Template } from './layout'; export type Root = string | HTMLElement; /** - * Figure-shaped object accepted by `toImage`/`downloadImage` when called - * without an attached graph div. + * Figure-shaped object accepted by `newPlot` (in the `data` position) and + * by `toImage`/`downloadImage` when called without an attached graph div. */ export interface PlotlyDataLayoutConfig { /** Trace data array. */ @@ -29,6 +29,8 @@ export interface PlotlyDataLayoutConfig { layout?: Partial; /** Optional config overrides. */ config?: Partial; + /** Optional animation frames. */ + frames?: Frame[]; } /** Either a regular root target or a figure-shaped object. */ @@ -46,34 +48,34 @@ export interface StaticPlots { /** Names of icons bundled with Plotly's mode-bar. */ export type DefaultIcons = - | 'undo' - | 'home' - | 'camera-retro' - | 'zoombox' - | 'pan' - | 'zoom_plus' - | 'zoom_minus' - | 'autoscale' - | 'tooltip_basic' - | 'tooltip_compare' - | 'plotlylogo' - | 'z-axis' | '3d_rotate' + | 'autoscale' + | 'camera-retro' | 'camera' - | 'movie' - | 'question' | 'disk' - | 'drawopenpath' + | 'drawcircle' | 'drawclosedpath' - | 'lasso' - | 'selectbox' | 'drawline' + | 'drawopenpath' | 'drawrect' - | 'drawcircle' | 'eraseshape' - | 'spikeline' + | 'home' + | 'lasso' + | 'movie' + | 'newplotlylogo' + | 'pan' | 'pencil' - | 'newplotlylogo'; + | 'plotlylogo' + | 'question' + | 'selectbox' + | 'spikeline' + | 'tooltip_basic' + | 'tooltip_compare' + | 'undo' + | 'z-axis' + | 'zoom_minus' + | 'zoom_plus' + | 'zoombox'; /** Map of built-in icon name → `Icon` definition. */ export type IconsMap = { [K in DefaultIcons]: Icon }; @@ -194,6 +196,18 @@ export function newPlot( layout?: Partial, config?: Partial ): Promise; +/** + * Create a new plot at `root` from a figure-shaped object containing + * `data`/`layout`/`config`/`frames`. Replaces any existing plot. + * + * @param root - graph div id or element + * @param figure - figure-shaped object + * @returns the graph div once the plot has rendered + */ +export function newPlot( + root: Root, + figure: PlotlyDataLayoutConfig +): Promise; /** Update layout properties on an existing plot. */ export function relayout(root: Root, layout: Partial): Promise; diff --git a/src/types/core/data.internal.d.ts b/src/types/core/data.internal.d.ts index a2717eb9ef3..60d70d751ae 100644 --- a/src/types/core/data.internal.d.ts +++ b/src/types/core/data.internal.d.ts @@ -5,6 +5,7 @@ * properties. For public trace types, see data.d.ts. */ +import type { Datum } from '../lib/common'; import type { Data } from './data'; /** @@ -21,11 +22,11 @@ export interface CalcData { /** Back-reference to the fully-populated trace this calcdata belongs to. */ trace?: FullData; /** Computed x coordinate(s). */ - x?: any; + x?: Datum | Datum[]; /** Computed y coordinate(s). */ - y?: any; + y?: Datum | Datum[]; /** Computed z coordinate(s) (for 3-D traces). */ - z?: any; + z?: Datum | Datum[]; /** Trace-module-specific calc fields. */ [key: string]: any; } @@ -43,13 +44,13 @@ interface FullDataInternals { /** Cached extremes (per axis) for autorange computation. */ _extremes?: Record; /** Snapshot of the trace before transforms were applied. */ - _fullInput?: any; + _fullInput?: Data; /** True when the trace has a transform that affects `calcdata`. */ _hasCalcTransform?: boolean; /** Map from `_expandedIndex` back to original point indices. */ _indexToPoints?: { [key: number]: number[] }; /** Original user-supplied trace object (pre-defaults). */ - _input?: any; + _input?: Data; /** Length of the trace's data arrays (after coercion). */ _length?: number; /** Captured `meta` references from trace and layout for template binding. */ diff --git a/src/types/core/layout.internal.d.ts b/src/types/core/layout.internal.d.ts index 658b7c55bab..f28a4f0d09a 100644 --- a/src/types/core/layout.internal.d.ts +++ b/src/types/core/layout.internal.d.ts @@ -9,6 +9,7 @@ import type { Locale, Selection } from 'd3'; import type { Layout } from '../generated/schema'; import type { Color } from '../lib/common'; +import type { GraphDiv } from './graph-div.internal'; /** * Fully processed layout with all defaults applied (internal use). @@ -22,7 +23,7 @@ export interface FullLayout extends Layout { /** Resolved list of base-plot modules in use (cartesian, polar, …). */ _basePlotModules?: any[]; /** Recomputes inverse-transform caches after a transform change. */ - _calcInverseTransform?: (gd: any) => void; + _calcInverseTransform?: (gd: GraphDiv) => void; /** True once initial autosize has completed at least once. */ _initialAutoSizeIsDone?: boolean; /** Cached inverse CSS transform for hit-testing. */ @@ -242,9 +243,9 @@ export interface FullLayout extends Layout { /** Index of the active shape in `layout.shapes`. */ _activeShapeIndex?: number; /** Callback to deactivate the active selection. */ - _deactivateSelection?: (gd: any) => void; + _deactivateSelection?: (gd: GraphDiv) => void; /** Callback to deactivate the active shape. */ - _deactivateShape?: (gd: any) => void; + _deactivateShape?: (gd: GraphDiv) => void; /** Cached deselect callback. */ _deselect?: any; /** Vertical offset for colorbar title repositioning. */ From 87b6e0e1cab3f4e61ab6cb03a9b15c005ff2a737 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Fri, 5 Jun 2026 09:15:22 -0600 Subject: [PATCH 093/241] Minor refactoring --- src/traces/image/attributes.ts | 7 +++---- tasks/generate_schema_types.mjs | 20 ++++++++++---------- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/src/traces/image/attributes.ts b/src/traces/image/attributes.ts index b7f5fea7f51..80779d449e1 100644 --- a/src/traces/image/attributes.ts +++ b/src/traces/image/attributes.ts @@ -1,9 +1,8 @@ -import type { AttributeMap } from '../../types/lib/attributes'; - +import { extendFlat } from '../../lib/extend'; import baseAttrs from '../../plots/attributes'; -import { zorder } from '../scatter/attributes'; import { hovertemplateAttrs, templatefallbackAttrs } from '../../plots/template_attributes'; -import { extendFlat } from '../../lib/extend'; +import type { AttributeMap } from '../../types/lib/attributes'; +import { zorder } from '../scatter/attributes'; import { colormodel } from './constants'; const cm = ['rgb', 'rgba', 'rgba256', 'hsl', 'hsla'] as const; diff --git a/tasks/generate_schema_types.mjs b/tasks/generate_schema_types.mjs index 1ed6e858c28..f07aca68665 100644 --- a/tasks/generate_schema_types.mjs +++ b/tasks/generate_schema_types.mjs @@ -30,7 +30,7 @@ let META_KEYS = new Set(); // emitted as named type aliases in the output. Each anchor specifies a // PascalCase type name and a `match(key, path, values)` predicate. If multiple // enumerated attributes match the predicate, the one with the largest set of values -// is chosen. +// is chosen. // --------------------------------------------------------------------------- const COMMON_TYPE_ANCHORS = [ @@ -70,14 +70,7 @@ const ATTR_NAME_OVERRIDES = new Map([['marker.symbol', 'MarkerSymbol']]); * Inside the namespace, sibling references are bare (`line?: Line`); outside, * references are prefixed (`marker?: _internal.Marker`) via `refName()`. */ -const INTERNAL_INTERFACES = new Set([ - 'AutoRangeOptions', - 'ErrorY', - 'Lighting', - 'Line', - 'Marker', - 'Stream' -]); +const INTERNAL_INTERFACES = new Set(['AutoRangeOptions', 'ErrorY', 'Lighting', 'Line', 'Marker', 'Stream']); function refName(name, inInternalNamespace) { if (inInternalNamespace) return name; @@ -807,7 +800,14 @@ function attrsToProperties(attrs, indent, pathPrefix, sharedTypes, fieldOverride lines.push(`${indent}${key}?: ${refName(sharedName, inInternalNamespace)}[];`); continue; } - const nested = attrsToProperties(itemChild, indent + ' ', attrPath, sharedTypes, undefined, inInternalNamespace); + const nested = attrsToProperties( + itemChild, + indent + ' ', + attrPath, + sharedTypes, + undefined, + inInternalNamespace + ); if (nested.length > 0) { lines.push(...formatJSDoc(val, indent)); lines.push(`${indent}${key}?: Array<{`); From b4dea805ce3713dce63816a75854875e01a04804 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Fri, 5 Jun 2026 09:35:49 -0600 Subject: [PATCH 094/241] Loosen data_array type and update schema types --- src/types/README.md | 8 + src/types/generated/schema.d.ts | 668 ++++++++++++++++---------------- tasks/generate_schema_types.mjs | 4 +- 3 files changed, 345 insertions(+), 335 deletions(-) diff --git a/src/types/README.md b/src/types/README.md index 1adbc559135..caa294ee960 100644 --- a/src/types/README.md +++ b/src/types/README.md @@ -28,6 +28,14 @@ This directory documents the TypeScript conversion in progress. hand-written union that can drift. Consumers need `.default` appended per the established [conversion pattern](CONVERTING_ATTRIBUTES.md#L72-L86). +- **Add dimensionality to `data_array` in the JS attribute sources.** The + schema's `data_array` valType carries no shape info, but several attributes + are genuinely 2D (heatmap/contour/contourcarpet `z`, surface `z` and + `surfacecolor`, 2D `text`/`customdata`/`hovertext` on those traces) or 3D + (`image.z`). The generator currently emits the loose union + `Datum[] | Datum[][] | TypedArray` for *every* `data_array` so 2D/3D usage + typechecks, but the trade-off is that 1D-only fields also accept 2D arrays. + The published consumer surface lives at [`lib/index.d.ts`](../../lib/index.d.ts). This `src/types/` directory is the authoring location — internal types live here, public types are re-exported through `lib/index.d.ts` to consumers. diff --git a/src/types/generated/schema.d.ts b/src/types/generated/schema.d.ts index 6c3c95623cd..83c63b87c68 100644 --- a/src/types/generated/schema.d.ts +++ b/src/types/generated/schema.d.ts @@ -373,9 +373,9 @@ export interface ColorBar { /** Sets a tick label suffix. */ ticksuffix?: string; /** Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`. */ - ticktext?: Datum[] | TypedArray; + ticktext?: Datum[] | Datum[][] | TypedArray; /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ - tickvals?: Datum[] | TypedArray; + tickvals?: Datum[] | Datum[][] | TypedArray; /** * Sets the tick width (in px). * @default 1 @@ -476,9 +476,9 @@ export namespace _internal { export interface ErrorY { /** Sets the data corresponding the length of each error bar. Values are plotted relative to the underlying data. */ - array?: Datum[] | TypedArray; + array?: Datum[] | Datum[][] | TypedArray; /** Sets the data corresponding the length of each error bar in the bottom (left) direction for vertical (horizontal) bars Values are plotted relative to the underlying data. */ - arrayminus?: Datum[] | TypedArray; + arrayminus?: Datum[] | Datum[][] | TypedArray; /** Sets the stroke color of the error bars. */ color?: Color; /** Determines whether or not the error bars have the same length in both direction (top/bottom for vertical bars, left/right for horizontal bars. */ @@ -758,7 +758,7 @@ export interface BarData { */ constraintext?: 'inside' | 'outside' | 'both' | 'none'; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; /** * Sets the x coordinate step. See `x0` for more info. * @default 1 @@ -771,9 +771,9 @@ export interface BarData { dy?: number; error_x?: { /** Sets the data corresponding the length of each error bar. Values are plotted relative to the underlying data. */ - array?: Datum[] | TypedArray; + array?: Datum[] | Datum[][] | TypedArray; /** Sets the data corresponding the length of each error bar in the bottom (left) direction for vertical (horizontal) bars Values are plotted relative to the underlying data. */ - arrayminus?: Datum[] | TypedArray; + arrayminus?: Datum[] | Datum[][] | TypedArray; /** Sets the stroke color of the error bars. */ color?: Color; copy_ystyle?: boolean; @@ -834,7 +834,7 @@ export interface BarData { /** Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ - ids?: Datum[] | TypedArray; + ids?: Datum[] | Datum[][] | TypedArray; /** * Determines if texts are kept at center or start/end points in `textposition` *inside* mode. * @default 'end' @@ -1002,7 +1002,7 @@ export interface BarData { */ width?: number | number[]; /** Sets the x coordinates. */ - x?: Datum[] | TypedArray; + x?: Datum[] | Datum[][] | TypedArray; /** * Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step. * @default 0 @@ -1033,7 +1033,7 @@ export interface BarData { */ xperiodalignment?: 'start' | 'middle' | 'end'; /** Sets the y coordinates. */ - y?: Datum[] | TypedArray; + y?: Datum[] | Datum[][] | TypedArray; /** * Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step. * @default 0 @@ -1074,7 +1074,7 @@ export interface BarpolarData { /** Sets where the bar base is drawn (in radial axis units). In *stack* barmode, traces that set *base* will be excluded and drawn in *overlay* mode instead. */ base?: any; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; /** * Sets the r coordinate step. * @default 1 @@ -1098,7 +1098,7 @@ export interface BarpolarData { /** Same as `text`. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ - ids?: Datum[] | TypedArray; + ids?: Datum[] | Datum[][] | TypedArray; /** * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. * @default 'legend' @@ -1183,7 +1183,7 @@ export interface BarpolarData { */ opacity?: number; /** Sets the radial coordinates */ - r?: Datum[] | TypedArray; + r?: Datum[] | Datum[][] | TypedArray; /** * Alternate to `r`. Builds a linear space of r coordinates. Use with `dr` where `r0` is the starting coordinate and `dr` the step. * @default 0 @@ -1217,7 +1217,7 @@ export interface BarpolarData { /** Sets hover text elements associated with each bar. If a single string, the same string appears over all bars. If an array of string, the items are mapped in order to the this trace's coordinates. */ text?: string | string[]; /** Sets the angular coordinates */ - theta?: Datum[] | TypedArray; + theta?: Datum[] | Datum[][] | TypedArray; /** * Alternate to `theta`. Builds a linear space of theta coordinates. Use with `dtheta` where `theta0` is the starting coordinate and `dtheta` the step. * @default 0 @@ -1265,7 +1265,7 @@ export interface BoxData { /** If *outliers*, only the sample points lying outside the whiskers are shown If *suspectedoutliers*, the outlier points are shown and points either less than 4*Q1-3*Q3 or greater than 4*Q3-3*Q1 are highlighted (see `outliercolor`) If *all*, all sample points are shown If *false*, only the box(es) are shown with no sample points Defaults to *suspectedoutliers* when `marker.outliercolor` or `marker.line.outliercolor` is set. Defaults to *all* under the q1/median/q3 signature. Otherwise defaults to *outliers*. */ boxpoints?: 'all' | 'outliers' | 'suspectedoutliers' | false; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; /** Sets the x coordinate step for multi-box traces set using q1/median/q3. */ dx?: number; /** Sets the y coordinate step for multi-box traces set using q1/median/q3. */ @@ -1293,7 +1293,7 @@ export interface BoxData { /** Same as `text`. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ - ids?: Datum[] | TypedArray; + ids?: Datum[] | Datum[][] | TypedArray; /** * Sets the amount of jitter in the sample points drawn. If *0*, the sample points align along the distribution axis. If *1*, the sample points are drawn in a random jitter of width equal to the width of the box(es). * Range: [0, 1] @@ -1319,7 +1319,7 @@ export interface BoxData { legendwidth?: number; line?: _internal.ErrorY; /** Sets the lower fence values. There should be as many items as the number of boxes desired. This attribute has effect only under the q1/median/q3 signature. If `lowerfence` is not provided but a sample (in `y` or `x`) is set, we compute the lower as the last sample point below 1.5 times the IQR. */ - lowerfence?: Datum[] | TypedArray; + lowerfence?: Datum[] | Datum[][] | TypedArray; marker?: { /** * Sets the marker angle in respect to `angleref`. @@ -1373,9 +1373,9 @@ export interface BoxData { symbol?: MarkerSymbol; }; /** Sets the mean values. There should be as many items as the number of boxes desired. This attribute has effect only under the q1/median/q3 signature. If `mean` is not provided but a sample (in `y` or `x`) is set, we compute the mean for each box using the sample values. */ - mean?: Datum[] | TypedArray; + mean?: Datum[] | Datum[][] | TypedArray; /** Sets the median values. There should be as many items as the number of boxes desired. */ - median?: Datum[] | TypedArray; + median?: Datum[] | Datum[][] | TypedArray; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ meta?: any; /** Sets the trace name. The trace name appears as the legend item and on hover. For box traces, the name will also be used for the position coordinate, if `x` and `x0` (`y` and `y0` if horizontal) are missing and the position axis is categorical */ @@ -1383,7 +1383,7 @@ export interface BoxData { /** Determines whether or not notches are drawn. Notches displays a confidence interval around the median. We compute the confidence interval as median +/- 1.57 * IQR / sqrt(N), where IQR is the interquartile range and N is the sample size. If two boxes' notches do not overlap there is 95% confidence their medians differ. See https://sites.google.com/site/davidsstatistics/home/notched-box-plots for more info. Defaults to *false* unless `notchwidth` or `notchspan` is set. */ notched?: boolean; /** Sets the notch span from the boxes' `median` values. There should be as many items as the number of boxes desired. This attribute has effect only under the q1/median/q3 signature. If `notchspan` is not provided but a sample (in `y` or `x`) is set, we compute it as 1.57 * IQR / sqrt(N), where N is the sample size. */ - notchspan?: Datum[] | TypedArray; + notchspan?: Datum[] | Datum[][] | TypedArray; /** * Sets the width of the notches relative to the box width. For example, with 0, the notches are as wide as the box(es). * @default 0.25 @@ -1406,16 +1406,16 @@ export interface BoxData { */ pointpos?: number; /** Sets the Quartile 1 values. There should be as many items as the number of boxes desired. */ - q1?: Datum[] | TypedArray; + q1?: Datum[] | Datum[][] | TypedArray; /** Sets the Quartile 3 values. There should be as many items as the number of boxes desired. */ - q3?: Datum[] | TypedArray; + q3?: Datum[] | Datum[][] | TypedArray; /** * Sets the method used to compute the sample's Q1 and Q3 quartiles. The *linear* method uses the 25th percentile for Q1 and 75th percentile for Q3 as computed using method #10 (listed on http://jse.amstat.org/v14n3/langford.html). The *exclusive* method uses the median to divide the ordered dataset into two halves if the sample is odd, it does not include the median in either half - Q1 is then the median of the lower half and Q3 the median of the upper half. The *inclusive* method also uses the median to divide the ordered dataset into two halves but if the sample is odd, it includes the median in both halves - Q1 is then the median of the lower half and Q3 the median of the upper half. * @default 'linear' */ quartilemethod?: 'linear' | 'exclusive' | 'inclusive'; /** Sets the standard deviation values. There should be as many items as the number of boxes desired. This attribute has effect only under the q1/median/q3 signature. If `sd` is not provided but a sample (in `y` or `x`) is set, we compute the standard deviation for each box using the sample values. */ - sd?: Datum[] | TypedArray; + sd?: Datum[] | Datum[][] | TypedArray; /** * Scales the box size when sizemode=sd Allowing boxes to be drawn across any stddev range For example 1-stddev, 3-stddev, 5-stddev * @default 1 @@ -1477,7 +1477,7 @@ export interface BoxData { }; }; /** Sets the upper fence values. There should be as many items as the number of boxes desired. This attribute has effect only under the q1/median/q3 signature. If `upperfence` is not provided but a sample (in `y` or `x`) is set, we compute the upper as the last sample point above 1.5 times the IQR. */ - upperfence?: Datum[] | TypedArray; + upperfence?: Datum[] | Datum[][] | TypedArray; /** * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). * @default true @@ -1496,7 +1496,7 @@ export interface BoxData { */ width?: number; /** Sets the x sample data or coordinates. See overview for more info. */ - x?: Datum[] | TypedArray; + x?: Datum[] | Datum[][] | TypedArray; /** Sets the x coordinate for single-box traces or the starting coordinate for multi-box traces set using q1/median/q3. See overview for more info. */ x0?: any; /** @@ -1524,7 +1524,7 @@ export interface BoxData { */ xperiodalignment?: 'start' | 'middle' | 'end'; /** Sets the y sample data or coordinates. See overview for more info. */ - y?: Datum[] | TypedArray; + y?: Datum[] | Datum[][] | TypedArray; /** Sets the y coordinate for single-box traces or the starting coordinate for multi-box traces set using q1/median/q3. See overview for more info. */ y0?: any; /** @@ -1560,16 +1560,16 @@ export interface BoxData { export interface CandlestickData { /** Sets the close values. */ - close?: Datum[] | TypedArray; + close?: Datum[] | Datum[][] | TypedArray; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; decreasing?: { /** Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. */ fillcolor?: Color; line?: _internal.ErrorY; }; /** Sets the high values. */ - high?: Datum[] | TypedArray; + high?: Datum[] | Datum[][] | TypedArray; /** * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. * @default 'all' @@ -1614,7 +1614,7 @@ export interface CandlestickData { /** Same as `text`. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ - ids?: Datum[] | TypedArray; + ids?: Datum[] | Datum[][] | TypedArray; increasing?: { /** Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. */ fillcolor?: Color; @@ -1647,7 +1647,7 @@ export interface CandlestickData { width?: number; }; /** Sets the low values. */ - low?: Datum[] | TypedArray; + low?: Datum[] | Datum[][] | TypedArray; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ meta?: any; /** Sets the trace name. The trace name appears as the legend item and on hover. */ @@ -1659,7 +1659,7 @@ export interface CandlestickData { */ opacity?: number; /** Sets the open values. */ - open?: Datum[] | TypedArray; + open?: Datum[] | Datum[][] | TypedArray; /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ selectedpoints?: any; /** @@ -1687,7 +1687,7 @@ export interface CandlestickData { */ whiskerwidth?: number; /** Sets the x coordinates. If absent, linear coordinate will be generated. */ - x?: Datum[] | TypedArray; + x?: Datum[] | Datum[][] | TypedArray; /** * Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. * @default 'x' @@ -1728,7 +1728,7 @@ export interface CandlestickData { export interface CarpetData { /** An array containing values of the first parameter value */ - a?: Datum[] | TypedArray; + a?: Datum[] | Datum[][] | TypedArray; /** * Alternate to `a`. Builds a linear space of a coordinates. Use with `da` where `a0` is the starting coordinate and `da` the step. * @default 0 @@ -1758,7 +1758,7 @@ export interface CarpetData { */ autotypenumbers?: 'convert types' | 'strict'; /** Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`. */ - categoryarray?: Datum[] | TypedArray; + categoryarray?: Datum[] | Datum[][] | TypedArray; /** * Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. * @default 'trace' @@ -1948,9 +1948,9 @@ export interface CarpetData { /** Sets a tick label suffix. */ ticksuffix?: string; /** Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`. */ - ticktext?: Datum[] | TypedArray; + ticktext?: Datum[] | Datum[][] | TypedArray; /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ - tickvals?: Datum[] | TypedArray; + tickvals?: Datum[] | Datum[][] | TypedArray; title?: { /** Sets this axis' title font. */ font?: Font; @@ -1969,7 +1969,7 @@ export interface CarpetData { type?: '-' | 'linear' | 'date' | 'category'; }; /** A two dimensional array of y coordinates at each carpet point. */ - b?: Datum[] | TypedArray; + b?: Datum[] | Datum[][] | TypedArray; /** * Alternate to `b`. Builds a linear space of a coordinates. Use with `db` where `b0` is the starting coordinate and `db` the step. * @default 0 @@ -1999,7 +1999,7 @@ export interface CarpetData { */ autotypenumbers?: 'convert types' | 'strict'; /** Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`. */ - categoryarray?: Datum[] | TypedArray; + categoryarray?: Datum[] | Datum[][] | TypedArray; /** * Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. * @default 'trace' @@ -2189,9 +2189,9 @@ export interface CarpetData { /** Sets a tick label suffix. */ ticksuffix?: string; /** Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`. */ - ticktext?: Datum[] | TypedArray; + ticktext?: Datum[] | Datum[][] | TypedArray; /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ - tickvals?: Datum[] | TypedArray; + tickvals?: Datum[] | Datum[][] | TypedArray; title?: { /** Sets this axis' title font. */ font?: Font; @@ -2222,7 +2222,7 @@ export interface CarpetData { */ color?: Color; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; /** * Sets the a coordinate step. See `a0` for more info. * @default 1 @@ -2236,7 +2236,7 @@ export interface CarpetData { /** The default font used for axis & tick labels on this carpet */ font?: Font; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ - ids?: Datum[] | TypedArray; + ids?: Datum[] | Datum[][] | TypedArray; /** * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. * @default 'legend' @@ -2275,14 +2275,14 @@ export interface CarpetData { */ visible?: true | false | 'legendonly'; /** A two dimensional array of x coordinates at each carpet point. If omitted, the plot is a cheater plot and the xaxis is hidden by default. */ - x?: Datum[] | TypedArray; + x?: Datum[] | Datum[][] | TypedArray; /** * Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. * @default 'x' */ xaxis?: string; /** A two dimensional array of y coordinates at each carpet point. */ - y?: Datum[] | TypedArray; + y?: Datum[] | Datum[][] | TypedArray; /** * Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. * @default 'y' @@ -2310,7 +2310,7 @@ export interface ChoroplethData { */ colorscale?: ColorScale; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; /** * Sets the key in GeoJSON features which is used as id to match the items included in the `locations` array. Only has an effect when `geojson` is set. Support nested property, for example *properties.name*. * @default 'id' @@ -2339,7 +2339,7 @@ export interface ChoroplethData { /** Same as `text`. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ - ids?: Datum[] | TypedArray; + ids?: Datum[] | Datum[][] | TypedArray; /** * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. * @default 'legend' @@ -2364,7 +2364,7 @@ export interface ChoroplethData { */ locationmode?: 'ISO-3' | 'USA-states' | 'country names' | 'geojson-id'; /** Sets the coordinates via location IDs or names. See `locationmode` for more info. */ - locations?: Datum[] | TypedArray; + locations?: Datum[] | Datum[][] | TypedArray; marker?: { line?: _internal.Line; /** @@ -2427,7 +2427,7 @@ export interface ChoroplethData { */ visible?: true | false | 'legendonly'; /** Sets the color values. */ - z?: Datum[] | TypedArray; + z?: Datum[] | Datum[][] | TypedArray; /** * Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. * @default true @@ -2464,7 +2464,7 @@ export interface ChoroplethmapData { */ colorscale?: ColorScale; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; /** * Sets the key in GeoJSON features which is used as id to match the items included in the `locations` array. Support nested property, for example *properties.name*. * @default 'id' @@ -2488,7 +2488,7 @@ export interface ChoroplethmapData { /** Same as `text`. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ - ids?: Datum[] | TypedArray; + ids?: Datum[] | Datum[][] | TypedArray; /** * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. * @default 'legend' @@ -2508,7 +2508,7 @@ export interface ChoroplethmapData { */ legendwidth?: number; /** Sets which features found in *geojson* to plot using their feature `id` field. */ - locations?: Datum[] | TypedArray; + locations?: Datum[] | Datum[][] | TypedArray; marker?: { line?: _internal.Line; /** @@ -2576,7 +2576,7 @@ export interface ChoroplethmapData { */ visible?: true | false | 'legendonly'; /** Sets the color values. */ - z?: Datum[] | TypedArray; + z?: Datum[] | Datum[][] | TypedArray; /** * Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. * @default true @@ -2613,7 +2613,7 @@ export interface ChoroplethmapboxData { */ colorscale?: ColorScale; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; /** * Sets the key in GeoJSON features which is used as id to match the items included in the `locations` array. Support nested property, for example *properties.name*. * @default 'id' @@ -2637,7 +2637,7 @@ export interface ChoroplethmapboxData { /** Same as `text`. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ - ids?: Datum[] | TypedArray; + ids?: Datum[] | Datum[][] | TypedArray; /** * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. * @default 'legend' @@ -2657,7 +2657,7 @@ export interface ChoroplethmapboxData { */ legendwidth?: number; /** Sets which features found in *geojson* to plot using their feature `id` field. */ - locations?: Datum[] | TypedArray; + locations?: Datum[] | Datum[][] | TypedArray; marker?: { line?: _internal.Line; /** @@ -2725,7 +2725,7 @@ export interface ChoroplethmapboxData { */ visible?: true | false | 'legendonly'; /** Sets the color values. */ - z?: Datum[] | TypedArray; + z?: Datum[] | Datum[][] | TypedArray; /** * Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. * @default true @@ -2782,7 +2782,7 @@ export interface ConeData { */ colorscale?: ColorScale; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; /** * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. * @default 'x+y+z+norm+text+name' @@ -2799,7 +2799,7 @@ export interface ConeData { /** Same as `text`. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ - ids?: Datum[] | TypedArray; + ids?: Datum[] | Datum[][] | TypedArray; /** * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. * @default 'legend' @@ -2884,7 +2884,7 @@ export interface ConeData { text?: string | string[]; type?: 'cone'; /** Sets the x components of the vector field. */ - u?: Datum[] | TypedArray; + u?: Datum[] | Datum[][] | TypedArray; /** Sets the hover text formatting rule for `u` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ uhoverformat?: string; /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ @@ -2892,7 +2892,7 @@ export interface ConeData { /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ uirevision?: any; /** Sets the y components of the vector field. */ - v?: Datum[] | TypedArray; + v?: Datum[] | Datum[][] | TypedArray; /** Sets the hover text formatting rule for `v` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ vhoverformat?: string; /** @@ -2901,19 +2901,19 @@ export interface ConeData { */ visible?: true | false | 'legendonly'; /** Sets the z components of the vector field. */ - w?: Datum[] | TypedArray; + w?: Datum[] | Datum[][] | TypedArray; /** Sets the hover text formatting rule for `w` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ whoverformat?: string; /** Sets the x coordinates of the vector field and of the displayed cones. */ - x?: Datum[] | TypedArray; + x?: Datum[] | Datum[][] | TypedArray; /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; /** Sets the y coordinates of the vector field and of the displayed cones. */ - y?: Datum[] | TypedArray; + y?: Datum[] | Datum[][] | TypedArray; /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ yhoverformat?: string; /** Sets the z coordinates of the vector field and of the displayed cones. */ - z?: Datum[] | TypedArray; + z?: Datum[] | Datum[][] | TypedArray; /** Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`. */ zhoverformat?: string; } @@ -2995,7 +2995,7 @@ export interface ContourData { value?: any; }; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; /** * Sets the x coordinate step. See `x0` for more info. * @default 1 @@ -3029,9 +3029,9 @@ export interface ContourData { */ hovertemplatefallback?: any; /** Same as `text`. */ - hovertext?: Datum[] | TypedArray; + hovertext?: Datum[] | Datum[][] | TypedArray; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ - ids?: Datum[] | TypedArray; + ids?: Datum[] | Datum[][] | TypedArray; /** * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. * @default 'legend' @@ -3103,7 +3103,7 @@ export interface ContourData { showscale?: boolean; stream?: _internal.Stream; /** Sets the text elements associated with each z value. */ - text?: Datum[] | TypedArray; + text?: Datum[] | Datum[][] | TypedArray; /** For this trace it only has an effect if `coloring` is set to *heatmap*. Sets the text font. */ textfont?: Font; /** For this trace it only has an effect if `coloring` is set to *heatmap*. Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `x`, `y`, `z` and `text`. */ @@ -3132,7 +3132,7 @@ export interface ContourData { * Sets the x coordinates. * Setting this also sets: xtype = "array" */ - x?: Datum[] | TypedArray; + x?: Datum[] | Datum[][] | TypedArray; /** * Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step. * @default 0 @@ -3171,7 +3171,7 @@ export interface ContourData { * Sets the y coordinates. * Setting this also sets: ytype = "array" */ - y?: Datum[] | TypedArray; + y?: Datum[] | Datum[][] | TypedArray; /** * Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step. * @default 0 @@ -3207,7 +3207,7 @@ export interface ContourData { /** If *array*, the heatmap's y coordinates are given by *y* (the default behavior when `y` is provided) If *scaled*, the heatmap's y coordinates are given by *y0* and *dy* (the default behavior when `y` is not provided) */ ytype?: 'array' | 'scaled'; /** Sets the z data. */ - z?: Datum[] | TypedArray; + z?: Datum[] | Datum[][] | TypedArray; /** * Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. * @default true @@ -3239,7 +3239,7 @@ export interface ContourcarpetData { * Sets the x coordinates. * Setting this also sets: xtype = "array" */ - a?: Datum[] | TypedArray; + a?: Datum[] | Datum[][] | TypedArray; /** * Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step. * @default 0 @@ -3262,7 +3262,7 @@ export interface ContourcarpetData { * Sets the y coordinates. * Setting this also sets: ytype = "array" */ - b?: Datum[] | TypedArray; + b?: Datum[] | Datum[][] | TypedArray; /** * Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step. * @default 0 @@ -3337,7 +3337,7 @@ export interface ContourcarpetData { value?: any; }; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; /** * Sets the x coordinate step. See `x0` for more info. * @default 1 @@ -3353,9 +3353,9 @@ export interface ContourcarpetData { /** Sets the fill color if `contours.type` is *constraint*. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. */ fillcolor?: Color; /** Same as `text`. */ - hovertext?: Datum[] | TypedArray; + hovertext?: Datum[] | Datum[][] | TypedArray; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ - ids?: Datum[] | TypedArray; + ids?: Datum[] | Datum[][] | TypedArray; /** * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. * @default 'legend' @@ -3427,7 +3427,7 @@ export interface ContourcarpetData { showscale?: boolean; stream?: _internal.Stream; /** Sets the text elements associated with each z value. */ - text?: Datum[] | TypedArray; + text?: Datum[] | Datum[][] | TypedArray; /** * Transposes the z data. * @default false @@ -3454,7 +3454,7 @@ export interface ContourcarpetData { */ yaxis?: string; /** Sets the z data. */ - z?: Datum[] | TypedArray; + z?: Datum[] | Datum[][] | TypedArray; /** * Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. * @default true @@ -3496,7 +3496,7 @@ export interface DensitymapData { */ colorscale?: ColorScale; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; /** * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. * @default 'all' @@ -3513,9 +3513,9 @@ export interface DensitymapData { /** Sets hover text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ - ids?: Datum[] | TypedArray; + ids?: Datum[] | Datum[][] | TypedArray; /** Sets the latitude coordinates (in degrees North). */ - lat?: Datum[] | TypedArray; + lat?: Datum[] | Datum[][] | TypedArray; /** * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. * @default 'legend' @@ -3535,7 +3535,7 @@ export interface DensitymapData { */ legendwidth?: number; /** Sets the longitude coordinates (in degrees East). */ - lon?: Datum[] | TypedArray; + lon?: Datum[] | Datum[][] | TypedArray; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ meta?: any; /** Sets the trace name. The trace name appears as the legend item and on hover. */ @@ -3586,7 +3586,7 @@ export interface DensitymapData { */ visible?: true | false | 'legendonly'; /** Sets the points' weight. For example, a value of 10 would be equivalent to having 10 points of weight 1 in the same spot */ - z?: Datum[] | TypedArray; + z?: Datum[] | Datum[][] | TypedArray; /** * Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. * @default true @@ -3623,7 +3623,7 @@ export interface DensitymapboxData { */ colorscale?: ColorScale; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; /** * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. * @default 'all' @@ -3640,9 +3640,9 @@ export interface DensitymapboxData { /** Sets hover text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ - ids?: Datum[] | TypedArray; + ids?: Datum[] | Datum[][] | TypedArray; /** Sets the latitude coordinates (in degrees North). */ - lat?: Datum[] | TypedArray; + lat?: Datum[] | Datum[][] | TypedArray; /** * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. * @default 'legend' @@ -3662,7 +3662,7 @@ export interface DensitymapboxData { */ legendwidth?: number; /** Sets the longitude coordinates (in degrees East). */ - lon?: Datum[] | TypedArray; + lon?: Datum[] | Datum[][] | TypedArray; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ meta?: any; /** Sets the trace name. The trace name appears as the legend item and on hover. */ @@ -3713,7 +3713,7 @@ export interface DensitymapboxData { */ visible?: true | false | 'legendonly'; /** Sets the points' weight. For example, a value of 10 would be equivalent to having 10 points of weight 1 in the same spot */ - z?: Datum[] | TypedArray; + z?: Datum[] | Datum[][] | TypedArray; /** * Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. * @default true @@ -3774,7 +3774,7 @@ export interface FunnelData { */ constraintext?: 'inside' | 'outside' | 'both' | 'none'; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; /** * Sets the x coordinate step. See `x0` for more info. * @default 1 @@ -3801,7 +3801,7 @@ export interface FunnelData { /** Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ - ids?: Datum[] | TypedArray; + ids?: Datum[] | Datum[][] | TypedArray; /** * Determines if texts are kept at center or start/end points in `textposition` *inside* mode. * @default 'middle' @@ -3943,7 +3943,7 @@ export interface FunnelData { */ width?: number; /** Sets the x coordinates. */ - x?: Datum[] | TypedArray; + x?: Datum[] | Datum[][] | TypedArray; /** * Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step. * @default 0 @@ -3969,7 +3969,7 @@ export interface FunnelData { */ xperiodalignment?: 'start' | 'middle' | 'end'; /** Sets the y coordinates. */ - y?: Datum[] | TypedArray; + y?: Datum[] | Datum[][] | TypedArray; /** * Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step. * @default 0 @@ -4015,7 +4015,7 @@ export interface FunnelareaData { */ baseratio?: number; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; /** * Sets the label step. See `label0` for more info. * @default 1 @@ -4038,7 +4038,7 @@ export interface FunnelareaData { /** Sets hover text elements associated with each sector. If a single string, the same string appears for all data points. If an array of string, the items are mapped in order of this trace's sectors. To be seen, trace `hoverinfo` must contain a *text* flag. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ - ids?: Datum[] | TypedArray; + ids?: Datum[] | Datum[][] | TypedArray; /** Sets the font used for `textinfo` lying inside the sector. */ insidetextfont?: FontArray; /** @@ -4047,7 +4047,7 @@ export interface FunnelareaData { */ label0?: number; /** Sets the sector labels. If `labels` entries are duplicated, we sum associated `values` or simply count occurrences if `values` is not provided. For other array attributes (including color) we use the first non-empty entry among all occurrences of the label. */ - labels?: Datum[] | TypedArray; + labels?: Datum[] | Datum[][] | TypedArray; /** * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. * @default 'legend' @@ -4068,7 +4068,7 @@ export interface FunnelareaData { legendwidth?: number; marker?: { /** Sets the color of each sector. If not specified, the default trace color set is used to pick the sector colors. */ - colors?: Datum[] | TypedArray; + colors?: Datum[] | Datum[][] | TypedArray; line?: _internal.Line; /** Sets the pattern within the marker. */ pattern?: Pattern; @@ -4092,7 +4092,7 @@ export interface FunnelareaData { showlegend?: boolean; stream?: _internal.Stream; /** Sets text elements associated with each sector. If trace `textinfo` contains a *text* flag, these elements will be seen on the chart. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ - text?: Datum[] | TypedArray; + text?: Datum[] | Datum[][] | TypedArray; /** Sets the font used for `textinfo`. */ textfont?: FontArray; /** Determines which trace information appear on the graph. */ @@ -4126,7 +4126,7 @@ export interface FunnelareaData { /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ uirevision?: any; /** Sets the values of the sectors. If omitted, we count occurrences of each label. */ - values?: Datum[] | TypedArray; + values?: Datum[] | Datum[][] | TypedArray; /** * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). * @default true @@ -4151,7 +4151,7 @@ export interface HeatmapData { /** Determines whether or not gaps (i.e. {nan} or missing values) in the `z` data are filled in. It is defaulted to true if `z` is a one dimensional array and `zsmooth` is not false; otherwise it is defaulted to false. */ connectgaps?: boolean; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; /** * Sets the x coordinate step. See `x0` for more info. * @default 1 @@ -4183,9 +4183,9 @@ export interface HeatmapData { */ hovertemplatefallback?: any; /** Same as `text`. */ - hovertext?: Datum[] | TypedArray; + hovertext?: Datum[] | Datum[][] | TypedArray; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ - ids?: Datum[] | TypedArray; + ids?: Datum[] | Datum[][] | TypedArray; /** * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. * @default 'legend' @@ -4231,7 +4231,7 @@ export interface HeatmapData { showscale?: boolean; stream?: _internal.Stream; /** Sets the text elements associated with each z value. */ - text?: Datum[] | TypedArray; + text?: Datum[] | Datum[][] | TypedArray; /** Sets the text font. */ textfont?: Font; /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `x`, `y`, `z` and `text`. */ @@ -4260,7 +4260,7 @@ export interface HeatmapData { * Sets the x coordinates. * Setting this also sets: xtype = "array" */ - x?: Datum[] | TypedArray; + x?: Datum[] | Datum[][] | TypedArray; /** * Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step. * @default 0 @@ -4308,7 +4308,7 @@ export interface HeatmapData { * Sets the y coordinates. * Setting this also sets: ytype = "array" */ - y?: Datum[] | TypedArray; + y?: Datum[] | Datum[][] | TypedArray; /** * Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step. * @default 0 @@ -4353,7 +4353,7 @@ export interface HeatmapData { /** If *array*, the heatmap's y coordinates are given by *y* (the default behavior when `y` is provided) If *scaled*, the heatmap's y coordinates are given by *y0* and *dy* (the default behavior when `y` is not provided) */ ytype?: 'array' | 'scaled'; /** Sets the z data. */ - z?: Datum[] | TypedArray; + z?: Datum[] | Datum[][] | TypedArray; /** * Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. * @default true @@ -4422,12 +4422,12 @@ export interface HistogramData { enabled?: boolean; }; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; error_x?: { /** Sets the data corresponding the length of each error bar. Values are plotted relative to the underlying data. */ - array?: Datum[] | TypedArray; + array?: Datum[] | Datum[][] | TypedArray; /** Sets the data corresponding the length of each error bar in the bottom (left) direction for vertical (horizontal) bars Values are plotted relative to the underlying data. */ - arrayminus?: Datum[] | TypedArray; + arrayminus?: Datum[] | Datum[][] | TypedArray; /** Sets the stroke color of the error bars. */ color?: Color; copy_ystyle?: boolean; @@ -4495,7 +4495,7 @@ export interface HistogramData { /** Same as `text`. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ - ids?: Datum[] | TypedArray; + ids?: Datum[] | Datum[][] | TypedArray; /** * Determines if texts are kept at center or start/end points in `textposition` *inside* mode. * @default 'end' @@ -4668,7 +4668,7 @@ export interface HistogramData { */ visible?: true | false | 'legendonly'; /** Sets the sample data to be binned on the x axis. */ - x?: Datum[] | TypedArray; + x?: Datum[] | Datum[][] | TypedArray; /** * Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. * @default 'x' @@ -4690,7 +4690,7 @@ export interface HistogramData { /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; /** Sets the sample data to be binned on the y axis. */ - y?: Datum[] | TypedArray; + y?: Datum[] | Datum[][] | TypedArray; /** * Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. * @default 'y' @@ -4739,7 +4739,7 @@ export interface Histogram2dData { */ colorscale?: ColorScale; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; /** * Specifies the binning function used for this histogram trace. If *count*, the histogram values are computed by counting the number of values lying inside each bin. If *sum*, *avg*, *min*, *max*, the histogram values are computed using the sum, the average, the minimum or the maximum of the values lying inside each bin respectively. * @default 'count' @@ -4761,7 +4761,7 @@ export interface Histogram2dData { */ hovertemplatefallback?: any; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ - ids?: Datum[] | TypedArray; + ids?: Datum[] | Datum[][] | TypedArray; /** * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. * @default 'legend' @@ -4782,7 +4782,7 @@ export interface Histogram2dData { legendwidth?: number; marker?: { /** Sets the aggregation data. */ - color?: Datum[] | TypedArray; + color?: Datum[] | Datum[][] | TypedArray; }; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ meta?: any; @@ -4842,7 +4842,7 @@ export interface Histogram2dData { */ visible?: true | false | 'legendonly'; /** Sets the sample data to be binned on the x axis. */ - x?: Datum[] | TypedArray; + x?: Datum[] | Datum[][] | TypedArray; /** * Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. * @default 'x' @@ -4872,7 +4872,7 @@ export interface Histogram2dData { /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; /** Sets the sample data to be binned on the y axis. */ - y?: Datum[] | TypedArray; + y?: Datum[] | Datum[][] | TypedArray; /** * Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. * @default 'y' @@ -4902,7 +4902,7 @@ export interface Histogram2dData { /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ yhoverformat?: string; /** Sets the aggregation data. */ - z?: Datum[] | TypedArray; + z?: Datum[] | Datum[][] | TypedArray; /** * Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. * @default true @@ -5010,7 +5010,7 @@ export interface Histogram2dcontourData { value?: any; }; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; /** * Specifies the binning function used for this histogram trace. If *count*, the histogram values are computed by counting the number of values lying inside each bin. If *sum*, *avg*, *min*, *max*, the histogram values are computed using the sum, the average, the minimum or the maximum of the values lying inside each bin respectively. * @default 'count' @@ -5032,7 +5032,7 @@ export interface Histogram2dcontourData { */ hovertemplatefallback?: any; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ - ids?: Datum[] | TypedArray; + ids?: Datum[] | Datum[][] | TypedArray; /** * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. * @default 'legend' @@ -5074,7 +5074,7 @@ export interface Histogram2dcontourData { }; marker?: { /** Sets the aggregation data. */ - color?: Datum[] | TypedArray; + color?: Datum[] | Datum[][] | TypedArray; }; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ meta?: any; @@ -5140,7 +5140,7 @@ export interface Histogram2dcontourData { */ visible?: true | false | 'legendonly'; /** Sets the sample data to be binned on the x axis. */ - x?: Datum[] | TypedArray; + x?: Datum[] | Datum[][] | TypedArray; /** * Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. * @default 'x' @@ -5164,7 +5164,7 @@ export interface Histogram2dcontourData { /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; /** Sets the sample data to be binned on the y axis. */ - y?: Datum[] | TypedArray; + y?: Datum[] | Datum[][] | TypedArray; /** * Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. * @default 'y' @@ -5188,7 +5188,7 @@ export interface Histogram2dcontourData { /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ yhoverformat?: string; /** Sets the aggregation data. */ - z?: Datum[] | TypedArray; + z?: Datum[] | Datum[][] | TypedArray; /** * Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user. * @default true @@ -5222,7 +5222,7 @@ export interface IcicleData { */ count?: 'branches' | 'leaves' | (string & {}); /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; domain?: Domain; /** * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. @@ -5240,11 +5240,11 @@ export interface IcicleData { /** Sets hover text elements associated with each sector. If a single string, the same string appears for all data points. If an array of string, the items are mapped in order of this trace's sectors. To be seen, trace `hoverinfo` must contain a *text* flag. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ - ids?: Datum[] | TypedArray; + ids?: Datum[] | Datum[][] | TypedArray; /** Sets the font used for `textinfo` lying inside the sector. */ insidetextfont?: FontArray; /** Sets the labels of each of the sectors. */ - labels?: Datum[] | TypedArray; + labels?: Datum[] | Datum[][] | TypedArray; leaf?: { /** * Sets the opacity of the leaves. With colorscale it is defaulted to 1; otherwise it is defaulted to 0.7 @@ -5297,7 +5297,7 @@ export interface IcicleData { coloraxis?: string; colorbar?: ColorBar; /** Sets the color of each sector of this trace. If not specified, the default trace color set is used to pick the sector colors. */ - colors?: Datum[] | TypedArray; + colors?: Datum[] | Datum[][] | TypedArray; /** * Sets the colorscale. Has an effect only if colors is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. * Setting this also sets: autocolorscale = false @@ -5335,7 +5335,7 @@ export interface IcicleData { /** Sets the font used for `textinfo` lying outside the sector. This option refers to the root of the hierarchy presented on top left corner of a treemap graph. Please note that if a hierarchy has multiple root nodes, this option won't have any effect and `insidetextfont` would be used. */ outsidetextfont?: FontArray; /** Sets the parent sectors for each of the sectors. Empty string items '' are understood to reference the root node in the hierarchy. If `ids` is filled, `parents` items are understood to be "ids" themselves. When `ids` is not set, plotly attempts to find matching items in `labels`, but beware they must be unique. */ - parents?: Datum[] | TypedArray; + parents?: Datum[] | Datum[][] | TypedArray; pathbar?: { /** * Determines which shape is used for edges between `barpath` labels. @@ -5368,7 +5368,7 @@ export interface IcicleData { sort?: boolean; stream?: _internal.Stream; /** Sets text elements associated with each sector. If trace `textinfo` contains a *text* flag, these elements will be seen on the chart. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ - text?: Datum[] | TypedArray; + text?: Datum[] | Datum[][] | TypedArray; /** Sets the font used for `textinfo`. */ textfont?: FontArray; /** Determines which trace information appear on the graph. */ @@ -5406,7 +5406,7 @@ export interface IcicleData { /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ uirevision?: any; /** Sets the values associated with each of the sectors. Use with `branchvalues` to determine how the values are summed. */ - values?: Datum[] | TypedArray; + values?: Datum[] | Datum[][] | TypedArray; /** * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). * @default true @@ -5418,7 +5418,7 @@ export interface ImageData { /** Color model used to map the numerical color components described in `z` into colors. If `source` is specified, this attribute will be set to `rgba256` otherwise it defaults to `rgb`. */ colormodel?: 'rgb' | 'rgba' | 'rgba256' | 'hsl' | 'hsla'; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; /** * Set the pixel's horizontal size. * @default 1 @@ -5443,9 +5443,9 @@ export interface ImageData { */ hovertemplatefallback?: any; /** Same as `text`. */ - hovertext?: Datum[] | TypedArray; + hovertext?: Datum[] | Datum[][] | TypedArray; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ - ids?: Datum[] | TypedArray; + ids?: Datum[] | Datum[][] | TypedArray; /** * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. * @default 'legend' @@ -5476,7 +5476,7 @@ export interface ImageData { source?: string; stream?: _internal.Stream; /** Sets the text elements associated with each z value. */ - text?: Datum[] | TypedArray; + text?: Datum[] | Datum[][] | TypedArray; type?: 'image'; /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ uid?: string; @@ -5508,7 +5508,7 @@ export interface ImageData { */ yaxis?: string; /** A 2-dimensional array in which each element is an array of 3 or 4 numbers representing a color. */ - z?: Datum[] | TypedArray; + z?: Datum[] | Datum[][] | TypedArray; /** Array defining the higher bound for each color component. Note that the default value will depend on the colormodel. For the `rgb` colormodel, it is [255, 255, 255]. For the `rgba` colormodel, it is [255, 255, 255, 1]. For the `rgba256` colormodel, it is [255, 255, 255, 255]. For the `hsl` colormodel, it is [360, 100, 100]. For the `hsla` colormodel, it is [360, 100, 100, 1]. */ zmax?: [number, number, number, number]; /** Array defining the lower bound for each color component. Note that the default value will depend on the colormodel. For the `rgb` colormodel, it is [0, 0, 0]. For the `rgba` colormodel, it is [0, 0, 0, 0]. For the `rgba256` colormodel, it is [0, 0, 0, 0]. For the `hsl` colormodel, it is [0, 0, 0]. For the `hsla` colormodel, it is [0, 0, 0, 0]. */ @@ -5529,7 +5529,7 @@ export interface IndicatorData { /** Sets the horizontal alignment of the `text` within the box. Note that this attribute has no effect if an angular gauge is displayed: in this case, it is always centered */ align?: 'left' | 'center' | 'right'; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; delta?: { decreasing?: { /** @@ -5678,9 +5678,9 @@ export interface IndicatorData { /** Sets a tick label suffix. */ ticksuffix?: string; /** Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`. */ - ticktext?: Datum[] | TypedArray; + ticktext?: Datum[] | Datum[][] | TypedArray; /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ - tickvals?: Datum[] | TypedArray; + tickvals?: Datum[] | Datum[][] | TypedArray; /** * Sets the tick width (in px). * @default 1 @@ -5759,7 +5759,7 @@ export interface IndicatorData { }; }; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ - ids?: Datum[] | TypedArray; + ids?: Datum[] | Datum[][] | TypedArray; /** * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. * @default 'legend' @@ -5909,7 +5909,7 @@ export interface IsosurfaceData { width?: number; }; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; /** * Determines whether or not normal smoothing is applied to the meshes, creating meshes with an angular, low-poly look via flat reflections. * @default true @@ -5931,7 +5931,7 @@ export interface IsosurfaceData { /** Same as `text`. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ - ids?: Datum[] | TypedArray; + ids?: Datum[] | Datum[][] | TypedArray; /** Sets the maximum boundary for iso-surface plot. */ isomax?: number; /** Sets the minimum boundary for iso-surface plot. */ @@ -6017,7 +6017,7 @@ export interface IsosurfaceData { * Specifies the location(s) of slices on the axis. When not specified slices would be created for all points of the axis x except start and end. * @default [] */ - locations?: Datum[] | TypedArray; + locations?: Datum[] | Datum[][] | TypedArray; /** * Determines whether or not slice planes about the x dimension are drawn. * @default false @@ -6035,7 +6035,7 @@ export interface IsosurfaceData { * Specifies the location(s) of slices on the axis. When not specified slices would be created for all points of the axis y except start and end. * @default [] */ - locations?: Datum[] | TypedArray; + locations?: Datum[] | Datum[][] | TypedArray; /** * Determines whether or not slice planes about the y dimension are drawn. * @default false @@ -6053,7 +6053,7 @@ export interface IsosurfaceData { * Specifies the location(s) of slices on the axis. When not specified slices would be created for all points of the axis z except start and end. * @default [] */ - locations?: Datum[] | TypedArray; + locations?: Datum[] | Datum[][] | TypedArray; /** * Determines whether or not slice planes about the z dimension are drawn. * @default false @@ -6107,7 +6107,7 @@ export interface IsosurfaceData { /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ uirevision?: any; /** Sets the 4th dimension (value) of the vertices. */ - value?: Datum[] | TypedArray; + value?: Datum[] | Datum[][] | TypedArray; /** Sets the hover text formatting rule for `value` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ valuehoverformat?: string; /** @@ -6116,15 +6116,15 @@ export interface IsosurfaceData { */ visible?: true | false | 'legendonly'; /** Sets the X coordinates of the vertices on X axis. */ - x?: Datum[] | TypedArray; + x?: Datum[] | Datum[][] | TypedArray; /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; /** Sets the Y coordinates of the vertices on Y axis. */ - y?: Datum[] | TypedArray; + y?: Datum[] | Datum[][] | TypedArray; /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ yhoverformat?: string; /** Sets the Z coordinates of the vertices on Z axis. */ - z?: Datum[] | TypedArray; + z?: Datum[] | Datum[][] | TypedArray; /** Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`. */ zhoverformat?: string; } @@ -6186,14 +6186,14 @@ export interface Mesh3dData { width?: number; }; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; /** * Sets the Delaunay axis, which is the axis that is perpendicular to the surface of the Delaunay triangulation. It has an effect if `i`, `j`, `k` are not provided and `alphahull` is set to indicate Delaunay triangulation. * @default 'z' */ delaunayaxis?: 'x' | 'y' | 'z'; /** Sets the color of each face Overrides *color* and *vertexcolor*. */ - facecolor?: Datum[] | TypedArray; + facecolor?: Datum[] | Datum[][] | TypedArray; /** * Determines whether or not normal smoothing is applied to the meshes, creating meshes with an angular, low-poly look via flat reflections. * @default false @@ -6215,20 +6215,20 @@ export interface Mesh3dData { /** Same as `text`. */ hovertext?: string | string[]; /** A vector of vertex indices, i.e. integer values between 0 and the length of the vertex vectors, representing the *first* vertex of a triangle. For example, `{i[m], j[m], k[m]}` together represent face m (triangle m) in the mesh, where `i[m] = n` points to the triplet `{x[n], y[n], z[n]}` in the vertex arrays. Therefore, each element in `i` represents a point in space, which is the first vertex of a triangle. */ - i?: Datum[] | TypedArray; + i?: Datum[] | Datum[][] | TypedArray; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ - ids?: Datum[] | TypedArray; + ids?: Datum[] | Datum[][] | TypedArray; /** Sets the intensity values for vertices or cells as defined by `intensitymode`. It can be used for plotting fields on meshes. */ - intensity?: Datum[] | TypedArray; + intensity?: Datum[] | Datum[][] | TypedArray; /** * Determines the source of `intensity` values. * @default 'vertex' */ intensitymode?: 'vertex' | 'cell'; /** A vector of vertex indices, i.e. integer values between 0 and the length of the vertex vectors, representing the *second* vertex of a triangle. For example, `{i[m], j[m], k[m]}` together represent face m (triangle m) in the mesh, where `j[m] = n` points to the triplet `{x[n], y[n], z[n]}` in the vertex arrays. Therefore, each element in `j` represents a point in space, which is the second vertex of a triangle. */ - j?: Datum[] | TypedArray; + j?: Datum[] | Datum[][] | TypedArray; /** A vector of vertex indices, i.e. integer values between 0 and the length of the vertex vectors, representing the *third* vertex of a triangle. For example, `{i[m], j[m], k[m]}` together represent face m (triangle m) in the mesh, where `k[m] = n` points to the triplet `{x[n], y[n], z[n]}` in the vertex arrays. Therefore, each element in `k` represents a point in space, which is the third vertex of a triangle. */ - k?: Datum[] | TypedArray; + k?: Datum[] | Datum[][] | TypedArray; /** * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. * @default 'legend' @@ -6307,14 +6307,14 @@ export interface Mesh3dData { /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ uirevision?: any; /** Sets the color of each vertex Overrides *color*. While Red, green and blue colors are in the range of 0 and 255; in the case of having vertex color data in RGBA format, the alpha color should be normalized to be between 0 and 1. */ - vertexcolor?: Datum[] | TypedArray; + vertexcolor?: Datum[] | Datum[][] | TypedArray; /** * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). * @default true */ visible?: true | false | 'legendonly'; /** Sets the X coordinates of the vertices. The nth element of vectors `x`, `y` and `z` jointly represent the X, Y and Z coordinates of the nth vertex. */ - x?: Datum[] | TypedArray; + x?: Datum[] | Datum[][] | TypedArray; /** * Sets the calendar system to use with `x` date data. * @default 'gregorian' @@ -6323,7 +6323,7 @@ export interface Mesh3dData { /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; /** Sets the Y coordinates of the vertices. The nth element of vectors `x`, `y` and `z` jointly represent the X, Y and Z coordinates of the nth vertex. */ - y?: Datum[] | TypedArray; + y?: Datum[] | Datum[][] | TypedArray; /** * Sets the calendar system to use with `y` date data. * @default 'gregorian' @@ -6332,7 +6332,7 @@ export interface Mesh3dData { /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ yhoverformat?: string; /** Sets the Z coordinates of the vertices. The nth element of vectors `x`, `y` and `z` jointly represent the X, Y and Z coordinates of the nth vertex. */ - z?: Datum[] | TypedArray; + z?: Datum[] | Datum[][] | TypedArray; /** * Sets the calendar system to use with `z` date data. * @default 'gregorian' @@ -6344,9 +6344,9 @@ export interface Mesh3dData { export interface OhlcData { /** Sets the close values. */ - close?: Datum[] | TypedArray; + close?: Datum[] | Datum[][] | TypedArray; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; decreasing?: { line?: { /** @@ -6368,7 +6368,7 @@ export interface OhlcData { }; }; /** Sets the high values. */ - high?: Datum[] | TypedArray; + high?: Datum[] | Datum[][] | TypedArray; /** * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. * @default 'all' @@ -6413,7 +6413,7 @@ export interface OhlcData { /** Same as `text`. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ - ids?: Datum[] | TypedArray; + ids?: Datum[] | Datum[][] | TypedArray; increasing?: { line?: { /** @@ -6466,7 +6466,7 @@ export interface OhlcData { width?: number; }; /** Sets the low values. */ - low?: Datum[] | TypedArray; + low?: Datum[] | Datum[][] | TypedArray; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ meta?: any; /** Sets the trace name. The trace name appears as the legend item and on hover. */ @@ -6478,7 +6478,7 @@ export interface OhlcData { */ opacity?: number; /** Sets the open values. */ - open?: Datum[] | TypedArray; + open?: Datum[] | Datum[][] | TypedArray; /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ selectedpoints?: any; /** @@ -6506,7 +6506,7 @@ export interface OhlcData { */ visible?: true | false | 'legendonly'; /** Sets the x coordinates. If absent, linear coordinate will be generated. */ - x?: Datum[] | TypedArray; + x?: Datum[] | Datum[][] | TypedArray; /** * Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. * @default 'x' @@ -6564,7 +6564,7 @@ export interface ParcatsData { counts?: number | number[]; dimensions?: Array<{ /** Sets the order in which categories in this dimension appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`. */ - categoryarray?: Datum[] | TypedArray; + categoryarray?: Datum[] | Datum[][] | TypedArray; /** * Specifies the ordering logic for the categories in the dimension. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. * @default 'trace' @@ -6575,12 +6575,12 @@ export interface ParcatsData { /** The shown name of the dimension. */ label?: string; /** Sets alternative tick labels for the categories in this dimension. Only has an effect if `categoryorder` is set to *array*. Should be an array the same length as `categoryarray` Used with `categoryorder`. */ - ticktext?: Datum[] | TypedArray; + ticktext?: Datum[] | Datum[][] | TypedArray; /** * Dimension values. `values[n]` represents the category value of the `n`th point in the dataset, therefore the `values` vector for all dimensions must be the same (longer vectors will be truncated). * @default [] */ - values?: Datum[] | TypedArray; + values?: Datum[] | Datum[][] | TypedArray; /** * Shows the dimension when set to `true` (the default). Hides the dimension for `false`. * @default true @@ -6695,7 +6695,7 @@ export interface ParcatsData { export interface ParcoordsData { /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; dimensions?: Array<{ /** The domain range to which the filter on the dimension is constrained. Must be an array of `[fromValue, toValue]` with `fromValue <= toValue`, or if `multiselect` is not disabled, you may give an array of arrays, where each inner array is `[fromValue, toValue]`. */ constraintrange?: any[]; @@ -6715,11 +6715,11 @@ export interface ParcoordsData { /** Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46* */ tickformat?: string; /** Sets the text displayed at the ticks position via `tickvals`. */ - ticktext?: Datum[] | TypedArray; + ticktext?: Datum[] | Datum[][] | TypedArray; /** Sets the values at which ticks on this axis appear. */ - tickvals?: Datum[] | TypedArray; + tickvals?: Datum[] | Datum[][] | TypedArray; /** Dimension values. `values[n]` represents the value of the `n`th point in the dataset, therefore the `values` vector for all dimensions must be the same (longer vectors will be truncated). Each value must be a finite number. */ - values?: Datum[] | TypedArray; + values?: Datum[] | Datum[][] | TypedArray; /** * Shows the dimension when set to `true` (the default). Hides the dimension for `false`. * @default true @@ -6728,7 +6728,7 @@ export interface ParcoordsData { }>; domain?: Domain; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ - ids?: Datum[] | TypedArray; + ids?: Datum[] | Datum[][] | TypedArray; /** * Sets the angle of the labels with respect to the horizontal. For example, a `tickangle` of -90 draws the labels vertically. Tilted labels with *labelangle* may be positioned better inside margins when `labelposition` is set to *bottom*. * @default 0 @@ -6845,7 +6845,7 @@ export interface PieData { */ automargin?: boolean; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; /** * Specifies the direction at which succeeding sectors follow one another. * @default 'counterclockwise' @@ -6879,7 +6879,7 @@ export interface PieData { /** Sets hover text elements associated with each sector. If a single string, the same string appears for all data points. If an array of string, the items are mapped in order of this trace's sectors. To be seen, trace `hoverinfo` must contain a *text* flag. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ - ids?: Datum[] | TypedArray; + ids?: Datum[] | Datum[][] | TypedArray; /** Sets the font used for `textinfo` lying inside the sector. */ insidetextfont?: FontArray; /** @@ -6893,7 +6893,7 @@ export interface PieData { */ label0?: number; /** Sets the sector labels. If `labels` entries are duplicated, we sum associated `values` or simply count occurrences if `values` is not provided. For other array attributes (including color) we use the first non-empty entry among all occurrences of the label. */ - labels?: Datum[] | TypedArray; + labels?: Datum[] | Datum[][] | TypedArray; /** * Sets the reference to a legend to show the pie slices in. Can be an array if `values` is set. In that case, each entry specifies the legend reference for one slice. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. * @default 'legend' @@ -6914,7 +6914,7 @@ export interface PieData { legendwidth?: number; marker?: { /** Sets the color of each sector. If not specified, the default trace color set is used to pick the sector colors. */ - colors?: Datum[] | TypedArray; + colors?: Datum[] | Datum[][] | TypedArray; line?: _internal.Line; /** Sets the pattern within the marker. */ pattern?: Pattern; @@ -6956,7 +6956,7 @@ export interface PieData { sort?: boolean; stream?: _internal.Stream; /** Sets text elements associated with each sector. If trace `textinfo` contains a *text* flag, these elements will be seen on the chart. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ - text?: Datum[] | TypedArray; + text?: Datum[] | Datum[][] | TypedArray; /** Sets the font used for `textinfo`. */ textfont?: FontArray; /** Determines which trace information appear on the graph. */ @@ -6987,7 +6987,7 @@ export interface PieData { /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ uirevision?: any; /** Sets the values of the sectors. If omitted, we count occurrences of each label. */ - values?: Datum[] | TypedArray; + values?: Datum[] | Datum[][] | TypedArray; /** * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). * @default true @@ -7002,7 +7002,7 @@ export interface SankeyData { */ arrangement?: 'snap' | 'perpendicular' | 'freeform' | 'fixed'; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; domain?: Domain; /** * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. Note that this attribute is superseded by `node.hoverinfo` and `node.hoverinfo` for nodes and links respectively. @@ -7011,7 +7011,7 @@ export interface SankeyData { hoverinfo?: 'all' | 'none' | 'skip' | (string & {}); hoverlabel?: HoverLabel; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ - ids?: Datum[] | TypedArray; + ids?: Datum[] | Datum[][] | TypedArray; /** * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. * @default 'legend' @@ -7063,7 +7063,7 @@ export interface SankeyData { templateitemname?: string; }>; /** Assigns extra data to each link. */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; /** Sets the `link` hover color. It can be a single value, or an array for specifying hover colors for each `link`. If `link.hovercolor` is omitted, then by default, links will become slightly more opaque when hovered over. */ hovercolor?: Color | Color[]; /** @@ -7083,23 +7083,23 @@ export interface SankeyData { * The shown name of the link. * @default [] */ - label?: Datum[] | TypedArray; + label?: Datum[] | Datum[][] | TypedArray; line?: _internal.Line; /** * An integer number `[0..nodes.length - 1]` that represents the source node. * @default [] */ - source?: Datum[] | TypedArray; + source?: Datum[] | Datum[][] | TypedArray; /** * An integer number `[0..nodes.length - 1]` that represents the target node. * @default [] */ - target?: Datum[] | TypedArray; + target?: Datum[] | Datum[][] | TypedArray; /** * A numeric value representing the flow volume value. * @default [] */ - value?: Datum[] | TypedArray; + value?: Datum[] | Datum[][] | TypedArray; }; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ meta?: any; @@ -7115,7 +7115,7 @@ export interface SankeyData { /** Sets the `node` color. It can be a single value, or an array for specifying color for each `node`. If `node.color` is omitted, then the default `Plotly` color palette will be cycled through to have a variety of colors. These defaults are not fully opaque, to allow some visibility of what is beneath the node. */ color?: Color | Color[]; /** Assigns extra data to each node. */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; /** * Groups of nodes. Each group is defined by an array with the indices of the nodes it contains. Multiple groups can be specified. * @default [] @@ -7139,7 +7139,7 @@ export interface SankeyData { * The shown name of the node. * @default [] */ - label?: Datum[] | TypedArray; + label?: Datum[] | Datum[][] | TypedArray; line?: _internal.Line; /** * Sets the padding (in px) between the `nodes`. @@ -7157,12 +7157,12 @@ export interface SankeyData { * The normalized horizontal position of the node. * @default [] */ - x?: Datum[] | TypedArray; + x?: Datum[] | Datum[][] | TypedArray; /** * The normalized vertical position of the node. * @default [] */ - y?: Datum[] | TypedArray; + y?: Datum[] | Datum[][] | TypedArray; }; /** * Sets the orientation of the Sankey diagram. @@ -7207,7 +7207,7 @@ export interface ScatterData { */ connectgaps?: boolean; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; /** * Sets the x coordinate step. See `x0` for more info. * @default 1 @@ -7220,9 +7220,9 @@ export interface ScatterData { dy?: number; error_x?: { /** Sets the data corresponding the length of each error bar. Values are plotted relative to the underlying data. */ - array?: Datum[] | TypedArray; + array?: Datum[] | Datum[][] | TypedArray; /** Sets the data corresponding the length of each error bar in the bottom (left) direction for vertical (horizontal) bars Values are plotted relative to the underlying data. */ - arrayminus?: Datum[] | TypedArray; + arrayminus?: Datum[] | Datum[][] | TypedArray; /** Sets the stroke color of the error bars. */ color?: Color; copy_ystyle?: boolean; @@ -7307,7 +7307,7 @@ export interface ScatterData { /** Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ - ids?: Datum[] | TypedArray; + ids?: Datum[] | Datum[][] | TypedArray; /** * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. * @default 'legend' @@ -7456,7 +7456,7 @@ export interface ScatterData { */ visible?: true | false | 'legendonly'; /** Sets the x coordinates. */ - x?: Datum[] | TypedArray; + x?: Datum[] | Datum[][] | TypedArray; /** * Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step. * @default 0 @@ -7487,7 +7487,7 @@ export interface ScatterData { */ xperiodalignment?: 'start' | 'middle' | 'end'; /** Sets the y coordinates. */ - y?: Datum[] | TypedArray; + y?: Datum[] | Datum[][] | TypedArray; /** * Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step. * @default 0 @@ -7531,12 +7531,12 @@ export interface Scatter3dData { */ connectgaps?: boolean; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; error_x?: { /** Sets the data corresponding the length of each error bar. Values are plotted relative to the underlying data. */ - array?: Datum[] | TypedArray; + array?: Datum[] | Datum[][] | TypedArray; /** Sets the data corresponding the length of each error bar in the bottom (left) direction for vertical (horizontal) bars Values are plotted relative to the underlying data. */ - arrayminus?: Datum[] | TypedArray; + arrayminus?: Datum[] | Datum[][] | TypedArray; /** Sets the stroke color of the error bars. */ color?: Color; copy_zstyle?: boolean; @@ -7582,9 +7582,9 @@ export interface Scatter3dData { }; error_y?: { /** Sets the data corresponding the length of each error bar. Values are plotted relative to the underlying data. */ - array?: Datum[] | TypedArray; + array?: Datum[] | Datum[][] | TypedArray; /** Sets the data corresponding the length of each error bar in the bottom (left) direction for vertical (horizontal) bars Values are plotted relative to the underlying data. */ - arrayminus?: Datum[] | TypedArray; + arrayminus?: Datum[] | Datum[][] | TypedArray; /** Sets the stroke color of the error bars. */ color?: Color; copy_zstyle?: boolean; @@ -7645,7 +7645,7 @@ export interface Scatter3dData { /** Sets text elements associated with each (x,y,z) triplet. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y,z) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ - ids?: Datum[] | TypedArray; + ids?: Datum[] | Datum[][] | TypedArray; /** * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. * @default 'legend' @@ -7981,7 +7981,7 @@ export interface Scatter3dData { */ visible?: true | false | 'legendonly'; /** Sets the x coordinates. */ - x?: Datum[] | TypedArray; + x?: Datum[] | Datum[][] | TypedArray; /** * Sets the calendar system to use with `x` date data. * @default 'gregorian' @@ -7990,7 +7990,7 @@ export interface Scatter3dData { /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; /** Sets the y coordinates. */ - y?: Datum[] | TypedArray; + y?: Datum[] | Datum[][] | TypedArray; /** * Sets the calendar system to use with `y` date data. * @default 'gregorian' @@ -7999,7 +7999,7 @@ export interface Scatter3dData { /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ yhoverformat?: string; /** Sets the z coordinates. */ - z?: Datum[] | TypedArray; + z?: Datum[] | Datum[][] | TypedArray; /** * Sets the calendar system to use with `z` date data. * @default 'gregorian' @@ -8011,9 +8011,9 @@ export interface Scatter3dData { export interface ScattercarpetData { /** Sets the a-axis coordinates. */ - a?: Datum[] | TypedArray; + a?: Datum[] | Datum[][] | TypedArray; /** Sets the b-axis coordinates. */ - b?: Datum[] | TypedArray; + b?: Datum[] | Datum[][] | TypedArray; /** An identifier for this carpet, so that `scattercarpet` and `contourcarpet` traces can specify a carpet plot on which they lie */ carpet?: string; /** @@ -8022,7 +8022,7 @@ export interface ScattercarpetData { */ connectgaps?: boolean; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; /** * Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. scatterternary has a subset of the options available to scatter. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other. * @default 'none' @@ -8048,7 +8048,7 @@ export interface ScattercarpetData { /** Sets hover text elements associated with each (a,b) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the data points in (a,b). To be seen, trace `hoverinfo` must contain a *text* flag. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ - ids?: Datum[] | TypedArray; + ids?: Datum[] | Datum[][] | TypedArray; /** * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. * @default 'legend' @@ -8207,7 +8207,7 @@ export interface ScattergeoData { */ connectgaps?: boolean; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; /** * Sets the key in GeoJSON features which is used as id to match the items included in the `locations` array. Only has an effect when `geojson` is set. Support nested property, for example *properties.name*. * @default 'id' @@ -8243,9 +8243,9 @@ export interface ScattergeoData { /** Sets hover text elements associated with each (lon,lat) pair or item in `locations`. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) or `locations` coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ - ids?: Datum[] | TypedArray; + ids?: Datum[] | Datum[][] | TypedArray; /** Sets the latitude coordinates (in degrees North). */ - lat?: Datum[] | TypedArray; + lat?: Datum[] | Datum[][] | TypedArray; /** * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. * @default 'legend' @@ -8285,9 +8285,9 @@ export interface ScattergeoData { */ locationmode?: 'ISO-3' | 'USA-states' | 'country names' | 'geojson-id'; /** Sets the coordinates via location IDs or names. Coordinates correspond to the centroid of each location given. See `locationmode` for more info. */ - locations?: Datum[] | TypedArray; + locations?: Datum[] | Datum[][] | TypedArray; /** Sets the longitude coordinates (in degrees East). */ - lon?: Datum[] | TypedArray; + lon?: Datum[] | Datum[][] | TypedArray; marker?: { /** * Sets the marker angle in respect to `angleref`. @@ -8482,7 +8482,7 @@ export interface ScatterglData { */ connectgaps?: boolean; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; /** * Sets the x coordinate step. See `x0` for more info. * @default 1 @@ -8495,9 +8495,9 @@ export interface ScatterglData { dy?: number; error_x?: { /** Sets the data corresponding the length of each error bar. Values are plotted relative to the underlying data. */ - array?: Datum[] | TypedArray; + array?: Datum[] | Datum[][] | TypedArray; /** Sets the data corresponding the length of each error bar in the bottom (left) direction for vertical (horizontal) bars Values are plotted relative to the underlying data. */ - arrayminus?: Datum[] | TypedArray; + arrayminus?: Datum[] | Datum[][] | TypedArray; /** Sets the stroke color of the error bars. */ color?: Color; copy_ystyle?: boolean; @@ -8565,7 +8565,7 @@ export interface ScatterglData { /** Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ - ids?: Datum[] | TypedArray; + ids?: Datum[] | Datum[][] | TypedArray; /** * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. * @default 'legend' @@ -8709,7 +8709,7 @@ export interface ScatterglData { */ visible?: true | false | 'legendonly'; /** Sets the x coordinates. */ - x?: Datum[] | TypedArray; + x?: Datum[] | Datum[][] | TypedArray; /** * Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step. * @default 0 @@ -8740,7 +8740,7 @@ export interface ScatterglData { */ xperiodalignment?: 'start' | 'middle' | 'end'; /** Sets the y coordinates. */ - y?: Datum[] | TypedArray; + y?: Datum[] | Datum[][] | TypedArray; /** * Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step. * @default 0 @@ -8811,7 +8811,7 @@ export interface ScattermapData { */ connectgaps?: boolean; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; /** * Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. * @default 'none' @@ -8835,9 +8835,9 @@ export interface ScattermapData { /** Sets hover text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ - ids?: Datum[] | TypedArray; + ids?: Datum[] | Datum[][] | TypedArray; /** Sets the latitude coordinates (in degrees North). */ - lat?: Datum[] | TypedArray; + lat?: Datum[] | Datum[][] | TypedArray; /** * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. * @default 'legend' @@ -8858,7 +8858,7 @@ export interface ScattermapData { legendwidth?: number; line?: _internal.ErrorY; /** Sets the longitude coordinates (in degrees East). */ - lon?: Datum[] | TypedArray; + lon?: Datum[] | Datum[][] | TypedArray; marker?: { /** * Flag to draw all symbols, even if they overlap. @@ -9072,7 +9072,7 @@ export interface ScattermapboxData { */ connectgaps?: boolean; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; /** * Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. * @default 'none' @@ -9096,9 +9096,9 @@ export interface ScattermapboxData { /** Sets hover text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ - ids?: Datum[] | TypedArray; + ids?: Datum[] | Datum[][] | TypedArray; /** Sets the latitude coordinates (in degrees North). */ - lat?: Datum[] | TypedArray; + lat?: Datum[] | Datum[][] | TypedArray; /** * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. * @default 'legend' @@ -9119,7 +9119,7 @@ export interface ScattermapboxData { legendwidth?: number; line?: _internal.ErrorY; /** Sets the longitude coordinates (in degrees East). */ - lon?: Datum[] | TypedArray; + lon?: Datum[] | Datum[][] | TypedArray; marker?: { /** * Flag to draw all symbols, even if they overlap. @@ -9306,7 +9306,7 @@ export interface ScatterpolarData { */ connectgaps?: boolean; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; /** * Sets the r coordinate step. * @default 1 @@ -9339,7 +9339,7 @@ export interface ScatterpolarData { /** Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ - ids?: Datum[] | TypedArray; + ids?: Datum[] | Datum[][] | TypedArray; /** * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. * @default 'legend' @@ -9404,7 +9404,7 @@ export interface ScatterpolarData { */ opacity?: number; /** Sets the radial coordinates */ - r?: Datum[] | TypedArray; + r?: Datum[] | Datum[][] | TypedArray; /** * Alternate to `r`. Builds a linear space of r coordinates. Use with `dr` where `r0` is the starting coordinate and `dr` the step. * @default 0 @@ -9457,7 +9457,7 @@ export interface ScatterpolarData { */ texttemplatefallback?: any; /** Sets the angular coordinates */ - theta?: Datum[] | TypedArray; + theta?: Datum[] | Datum[][] | TypedArray; /** * Alternate to `theta`. Builds a linear space of theta coordinates. Use with `dtheta` where `theta0` is the starting coordinate and `dtheta` the step. * @default 0 @@ -9504,7 +9504,7 @@ export interface ScatterpolarglData { */ connectgaps?: boolean; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; /** * Sets the r coordinate step. * @default 1 @@ -9535,7 +9535,7 @@ export interface ScatterpolarglData { /** Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ - ids?: Datum[] | TypedArray; + ids?: Datum[] | Datum[][] | TypedArray; /** * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. * @default 'legend' @@ -9583,7 +9583,7 @@ export interface ScatterpolarglData { */ opacity?: number; /** Sets the radial coordinates */ - r?: Datum[] | TypedArray; + r?: Datum[] | Datum[][] | TypedArray; /** * Alternate to `r`. Builds a linear space of r coordinates. Use with `dr` where `r0` is the starting coordinate and `dr` the step. * @default 0 @@ -9659,7 +9659,7 @@ export interface ScatterpolarglData { */ texttemplatefallback?: any; /** Sets the angular coordinates */ - theta?: Datum[] | TypedArray; + theta?: Datum[] | Datum[][] | TypedArray; /** * Alternate to `theta`. Builds a linear space of theta coordinates. Use with `dtheta` where `theta0` is the starting coordinate and `dtheta` the step. * @default 0 @@ -9711,7 +9711,7 @@ export interface ScattersmithData { */ connectgaps?: boolean; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; /** * Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. scattersmith has a subset of the options available to scatter. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other. * @default 'none' @@ -9737,9 +9737,9 @@ export interface ScattersmithData { /** Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ - ids?: Datum[] | TypedArray; + ids?: Datum[] | Datum[][] | TypedArray; /** Sets the imaginary component of the data, in units of normalized impedance such that real=1, imag=0 is the center of the chart. */ - imag?: Datum[] | TypedArray; + imag?: Datum[] | Datum[][] | TypedArray; /** * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. * @default 'legend' @@ -9804,7 +9804,7 @@ export interface ScattersmithData { */ opacity?: number; /** Sets the real component of the data, in units of normalized impedance such that real=1, imag=0 is the center of the chart. */ - real?: Datum[] | TypedArray; + real?: Datum[] | Datum[][] | TypedArray; selected?: { marker?: { /** Sets the marker color of selected points. */ @@ -9882,11 +9882,11 @@ export interface ScattersmithData { export interface ScatterternaryData { /** Sets the quantity of component `a` in each data point. If `a`, `b`, and `c` are all provided, they need not be normalized, only the relative values matter. If only two arrays are provided they must be normalized to match `ternary.sum`. */ - a?: Datum[] | TypedArray; + a?: Datum[] | Datum[][] | TypedArray; /** Sets the quantity of component `a` in each data point. If `a`, `b`, and `c` are all provided, they need not be normalized, only the relative values matter. If only two arrays are provided they must be normalized to match `ternary.sum`. */ - b?: Datum[] | TypedArray; + b?: Datum[] | Datum[][] | TypedArray; /** Sets the quantity of component `a` in each data point. If `a`, `b`, and `c` are all provided, they need not be normalized, only the relative values matter. If only two arrays are provided they must be normalized to match `ternary.sum`. */ - c?: Datum[] | TypedArray; + c?: Datum[] | Datum[][] | TypedArray; /** * Determines whether or not markers and text nodes are clipped about the subplot axes. To show markers and text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*. * @default true @@ -9898,7 +9898,7 @@ export interface ScatterternaryData { */ connectgaps?: boolean; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; /** * Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. scatterternary has a subset of the options available to scatter. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other. * @default 'none' @@ -9924,7 +9924,7 @@ export interface ScatterternaryData { /** Sets hover text elements associated with each (a,b,c) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the data points in (a,b,c). To be seen, trace `hoverinfo` must contain a *text* flag. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ - ids?: Datum[] | TypedArray; + ids?: Datum[] | Datum[][] | TypedArray; /** * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. * @default 'legend' @@ -10074,7 +10074,7 @@ export interface ScatterternaryData { export interface SplomData { /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; diagonal?: { /** * Determines whether or not subplots on the diagonal are displayed. @@ -10099,7 +10099,7 @@ export interface SplomData { /** Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`. */ templateitemname?: string; /** Sets the dimension values to be plotted. */ - values?: Datum[] | TypedArray; + values?: Datum[] | Datum[][] | TypedArray; /** * Determines whether or not this dimension is shown on the graph. Note that even visible false dimension contribute to the default grid generate by this splom trace. * @default true @@ -10122,7 +10122,7 @@ export interface SplomData { /** Same as `text`. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ - ids?: Datum[] | TypedArray; + ids?: Datum[] | Datum[][] | TypedArray; /** * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. * @default 'legend' @@ -10256,7 +10256,7 @@ export interface StreamtubeData { */ colorscale?: ColorScale; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; /** * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. * @default 'x+y+z+norm+text+name' @@ -10273,7 +10273,7 @@ export interface StreamtubeData { /** Same as `text`. */ hovertext?: string; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ - ids?: Datum[] | TypedArray; + ids?: Datum[] | Datum[][] | TypedArray; /** * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. * @default 'legend' @@ -10357,18 +10357,18 @@ export interface StreamtubeData { sizeref?: number; starts?: { /** Sets the x components of the starting position of the streamtubes */ - x?: Datum[] | TypedArray; + x?: Datum[] | Datum[][] | TypedArray; /** Sets the y components of the starting position of the streamtubes */ - y?: Datum[] | TypedArray; + y?: Datum[] | Datum[][] | TypedArray; /** Sets the z components of the starting position of the streamtubes */ - z?: Datum[] | TypedArray; + z?: Datum[] | Datum[][] | TypedArray; }; stream?: _internal.Stream; /** Sets a text element associated with this trace. If trace `hoverinfo` contains a *text* flag, this text element will be seen in all hover labels. Note that streamtube traces do not support array `text` values. */ text?: string; type?: 'streamtube'; /** Sets the x components of the vector field. */ - u?: Datum[] | TypedArray; + u?: Datum[] | Datum[][] | TypedArray; /** Sets the hover text formatting rule for `u` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ uhoverformat?: string; /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ @@ -10376,7 +10376,7 @@ export interface StreamtubeData { /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ uirevision?: any; /** Sets the y components of the vector field. */ - v?: Datum[] | TypedArray; + v?: Datum[] | Datum[][] | TypedArray; /** Sets the hover text formatting rule for `v` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ vhoverformat?: string; /** @@ -10385,19 +10385,19 @@ export interface StreamtubeData { */ visible?: true | false | 'legendonly'; /** Sets the z components of the vector field. */ - w?: Datum[] | TypedArray; + w?: Datum[] | Datum[][] | TypedArray; /** Sets the hover text formatting rule for `w` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ whoverformat?: string; /** Sets the x coordinates of the vector field. */ - x?: Datum[] | TypedArray; + x?: Datum[] | Datum[][] | TypedArray; /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; /** Sets the y coordinates of the vector field. */ - y?: Datum[] | TypedArray; + y?: Datum[] | Datum[][] | TypedArray; /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ yhoverformat?: string; /** Sets the z coordinates of the vector field. */ - z?: Datum[] | TypedArray; + z?: Datum[] | Datum[][] | TypedArray; /** Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`. */ zhoverformat?: string; } @@ -10414,7 +10414,7 @@ export interface SunburstData { */ count?: 'branches' | 'leaves' | (string & {}); /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; domain?: Domain; /** * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. @@ -10432,7 +10432,7 @@ export interface SunburstData { /** Sets hover text elements associated with each sector. If a single string, the same string appears for all data points. If an array of string, the items are mapped in order of this trace's sectors. To be seen, trace `hoverinfo` must contain a *text* flag. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ - ids?: Datum[] | TypedArray; + ids?: Datum[] | Datum[][] | TypedArray; /** Sets the font used for `textinfo` lying inside the sector. */ insidetextfont?: FontArray; /** @@ -10441,7 +10441,7 @@ export interface SunburstData { */ insidetextorientation?: 'horizontal' | 'radial' | 'tangential' | 'auto'; /** Sets the labels of each of the sectors. */ - labels?: Datum[] | TypedArray; + labels?: Datum[] | Datum[][] | TypedArray; leaf?: { /** * Sets the opacity of the leaves. With colorscale it is defaulted to 1; otherwise it is defaulted to 0.7 @@ -10494,7 +10494,7 @@ export interface SunburstData { coloraxis?: string; colorbar?: ColorBar; /** Sets the color of each sector of this trace. If not specified, the default trace color set is used to pick the sector colors. */ - colors?: Datum[] | TypedArray; + colors?: Datum[] | Datum[][] | TypedArray; /** * Sets the colorscale. Has an effect only if colors is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. * Setting this also sets: autocolorscale = false @@ -10532,7 +10532,7 @@ export interface SunburstData { /** Sets the font used for `textinfo` lying outside the sector. This option refers to the root of the hierarchy presented at the center of a sunburst graph. Please note that if a hierarchy has multiple root nodes, this option won't have any effect and `insidetextfont` would be used. */ outsidetextfont?: FontArray; /** Sets the parent sectors for each of the sectors. Empty string items '' are understood to reference the root node in the hierarchy. If `ids` is filled, `parents` items are understood to be "ids" themselves. When `ids` is not set, plotly attempts to find matching items in `labels`, but beware they must be unique. */ - parents?: Datum[] | TypedArray; + parents?: Datum[] | Datum[][] | TypedArray; root?: Font; /** * Rotates the whole diagram counterclockwise by some angle. By default the first slice starts at 3 o'clock. @@ -10546,7 +10546,7 @@ export interface SunburstData { sort?: boolean; stream?: _internal.Stream; /** Sets text elements associated with each sector. If trace `textinfo` contains a *text* flag, these elements will be seen on the chart. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ - text?: Datum[] | TypedArray; + text?: Datum[] | Datum[][] | TypedArray; /** Sets the font used for `textinfo`. */ textfont?: FontArray; /** Determines which trace information appear on the graph. */ @@ -10564,7 +10564,7 @@ export interface SunburstData { /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ uirevision?: any; /** Sets the values associated with each of the sectors. Use with `branchvalues` to determine how the values are summed. */ - values?: Datum[] | TypedArray; + values?: Datum[] | Datum[][] | TypedArray; /** * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). * @default true @@ -10806,7 +10806,7 @@ export interface SurfaceData { }; }; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; /** * Determines whether or not a surface is drawn. For example, set `hidesurface` to *false* `contours.x.show` to *true* and `contours.y.show` to *true* to draw a wire frame plot. * @default false @@ -10828,7 +10828,7 @@ export interface SurfaceData { /** Same as `text`. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ - ids?: Datum[] | TypedArray; + ids?: Datum[] | Datum[][] | TypedArray; /** * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. * @default 'legend' @@ -10933,7 +10933,7 @@ export interface SurfaceData { showscale?: boolean; stream?: _internal.Stream; /** Sets the surface color values, used for setting a color scale independent of `z`. */ - surfacecolor?: Datum[] | TypedArray; + surfacecolor?: Datum[] | Datum[][] | TypedArray; /** Sets the text elements associated with each z value. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ text?: string | string[]; type?: 'surface'; @@ -10947,7 +10947,7 @@ export interface SurfaceData { */ visible?: true | false | 'legendonly'; /** Sets the x coordinates. */ - x?: Datum[] | TypedArray; + x?: Datum[] | Datum[][] | TypedArray; /** * Sets the calendar system to use with `x` date data. * @default 'gregorian' @@ -10956,7 +10956,7 @@ export interface SurfaceData { /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; /** Sets the y coordinates. */ - y?: Datum[] | TypedArray; + y?: Datum[] | Datum[][] | TypedArray; /** * Sets the calendar system to use with `y` date data. * @default 'gregorian' @@ -10965,7 +10965,7 @@ export interface SurfaceData { /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ yhoverformat?: string; /** Sets the z coordinates. */ - z?: Datum[] | TypedArray; + z?: Datum[] | Datum[][] | TypedArray; /** * Sets the calendar system to use with `z` date data. * @default 'gregorian' @@ -10988,7 +10988,7 @@ export interface TableData { * Sets the cell value formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. * @default [] */ - format?: Datum[] | TypedArray; + format?: Datum[] | Datum[][] | TypedArray; /** * The height of cells. * @default 20 @@ -11003,14 +11003,14 @@ export interface TableData { * Cell values. `values[m][n]` represents the value of the `n`th point in column `m`, therefore the `values[m]` vector length for all columns must be the same (longer vectors will be truncated). Each value must be a finite number or a string. * @default [] */ - values?: Datum[] | TypedArray; + values?: Datum[] | Datum[][] | TypedArray; }; /** Specifies the rendered order of the data columns; for example, a value `2` at position `0` means that column index `0` in the data will be rendered as the third column, as columns have an index base of zero. */ - columnorder?: Datum[] | TypedArray; + columnorder?: Datum[] | Datum[][] | TypedArray; /** The width of columns expressed as a ratio. Columns fill the available width in proportion of their specified column widths. */ columnwidth?: number | number[]; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; domain?: Domain; header?: { /** @@ -11024,7 +11024,7 @@ export interface TableData { * Sets the cell value formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. * @default [] */ - format?: Datum[] | TypedArray; + format?: Datum[] | Datum[][] | TypedArray; /** * The height of cells. * @default 28 @@ -11039,7 +11039,7 @@ export interface TableData { * Header cell values. `values[m][n]` represents the value of the `n`th point in column `m`, therefore the `values[m]` vector length for all columns must be the same (longer vectors will be truncated). Each value must be a finite number or a string. * @default [] */ - values?: Datum[] | TypedArray; + values?: Datum[] | Datum[][] | TypedArray; }; /** * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. @@ -11048,7 +11048,7 @@ export interface TableData { hoverinfo?: 'x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'z' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; hoverlabel?: HoverLabel; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ - ids?: Datum[] | TypedArray; + ids?: Datum[] | Datum[][] | TypedArray; /** * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. * @default 'legend' @@ -11094,7 +11094,7 @@ export interface TreemapData { */ count?: 'branches' | 'leaves' | (string & {}); /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; domain?: Domain; /** * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. @@ -11112,11 +11112,11 @@ export interface TreemapData { /** Sets hover text elements associated with each sector. If a single string, the same string appears for all data points. If an array of string, the items are mapped in order of this trace's sectors. To be seen, trace `hoverinfo` must contain a *text* flag. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ - ids?: Datum[] | TypedArray; + ids?: Datum[] | Datum[][] | TypedArray; /** Sets the font used for `textinfo` lying inside the sector. */ insidetextfont?: FontArray; /** Sets the labels of each of the sectors. */ - labels?: Datum[] | TypedArray; + labels?: Datum[] | Datum[][] | TypedArray; /** * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. * @default 'legend' @@ -11162,7 +11162,7 @@ export interface TreemapData { coloraxis?: string; colorbar?: ColorBar; /** Sets the color of each sector of this trace. If not specified, the default trace color set is used to pick the sector colors. */ - colors?: Datum[] | TypedArray; + colors?: Datum[] | Datum[][] | TypedArray; /** * Sets the colorscale. Has an effect only if colors is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. * Setting this also sets: autocolorscale = false @@ -11230,7 +11230,7 @@ export interface TreemapData { /** Sets the font used for `textinfo` lying outside the sector. This option refers to the root of the hierarchy presented on top left corner of a treemap graph. Please note that if a hierarchy has multiple root nodes, this option won't have any effect and `insidetextfont` would be used. */ outsidetextfont?: FontArray; /** Sets the parent sectors for each of the sectors. Empty string items '' are understood to reference the root node in the hierarchy. If `ids` is filled, `parents` items are understood to be "ids" themselves. When `ids` is not set, plotly attempts to find matching items in `labels`, but beware they must be unique. */ - parents?: Datum[] | TypedArray; + parents?: Datum[] | Datum[][] | TypedArray; pathbar?: { /** * Determines which shape is used for edges between `barpath` labels. @@ -11263,7 +11263,7 @@ export interface TreemapData { sort?: boolean; stream?: _internal.Stream; /** Sets text elements associated with each sector. If trace `textinfo` contains a *text* flag, these elements will be seen on the chart. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ - text?: Datum[] | TypedArray; + text?: Datum[] | Datum[][] | TypedArray; /** Sets the font used for `textinfo`. */ textfont?: FontArray; /** Determines which trace information appear on the graph. */ @@ -11307,7 +11307,7 @@ export interface TreemapData { /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ uirevision?: any; /** Sets the values associated with each of the sectors. Use with `branchvalues` to determine how the values are summed. */ - values?: Datum[] | TypedArray; + values?: Datum[] | Datum[][] | TypedArray; /** * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). * @default true @@ -11340,7 +11340,7 @@ export interface ViolinData { width?: number; }; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; /** Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. */ fillcolor?: Color; /** @@ -11364,7 +11364,7 @@ export interface ViolinData { /** Same as `text`. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ - ids?: Datum[] | TypedArray; + ids?: Datum[] | Datum[][] | TypedArray; /** * Sets the amount of jitter in the sample points drawn. If *0*, the sample points align along the distribution axis. If *1*, the sample points are drawn in a random jitter of width equal to the width of the violins. * Range: [0, 1] @@ -11559,7 +11559,7 @@ export interface ViolinData { */ width?: number; /** Sets the x sample data or coordinates. See overview for more info. */ - x?: Datum[] | TypedArray; + x?: Datum[] | Datum[][] | TypedArray; /** Sets the x coordinate for single-box traces or the starting coordinate for multi-box traces set using q1/median/q3. See overview for more info. */ x0?: any; /** @@ -11570,7 +11570,7 @@ export interface ViolinData { /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; /** Sets the y sample data or coordinates. See overview for more info. */ - y?: Datum[] | TypedArray; + y?: Datum[] | Datum[][] | TypedArray; /** Sets the y coordinate for single-box traces or the starting coordinate for multi-box traces set using q1/median/q3. See overview for more info. */ y0?: any; /** @@ -11678,7 +11678,7 @@ export interface VolumeData { width?: number; }; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; /** * Determines whether or not normal smoothing is applied to the meshes, creating meshes with an angular, low-poly look via flat reflections. * @default true @@ -11700,7 +11700,7 @@ export interface VolumeData { /** Same as `text`. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ - ids?: Datum[] | TypedArray; + ids?: Datum[] | Datum[][] | TypedArray; /** Sets the maximum boundary for iso-surface plot. */ isomax?: number; /** Sets the minimum boundary for iso-surface plot. */ @@ -11788,7 +11788,7 @@ export interface VolumeData { * Specifies the location(s) of slices on the axis. When not specified slices would be created for all points of the axis x except start and end. * @default [] */ - locations?: Datum[] | TypedArray; + locations?: Datum[] | Datum[][] | TypedArray; /** * Determines whether or not slice planes about the x dimension are drawn. * @default false @@ -11806,7 +11806,7 @@ export interface VolumeData { * Specifies the location(s) of slices on the axis. When not specified slices would be created for all points of the axis y except start and end. * @default [] */ - locations?: Datum[] | TypedArray; + locations?: Datum[] | Datum[][] | TypedArray; /** * Determines whether or not slice planes about the y dimension are drawn. * @default false @@ -11824,7 +11824,7 @@ export interface VolumeData { * Specifies the location(s) of slices on the axis. When not specified slices would be created for all points of the axis z except start and end. * @default [] */ - locations?: Datum[] | TypedArray; + locations?: Datum[] | Datum[][] | TypedArray; /** * Determines whether or not slice planes about the z dimension are drawn. * @default false @@ -11878,7 +11878,7 @@ export interface VolumeData { /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ uirevision?: any; /** Sets the 4th dimension (value) of the vertices. */ - value?: Datum[] | TypedArray; + value?: Datum[] | Datum[][] | TypedArray; /** Sets the hover text formatting rule for `value` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ valuehoverformat?: string; /** @@ -11887,15 +11887,15 @@ export interface VolumeData { */ visible?: true | false | 'legendonly'; /** Sets the X coordinates of the vertices on X axis. */ - x?: Datum[] | TypedArray; + x?: Datum[] | Datum[][] | TypedArray; /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ xhoverformat?: string; /** Sets the Y coordinates of the vertices on Y axis. */ - y?: Datum[] | TypedArray; + y?: Datum[] | Datum[][] | TypedArray; /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ yhoverformat?: string; /** Sets the Z coordinates of the vertices on Z axis. */ - z?: Datum[] | TypedArray; + z?: Datum[] | Datum[][] | TypedArray; /** Sets the hover text formatting rule for `z` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`. */ zhoverformat?: string; } @@ -11946,7 +11946,7 @@ export interface WaterfallData { */ constraintext?: 'inside' | 'outside' | 'both' | 'none'; /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ - customdata?: Datum[] | TypedArray; + customdata?: Datum[] | Datum[][] | TypedArray; decreasing?: { marker?: { /** Sets the marker color of all decreasing values. */ @@ -11980,7 +11980,7 @@ export interface WaterfallData { /** Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ hovertext?: string | string[]; /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ - ids?: Datum[] | TypedArray; + ids?: Datum[] | Datum[][] | TypedArray; increasing?: { marker?: { /** Sets the marker color of all increasing values. */ @@ -12017,7 +12017,7 @@ export interface WaterfallData { * An array containing types of values. By default the values are considered as 'relative'. However; it is possible to use 'total' to compute the sums. Also 'absolute' could be applied to reset the computed total or to declare an initial value where needed. * @default [] */ - measure?: Datum[] | TypedArray; + measure?: Datum[] | Datum[][] | TypedArray; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ meta?: any; /** Sets the trace name. The trace name appears as the legend item and on hover. */ @@ -12090,7 +12090,7 @@ export interface WaterfallData { */ width?: number | number[]; /** Sets the x coordinates. */ - x?: Datum[] | TypedArray; + x?: Datum[] | Datum[][] | TypedArray; /** * Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step. * @default 0 @@ -12116,7 +12116,7 @@ export interface WaterfallData { */ xperiodalignment?: 'start' | 'middle' | 'end'; /** Sets the y coordinates. */ - y?: Datum[] | TypedArray; + y?: Datum[] | Datum[][] | TypedArray; /** * Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step. * @default 0 @@ -12458,7 +12458,7 @@ export interface LayoutAxis { */ calendar?: Calendar; /** Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`. */ - categoryarray?: Datum[] | TypedArray; + categoryarray?: Datum[] | Datum[][] | TypedArray; /** * Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. Set `categoryorder` to *total ascending* or *total descending* if order should be determined by the numerical order of the values. Similarly, the order can be determined by the min, max, sum, mean, geometric mean or median of all the values. * @default 'trace' @@ -12611,7 +12611,7 @@ export interface LayoutAxis { /** Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines. */ ticks?: 'outside' | 'inside' | ''; /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ - tickvals?: Datum[] | TypedArray; + tickvals?: Datum[] | Datum[][] | TypedArray; /** * Sets the tick width (in px). * Minimum: 0 @@ -12947,9 +12947,9 @@ export interface LayoutAxis { /** Sets a tick label suffix. */ ticksuffix?: string; /** Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`. */ - ticktext?: Datum[] | TypedArray; + ticktext?: Datum[] | Datum[][] | TypedArray; /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ - tickvals?: Datum[] | TypedArray; + tickvals?: Datum[] | Datum[][] | TypedArray; /** * Sets the tick width (in px). * @default 1 @@ -13172,7 +13172,7 @@ export interface MapLayout { fill?: ColorBar; line?: { /** Sets the length of dashes and gaps (map.layer.paint.line-dasharray). Has an effect only when `type` is set to *line*. */ - dash?: Datum[] | TypedArray; + dash?: Datum[] | Datum[][] | TypedArray; /** * Sets the line width (map.layer.paint.line-width). Has an effect only when `type` is set to *line*. * @default 2 @@ -13276,7 +13276,7 @@ export interface PolarLayout { */ autotypenumbers?: 'convert types' | 'strict'; /** Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`. */ - categoryarray?: Datum[] | TypedArray; + categoryarray?: Datum[] | Datum[][] | TypedArray; /** * Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. Set `categoryorder` to *total ascending* or *total descending* if order should be determined by the numerical order of the values. Similarly, the order can be determined by the min, max, sum, mean, geometric mean or median of all the values. * @default 'trace' @@ -13446,9 +13446,9 @@ export interface PolarLayout { /** Sets a tick label suffix. */ ticksuffix?: string; /** Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`. */ - ticktext?: Datum[] | TypedArray; + ticktext?: Datum[] | Datum[][] | TypedArray; /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ - tickvals?: Datum[] | TypedArray; + tickvals?: Datum[] | Datum[][] | TypedArray; /** * Sets the tick width (in px). * @default 1 @@ -13510,7 +13510,7 @@ export interface PolarLayout { */ calendar?: Calendar; /** Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`. */ - categoryarray?: Datum[] | TypedArray; + categoryarray?: Datum[] | Datum[][] | TypedArray; /** * Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. Set `categoryorder` to *total ascending* or *total descending* if order should be determined by the numerical order of the values. Similarly, the order can be determined by the min, max, sum, mean, geometric mean or median of all the values. * @default 'trace' @@ -13688,9 +13688,9 @@ export interface PolarLayout { /** Sets a tick label suffix. */ ticksuffix?: string; /** Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`. */ - ticktext?: Datum[] | TypedArray; + ticktext?: Datum[] | Datum[][] | TypedArray; /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ - tickvals?: Datum[] | TypedArray; + tickvals?: Datum[] | Datum[][] | TypedArray; /** * Sets the tick width (in px). * @default 1 @@ -14001,7 +14001,7 @@ export interface Scene { */ calendar?: Calendar; /** Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`. */ - categoryarray?: Datum[] | TypedArray; + categoryarray?: Datum[] | Datum[][] | TypedArray; /** * Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. Set `categoryorder` to *total ascending* or *total descending* if order should be determined by the numerical order of the values. Similarly, the order can be determined by the min, max, sum, mean, geometric mean or median of all the values. * @default 'trace' @@ -14186,9 +14186,9 @@ export interface Scene { /** Sets a tick label suffix. */ ticksuffix?: string; /** Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`. */ - ticktext?: Datum[] | TypedArray; + ticktext?: Datum[] | Datum[][] | TypedArray; /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ - tickvals?: Datum[] | TypedArray; + tickvals?: Datum[] | Datum[][] | TypedArray; /** * Sets the tick width (in px). * @default 1 @@ -14239,7 +14239,7 @@ export interface Scene { */ calendar?: Calendar; /** Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`. */ - categoryarray?: Datum[] | TypedArray; + categoryarray?: Datum[] | Datum[][] | TypedArray; /** * Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. Set `categoryorder` to *total ascending* or *total descending* if order should be determined by the numerical order of the values. Similarly, the order can be determined by the min, max, sum, mean, geometric mean or median of all the values. * @default 'trace' @@ -14424,9 +14424,9 @@ export interface Scene { /** Sets a tick label suffix. */ ticksuffix?: string; /** Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`. */ - ticktext?: Datum[] | TypedArray; + ticktext?: Datum[] | Datum[][] | TypedArray; /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ - tickvals?: Datum[] | TypedArray; + tickvals?: Datum[] | Datum[][] | TypedArray; /** * Sets the tick width (in px). * @default 1 @@ -14477,7 +14477,7 @@ export interface Scene { */ calendar?: Calendar; /** Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`. */ - categoryarray?: Datum[] | TypedArray; + categoryarray?: Datum[] | Datum[][] | TypedArray; /** * Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. Set `categoryorder` to *total ascending* or *total descending* if order should be determined by the numerical order of the values. Similarly, the order can be determined by the min, max, sum, mean, geometric mean or median of all the values. * @default 'trace' @@ -14662,9 +14662,9 @@ export interface Scene { /** Sets a tick label suffix. */ ticksuffix?: string; /** Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`. */ - ticktext?: Datum[] | TypedArray; + ticktext?: Datum[] | Datum[][] | TypedArray; /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ - tickvals?: Datum[] | TypedArray; + tickvals?: Datum[] | Datum[][] | TypedArray; /** * Sets the tick width (in px). * @default 1 @@ -14793,7 +14793,7 @@ export interface SmithLayout { /** Sets a tick label suffix. */ ticksuffix?: string; /** Sets the values at which ticks on this axis appear. Defaults to `realaxis.tickvals` plus the same as negatives and zero. */ - tickvals?: Datum[] | TypedArray; + tickvals?: Datum[] | Datum[][] | TypedArray; /** * Sets the tick width (in px). * @default 2 @@ -14911,7 +14911,7 @@ export interface SmithLayout { * Sets the values at which ticks on this axis appear. * @default [0.2,0.5,1,2,5] */ - tickvals?: Datum[] | TypedArray; + tickvals?: Datum[] | Datum[][] | TypedArray; /** * Sets the tick width (in px). * @default 2 @@ -15076,9 +15076,9 @@ export interface TernaryLayout { /** Sets a tick label suffix. */ ticksuffix?: string; /** Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`. */ - ticktext?: Datum[] | TypedArray; + ticktext?: Datum[] | Datum[][] | TypedArray; /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ - tickvals?: Datum[] | TypedArray; + tickvals?: Datum[] | Datum[][] | TypedArray; /** * Sets the tick width (in px). * @default 1 @@ -15238,9 +15238,9 @@ export interface TernaryLayout { /** Sets a tick label suffix. */ ticksuffix?: string; /** Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`. */ - ticktext?: Datum[] | TypedArray; + ticktext?: Datum[] | Datum[][] | TypedArray; /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ - tickvals?: Datum[] | TypedArray; + tickvals?: Datum[] | Datum[][] | TypedArray; /** * Sets the tick width (in px). * @default 1 @@ -15405,9 +15405,9 @@ export interface TernaryLayout { /** Sets a tick label suffix. */ ticksuffix?: string; /** Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`. */ - ticktext?: Datum[] | TypedArray; + ticktext?: Datum[] | Datum[][] | TypedArray; /** Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`. */ - tickvals?: Datum[] | TypedArray; + tickvals?: Datum[] | Datum[][] | TypedArray; /** * Sets the tick width (in px). * @default 1 diff --git a/tasks/generate_schema_types.mjs b/tasks/generate_schema_types.mjs index f07aca68665..1451c1d1010 100644 --- a/tasks/generate_schema_types.mjs +++ b/tasks/generate_schema_types.mjs @@ -346,7 +346,9 @@ function valTypeToTS(attr, attrPath) { switch (valType) { case 'data_array': - return 'Datum[] | TypedArray'; + // Loose union — `data_array` has no dimensionality in the schema. See the + // dimensionality TODO in src/types/README.md for the precise long-term fix. + return 'Datum[] | Datum[][] | TypedArray'; case 'number': case 'integer': { From 606ae93164efceed32d116ea3aa4615529d1e80c Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Fri, 5 Jun 2026 09:44:40 -0600 Subject: [PATCH 095/241] Rename PlotType to TraceType, add alias --- src/types/ARCHITECTURE.md | 10 +++++++--- src/types/GENERATOR.md | 14 ++++++++------ src/types/README.md | 2 +- src/types/core/data.d.ts | 3 ++- src/types/core/layout.d.ts | 4 ++-- src/types/generated/schema.d.ts | 5 ++++- tasks/generate_schema_types.mjs | 15 ++++++++++++--- 7 files changed, 36 insertions(+), 17 deletions(-) diff --git a/src/types/ARCHITECTURE.md b/src/types/ARCHITECTURE.md index 162227fe9c0..d75c7743fa5 100644 --- a/src/types/ARCHITECTURE.md +++ b/src/types/ARCHITECTURE.md @@ -45,7 +45,8 @@ The split: types**. - **`src/types/generated/schema.d.ts`** contains: - **Common enum aliases** discovered from the schema (Calendar, Dash, - AxisType, PatternShape, XRef, YRef, TransitionEasing, PlotType). + AxisType, PatternShape, XRef, YRef, TransitionEasing, TraceType — plus + a deprecated `PlotType` alias for back-compat). - **Shared sub-interfaces** extracted from repeated subtrees (Font, FontArray, ColorBar, HoverLabel, Domain, Pattern, TickFormatStops, LegendGroupTitle). @@ -138,7 +139,8 @@ test/plot-schema.json (runtime schema: traces + layout + animation + config) │ │ 0. Discover common enum aliases via COMMON_TYPE_ANCHORS │ (Calendar/Dash/AxisType/PatternShape/XRef/YRef/TransitionEasing, - │ plus PlotType derived from the trace-names list) + │ plus TraceType derived from the trace-names list, plus a deprecated + │ `PlotType` alias) │ 1. Fingerprint every container subtree across traces and layout │ 2. Extract shared interfaces (Font, ColorBar, HoverLabel, etc.). │ Inject Transition and AnimationFrameOpts as shared types @@ -156,7 +158,9 @@ test/plot-schema.json (runtime schema: traces + layout + animation + config) src/types/generated/schema.d.ts │ // Common enum aliases │ export type Calendar = 'chinese' | 'coptic' | ...; - │ export type PlotType = 'bar' | 'scatter' | ...; + │ export type TraceType = 'bar' | 'scatter' | ...; + │ /** @deprecated Renamed to TraceType. */ + │ export type PlotType = TraceType; │ // Shared interfaces (public) │ export interface Font { ... } │ export interface ColorBar { ... } diff --git a/src/types/GENERATOR.md b/src/types/GENERATOR.md index d25297bdd21..a72ae585d60 100644 --- a/src/types/GENERATOR.md +++ b/src/types/GENERATOR.md @@ -5,7 +5,7 @@ reads `plot-schema.json` and emits all the schema-derived TypeScript types into `src/types/generated/schema.d.ts`: - Common enum aliases (Calendar, Dash, AxisType, PatternShape, XRef, YRef, - TransitionEasing, PlotType) + TransitionEasing, TraceType — plus a deprecated `PlotType` alias) - Shared sub-interfaces (Font, ColorBar, HoverLabel, etc.) - Data interfaces for each trace type (BarData, ScatterData, IndicatorData, etc.) - Layout component interfaces (LayoutAxis, Legend, Scene, Annotation, etc.) @@ -43,8 +43,9 @@ const COMMON_TYPE_ANCHORS = [ When multiple sites match an anchor (e.g. 3D scene axes vs cartesian axes both have `xaxis.type` enumerations), the generator picks the largest value set — the superset — so the alias is always permissive enough. -`PlotType` is special-cased: derived from `Object.keys(schema.traces)` -rather than from an attribute. +`TraceType` is special-cased: derived from `Object.keys(schema.traces)` +rather than from an attribute. A deprecated `PlotType = TraceType` alias +is also emitted for back-compat with prior versions of the type surface. Each discovered alias is emitted as `export type Name = 'a' | 'b' | ...` and registered in `VALUES_TO_COMMON_TYPE` so subsequent emission of any @@ -184,7 +185,7 @@ descriptions are escaped to prevent prematurely closing the comment. src/types/generated/schema.d.ts ├── import { Color, ColorScale, Datum, MarkerSymbol, TypedArray } from '../lib/common' ├── Common enum types (Calendar, Dash, AxisType, PatternShape, XRef, YRef, -│ TransitionEasing, PlotType) +│ TransitionEasing, TraceType + deprecated PlotType alias) ├── Shared interfaces — public (Font, FontArray, ColorBar, HoverLabel, Domain, │ Pattern, TickFormatStops, LegendGroupTitle, ...) ├── Internal shared interfaces in `namespace _internal` (Marker, Line, @@ -242,9 +243,10 @@ you want a named alias for it: and rewrites matching enumerated attributes to reference the alias. 3. Run `npm run typecheck` to verify. -`PlotType` is a special case derived from `Object.keys(schema.traces)` +`TraceType` is a special case derived from `Object.keys(schema.traces)` rather than from an enumerated attribute; it doesn't follow the anchor -mechanism. +mechanism. A deprecated `PlotType = TraceType` alias is emitted alongside it +to keep older imports working. ### Adding a new layout container diff --git a/src/types/README.md b/src/types/README.md index caa294ee960..0c6a3293ba9 100644 --- a/src/types/README.md +++ b/src/types/README.md @@ -46,7 +46,7 @@ The following are **auto-generated from `plot-schema.json`** by `tasks/generate_schema_types.mjs`: - Common enum aliases (Calendar, Dash, AxisType, PatternShape, XRef, YRef, - TransitionEasing, PlotType) + TransitionEasing, TraceType — and a deprecated `PlotType` alias) - Data interfaces for each trace type (BarData, ScatterData, IndicatorData, etc.) - Layout component interfaces (LayoutAxis, Legend, Scene, Annotation, Shape, Slider, UpdateMenu, etc.) and the Layout interface itself diff --git a/src/types/core/data.d.ts b/src/types/core/data.d.ts index 9f2d78d5ca2..8d393a2e74c 100644 --- a/src/types/core/data.d.ts +++ b/src/types/core/data.d.ts @@ -58,13 +58,14 @@ import type { SunburstData, SurfaceData, TableData, + TraceType, TreemapData, ViolinData, VolumeData, WaterfallData } from '../generated/schema'; -export type { PlotType }; +export type { PlotType, TraceType }; /** * Union of every trace shape. All fields are optional via `Partial<…>` — diff --git a/src/types/core/layout.d.ts b/src/types/core/layout.d.ts index bf2a38140ca..f7f01c76096 100644 --- a/src/types/core/layout.d.ts +++ b/src/types/core/layout.d.ts @@ -9,7 +9,7 @@ */ import type { Layout } from '../generated/schema'; -import type { Data, PlotType } from './data'; +import type { Data, TraceType } from './data'; import type { PlotlyHTMLElement } from './events'; // --------------------------------------------------------------------------- @@ -142,7 +142,7 @@ export type ModeBarButtonAny = ModeBarDefaultButtons | ModeBarButton; */ export interface Template { /** Template trace defaults, keyed by trace type. */ - data?: { [type in PlotType]?: Data[] } | undefined; + data?: { [type in TraceType]?: Data[] } | undefined; /** Template layout defaults. */ layout?: Partial | undefined; } diff --git a/src/types/generated/schema.d.ts b/src/types/generated/schema.d.ts index 83c63b87c68..9e0cf5d04e6 100644 --- a/src/types/generated/schema.d.ts +++ b/src/types/generated/schema.d.ts @@ -23,7 +23,10 @@ export type PatternShape = '' | '/' | '\\' | 'x' | '-' | '|' | '+' | '.'; export type TransitionEasing = 'linear' | 'quad' | 'cubic' | 'sin' | 'exp' | 'circle' | 'elastic' | 'back' | 'bounce' | 'linear-in' | 'quad-in' | 'cubic-in' | 'sin-in' | 'exp-in' | 'circle-in' | 'elastic-in' | 'back-in' | 'bounce-in' | 'linear-out' | 'quad-out' | 'cubic-out' | 'sin-out' | 'exp-out' | 'circle-out' | 'elastic-out' | 'back-out' | 'bounce-out' | 'linear-in-out' | 'quad-in-out' | 'cubic-in-out' | 'sin-in-out' | 'exp-in-out' | 'circle-in-out' | 'elastic-in-out' | 'back-in-out' | 'bounce-in-out'; -export type PlotType = 'bar' | 'barpolar' | 'box' | 'candlestick' | 'carpet' | 'choropleth' | 'choroplethmap' | 'choroplethmapbox' | 'cone' | 'contour' | 'contourcarpet' | 'densitymap' | 'densitymapbox' | 'funnel' | 'funnelarea' | 'heatmap' | 'histogram' | 'histogram2d' | 'histogram2dcontour' | 'icicle' | 'image' | 'indicator' | 'isosurface' | 'mesh3d' | 'ohlc' | 'parcats' | 'parcoords' | 'pie' | 'sankey' | 'scatter' | 'scatter3d' | 'scattercarpet' | 'scattergeo' | 'scattergl' | 'scattermap' | 'scattermapbox' | 'scatterpolar' | 'scatterpolargl' | 'scattersmith' | 'scatterternary' | 'splom' | 'streamtube' | 'sunburst' | 'surface' | 'table' | 'treemap' | 'violin' | 'volume' | 'waterfall'; +export type TraceType = 'bar' | 'barpolar' | 'box' | 'candlestick' | 'carpet' | 'choropleth' | 'choroplethmap' | 'choroplethmapbox' | 'cone' | 'contour' | 'contourcarpet' | 'densitymap' | 'densitymapbox' | 'funnel' | 'funnelarea' | 'heatmap' | 'histogram' | 'histogram2d' | 'histogram2dcontour' | 'icicle' | 'image' | 'indicator' | 'isosurface' | 'mesh3d' | 'ohlc' | 'parcats' | 'parcoords' | 'pie' | 'sankey' | 'scatter' | 'scatter3d' | 'scattercarpet' | 'scattergeo' | 'scattergl' | 'scattermap' | 'scattermapbox' | 'scatterpolar' | 'scatterpolargl' | 'scattersmith' | 'scatterternary' | 'splom' | 'streamtube' | 'sunburst' | 'surface' | 'table' | 'treemap' | 'violin' | 'volume' | 'waterfall'; + +/** @deprecated Renamed to TraceType. */ +export type PlotType = TraceType; // --------------------------------------------------------------------------- // Shared interfaces — extracted from repeated attribute subtrees diff --git a/tasks/generate_schema_types.mjs b/tasks/generate_schema_types.mjs index 1451c1d1010..ffae329db51 100644 --- a/tasks/generate_schema_types.mjs +++ b/tasks/generate_schema_types.mjs @@ -81,7 +81,8 @@ function refName(name, inInternalNamespace) { /** * Walk the schema to find the canonical `values` array for each anchor in * `COMMON_TYPE_ANCHORS`. The first matching enumerated attribute wins. - * Also emits a `PlotType` alias derived from the trace-names list. + * Also emits a `TraceType` alias derived from the trace-names list, + * plus a deprecated `PlotType` alias for back-compat. * * Populates `VALUES_TO_COMMON_TYPE` and returns `Map` for * emitting type aliases. @@ -131,8 +132,9 @@ function discoverCommonTypes(schema) { VALUES_TO_COMMON_TYPE.set(JSON.stringify(best.slice().sort()), anchor.name); } - // PlotType — derived from the list of trace names, not from an attribute. - found.set('PlotType', { values: Object.keys(schema.traces).sort() }); + // TraceType — derived from the list of trace names, not from an attribute. + // (A deprecated `PlotType` alias is also emitted; see the emit loop.) + found.set('TraceType', { values: Object.keys(schema.traces).sort() }); return found; } @@ -1107,6 +1109,12 @@ export function generateSchemaTypes(schema, outputPath) { chunks.push(''); } + // Deprecated back-compat alias — kept so existing consumers importing + // `PlotType` continue to work. New code should use `TraceType`. + chunks.push('/** @deprecated Renamed to TraceType. */'); + chunks.push('export type PlotType = TraceType;'); + chunks.push(''); + // Emit shared interfaces — public ones at the top level, "internal" ones // wrapped in `export namespace _internal { ... }` so consumers reach them // via the namespace prefix rather than directly. @@ -1268,6 +1276,7 @@ export function generateSchemaTypes(schema, outputPath) { // falsely flag them as missing. const exportedNames = new Set(); for (const name of commonTypes.keys()) exportedNames.add(name); + exportedNames.add('PlotType'); for (const [name] of sharedList) { if (!INTERNAL_INTERFACES.has(name)) exportedNames.add(name); } From 41b43f0715bf8f1c33f2470a183ecb4bf947ab35 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Mon, 8 Jun 2026 10:08:04 -0600 Subject: [PATCH 096/241] Fix typo --- src/plots/mapbox/constants.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plots/mapbox/constants.js b/src/plots/mapbox/constants.js index d349438ecd1..8a8eeae0f76 100644 --- a/src/plots/mapbox/constants.js +++ b/src/plots/mapbox/constants.js @@ -213,7 +213,7 @@ module.exports = { multipleTokensErrorMsg: [ 'Set multiple mapbox access token across different mapbox subplot,', - 'using first token found as mapbox-gl does not allow multiple' + 'access tokens on the same page.' + 'using first token found as mapbox-gl does not allow multiple access tokens on the same page.' ].join('\n'), mapOnErrorMsg: 'Mapbox error.', From 66f4268ebbcfa6c75767d79ef2ddd993b94f3702 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Mon, 8 Jun 2026 10:40:56 -0600 Subject: [PATCH 097/241] Update type docs/generator/schema per removal of Chart Studio code --- src/types/ARCHITECTURE.md | 2 +- src/types/GENERATOR.md | 13 +++-- src/types/core/config.d.ts | 4 +- src/types/generated/schema.d.ts | 89 +-------------------------------- tasks/generate_schema_types.mjs | 17 +++---- 5 files changed, 18 insertions(+), 107 deletions(-) diff --git a/src/types/ARCHITECTURE.md b/src/types/ARCHITECTURE.md index d75c7743fa5..1522d8aefb9 100644 --- a/src/types/ARCHITECTURE.md +++ b/src/types/ARCHITECTURE.md @@ -61,7 +61,7 @@ The split: - **`_internal` namespace** wrapping types whose direct names would mislead consumers (Marker is scatter-only, Line is the marker outline) or are schema-internal helpers (AutoRangeOptions, - Lighting, Stream, ErrorY). Reachable as `_internal.Marker` etc. + Lighting, ErrorY). Reachable as `_internal.Marker` etc. but not at the top level. Generated from `plot-schema.json` by `tasks/generate_schema_types.mjs`. diff --git a/src/types/GENERATOR.md b/src/types/GENERATOR.md index a72ae585d60..018d11020b5 100644 --- a/src/types/GENERATOR.md +++ b/src/types/GENERATOR.md @@ -75,12 +75,11 @@ const SHARED_NAME_OVERRIDES = new Map([ ['legendgrouptitle', 'LegendGroupTitle'], ['error_y', 'ErrorY'], ['error_x', 'ErrorX'], - ['stream', 'Stream'], ]); ``` Names in `SHARED_NAME_OVERRIDES` bypass `MIN_PROPERTIES`, so small -containers like `Stream` (2 properties) can be opted in as shared. +containers like `ErrorX` / `ErrorY` (3 properties) can be opted in as shared. After fingerprinting completes, the generator **injects** the `transition` and `frame` subtrees from `schema.animation` as shared types (`Transition` @@ -133,11 +132,11 @@ without overrides (all fields are concrete booleans). `ConfigBase` is emitted from `schema.config` after registering Edits' fingerprint in `sharedTypes`, so `edits?: Edits` references the named -interface rather than re-inlining the subtree. Seven config fields whose +interface rather than re-inlining the subtree. Six config fields whose schema `valType` is `any` (`locales`, `modeBarButtons`, `modeBarButtonsToAdd`, `modeBarButtonsToRemove`, `setBackground`, -`showSources`, `toImageButtonOptions`) come through as `any`; the -hand-written `Config` in `core/config.d.ts` overrides them via +`toImageButtonOptions`) come through as `any`; the hand-written `Config` +in `core/config.d.ts` overrides them via `Omit & ConfigOverrides`. ### Phase 6: Internal namespace @@ -147,7 +146,7 @@ Names in `INTERNAL_INTERFACES` are wrapped in `export namespace _internal { ```js const INTERNAL_INTERFACES = new Set([ - 'AutoRangeOptions', 'ErrorY', 'Lighting', 'Line', 'Marker', 'Stream' + 'AutoRangeOptions', 'ErrorY', 'Lighting', 'Line', 'Marker' ]); ``` @@ -190,7 +189,7 @@ src/types/generated/schema.d.ts │ Pattern, TickFormatStops, LegendGroupTitle, ...) ├── Internal shared interfaces in `namespace _internal` (Marker, Line, │ AutoRangeOptions, -│ Lighting, Stream, ErrorY) +│ Lighting, ErrorY) ├── Trace interfaces (ScatterData, BarData, ... — 49 traces) ├── Layout component interfaces (LayoutAxis, Legend, Scene, Annotation, etc.) ├── Layout interface diff --git a/src/types/core/config.d.ts b/src/types/core/config.d.ts index c80c6afae7d..5d8e57e63c0 100644 --- a/src/types/core/config.d.ts +++ b/src/types/core/config.d.ts @@ -70,15 +70,13 @@ export interface ToImageButtonOptions { // --------------------------------------------------------------------------- /** - * Hand-written overrides for the seven `schema.config` fields whose + * Hand-written overrides for the six `schema.config` fields whose * `valType` is `any`. These accept functions or arbitrary-key maps that the * JSON schema fundamentally cannot describe, so they stay typed by hand. */ interface ConfigOverrides { /** Override the background color: a static color name, or a function called per-render. */ setBackground?: 'opaque' | 'transparent' | ((gd: PlotlyHTMLElement, bgColor: string) => void); - /** Source attribution shown at the bottom of the graph. */ - showSources?: false | ((gd: PlotlyHTMLElement) => void | Promise); /** Define fully custom mode bar buttons as nested array of button groups. */ modeBarButtons?: ModeBarButtonAny[][] | false; /** Add mode bar buttons using config objects or default-button names. */ diff --git a/src/types/generated/schema.d.ts b/src/types/generated/schema.d.ts index 9e0cf5d04e6..1e05da351d0 100644 --- a/src/types/generated/schema.d.ts +++ b/src/types/generated/schema.d.ts @@ -619,17 +619,6 @@ export namespace _internal { width?: number | number[]; } - export interface Stream { - /** - * Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot. - * @default 500 - * Range: [0, 10000] - */ - maxpoints?: number; - /** The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details. */ - token?: string; - } - export interface Marker { /** * Sets the marker angle in respect to `angleref`. @@ -955,7 +944,6 @@ export interface BarData { * @default true */ showlegend?: boolean; - stream?: _internal.Stream; /** Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ text?: string | string[]; /** @@ -1211,7 +1199,6 @@ export interface BarpolarData { * @default true */ showlegend?: boolean; - stream?: _internal.Stream; /** * Sets a reference between this trace's data coordinates and a polar subplot. If *polar* (the default value), the data refer to `layout.polar`. If *polar2*, the data refer to `layout.polar2`, and so on. * @default 'polar' @@ -1455,7 +1442,6 @@ export interface BoxData { * @default 'quartiles' */ sizemode?: 'quartiles' | 'sd'; - stream?: _internal.Stream; /** Sets the text elements associated with each sample value. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ text?: string | string[]; type?: 'box'; @@ -1670,7 +1656,6 @@ export interface CandlestickData { * @default true */ showlegend?: boolean; - stream?: _internal.Stream; /** Sets hover text elements associated with each sample point. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to this trace's sample points. */ text?: string | string[]; type?: 'candlestick'; @@ -2266,7 +2251,6 @@ export interface CarpetData { * Range: [0, 1] */ opacity?: number; - stream?: _internal.Stream; type?: 'carpet'; /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ uid?: string; @@ -2407,7 +2391,6 @@ export interface ChoroplethData { * @default true */ showscale?: boolean; - stream?: _internal.Stream; /** Sets the text elements associated with each location. */ text?: string | string[]; type?: 'choropleth'; @@ -2551,7 +2534,6 @@ export interface ChoroplethmapData { * @default true */ showscale?: boolean; - stream?: _internal.Stream; /** * Sets a reference between this trace's data coordinates and a map subplot. If *map* (the default value), the data refer to `layout.map`. If *map2*, the data refer to `layout.map2`, and so on. * @default 'map' @@ -2700,7 +2682,6 @@ export interface ChoroplethmapboxData { * @default true */ showscale?: boolean; - stream?: _internal.Stream; /** * mapbox subplots and traces are deprecated! Please consider switching to `map` subplots and traces. Learn more at: https://plotly.com/python/maplibre-migration/ as well as https://plotly.com/javascript/maplibre-migration/ Sets a reference between this trace's data coordinates and a mapbox subplot. If *mapbox* (the default value), the data refer to `layout.mapbox`. If *mapbox2*, the data refer to `layout.mapbox2`, and so on. * @default 'mapbox' @@ -2882,7 +2863,6 @@ export interface ConeData { * Minimum: 0 */ sizeref?: number; - stream?: _internal.Stream; /** Sets the text elements associated with the cones. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ text?: string | string[]; type?: 'cone'; @@ -3104,7 +3084,6 @@ export interface ContourData { * @default true */ showscale?: boolean; - stream?: _internal.Stream; /** Sets the text elements associated with each z value. */ text?: Datum[] | Datum[][] | TypedArray; /** For this trace it only has an effect if `coloring` is set to *heatmap*. Sets the text font. */ @@ -3428,7 +3407,6 @@ export interface ContourcarpetData { * @default true */ showscale?: boolean; - stream?: _internal.Stream; /** Sets the text elements associated with each z value. */ text?: Datum[] | Datum[][] | TypedArray; /** @@ -3570,7 +3548,6 @@ export interface DensitymapData { * @default true */ showscale?: boolean; - stream?: _internal.Stream; /** * Sets a reference between this trace's data coordinates and a map subplot. If *map* (the default value), the data refer to `layout.map`. If *map2*, the data refer to `layout.map2`, and so on. * @default 'map' @@ -3697,7 +3674,6 @@ export interface DensitymapboxData { * @default true */ showscale?: boolean; - stream?: _internal.Stream; /** * mapbox subplots and traces are deprecated! Please consider switching to `map` subplots and traces. Learn more at: https://plotly.com/python/maplibre-migration/ as well as https://plotly.com/javascript/maplibre-migration/ Sets a reference between this trace's data coordinates and a mapbox subplot. If *mapbox* (the default value), the data refer to `layout.mapbox`. If *mapbox2*, the data refer to `layout.mapbox2`, and so on. * @default 'mapbox' @@ -3906,7 +3882,6 @@ export interface FunnelData { * @default true */ showlegend?: boolean; - stream?: _internal.Stream; /** Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ text?: string | string[]; /** @@ -4093,7 +4068,6 @@ export interface FunnelareaData { * @default true */ showlegend?: boolean; - stream?: _internal.Stream; /** Sets text elements associated with each sector. If trace `textinfo` contains a *text* flag, these elements will be seen on the chart. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ text?: Datum[] | Datum[][] | TypedArray; /** Sets the font used for `textinfo`. */ @@ -4232,7 +4206,6 @@ export interface HeatmapData { * @default true */ showscale?: boolean; - stream?: _internal.Stream; /** Sets the text elements associated with each z value. */ text?: Datum[] | Datum[][] | TypedArray; /** Sets the text font. */ @@ -4626,7 +4599,6 @@ export interface HistogramData { * @default true */ showlegend?: boolean; - stream?: _internal.Stream; /** Sets hover text elements associated with each bar. If a single string, the same string appears over all bars. If an array of string, the items are mapped in order to the this trace's coordinates. */ text?: string | string[]; /** @@ -4824,7 +4796,6 @@ export interface Histogram2dData { * @default true */ showscale?: boolean; - stream?: _internal.Stream; /** Sets the text font. */ textfont?: Font; /** Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variable `z` */ @@ -5122,7 +5093,6 @@ export interface Histogram2dcontourData { * @default true */ showscale?: boolean; - stream?: _internal.Stream; /** For this trace it only has an effect if `coloring` is set to *heatmap*. Sets the text font. */ textfont?: Font; /** For this trace it only has an effect if `coloring` is set to *heatmap*. Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example "y: %{y}". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `x`, `y`, `z` and `text`. */ @@ -5369,7 +5339,6 @@ export interface IcicleData { * @default true */ sort?: boolean; - stream?: _internal.Stream; /** Sets text elements associated with each sector. If trace `textinfo` contains a *text* flag, these elements will be seen on the chart. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ text?: Datum[] | Datum[][] | TypedArray; /** Sets the font used for `textinfo`. */ @@ -5477,7 +5446,6 @@ export interface ImageData { opacity?: number; /** Specifies the data URI of the image to be visualized. The URI consists of "data:image/[][;base64\\]," */ source?: string; - stream?: _internal.Stream; /** Sets the text elements associated with each z value. */ text?: Datum[] | Datum[][] | TypedArray; type?: 'image'; @@ -5798,7 +5766,6 @@ export interface IndicatorData { /** Sets the value formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. */ valueformat?: string; }; - stream?: _internal.Stream; title?: { /** Sets the horizontal alignment of the title. It defaults to `center` except for bullet charts for which it defaults to right. */ align?: 'left' | 'center' | 'right'; @@ -6077,7 +6044,6 @@ export interface IsosurfaceData { */ show?: boolean; }; - stream?: _internal.Stream; surface?: { /** * Sets the number of iso-surfaces between minimum and maximum iso-values. By default this value is 2 meaning that only minimum and maximum surfaces would be drawn. @@ -6301,7 +6267,6 @@ export interface Mesh3dData { * @default true */ showscale?: boolean; - stream?: _internal.Stream; /** Sets the text elements associated with the vertices. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ text?: string | string[]; type?: 'mesh3d'; @@ -6489,7 +6454,6 @@ export interface OhlcData { * @default true */ showlegend?: boolean; - stream?: _internal.Stream; /** Sets hover text elements associated with each sample point. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to this trace's sample points. */ text?: string | string[]; /** @@ -6681,7 +6645,6 @@ export interface ParcatsData { * @default 'forward' */ sortpaths?: 'forward' | 'backward'; - stream?: _internal.Stream; /** Sets the font for the `category` labels. */ tickfont?: Font; type?: 'parcats'; @@ -6811,7 +6774,6 @@ export interface ParcoordsData { name?: string; /** Sets the font for the `dimension` range values. */ rangefont?: Font; - stream?: _internal.Stream; /** Sets the font for the `dimension` tick values. */ tickfont?: Font; type?: 'parcoords'; @@ -6957,7 +6919,6 @@ export interface PieData { * @default true */ sort?: boolean; - stream?: _internal.Stream; /** Sets text elements associated with each sector. If trace `textinfo` contains a *text* flag, these elements will be seen on the chart. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ text?: Datum[] | Datum[][] | TypedArray; /** Sets the font used for `textinfo`. */ @@ -7174,7 +7135,6 @@ export interface SankeyData { orientation?: 'v' | 'h'; /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ selectedpoints?: any; - stream?: _internal.Stream; /** Sets the font for node labels */ textfont?: Font; type?: 'sankey'; @@ -7414,7 +7374,6 @@ export interface ScatterData { stackgaps?: 'infer zero' | 'interpolate'; /** Set several scatter traces (on the same subplot) to the same stackgroup in order to add their y values (or their x values if `orientation` is *h*). If blank or omitted this trace will not be stacked. Stacking also turns `fill` on by default, using *tonexty* (*tonextx*) if `orientation` is *h* (*v*) and sets the default `mode` to *lines* irrespective of point count. You can only stack on a numeric (linear or log) axis. Traces in a `stackgroup` will only fill to (or be filled to) other traces in the same group. With multiple `stackgroup`s or some traces stacked and some not, if fill-linked traces are not already consecutive, the later ones will be pushed down in the drawing order. */ stackgroup?: string; - stream?: _internal.Stream; /** Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ text?: string | string[]; /** Sets the text font. */ @@ -7925,7 +7884,6 @@ export interface Scatter3dData { * @default true */ showlegend?: boolean; - stream?: _internal.Stream; /** * If *-1*, the scatter points are not fill with a surface If *0*, *1*, *2*, the scatter points are filled with a Delaunay surface about the x, y, z respectively. * @default -1 @@ -8142,7 +8100,6 @@ export interface ScattercarpetData { * @default true */ showlegend?: boolean; - stream?: _internal.Stream; /** Sets text elements associated with each (a,b) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the data points in (a,b). If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ text?: string | string[]; /** Sets the text font. */ @@ -8432,7 +8389,6 @@ export interface ScattergeoData { * @default true */ showlegend?: boolean; - stream?: _internal.Stream; /** Sets text elements associated with each (lon,lat) pair or item in `locations`. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) or `locations` coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ text?: string | string[]; /** Sets the text font. */ @@ -8644,7 +8600,6 @@ export interface ScatterglData { * @default true */ showlegend?: boolean; - stream?: _internal.Stream; /** Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ text?: string | string[]; /** Sets the text font. */ @@ -8986,7 +8941,6 @@ export interface ScattermapData { * @default true */ showlegend?: boolean; - stream?: _internal.Stream; /** * Sets a reference between this trace's data coordinates and a map subplot. If *map* (the default value), the data refer to `layout.map`. If *map2*, the data refer to `layout.map2`, and so on. * @default 'map' @@ -9247,7 +9201,6 @@ export interface ScattermapboxData { * @default true */ showlegend?: boolean; - stream?: _internal.Stream; /** * mapbox subplots and traces are deprecated! Please consider switching to `map` subplots and traces. Learn more at: https://plotly.com/python/maplibre-migration/ as well as https://plotly.com/javascript/maplibre-migration/ Sets a reference between this trace's data coordinates and a mapbox subplot. If *mapbox* (the default value), the data refer to `layout.mapbox`. If *mapbox2*, the data refer to `layout.mapbox2`, and so on. * @default 'mapbox' @@ -9437,7 +9390,6 @@ export interface ScatterpolarData { * @default true */ showlegend?: boolean; - stream?: _internal.Stream; /** * Sets a reference between this trace's data coordinates and a polar subplot. If *polar* (the default value), the data refer to `layout.polar`. If *polar2*, the data refer to `layout.polar2`, and so on. * @default 'polar' @@ -9616,7 +9568,6 @@ export interface ScatterpolarglData { * @default true */ showlegend?: boolean; - stream?: _internal.Stream; /** * Sets a reference between this trace's data coordinates and a polar subplot. If *polar* (the default value), the data refer to `layout.polar`. If *polar2*, the data refer to `layout.polar2`, and so on. * @default 'polar' @@ -9832,7 +9783,6 @@ export interface ScattersmithData { * @default true */ showlegend?: boolean; - stream?: _internal.Stream; /** * Sets a reference between this trace's data coordinates and a smith subplot. If *smith* (the default value), the data refer to `layout.smith`. If *smith2*, the data refer to `layout.smith2`, and so on. * @default 'smith' @@ -10018,7 +9968,6 @@ export interface ScatterternaryData { * @default true */ showlegend?: boolean; - stream?: _internal.Stream; /** * Sets a reference between this trace's data coordinates and a ternary subplot. If *ternary* (the default value), the data refer to `layout.ternary`. If *ternary2*, the data refer to `layout.ternary2`, and so on. * @default 'ternary' @@ -10188,7 +10137,6 @@ export interface SplomData { * @default true */ showupperhalf?: boolean; - stream?: _internal.Stream; /** Sets text elements associated with each (x,y) pair to appear on hover. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. */ text?: string | string[]; type?: 'splom'; @@ -10366,7 +10314,6 @@ export interface StreamtubeData { /** Sets the z components of the starting position of the streamtubes */ z?: Datum[] | Datum[][] | TypedArray; }; - stream?: _internal.Stream; /** Sets a text element associated with this trace. If trace `hoverinfo` contains a *text* flag, this text element will be seen in all hover labels. Note that streamtube traces do not support array `text` values. */ text?: string; type?: 'streamtube'; @@ -10547,7 +10494,6 @@ export interface SunburstData { * @default true */ sort?: boolean; - stream?: _internal.Stream; /** Sets text elements associated with each sector. If trace `textinfo` contains a *text* flag, these elements will be seen on the chart. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ text?: Datum[] | Datum[][] | TypedArray; /** Sets the font used for `textinfo`. */ @@ -10934,7 +10880,6 @@ export interface SurfaceData { * @default true */ showscale?: boolean; - stream?: _internal.Stream; /** Sets the surface color values, used for setting a color scale independent of `z`. */ surfacecolor?: Datum[] | Datum[][] | TypedArray; /** Sets the text elements associated with each z value. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ @@ -11072,7 +11017,6 @@ export interface TableData { meta?: any; /** Sets the trace name. The trace name appears as the legend item and on hover. */ name?: string; - stream?: _internal.Stream; type?: 'table'; /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ uid?: string; @@ -11264,7 +11208,6 @@ export interface TreemapData { * @default true */ sort?: boolean; - stream?: _internal.Stream; /** Sets text elements associated with each sector. If trace `textinfo` contains a *text* flag, these elements will be seen on the chart. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ text?: Datum[] | Datum[][] | TypedArray; /** Sets the font used for `textinfo`. */ @@ -11526,7 +11469,6 @@ export interface ViolinData { * @default 'soft' */ spanmode?: 'soft' | 'hard' | 'manual'; - stream?: _internal.Stream; /** Sets the text elements associated with each sample value. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag. */ text?: string | string[]; type?: 'violin'; @@ -11848,7 +11790,6 @@ export interface VolumeData { */ show?: boolean; }; - stream?: _internal.Stream; surface?: { /** * Sets the number of iso-surfaces between minimum and maximum iso-values. By default this value is 2 meaning that only minimum and maximum surfaces would be drawn. @@ -12046,7 +11987,6 @@ export interface WaterfallData { * @default true */ showlegend?: boolean; - stream?: _internal.Stream; /** Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels. */ text?: string | string[]; /** @@ -16404,7 +16344,7 @@ export interface Layout { * @default 'h' */ orientation?: 'v' | 'h'; - /** Determines which predefined modebar buttons to remove. Similar to `config.modeBarButtonsToRemove` option. This may include *autoScale2d*, *autoscale*, *editInChartStudio*, *editinchartstudio*, *hoverCompareCartesian*, *hovercompare*, *lasso*, *lasso2d*, *orbitRotation*, *orbitrotation*, *pan*, *pan2d*, *pan3d*, *reset*, *resetCameraDefault3d*, *resetCameraLastSave3d*, *resetGeo*, *resetSankeyGroup*, *resetScale2d*, *resetViewMap*, *resetViewMapbox*, *resetViews*, *resetcameradefault*, *resetcameralastsave*, *resetsankeygroup*, *resetscale*, *resetview*, *resetviews*, *select*, *select2d*, *sendDataToCloud*, *senddatatocloud*, *tableRotation*, *tablerotation*, *toImage*, *toggleHover*, *toggleSpikelines*, *togglehover*, *togglespikelines*, *toimage*, *zoom*, *zoom2d*, *zoom3d*, *zoomIn2d*, *zoomInGeo*, *zoomInMap*, *zoomInMapbox*, *zoomOut2d*, *zoomOutGeo*, *zoomOutMap*, *zoomOutMapbox*, *zoomin*, *zoomout*. */ + /** Determines which predefined modebar buttons to remove. Similar to `config.modeBarButtonsToRemove` option. This may include *autoScale2d*, *autoscale*, *hoverCompareCartesian*, *hovercompare*, *lasso*, *lasso2d*, *orbitRotation*, *orbitrotation*, *pan*, *pan2d*, *pan3d*, *reset*, *resetCameraDefault3d*, *resetCameraLastSave3d*, *resetGeo*, *resetSankeyGroup*, *resetScale2d*, *resetViewMap*, *resetViewMapbox*, *resetViews*, *resetcameradefault*, *resetcameralastsave*, *resetsankeygroup*, *resetscale*, *resetview*, *resetviews*, *select*, *select2d*, *sendDataToCloud*, *senddatatocloud*, *tableRotation*, *tablerotation*, *toImage*, *toggleHover*, *toggleSpikelines*, *togglehover*, *togglespikelines*, *toimage*, *zoom*, *zoom2d*, *zoom3d*, *zoomIn2d*, *zoomInGeo*, *zoomInMap*, *zoomInMapbox*, *zoomOut2d*, *zoomOutGeo*, *zoomOutMap*, *zoomOutMapbox*, *zoomin*, *zoomout*. */ remove?: string | string[]; /** Controls persistence of user-driven changes related to the modebar, including `hovermode`, `dragmode`, and `showspikes` at both the root level and inside subplots. Defaults to `layout.uirevision`. */ uirevision?: any; @@ -16799,11 +16739,6 @@ export interface ConfigBase { * Range: [0, 0.5] */ frameMargins?: number; - /** - * Sets the text appearing in the `showLink` link. - * @default 'Edit chart' - */ - linkText?: string; /** * Which localization should we use? Should be a string like 'en' or 'en-US'. * @default 'en-US' @@ -16849,7 +16784,7 @@ export interface ConfigBase { * Range: [1, 4] */ plotGlPixelRatio?: number; - /** When set it determines base URL for the 'Edit in Chart Studio' `showEditInChartStudio`/`showSendToCloud` mode bar button and the showLink/sendData on-graph link. To enable sending your data to Chart Studio Cloud, you need to set both `plotlyServerURL` to 'https://chart-studio.plotly.com' and also set `showSendToCloud` to true. */ + /** When set it determines base URL for the 'Edit in Chart Studio' `showSendToCloud` mode bar button. To enable sending your data to Chart Studio Cloud, you need to set both `plotlyServerURL` to 'https://chart-studio.plotly.com' and also set `showSendToCloud` to true. */ plotlyServerURL?: string; /** * Sets the length of the undo/redo queue. @@ -16867,11 +16802,6 @@ export interface ConfigBase { * @default 'gl3d+geo+map' */ scrollZoom?: 'cartesian' | 'gl3d' | 'geo' | 'mapbox' | 'map' | true | false | (string & {}); - /** - * If *showLink* is true, does it contain data just link to a Chart Studio Cloud file? - * @default true - */ - sendData?: boolean; /** * Set function to add the background color (i.e. `layout.paper_color`) to a different container. This function take the graph div as first argument and the current background color as second argument. Alternatively, set to string *opaque* to ensure there is white behind it. * @default 'transparent' @@ -16887,26 +16817,11 @@ export interface ConfigBase { * @default true */ showAxisRangeEntryBoxes?: boolean; - /** - * Same as `showSendToCloud`, but use a pencil icon instead of a floppy-disk. Note that if both `showSendToCloud` and `showEditInChartStudio` are turned, only `showEditInChartStudio` will be honored. - * @default false - */ - showEditInChartStudio?: boolean; - /** - * Determines whether a link to Chart Studio Cloud is displayed at the bottom right corner of resulting graphs. Use with `sendData` and `linkText`. - * @default false - */ - showLink?: boolean; /** * Should we include a ModeBar button, labeled "Edit in Chart Studio", that sends this chart to chart-studio.plotly.com (formerly plot.ly) or another plotly server as specified by `plotlyServerURL` for editing, export, etc? Prior to version 1.43.0 this button was included by default, now it is opt-in using this flag. Note that this button can (depending on `plotlyServerURL` being set) send your data to an external server. However that server does not persist your data until you arrive at the Chart Studio and explicitly click "Save". * @default false */ showSendToCloud?: boolean; - /** - * Adds a source-displaying function to show sources on the resulting graphs. - * @default false - */ - showSources?: any; /** * Determines whether or not tips are shown while interacting with the resulting graphs. * @default true diff --git a/tasks/generate_schema_types.mjs b/tasks/generate_schema_types.mjs index ffae329db51..c1eb993f5e5 100644 --- a/tasks/generate_schema_types.mjs +++ b/tasks/generate_schema_types.mjs @@ -62,15 +62,15 @@ const ATTR_NAME_OVERRIDES = new Map([['marker.symbol', 'MarkerSymbol']]); * Shared interfaces wrapped inside `export namespace _internal { ... }`. * * These are publicly importable but the namespace path signals they are - * either schema-internal helpers (AutoRangeOptions, Lighting, Stream), - * superseded by a hand-written alternative (ErrorY → ErrorBar), or have - * names that would mislead if surfaced directly (Marker is scatter-only, - * Line is the marker outline rather than the trace line). + * either schema-internal helpers (AutoRangeOptions, Lighting), superseded + * by a hand-written alternative (ErrorY → ErrorBar), or have names that + * would mislead if surfaced directly (Marker is scatter-only, Line is + * the marker outline rather than the trace line). * * Inside the namespace, sibling references are bare (`line?: Line`); outside, * references are prefixed (`marker?: _internal.Marker`) via `refName()`. */ -const INTERNAL_INTERFACES = new Set(['AutoRangeOptions', 'ErrorY', 'Lighting', 'Line', 'Marker', 'Stream']); +const INTERNAL_INTERFACES = new Set(['AutoRangeOptions', 'ErrorY', 'Lighting', 'Line', 'Marker']); function refName(name, inInternalNamespace) { if (inInternalNamespace) return name; @@ -155,8 +155,7 @@ const SHARED_NAME_OVERRIDES = new Map([ ['autorangeoptions', 'AutoRangeOptions'], ['legendgrouptitle', 'LegendGroupTitle'], ['error_y', 'ErrorY'], - ['error_x', 'ErrorX'], - ['stream', 'Stream'] + ['error_x', 'ErrorX'] ]); /** Interface names for layout subplot containers (_isSubplotObj). */ @@ -1238,8 +1237,8 @@ export function generateSchemaTypes(schema, outputPath) { if (schema.config) { // Generate the schema-derived Config building block. Fields whose // schema valType is `any` (locales, modeBarButtons, setBackground, - // showSources, toImageButtonOptions, ...) come through as `any` and - // are overridden with precise types in `core/config.d.ts`'s `Config` + // toImageButtonOptions, ...) come through as `any` and are + // overridden with precise types in `core/config.d.ts`'s `Config` // via Omit/intersection. The schema is fundamentally unable to // describe functions or arbitrary-key maps, so those overrides are // permanent. From 6d907c154c61cac36bf807ca0c04a3de10bc9bf9 Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Mon, 8 Jun 2026 15:28:10 -0400 Subject: [PATCH 098/241] use plot title for download filename, and change fallback to plot-image rather than newplot --- src/lib/index.js | 2 ++ src/lib/slugify.js | 53 ++++++++++++++++++++++++++++++++++++++++ src/snapshot/download.js | 7 +++++- src/snapshot/helpers.js | 17 +++++++++++++ 4 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 src/lib/slugify.js diff --git a/src/lib/index.js b/src/lib/index.js index d898a526140..7685064bf14 100644 --- a/src/lib/index.js +++ b/src/lib/index.js @@ -208,6 +208,8 @@ lib.increment = require('./increment'); lib.cleanNumber = require('./clean_number'); +lib.slugify = require('./slugify'); + lib.ensureNumber = function ensureNumber(v) { if (!isNumeric(v)) return BADNUM; v = Number(v); diff --git a/src/lib/slugify.js b/src/lib/slugify.js new file mode 100644 index 00000000000..16090e8f1c9 --- /dev/null +++ b/src/lib/slugify.js @@ -0,0 +1,53 @@ +'use strict'; + +// precompile for speed +var HTML_TAGS_REGEX = /<[^>]*>/g; // anything contained in < > tags +var FORBIDDEN_CHARS_REGEX = /[\\/:*?"<>|$`'(){}[\],]/g; // Characters in the set: \/:*?"<>|$`'(){}[], +var UNICODE_REPLACEMENT_CHAR_REGEX = /�/g; // U+FFFD, the Unicode replacement character +var WHITESPACE_REGEX = /\s+/g; + +var WORD_SEP_CHAR = '-'; // character used to separate words (replaces whitespace) +var _WORD_SEP_ESCAPED = WORD_SEP_CHAR.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); +var WORD_SEP_CHARS_REGEX = new RegExp(_WORD_SEP_ESCAPED + '{3,}', 'g'); // three or more consecutive word separator chars +var TRAILING_WORD_SEP_CHAR_REGEX = new RegExp(_WORD_SEP_ESCAPED + '$', 'g'); // trailing word separator char + +// Safely under the limit for most filesystems +var DEFAULT_MAX_LEN = 60; + +/** + * Coerce a string to well-formed UTF-16, by replacing any unpaired surrogates + * with the replacement character U+FFFD. + * + * Uses the native String.prototype.toWellFormed (ES2024) when available, and + * otherwise falls back to TextEncoder/TextDecoder, which has the same effect. + */ +function toWellFormed(str) { + if(typeof str.toWellFormed === 'function') return str.toWellFormed(); + return new TextDecoder().decode(new TextEncoder().encode(str)); +} + +/** + * slugify: turn an arbitrary string into a lowercase, hyphenated, + * filesystem-safe token (e.g. for use as a filename). Whitespace is replaced + * with hyphens, and Unicode letters (accents, CJK, etc.) are preserved. + * Returns a valid Unicode string. + * + * @param {string} str + * @param {number} [maxLen] max length in code points (default 60) + * @return {string} + */ +module.exports = function slugify(str, maxLen = DEFAULT_MAX_LEN) { + var slug = toWellFormed(str ?? '') // Guarantee well-formed Unicode text + .replace(UNICODE_REPLACEMENT_CHAR_REGEX, '') // Drop Unicode replacement characters left by previous step + .replace(HTML_TAGS_REGEX, ' ') // Remove anything contained in < > tags, such as
(replace with a space) + .replace(FORBIDDEN_CHARS_REGEX, '') // Remove forbidden filename characters + .toLowerCase() // Lowercase everything + .trim() // Strip leading/trailing whitespace + .replace(WHITESPACE_REGEX, WORD_SEP_CHAR) // Replace any remaining whitespace with the word separator char + .replace(WORD_SEP_CHARS_REGEX, WORD_SEP_CHAR); // Replace multiple consecutive word separator chars with a single one + + if (slug.length <= maxLen) return slug; + // Apply maxLen to the resulting string. Use Array.from().slice() instead of String.prototype.split() + // to avoid splitting in the middle of a surrogate pair. + return Array.from(slug).slice(0, maxLen).join('').replace(TRAILING_WORD_SEP_CHAR_REGEX, ''); +}; diff --git a/src/snapshot/download.js b/src/snapshot/download.js index 95c97fe7441..6d319d5fae1 100644 --- a/src/snapshot/download.js +++ b/src/snapshot/download.js @@ -35,7 +35,12 @@ function downloadImage(gd, opts) { if(_gd) _gd._snapshotInProgress = true; var promise = toImage(gd, opts); - var filename = opts.filename || gd.fn || 'newplot'; + var potentialFilename = opts.filename || gd.fn; + if (!potentialFilename) { + potentialFilename = Lib.slugify(helpers.getPlotTitle(gd), 40); + } + + var filename = potentialFilename || 'plot-image'; filename += '.' + opts.format.replace('-', '.'); promise.then(function(result) { diff --git a/src/snapshot/helpers.js b/src/snapshot/helpers.js index 3f50eb1a2d2..98b5d03c911 100644 --- a/src/snapshot/helpers.js +++ b/src/snapshot/helpers.js @@ -51,6 +51,23 @@ exports.octetStream = function(s) { document.location.href = 'data:application/octet-stream' + s; }; +/** + * Get the resolved plot title to derive a filename from, or undefined if there + * is none. We try to read _fullLayout, which reflects the title after applying + * layout.template, but since title.text falls back to the editable-mode placeholder + * when unset, a value equal to that placeholder is treated as no title. + * For an un-rendered figure object (no _fullLayout) we fall back to the input layout + * (gd.layout). + */ +exports.getPlotTitle = function(gd) { + var fullLayout = gd._fullLayout; + if(fullLayout) { + var title = fullLayout.title?.text; + return title === fullLayout._dfltTitle?.plot ? undefined : title; + } + return gd.layout?.title?.text; +}; + // Taken from https://bl.ocks.org/nolanlawson/0eac306e4dac2114c752 function fixBinary(b) { var len = b.length; From 5c96fa4bfb7ed6b4b55759c960e588895e0d467d Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Mon, 8 Jun 2026 15:28:38 -0400 Subject: [PATCH 099/241] add tests --- test/jasmine/tests/download_test.js | 61 +++++++++++++++++++++++++++++ test/jasmine/tests/lib_test.js | 47 ++++++++++++++++++++++ 2 files changed, 108 insertions(+) diff --git a/test/jasmine/tests/download_test.js b/test/jasmine/tests/download_test.js index 02466695809..6749e731e21 100644 --- a/test/jasmine/tests/download_test.js +++ b/test/jasmine/tests/download_test.js @@ -86,6 +86,67 @@ describe('Plotly.downloadImage', function() { }) .then(done, done.fail); }, LONG_TIMEOUT_INTERVAL); + + describe('default filename (derived from the plot title)', function() { + // download with no explicit `filename`, so the name is derived from the title + function downloadDefault(layout) { + return Plotly.newPlot(gd, [{y: [1, 2, 1]}], layout).then(function() { + return Plotly.downloadImage(gd, {format: 'png', height: 300, width: 300}); + }); + } + + it('slugifies the plot title into the filename', function(done) { + downloadDefault({title: {text: 'My Awesome Plot'}}) + .then(function(filename) { + expect(filename).toBe('my-awesome-plot.png'); + }) + .then(done, done.fail); + }, LONG_TIMEOUT_INTERVAL); + + it('uses a title supplied via layout.template', function(done) { + // the template title only appears in _fullLayout, not the input layout + downloadDefault({template: {layout: {title: {text: 'Title From Template'}}}}) + .then(function(filename) { + expect(filename).toBe('title-from-template.png'); + }) + .then(done, done.fail); + }, LONG_TIMEOUT_INTERVAL); + + it('strips forbidden characters from the title', function(done) { + downloadDefault({title: {text: 'Revenue, Costs & "Profit" (2024)'}}) + .then(function(filename) { + expect(filename).toBe('revenue-costs-&-profit-2024.png'); + }) + .then(done, done.fail); + }, LONG_TIMEOUT_INTERVAL); + + it('caps the title-derived name at 40 code points', function(done) { + downloadDefault({title: {text: 'A Very Long Plot Title That Exceeds The Forty Character Maximum Limit'}}) + .then(function(filename) { + expect(filename).toBe('a-very-long-plot-title-that-exceeds-the.png'); + }) + .then(done, done.fail); + }, LONG_TIMEOUT_INTERVAL); + + it('falls back to plot-image as filename when there is no title', function(done) { + downloadDefault({}) + .then(function(filename) { + expect(filename).toBe('plot-image.png'); + }) + .then(done, done.fail); + }, LONG_TIMEOUT_INTERVAL); + + it('does not use the editable-mode placeholder as the filename', function(done) { + // _fullLayout.title.text defaults to the "Click to enter Plot title" + // placeholder; the filename must come from the input layout instead + downloadDefault({}) + .then(function(filename) { + expect(gd._fullLayout.title.text).toBe('Click to enter Plot title'); + expect(filename).toBe('plot-image.png'); + }) + .then(done, done.fail); + }, LONG_TIMEOUT_INTERVAL); + }); }); function downloadTest(gd, format) { diff --git a/test/jasmine/tests/lib_test.js b/test/jasmine/tests/lib_test.js index fe1f6b71f0c..3a451d4f571 100644 --- a/test/jasmine/tests/lib_test.js +++ b/test/jasmine/tests/lib_test.js @@ -1941,6 +1941,53 @@ describe('Test lib.js:', function () { }); }); + describe('slugify', function () { + it('lowercases, trims, and hyphenates whitespace', function () { + expect(Lib.slugify(' Hello World ')).toBe('hello-world'); + expect(Lib.slugify('Multiple Spaces\tand\ntabs')).toBe('multiple-spaces-and-tabs'); + }); + + it('strips html/pseudo-html tags', function () { + expect(Lib.slugify('Revenue by year')).toBe('revenue-by-year'); + }); + + it('removes illegal filename characters', function () { + expect(Lib.slugify('a/b\\c:d*e?f"g|h$i')).toBe('abcdefghi'); + }); + + it('preserves unicode letters (accents, CJK, emoji)', function () { + expect(Lib.slugify('Café 北京')).toBe('café-北京'); + expect(Lib.slugify('pair😀')).toBe('pair😀'); + }); + + it('drops unpaired surrogates so the result is valid UTF-8', function () { + expect(Lib.slugify('lone\uD800surrogate')).toBe('lonesurrogate'); + expect(Lib.slugify('trail\uDC00ing')).toBe('trailing'); + }); + + it('handles null/undefined/empty input', function () { + expect(Lib.slugify(undefined)).toBe(''); + expect(Lib.slugify(null)).toBe(''); + expect(Lib.slugify('')).toBe(''); + }); + + it('caps length at 60 code points by default', function () { + expect(Lib.slugify('a'.repeat(100))).toBe('a'.repeat(60)); + expect(Lib.slugify('a'.repeat(60)).length).toBe(60); + expect(Lib.slugify('short')).toBe('short'); + }); + + it('respects an explicit maxLen and strips a dangling hyphen from the cut', function () { + expect(Lib.slugify('hello world foo bar', 11)).toBe('hello-world'); + expect(Lib.slugify('hello world', 6)).toBe('hello'); + }); + + it('never splits a surrogate pair when capping length', function () { + // each emoji is one code point (a surrogate pair); the cap counts code points + expect(Lib.slugify('😀😀😀😀😀', 3)).toBe('😀😀😀'); + }); + }); + describe('isPlotDiv', function () { it('should work on plain objects', function () { expect(Lib.isPlotDiv({})).toBe(false); From 7cf0e1fda945d2fe75fecf76b2fa33b7d4edcdd7 Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Mon, 8 Jun 2026 17:01:47 -0400 Subject: [PATCH 100/241] slightly change notifier wording for image download --- src/components/modebar/buttons.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/modebar/buttons.js b/src/components/modebar/buttons.js index 09b0dc0003d..0de11f3e9ec 100644 --- a/src/components/modebar/buttons.js +++ b/src/components/modebar/buttons.js @@ -49,7 +49,7 @@ modeBarButtons.toImage = { var toImageButtonOptions = gd._context.toImageButtonOptions; var opts = {format: toImageButtonOptions.format || 'png'}; - Lib.notifier(_(gd, 'Taking snapshot - this may take a few seconds'), 'long', gd); + Lib.notifier(_(gd, 'Capturing image - this may take a few seconds'), 'long', gd); ['filename', 'width', 'height', 'scale'].forEach(function(key) { if(key in toImageButtonOptions) { @@ -59,10 +59,10 @@ modeBarButtons.toImage = { Registry.call('downloadImage', gd, opts) .then(function(filename) { - Lib.notifier(_(gd, 'Snapshot succeeded') + ' - ' + filename, 'long', gd); + Lib.notifier(_(gd, 'Image download succeeded') + ' - ' + filename, 'long', gd); }) .catch(function() { - Lib.notifier(_(gd, 'Sorry, there was a problem downloading your snapshot!'), 'long', gd); + Lib.notifier(_(gd, 'Sorry, there was a problem downloading your image!'), 'long', gd); }); } }; From 1d8668a71483c087fa4fe7a73244b7d96be3e453 Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Mon, 8 Jun 2026 17:09:30 -0400 Subject: [PATCH 101/241] ignore tex titles for filename --- src/lib/svg_text_utils.js | 16 +++++++++++++++- src/snapshot/download.js | 8 +++++++- test/jasmine/tests/download_test.js | 8 ++++++++ 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/src/lib/svg_text_utils.js b/src/lib/svg_text_utils.js index 0b37345312b..7850a3c889e 100644 --- a/src/lib/svg_text_utils.js +++ b/src/lib/svg_text_utils.js @@ -13,6 +13,20 @@ var LINE_SPACING = require('../constants/alignment').LINE_SPACING; var FIND_TEX = /([^$]*)([$]+[^$]*[$]+)([^$]*)/; +/** +* Checks whether the given string contains LaTeX markup +* (delimited by a pair of $ signs) and returns the match array if so. +* +* @param {string} str: the string to check for tex +* @return {?Array} the regex match array (truthy) if the string contains tex, +* otherwise null (for an empty/missing string or when no tex delimiters are found). +*/ +function matchTex(str) { + if (!str) return null; + return str.match(FIND_TEX); +}; +exports.matchTex = matchTex; + exports.convertToTspans = function(_context, gd, _callback) { var str = _context.text(); @@ -21,7 +35,7 @@ exports.convertToTspans = function(_context, gd, _callback) { var tex = (!_context.attr('data-notex')) && gd && gd._context.typesetMath && (typeof MathJax !== 'undefined') && - str.match(FIND_TEX); + matchTex(str); var parent = d3.select(_context.node().parentNode); if(parent.empty()) return; diff --git a/src/snapshot/download.js b/src/snapshot/download.js index 6d319d5fae1..292f7075950 100644 --- a/src/snapshot/download.js +++ b/src/snapshot/download.js @@ -1,6 +1,7 @@ 'use strict'; var Lib = require('../lib'); +var svgTextUtils = require('../lib/svg_text_utils'); var toImage = require('../plot_api/to_image'); @@ -37,7 +38,12 @@ function downloadImage(gd, opts) { var potentialFilename = opts.filename || gd.fn; if (!potentialFilename) { - potentialFilename = Lib.slugify(helpers.getPlotTitle(gd), 40); + const plotTitle = helpers.getPlotTitle(gd); + // Trying to slugify a LaTeX string can result in weird ugly filenames, + // so ignore the title entirely if it contains LaTeX markup + if (!svgTextUtils.matchTex(plotTitle)) { + potentialFilename = Lib.slugify(plotTitle, 40); + } } var filename = potentialFilename || 'plot-image'; diff --git a/test/jasmine/tests/download_test.js b/test/jasmine/tests/download_test.js index 6749e731e21..4dc0f469d3d 100644 --- a/test/jasmine/tests/download_test.js +++ b/test/jasmine/tests/download_test.js @@ -146,6 +146,14 @@ describe('Plotly.downloadImage', function() { }) .then(done, done.fail); }, LONG_TIMEOUT_INTERVAL); + + it('ignores title if it contains LaTeX markup', function(done) { + downloadDefault({title: {text: '$\\alpha$ + $\\beta$'}}) + .then(function(filename) { + expect(filename).toBe('plot-image.png'); + }) + .then(done, done.fail); + }, LONG_TIMEOUT_INTERVAL); }); }); From 068e23576dde066f14c995772a63bf334f37bd97 Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Mon, 8 Jun 2026 17:41:14 -0400 Subject: [PATCH 102/241] remove src attr references --- src/plot_api/helpers.js | 2 +- src/plot_api/plot_api.js | 4 ++-- src/plot_api/plot_schema.js | 19 +++---------------- src/plot_api/to_image.js | 2 +- src/plots/plots.js | 28 +++------------------------- test/jasmine/tests/plots_test.js | 4 ++-- 6 files changed, 12 insertions(+), 47 deletions(-) diff --git a/src/plot_api/helpers.js b/src/plot_api/helpers.js index 33da6cbfef1..ed46d174085 100644 --- a/src/plot_api/helpers.js +++ b/src/plot_api/helpers.js @@ -354,7 +354,7 @@ function emptyContainer(outer, innerStr) { // swap all the data and data attributes associated with x and y exports.swapXYData = function (trace) { var i; - Lib.swapAttrs(trace, ['?', '?0', 'd?', '?bins', 'nbins?', 'autobin?', '?src', 'error_?']); + Lib.swapAttrs(trace, ['?', '?0', 'd?', '?bins', 'nbins?', 'autobin?', 'error_?']); if (Array.isArray(trace.z) && Array.isArray(trace.z[0])) { if (trace.transpose) delete trace.transpose; else trace.transpose = true; diff --git a/src/plot_api/plot_api.js b/src/plot_api/plot_api.js index d072afd24bd..c3cb8ad424c 100644 --- a/src/plot_api/plot_api.js +++ b/src/plot_api/plot_api.js @@ -1564,9 +1564,9 @@ function _restyle(gd, aobj, traces) { labelsTo = 'y'; valuesTo = 'x'; } - Lib.swapAttrs(cont, ['?', '?src'], 'labels', labelsTo); + Lib.swapAttrs(cont, ['?'], 'labels', labelsTo); Lib.swapAttrs(cont, ['d?', '?0'], 'label', labelsTo); - Lib.swapAttrs(cont, ['?', '?src'], 'values', valuesTo); + Lib.swapAttrs(cont, ['?'], 'values', valuesTo); if (oldVal === 'pie' || oldVal === 'funnelarea') { nestedProperty(cont, 'marker.color').set(nestedProperty(cont, 'marker.colors').get()); diff --git a/src/plot_api/plot_schema.js b/src/plot_api/plot_schema.js index 56cf2901a56..f7aa6b7a9aa 100644 --- a/src/plot_api/plot_schema.js +++ b/src/plot_api/plot_schema.js @@ -539,29 +539,16 @@ function getFramesAttributes() { } function formatAttributes(attrs) { - mergeValTypeAndRole(attrs); + setRole(attrs); formatArrayContainers(attrs); stringify(attrs); return attrs; } -function mergeValTypeAndRole(attrs) { - function makeSrcAttr(attrName) { - return { - valType: 'string', - description: 'Sets the source reference on Chart Studio Cloud for `' + attrName + '`.', - editType: 'none' - }; - } - +function setRole(attrs) { function callback(attr, attrName, attrs) { - if(exports.isValObject(attr)) { - if(attr.arrayOk === true || attr.valType === 'data_array') { - // all 'arrayOk' and 'data_array' attrs have a corresponding 'src' attr - attrs[attrName + 'src'] = makeSrcAttr(attrName); - } - } else if(isPlainObject(attr)) { + if(!exports.isValObject(attr) && isPlainObject(attr)) { // all attrs container objects get role 'object' attr.role = 'object'; } diff --git a/src/plot_api/to_image.js b/src/plot_api/to_image.js index 97c752b4b0c..bf6bec98f39 100644 --- a/src/plot_api/to_image.js +++ b/src/plot_api/to_image.js @@ -170,7 +170,7 @@ function toImage(gd, opts) { } if(format === 'full-json') { - var json = plots.graphJson(clonedGd, false, 'keepdata', 'object', true, true); + var json = plots.graphJson(clonedGd, false, 'object', true, true); json.version = version; json = JSON.stringify(json); cleanup(); diff --git a/src/plots/plots.js b/src/plots/plots.js index 08d1bf615bb..fb8769600c8 100644 --- a/src/plots/plots.js +++ b/src/plots/plots.js @@ -139,7 +139,7 @@ plots.sendDataToCloud = function(gd) { name: 'data' }); - hiddenformInput.node().value = plots.graphJson(gd, false, 'keepdata'); + hiddenformInput.node().value = plots.graphJson(gd, false); hiddenform.node().submit(); hiddenformDiv.remove(); @@ -1964,7 +1964,7 @@ plots.didMarginChange = function(margin0, margin1) { /** * JSONify the graph data and layout * - * This function needs to recurse because some src can be inside + * This function needs to recurse because some objects can be inside * sub-objects. * * It also strips out functions and private (starts with _) elements. @@ -1973,18 +1973,12 @@ plots.didMarginChange = function(margin0, margin1) { * * @param gd The graphDiv * @param {Boolean} dataonly If true, don't return layout. - * @param {'keepref'|'keepdata'|'keepall'} [mode='keepref'] Filter what's kept - * keepref: remove data for which there's a src present - * eg if there's xsrc present (and xsrc is well-formed, - * ie has : and some chars before it), strip out x - * keepdata: remove all src tags, don't remove the data itself - * keepall: keep data and src * @param {String} output If you specify 'object', the result will not be stringified * @param {Boolean} useDefaults If truthy, use _fullLayout and _fullData * @param {Boolean} includeConfig If truthy, include _context * @returns {Object|String} */ -plots.graphJson = function(gd, dataonly, mode, output, useDefaults, includeConfig) { +plots.graphJson = function(gd, dataonly, output, useDefaults, includeConfig) { // if the defaults aren't supplied yet, we need to do that... if((useDefaults && dataonly && !gd._fullData) || (useDefaults && !dataonly && !gd._fullLayout)) { @@ -2001,7 +1995,6 @@ plots.graphJson = function(gd, dataonly, mode, output, useDefaults, includeConfi } if(Lib.isPlainObject(d)) { var o = {}; - var src; Object.keys(d).sort().forEach(function(v) { // remove private elements and functions // _ is for private, [ is a mistake ie [object Object] @@ -2013,21 +2006,6 @@ plots.graphJson = function(gd, dataonly, mode, output, useDefaults, includeConfi return; } - // look for src/data matches and remove the appropriate one - if(mode === 'keepdata') { - // keepdata: remove all ...src tags - if(v.slice(-3) === 'src') { - return; - } - } else if(mode !== 'keepall') { - // keepref: remove sourced data but only - // if the source tag is well-formed - src = d[v + 'src']; - if(typeof src === 'string' && src.indexOf(':') > 0) { - return; - } - } - // OK, we're including this... recurse into it o[v] = stripObj(d[v], keepFunction); }); diff --git a/test/jasmine/tests/plots_test.js b/test/jasmine/tests/plots_test.js index 9b96329af9c..dca03e00302 100644 --- a/test/jasmine/tests/plots_test.js +++ b/test/jasmine/tests/plots_test.js @@ -578,7 +578,7 @@ describe('Test Plots', function() { }; Plotly.newPlot(gd, mock).then(function() { - var str = Plots.graphJson(gd, false, 'keepdata'); + var str = Plots.graphJson(gd, false); var obj = JSON.parse(str); expect(obj.data).toEqual(mock.data); @@ -612,7 +612,7 @@ describe('Test Plots', function() { }; Plotly.newPlot(gd, [trace]).then(function() { - var str = Plots.graphJson(gd, false, 'keepdata'); + var str = Plots.graphJson(gd, false); var obj = JSON.parse(str); expect(obj.data[0].x).toEqual([1, 2, 3]); From c5d2b96ff11ed896ab438061e06decc113db26c5 Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Mon, 8 Jun 2026 17:46:29 -0400 Subject: [PATCH 103/241] remove src attr handling from typegen step --- tasks/generate_schema_types.mjs | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/tasks/generate_schema_types.mjs b/tasks/generate_schema_types.mjs index c1eb993f5e5..87fa258d3a2 100644 --- a/tasks/generate_schema_types.mjs +++ b/tasks/generate_schema_types.mjs @@ -455,16 +455,6 @@ function valTypeToTS(attr, attrPath) { // Structural helpers // --------------------------------------------------------------------------- -/** - * Returns true if key looks like an auto-generated *src attribute. - * These are created for Chart Studio Cloud and shouldn't appear in types. - */ -function isSrcAttr(key, siblings) { - if (!key.endsWith('src')) return false; - const base = key.slice(0, -3); - return base in siblings; -} - /** * Detect a linked-to-array container in the serialized schema. * @@ -508,7 +498,6 @@ function containerFingerprint(attrs) { for (const key of Object.keys(attrs).sort()) { if (META_KEYS.has(key)) continue; const val = attrs[key]; - if (isSrcAttr(key, attrs)) continue; if (val == null) continue; if (typeof val === 'string') { @@ -546,7 +535,6 @@ function collectFingerprints(attrs, collector) { for (const key of Object.keys(attrs).sort()) { if (META_KEYS.has(key)) continue; const val = attrs[key]; - if (isSrcAttr(key, attrs)) continue; if (val == null || typeof val !== 'object' || val.valType) continue; let containerAttrs; @@ -586,7 +574,6 @@ function countProperties(attrs) { let count = 0; for (const key of Object.keys(attrs)) { if (META_KEYS.has(key)) continue; - if (isSrcAttr(key, attrs)) continue; const val = attrs[key]; if (val == null) continue; if (typeof val === 'string' || typeof val !== 'object') { @@ -759,9 +746,6 @@ function attrsToProperties(attrs, indent, pathPrefix, sharedTypes, fieldOverride const val = attrs[key]; - // Skip src attributes - if (isSrcAttr(key, attrs)) continue; - // Skip null/undefined if (val == null) continue; @@ -928,7 +912,6 @@ function generateLayoutProperties(layoutAttrs, sharedTypes, subplotGroups, array for (const key of Object.keys(layoutAttrs).sort()) { if (META_KEYS.has(key)) continue; const val = layoutAttrs[key]; - if (isSrcAttr(key, layoutAttrs)) continue; if (val == null) continue; // String literal From 6f0e111beb3a4b3a0048eeda9c91b009ad690eea Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Mon, 8 Jun 2026 17:50:09 -0400 Subject: [PATCH 104/241] remove src attributes from mock --- .../mocks/gl2d_scatter-subplot-panel.json | 78 ------------------- 1 file changed, 78 deletions(-) diff --git a/test/image/mocks/gl2d_scatter-subplot-panel.json b/test/image/mocks/gl2d_scatter-subplot-panel.json index dd9513a813c..43a26bb665d 100644 --- a/test/image/mocks/gl2d_scatter-subplot-panel.json +++ b/test/image/mocks/gl2d_scatter-subplot-panel.json @@ -3,8 +3,6 @@ { "uid": "ab6939", "yaxis": "y", - "ysrc": "jackp:17616:013c39", - "xsrc": "jackp:17616:7ad609", "marker": { "color": "rgb(31, 119, 180)", "line": { @@ -153,8 +151,6 @@ { "uid": "f17ffc", "yaxis": "y", - "ysrc": "jackp:17616:ee32d5", - "xsrc": "jackp:17616:0d67c1", "marker": { "color": "rgb(255, 127, 14)", "line": { @@ -335,8 +331,6 @@ { "uid": "dace31", "yaxis": "y", - "ysrc": "jackp:17616:3908ce", - "xsrc": "jackp:17616:45a03c", "marker": { "color": "rgb(44, 160, 44)", "line": { @@ -469,8 +463,6 @@ { "uid": "c6e1cb", "yaxis": "y", - "ysrc": "jackp:17616:1e013b", - "xsrc": "jackp:17616:4b5447", "marker": { "color": "rgb(214, 39, 40)", "line": { @@ -581,8 +573,6 @@ { "uid": "c62c21", "yaxis": "y", - "ysrc": "jackp:17616:479c89", - "xsrc": "jackp:17616:548eee", "marker": { "color": "rgb(148, 103, 189)", "line": { @@ -605,8 +595,6 @@ { "uid": "08893d", "yaxis": "y2", - "ysrc": "jackp:17616:36d993", - "xsrc": "jackp:17616:6d7fe8", "marker": { "color": "rgb(31, 119, 180)", "line": { @@ -745,8 +733,6 @@ { "uid": "fa9571", "yaxis": "y2", - "ysrc": "jackp:17616:89729a", - "xsrc": "jackp:17616:512573", "marker": { "color": "rgb(255, 127, 14)", "line": { @@ -895,8 +881,6 @@ { "uid": "7677a5", "yaxis": "y2", - "ysrc": "jackp:17616:567114", - "xsrc": "jackp:17616:2bf765", "marker": { "color": "rgb(44, 160, 44)", "line": { @@ -1017,8 +1001,6 @@ { "uid": "59b4c9", "yaxis": "y2", - "ysrc": "jackp:17616:42cadc", - "xsrc": "jackp:17616:1ea406", "marker": { "color": "rgb(214, 39, 40)", "line": { @@ -1125,8 +1107,6 @@ { "uid": "524443", "yaxis": "y2", - "ysrc": "jackp:17616:b896d3", - "xsrc": "jackp:17616:0f5f52", "marker": { "color": "rgb(148, 103, 189)", "line": { @@ -1150,8 +1130,6 @@ { "uid": "0481fb", "yaxis": "y3", - "ysrc": "jackp:17616:474ec3", - "xsrc": "jackp:17616:36d4e6", "marker": { "color": "rgb(31, 119, 180)", "line": { @@ -1276,8 +1254,6 @@ { "uid": "ea480c", "yaxis": "y3", - "ysrc": "jackp:17616:d4eb68", - "xsrc": "jackp:17616:856c9d", "marker": { "color": "rgb(255, 127, 14)", "line": { @@ -1412,8 +1388,6 @@ { "uid": "b16b7f", "yaxis": "y3", - "ysrc": "jackp:17616:6e5c39", - "xsrc": "jackp:17616:f6b328", "marker": { "color": "rgb(44, 160, 44)", "line": { @@ -1533,8 +1507,6 @@ { "uid": "c6d9fa", "yaxis": "y3", - "ysrc": "jackp:17616:b8c075", - "xsrc": "jackp:17616:e7d470", "marker": { "color": "rgb(214, 39, 40)", "line": { @@ -1649,8 +1621,6 @@ { "uid": "c631a8", "yaxis": "y3", - "ysrc": "jackp:17616:63bc1a", - "xsrc": "jackp:17616:106531", "marker": { "color": "rgb(148, 103, 189)", "line": { @@ -1677,8 +1647,6 @@ { "uid": "b906f7", "yaxis": "y4", - "ysrc": "jackp:17616:292289", - "xsrc": "jackp:17616:878a2c", "marker": { "color": "rgb(31, 119, 180)", "line": { @@ -1817,8 +1785,6 @@ { "uid": "d2a84e", "yaxis": "y4", - "ysrc": "jackp:17616:c068e9", - "xsrc": "jackp:17616:0d9a13", "marker": { "color": "rgb(255, 127, 14)", "line": { @@ -1977,8 +1943,6 @@ { "uid": "732989", "yaxis": "y4", - "ysrc": "jackp:17616:262a53", - "xsrc": "jackp:17616:30666d", "marker": { "color": "rgb(44, 160, 44)", "line": { @@ -2101,8 +2065,6 @@ { "uid": "6a8130", "yaxis": "y4", - "ysrc": "jackp:17616:cecf5b", - "xsrc": "jackp:17616:8d8322", "marker": { "color": "rgb(214, 39, 40)", "line": { @@ -2150,8 +2112,6 @@ "showlegend": false, "uid": "29557f", "yaxis": "y4", - "ysrc": "jackp:17616:1f8d2e", - "xsrc": "jackp:17616:1dd020", "marker": { "color": "rgb(31, 119, 180)", "line": { @@ -2169,8 +2129,6 @@ "showlegend": false, "uid": "3e367a", "yaxis": "y4", - "ysrc": "jackp:17616:1f8d2e", - "xsrc": "jackp:17616:1dd020", "marker": { "color": "rgb(255, 127, 14)", "line": { @@ -2188,8 +2146,6 @@ "showlegend": false, "uid": "337db2", "yaxis": "y4", - "ysrc": "jackp:17616:1f8d2e", - "xsrc": "jackp:17616:1dd020", "marker": { "color": "rgb(44, 160, 44)", "line": { @@ -2207,8 +2163,6 @@ "showlegend": false, "uid": "daacfd", "yaxis": "y4", - "ysrc": "jackp:17616:1f8d2e", - "xsrc": "jackp:17616:1dd020", "marker": { "color": "rgb(214, 39, 40)", "line": { @@ -2226,8 +2180,6 @@ "showlegend": false, "uid": "ec7e38", "yaxis": "y4", - "ysrc": "jackp:17616:1f8d2e", - "xsrc": "jackp:17616:1dd020", "marker": { "color": "rgb(148, 103, 189)", "line": { @@ -2244,8 +2196,6 @@ { "uid": "4c0c61", "yaxis": "y5", - "ysrc": "jackp:17616:e2020b", - "xsrc": "jackp:17616:097e51", "marker": { "color": "rgb(31, 119, 180)", "line": { @@ -2382,8 +2332,6 @@ { "uid": "0224d9", "yaxis": "y5", - "ysrc": "jackp:17616:7a9127", - "xsrc": "jackp:17616:0baf91", "marker": { "color": "rgb(255, 127, 14)", "line": { @@ -2542,8 +2490,6 @@ { "uid": "631b1f", "yaxis": "y5", - "ysrc": "jackp:17616:8e2b9c", - "xsrc": "jackp:17616:87a56a", "marker": { "color": "rgb(44, 160, 44)", "line": { @@ -2674,8 +2620,6 @@ { "uid": "92020c", "yaxis": "y5", - "ysrc": "jackp:17616:d23bb6", - "xsrc": "jackp:17616:b1d52c", "marker": { "color": "rgb(214, 39, 40)", "line": { @@ -2788,8 +2732,6 @@ { "uid": "537fed", "yaxis": "y5", - "ysrc": "jackp:17616:3c7520", - "xsrc": "jackp:17616:b91412", "marker": { "color": "rgb(148, 103, 189)", "line": { @@ -2818,8 +2760,6 @@ { "uid": "f44104", "yaxis": "y6", - "ysrc": "jackp:17616:3c2a0b", - "xsrc": "jackp:17616:19613b", "marker": { "color": "rgb(31, 119, 180)", "line": { @@ -2958,8 +2898,6 @@ { "uid": "8fb1ff", "yaxis": "y6", - "ysrc": "jackp:17616:aca112", - "xsrc": "jackp:17616:1f9da8", "marker": { "color": "rgb(255, 127, 14)", "line": { @@ -3124,8 +3062,6 @@ { "uid": "e676c7", "yaxis": "y6", - "ysrc": "jackp:17616:24335b", - "xsrc": "jackp:17616:2f0d1f", "marker": { "color": "rgb(44, 160, 44)", "line": { @@ -3258,8 +3194,6 @@ { "uid": "0df67e", "yaxis": "y6", - "ysrc": "jackp:17616:ab87d8", - "xsrc": "jackp:17616:5cf5f8", "marker": { "color": "rgb(214, 39, 40)", "line": { @@ -3376,8 +3310,6 @@ { "uid": "182eac", "yaxis": "y6", - "ysrc": "jackp:17616:601f7d", - "xsrc": "jackp:17616:12eb26", "marker": { "color": "rgb(148, 103, 189)", "line": { @@ -3404,8 +3336,6 @@ { "uid": "376ffd", "yaxis": "y7", - "ysrc": "jackp:17616:375858", - "xsrc": "jackp:17616:725e8e", "marker": { "color": "rgb(31, 119, 180)", "line": { @@ -3516,8 +3446,6 @@ { "uid": "5d7bed", "yaxis": "y7", - "ysrc": "jackp:17616:a2b0f6", - "xsrc": "jackp:17616:9cbb59", "marker": { "color": "rgb(255, 127, 14)", "line": { @@ -3630,8 +3558,6 @@ { "uid": "1b9a1f", "yaxis": "y7", - "ysrc": "jackp:17616:93c145", - "xsrc": "jackp:17616:4bf754", "marker": { "color": "rgb(44, 160, 44)", "line": { @@ -3742,8 +3668,6 @@ { "uid": "26c716", "yaxis": "y7", - "ysrc": "jackp:17616:ec6fcf", - "xsrc": "jackp:17616:6fd863", "marker": { "color": "rgb(214, 39, 40)", "line": { @@ -3850,8 +3774,6 @@ { "uid": "db52b5", "yaxis": "y7", - "ysrc": "jackp:17616:e406b3", - "xsrc": "jackp:17616:1f1b53", "marker": { "color": "rgb(148, 103, 189)", "line": { From 299e8af29831f9ae29c67fe2541b3833a7c90de8 Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Mon, 8 Jun 2026 17:55:38 -0400 Subject: [PATCH 105/241] remove layout.hidesources attr --- src/plots/layout_attributes.js | 11 ----------- src/plots/plots.js | 1 - src/snapshot/cloneplot.js | 1 - src/types/generated/schema.d.ts | 1 - test/image/mocks/0.json | 3 +-- test/image/mocks/1.json | 3 +-- test/image/mocks/10.json | 3 +-- test/image/mocks/11.json | 3 +-- test/image/mocks/12.json | 1 - test/image/mocks/13.json | 3 +-- test/image/mocks/14.json | 3 +-- test/image/mocks/15.json | 3 +-- test/image/mocks/17.json | 3 +-- test/image/mocks/18.json | 1 - test/image/mocks/19.json | 1 - test/image/mocks/21.json | 3 +-- test/image/mocks/22.json | 3 +-- test/image/mocks/23.json | 3 +-- test/image/mocks/24.json | 3 +-- test/image/mocks/25.json | 3 +-- test/image/mocks/26.json | 3 +-- test/image/mocks/27.json | 3 +-- test/image/mocks/28.json | 3 +-- test/image/mocks/29.json | 3 +-- test/image/mocks/30.json | 3 +-- test/image/mocks/31.json | 3 +-- test/image/mocks/32.json | 3 +-- test/image/mocks/4.json | 3 +-- test/image/mocks/5.json | 3 +-- test/image/mocks/contour_match_edges.json | 1 - test/image/mocks/fonts.json | 1 - test/image/mocks/funnel_11.json | 3 +-- test/image/mocks/gl2d_10.json | 3 +-- test/image/mocks/gl2d_12.json | 3 +-- test/image/mocks/gl2d_14.json | 3 +-- test/image/mocks/gl2d_17.json | 3 +-- test/image/mocks/gl2d_fonts.json | 3 +-- test/image/mocks/gl3d_opacity-surface.json | 1 - test/image/mocks/legend_horizontal.json | 3 +-- test/image/mocks/text_export.json | 1 - test/image/mocks/titles-avoid-labels.json | 1 - test/image/mocks/waterfall_11.json | 3 +-- test/jasmine/tests/snapshot_test.js | 2 -- test/plot-schema.json | 6 ------ 44 files changed, 30 insertions(+), 90 deletions(-) diff --git a/src/plots/layout_attributes.js b/src/plots/layout_attributes.js index 60540e53b94..20bfc66c11c 100644 --- a/src/plots/layout_attributes.js +++ b/src/plots/layout_attributes.js @@ -318,17 +318,6 @@ module.exports = { 'other locales may alter this default.' ].join(' ') }, - hidesources: { - valType: 'boolean', - dflt: false, - editType: 'plot', - description: [ - 'Determines whether or not a text link citing the data source is', - 'placed at the bottom-right cored of the figure.', - 'Has only an effect only on graphs that have been generated via', - 'forked graphs from the Chart Studio Cloud (at https://chart-studio.plotly.com or on-premise).' - ].join(' ') - }, showlegend: { // handled in legend.supplyLayoutDefaults // but included here because it's not in the legend object diff --git a/src/plots/plots.js b/src/plots/plots.js index fb8769600c8..62a4eb82101 100644 --- a/src/plots/plots.js +++ b/src/plots/plots.js @@ -1318,7 +1318,6 @@ plots.supplyLayoutGlobalDefaults = function(layoutIn, layoutOut, formatObj) { coerce('paper_bgcolor'); coerce('separators', formatObj.decimal + formatObj.thousands); - coerce('hidesources'); coerce('colorway'); diff --git a/src/snapshot/cloneplot.js b/src/snapshot/cloneplot.js index 78c51b58be4..1cc8a0e611e 100644 --- a/src/snapshot/cloneplot.js +++ b/src/snapshot/cloneplot.js @@ -26,7 +26,6 @@ function cloneLayoutOverride(tileClass) { case 'thumbnail': override = { title: {text: ''}, - hidesources: true, showlegend: false, borderwidth: 0, bordercolor: '', diff --git a/src/types/generated/schema.d.ts b/src/types/generated/schema.d.ts index 1e05da351d0..00bb93a5f8c 100644 --- a/src/types/generated/schema.d.ts +++ b/src/types/generated/schema.d.ts @@ -16254,7 +16254,6 @@ export interface Layout { yside?: 'left' | 'left plot' | 'right plot' | 'right'; }; height?: number; - hidesources?: boolean; hoveranywhere?: boolean; hoverdistance?: number; hoverlabel?: { diff --git a/test/image/mocks/0.json b/test/image/mocks/0.json index e90b76c6ce7..27ace244904 100644 --- a/test/image/mocks/0.json +++ b/test/image/mocks/0.json @@ -1217,7 +1217,6 @@ "barmode": "stack", "bargap": 0.2, "bargroupgap": 0, - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/1.json b/test/image/mocks/1.json index b596e50725b..7143397dd41 100644 --- a/test/image/mocks/1.json +++ b/test/image/mocks/1.json @@ -609,7 +609,6 @@ "hovermode": "x", "dragmode": "zoom", "boxmode": "overlay", - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/10.json b/test/image/mocks/10.json index ef04c40ce80..e30afa14ef2 100644 --- a/test/image/mocks/10.json +++ b/test/image/mocks/10.json @@ -256,7 +256,6 @@ "plot_bgcolor": "rgb(255, 255, 255)", "hovermode": "x", "dragmode": "zoom", - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/11.json b/test/image/mocks/11.json index 4beffebfcba..5f54208389f 100644 --- a/test/image/mocks/11.json +++ b/test/image/mocks/11.json @@ -232,7 +232,6 @@ "bargap": 0.2, "bargroupgap": 0, "boxmode": "overlay", - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/12.json b/test/image/mocks/12.json index 9ce32986aab..7caba9957e3 100644 --- a/test/image/mocks/12.json +++ b/test/image/mocks/12.json @@ -505,7 +505,6 @@ "bargroupgap": 0, "boxmode": "overlay", "separators": ".,", - "hidesources": false, "selections": [ { "x0": 150, diff --git a/test/image/mocks/13.json b/test/image/mocks/13.json index a9986abe39e..b331c4c3d90 100644 --- a/test/image/mocks/13.json +++ b/test/image/mocks/13.json @@ -328,7 +328,6 @@ "bargap": 0.2, "bargroupgap": 0, "boxmode": "overlay", - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/14.json b/test/image/mocks/14.json index c0cc609271b..2d693a5ef31 100644 --- a/test/image/mocks/14.json +++ b/test/image/mocks/14.json @@ -335,7 +335,6 @@ "bargap": 0.2, "bargroupgap": 0, "boxmode": "overlay", - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/15.json b/test/image/mocks/15.json index 746fc3d151b..c43b2ed3663 100644 --- a/test/image/mocks/15.json +++ b/test/image/mocks/15.json @@ -270,7 +270,6 @@ "bargap": 0.2, "bargroupgap": 0, "boxmode": "overlay", - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/17.json b/test/image/mocks/17.json index 1af9c384072..c3bb5cc3c64 100644 --- a/test/image/mocks/17.json +++ b/test/image/mocks/17.json @@ -632,7 +632,6 @@ "bargap": 0.2, "bargroupgap": 0, "boxmode": "overlay", - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/18.json b/test/image/mocks/18.json index 56f0a87ba83..c907095293d 100644 --- a/test/image/mocks/18.json +++ b/test/image/mocks/18.json @@ -1235,7 +1235,6 @@ "bargroupgap": 0, "boxmode": "overlay", "separators": ".,", - "hidesources": false, "yaxis2": { "title": { "text": "sepal width", diff --git a/test/image/mocks/19.json b/test/image/mocks/19.json index 07716f2ac9b..bc7bf6781a5 100644 --- a/test/image/mocks/19.json +++ b/test/image/mocks/19.json @@ -153,7 +153,6 @@ "bargroupgap": 0, "boxmode": "overlay", "separators": ".,", - "hidesources": false, "yaxis2": { "title": { "text": "Click to enter Y2 axis title" diff --git a/test/image/mocks/21.json b/test/image/mocks/21.json index 9ea0382ec10..6f8790aacdf 100644 --- a/test/image/mocks/21.json +++ b/test/image/mocks/21.json @@ -485,7 +485,6 @@ "bargap": 0.2, "bargroupgap": 0, "boxmode": "overlay", - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/22.json b/test/image/mocks/22.json index f5e542baa14..24510019cd4 100644 --- a/test/image/mocks/22.json +++ b/test/image/mocks/22.json @@ -288,7 +288,6 @@ "bargap": 0.2, "bargroupgap": 0, "boxmode": "overlay", - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/23.json b/test/image/mocks/23.json index 7b8c1399747..40f153dd727 100644 --- a/test/image/mocks/23.json +++ b/test/image/mocks/23.json @@ -144,7 +144,6 @@ "bargap": 0.2, "bargroupgap": 0, "boxmode": "overlay", - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/24.json b/test/image/mocks/24.json index 5655fa5927d..3b92bf829d2 100644 --- a/test/image/mocks/24.json +++ b/test/image/mocks/24.json @@ -183,7 +183,6 @@ "bargap": 0.2, "bargroupgap": 0, "boxmode": "overlay", - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/25.json b/test/image/mocks/25.json index 5120213a6bf..0971b78d742 100644 --- a/test/image/mocks/25.json +++ b/test/image/mocks/25.json @@ -178,7 +178,6 @@ "bargap": 0.2, "bargroupgap": 0, "boxmode": "overlay", - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/26.json b/test/image/mocks/26.json index 631819e89b5..38ee0c42d44 100644 --- a/test/image/mocks/26.json +++ b/test/image/mocks/26.json @@ -21207,7 +21207,6 @@ "bargap": 0.2, "bargroupgap": 0, "boxmode": "overlay", - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/27.json b/test/image/mocks/27.json index 47132ef41f2..7e16bac359a 100644 --- a/test/image/mocks/27.json +++ b/test/image/mocks/27.json @@ -347,7 +347,6 @@ "bargap": 0.2, "bargroupgap": 0, "boxmode": "overlay", - "separators": ".", - "hidesources": false + "separators": "." } } diff --git a/test/image/mocks/28.json b/test/image/mocks/28.json index 0c85569c6d7..8e023b4a6cf 100644 --- a/test/image/mocks/28.json +++ b/test/image/mocks/28.json @@ -1002,7 +1002,6 @@ "bargap": 0.2, "bargroupgap": 0, "boxmode": "overlay", - "separators": ".", - "hidesources": false + "separators": "." } } diff --git a/test/image/mocks/29.json b/test/image/mocks/29.json index 40437f24529..75a0b56cab7 100644 --- a/test/image/mocks/29.json +++ b/test/image/mocks/29.json @@ -2284,7 +2284,6 @@ "bargap": 0.2, "bargroupgap": 0, "boxmode": "overlay", - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/30.json b/test/image/mocks/30.json index b7b13c6e93a..e08f2d648dd 100644 --- a/test/image/mocks/30.json +++ b/test/image/mocks/30.json @@ -198,7 +198,6 @@ "bargap": 0.2, "bargroupgap": 0, "boxmode": "overlay", - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/31.json b/test/image/mocks/31.json index 4160c2aa61f..cee23d0f566 100644 --- a/test/image/mocks/31.json +++ b/test/image/mocks/31.json @@ -381,7 +381,6 @@ "bargap": 0.2, "bargroupgap": 0, "boxmode": "overlay", - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/32.json b/test/image/mocks/32.json index ff3fbac3f81..7dfeffb9f3f 100644 --- a/test/image/mocks/32.json +++ b/test/image/mocks/32.json @@ -828,7 +828,6 @@ "bargap": 0.2, "bargroupgap": 0, "boxmode": "overlay", - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/4.json b/test/image/mocks/4.json index 480a51b0da8..180a775d76c 100644 --- a/test/image/mocks/4.json +++ b/test/image/mocks/4.json @@ -128,7 +128,6 @@ "plot_bgcolor": "#fff", "hovermode": "x", "dragmode": "zoom", - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/5.json b/test/image/mocks/5.json index e270f69a1c2..5a0a885dc35 100644 --- a/test/image/mocks/5.json +++ b/test/image/mocks/5.json @@ -184,7 +184,6 @@ "plot_bgcolor": "#fff", "hovermode": "x", "dragmode": "zoom", - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/contour_match_edges.json b/test/image/mocks/contour_match_edges.json index 25ce91fa987..5dc72abdef3 100644 --- a/test/image/mocks/contour_match_edges.json +++ b/test/image/mocks/contour_match_edges.json @@ -1926,7 +1926,6 @@ "exponentformat": "B" }, "bargroupgap": 0, - "hidesources": false, "showlegend": false, "separators": ".,", "barmode": "group", diff --git a/test/image/mocks/fonts.json b/test/image/mocks/fonts.json index 0fa9936bc96..9396bebd7fb 100644 --- a/test/image/mocks/fonts.json +++ b/test/image/mocks/fonts.json @@ -431,7 +431,6 @@ "anchor": "x", "exponentformat": "B" }, - "hidesources": false, "boxgroupgap": 0.3, "margin": { "b": 80, diff --git a/test/image/mocks/funnel_11.json b/test/image/mocks/funnel_11.json index 19ad721177b..f88ed26f027 100644 --- a/test/image/mocks/funnel_11.json +++ b/test/image/mocks/funnel_11.json @@ -120,7 +120,6 @@ "funnelmode": "group", "funnelgap": 0.2, "funnelgroupgap": 0, - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/gl2d_10.json b/test/image/mocks/gl2d_10.json index 9a92c24340a..978ed9a65e6 100644 --- a/test/image/mocks/gl2d_10.json +++ b/test/image/mocks/gl2d_10.json @@ -145,7 +145,6 @@ "bargap": 0.2, "bargroupgap": 0, "boxmode": "overlay", - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/gl2d_12.json b/test/image/mocks/gl2d_12.json index 4d9ec5b89e6..f9c68c3b802 100644 --- a/test/image/mocks/gl2d_12.json +++ b/test/image/mocks/gl2d_12.json @@ -502,7 +502,6 @@ "bargap": 0.2, "bargroupgap": 0, "boxmode": "overlay", - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/gl2d_14.json b/test/image/mocks/gl2d_14.json index afabbb187a7..4a62050c1f5 100644 --- a/test/image/mocks/gl2d_14.json +++ b/test/image/mocks/gl2d_14.json @@ -146,7 +146,6 @@ "bargap": 0.2, "bargroupgap": 0, "boxmode": "overlay", - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/gl2d_17.json b/test/image/mocks/gl2d_17.json index 4314f5a2666..ece827a386c 100644 --- a/test/image/mocks/gl2d_17.json +++ b/test/image/mocks/gl2d_17.json @@ -588,7 +588,6 @@ "bargap": 0.2, "bargroupgap": 0, "boxmode": "overlay", - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/gl2d_fonts.json b/test/image/mocks/gl2d_fonts.json index db60cecd75d..3f070cc6558 100644 --- a/test/image/mocks/gl2d_fonts.json +++ b/test/image/mocks/gl2d_fonts.json @@ -427,7 +427,6 @@ "bargroupgap": 0, "boxmode": "overlay", "boxgap": 0.3, - "boxgroupgap": 0.3, - "hidesources": false + "boxgroupgap": 0.3 } } diff --git a/test/image/mocks/gl3d_opacity-surface.json b/test/image/mocks/gl3d_opacity-surface.json index d766bf1aa0d..004f68b9bb4 100644 --- a/test/image/mocks/gl3d_opacity-surface.json +++ b/test/image/mocks/gl3d_opacity-surface.json @@ -1528,7 +1528,6 @@ } ], "layout": { - "hidesources": false, "autosize": true, "font": { "color": "#444", diff --git a/test/image/mocks/legend_horizontal.json b/test/image/mocks/legend_horizontal.json index e669c32dd94..901abb33b1e 100644 --- a/test/image/mocks/legend_horizontal.json +++ b/test/image/mocks/legend_horizontal.json @@ -137,7 +137,6 @@ "bargap": 0.2, "bargroupgap": 0, "boxmode": "overlay", - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/image/mocks/text_export.json b/test/image/mocks/text_export.json index ccdd75161cb..0b217d86cc6 100644 --- a/test/image/mocks/text_export.json +++ b/test/image/mocks/text_export.json @@ -1670,7 +1670,6 @@ "size": 12 }, "height": 630, - "hidesources": false, "hovermode": "x", "legend": { "x": 0.5392124763053593, diff --git a/test/image/mocks/titles-avoid-labels.json b/test/image/mocks/titles-avoid-labels.json index 0dedfd45deb..be481791c2b 100644 --- a/test/image/mocks/titles-avoid-labels.json +++ b/test/image/mocks/titles-avoid-labels.json @@ -140,7 +140,6 @@ "dragmode": "zoom", "hovermode": "x", "separators": ".,", - "hidesources": false, "showlegend": false } } diff --git a/test/image/mocks/waterfall_11.json b/test/image/mocks/waterfall_11.json index 3babb9d306d..0242cbc48c6 100644 --- a/test/image/mocks/waterfall_11.json +++ b/test/image/mocks/waterfall_11.json @@ -133,7 +133,6 @@ "waterfallmode": "group", "waterfallgap": 0.2, "waterfallgroupgap": 0.1, - "separators": ".,", - "hidesources": false + "separators": ".," } } diff --git a/test/jasmine/tests/snapshot_test.js b/test/jasmine/tests/snapshot_test.js index 746d1bf8eb1..07905489c1d 100644 --- a/test/jasmine/tests/snapshot_test.js +++ b/test/jasmine/tests/snapshot_test.js @@ -100,7 +100,6 @@ describe('Plotly.Snapshot', function() { var THUMBNAIL_DEFAULT_LAYOUT = { title: {text: ''}, - hidesources: true, showlegend: false, hovermode: false, dragmode: false, @@ -112,7 +111,6 @@ describe('Plotly.Snapshot', function() { }; var thumbTile = Plotly.Snapshot.clone(dummyGraphObj, thumbnailOptions); - expect(thumbTile.layout.hidesources).toEqual(THUMBNAIL_DEFAULT_LAYOUT.hidesources); expect(thumbTile.layout.showlegend).toEqual(THUMBNAIL_DEFAULT_LAYOUT.showlegend); expect(thumbTile.layout.borderwidth).toEqual(THUMBNAIL_DEFAULT_LAYOUT.borderwidth); expect(thumbTile.layout.annotations).toEqual(THUMBNAIL_DEFAULT_LAYOUT.annotations); diff --git a/test/plot-schema.json b/test/plot-schema.json index 86964d4f5e9..3f105c69066 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -2786,12 +2786,6 @@ "min": 10, "valType": "number" }, - "hidesources": { - "description": "Determines whether or not a text link citing the data source is placed at the bottom-right cored of the figure. Has only an effect only on graphs that have been generated via forked graphs from the Chart Studio Cloud (at https://chart-studio.plotly.com or on-premise).", - "dflt": false, - "editType": "plot", - "valType": "boolean" - }, "hoveranywhere": { "description": "If true, `plotly_hover` events will fire for any cursor position within the plot area, not just over traces. When the cursor is not over a trace, the event will have an empty `points` array but will include `xvals` and `yvals` with cursor coordinates in data space.", "dflt": false, From 05501b7d1b4d30fe68c1ffaa9d5a376cf720b16d Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Mon, 8 Jun 2026 17:46:42 -0400 Subject: [PATCH 106/241] regenerate plot schema --- test/plot-schema.json | 9230 ----------------------------------------- 1 file changed, 9230 deletions(-) diff --git a/test/plot-schema.json b/test/plot-schema.json index 3f105c69066..749fdb23592 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -1617,21 +1617,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -3854,11 +3844,6 @@ "editType": "plot", "valType": "data_array" }, - "dashsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `dash`.", - "editType": "none", - "valType": "string" - }, "editType": "plot", "role": "object", "width": { @@ -4260,11 +4245,6 @@ "editType": "plot", "valType": "data_array" }, - "dashsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `dash`.", - "editType": "none", - "valType": "string" - }, "editType": "plot", "role": "object", "width": { @@ -4547,11 +4527,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "minreducedheight": { "description": "Minimum height of the plot with margin.automargin applied (in px)", "dflt": 64, @@ -4579,11 +4554,6 @@ "editType": "modebar", "valType": "string" }, - "addsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `add`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "description": "Sets the background color of the modebar.", "editType": "modebar", @@ -4612,11 +4582,6 @@ "editType": "modebar", "valType": "string" }, - "removesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `remove`.", - "editType": "none", - "valType": "string" - }, "role": "object", "uirevision": { "description": "Controls persistence of user-driven changes related to the modebar, including `hovermode`, `dragmode`, and `showspikes` at both the root level and inside subplots. Defaults to `layout.uirevision`.", @@ -5089,11 +5054,6 @@ "editType": "calc", "valType": "data_array" }, - "categoryarraysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `categoryarray`.", - "editType": "none", - "valType": "string" - }, "categoryorder": { "description": "Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. Set `categoryorder` to *total ascending* or *total descending* if order should be determined by the numerical order of the values. Similarly, the order can be determined by the min, max, sum, mean, geometric mean or median of all the values.", "dflt": "trace", @@ -5542,21 +5502,11 @@ "editType": "plot", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "plot", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -5720,11 +5670,6 @@ "impliedEdits": {}, "valType": "any" }, - "includesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `include`.", - "editType": "none", - "valType": "string" - }, "maxallowed": { "description": "Use this value exactly as autorange maximum.", "editType": "plot", @@ -5792,11 +5737,6 @@ "editType": "calc", "valType": "data_array" }, - "categoryarraysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `categoryarray`.", - "editType": "none", - "valType": "string" - }, "categoryorder": { "description": "Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. Set `categoryorder` to *total ascending* or *total descending* if order should be determined by the numerical order of the values. Similarly, the order can be determined by the min, max, sum, mean, geometric mean or median of all the values.", "dflt": "trace", @@ -6276,21 +6216,11 @@ "editType": "plot", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "plot", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -7157,11 +7087,6 @@ "impliedEdits": {}, "valType": "any" }, - "includesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `include`.", - "editType": "none", - "valType": "string" - }, "maxallowed": { "description": "Use this value exactly as autorange maximum.", "editType": "plot", @@ -7221,11 +7146,6 @@ "editType": "plot", "valType": "data_array" }, - "categoryarraysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `categoryarray`.", - "editType": "none", - "valType": "string" - }, "categoryorder": { "description": "Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. Set `categoryorder` to *total ascending* or *total descending* if order should be determined by the numerical order of the values. Similarly, the order can be determined by the min, max, sum, mean, geometric mean or median of all the values.", "dflt": "trace", @@ -7702,21 +7622,11 @@ "editType": "plot", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "plot", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -7897,11 +7807,6 @@ "impliedEdits": {}, "valType": "any" }, - "includesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `include`.", - "editType": "none", - "valType": "string" - }, "maxallowed": { "description": "Use this value exactly as autorange maximum.", "editType": "plot", @@ -7961,11 +7866,6 @@ "editType": "plot", "valType": "data_array" }, - "categoryarraysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `categoryarray`.", - "editType": "none", - "valType": "string" - }, "categoryorder": { "description": "Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. Set `categoryorder` to *total ascending* or *total descending* if order should be determined by the numerical order of the values. Similarly, the order can be determined by the min, max, sum, mean, geometric mean or median of all the values.", "dflt": "trace", @@ -8442,21 +8342,11 @@ "editType": "plot", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "plot", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -8637,11 +8527,6 @@ "impliedEdits": {}, "valType": "any" }, - "includesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `include`.", - "editType": "none", - "valType": "string" - }, "maxallowed": { "description": "Use this value exactly as autorange maximum.", "editType": "plot", @@ -8701,11 +8586,6 @@ "editType": "plot", "valType": "data_array" }, - "categoryarraysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `categoryarray`.", - "editType": "none", - "valType": "string" - }, "categoryorder": { "description": "Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. Set `categoryorder` to *total ascending* or *total descending* if order should be determined by the numerical order of the values. Similarly, the order can be determined by the min, max, sum, mean, geometric mean or median of all the values.", "dflt": "trace", @@ -9182,21 +9062,11 @@ "editType": "plot", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "plot", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -9923,11 +9793,6 @@ "/^x([2-9]|[1-9][0-9]+)?( domain)?$/" ] }, - "xrefsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `xref`.", - "editType": "none", - "valType": "string" - }, "xsizemode": { "description": "Sets the shapes's sizing mode along the x axis. If set to *scaled*, `x0`, `x1` and x coordinates within `path` refer to data values on the x axis or a fraction of the plot area's width (`xref` set to *paper*). If set to *pixel*, `xanchor` specifies the x position in terms of data or plot fraction but `x0`, `x1` and x coordinates within `path` are pixels relative to `xanchor`. This way, the shape can have a fixed width while maintaining a position relative to data or plot fraction. Note: `xsizemode` *pixel* is not supported when `xref` is an array.", "dflt": "scaled", @@ -9979,11 +9844,6 @@ "/^y([2-9]|[1-9][0-9]+)?( domain)?$/" ] }, - "yrefsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `yref`.", - "editType": "none", - "valType": "string" - }, "ysizemode": { "description": "Sets the shapes's sizing mode along the y axis. If set to *scaled*, `y0`, `y1` and y coordinates within `path` refer to data values on the y axis or a fraction of the plot area's height (`yref` set to *paper*). If set to *pixel*, `yanchor` specifies the y position in terms of data or plot fraction but `y0`, `y1` and y coordinates within `path` are pixels relative to `yanchor`. This way, the shape can have a fixed height while maintaining a position relative to data or plot fraction. Note: `ysizemode` *pixel* is not supported when `yref` is an array.", "dflt": "scaled", @@ -10838,11 +10698,6 @@ "editType": "plot", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 2, @@ -11128,11 +10983,6 @@ "editType": "plot", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 2, @@ -11551,21 +11401,11 @@ "editType": "plot", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "plot", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -12065,21 +11905,11 @@ "editType": "plot", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "plot", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -12585,21 +12415,11 @@ "editType": "plot", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "plot", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -13575,11 +13395,6 @@ "impliedEdits": {}, "valType": "any" }, - "includesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `include`.", - "editType": "none", - "valType": "string" - }, "maxallowed": { "description": "Use this value exactly as autorange maximum.", "editType": "plot", @@ -13647,11 +13462,6 @@ "editType": "calc", "valType": "data_array" }, - "categoryarraysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `categoryarray`.", - "editType": "none", - "valType": "string" - }, "categoryorder": { "description": "Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. Set `categoryorder` to *total ascending* or *total descending* if order should be determined by the numerical order of the values. Similarly, the order can be determined by the min, max, sum, mean, geometric mean or median of all the values.", "dflt": "trace", @@ -13975,11 +13785,6 @@ "editType": "ticks", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "editType": "ticks", @@ -14791,11 +14596,6 @@ "editType": "calc", "valType": "integer" }, - "ticklabelindexsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticklabelindex`.", - "editType": "none", - "valType": "string" - }, "ticklabelmode": { "description": "Determines where tick labels are drawn with respect to their corresponding ticks and grid lines. Only has an effect for axes of `type` *date* When set to *period*, tick labels are drawn in the middle of the period between ticks.", "dflt": "instant", @@ -14909,21 +14709,11 @@ "editType": "ticks", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "ticks", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -15165,11 +14955,6 @@ "impliedEdits": {}, "valType": "any" }, - "includesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `include`.", - "editType": "none", - "valType": "string" - }, "maxallowed": { "description": "Use this value exactly as autorange maximum.", "editType": "plot", @@ -15243,11 +15028,6 @@ "editType": "calc", "valType": "data_array" }, - "categoryarraysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `categoryarray`.", - "editType": "none", - "valType": "string" - }, "categoryorder": { "description": "Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. Set `categoryorder` to *total ascending* or *total descending* if order should be determined by the numerical order of the values. Similarly, the order can be determined by the min, max, sum, mean, geometric mean or median of all the values.", "dflt": "trace", @@ -15571,11 +15351,6 @@ "editType": "ticks", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "editType": "ticks", @@ -16070,11 +15845,6 @@ "editType": "calc", "valType": "integer" }, - "ticklabelindexsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticklabelindex`.", - "editType": "none", - "valType": "string" - }, "ticklabelmode": { "description": "Determines where tick labels are drawn with respect to their corresponding ticks and grid lines. Only has an effect for axes of `type` *date* When set to *period*, tick labels are drawn in the middle of the period between ticks.", "dflt": "instant", @@ -16188,21 +15958,11 @@ "editType": "ticks", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "ticks", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -16396,11 +16156,6 @@ "editType": "calc", "valType": "any" }, - "basesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `base`.", - "editType": "none", - "valType": "string" - }, "cliponaxis": { "description": "Determines whether the text nodes are clipped about the subplot axes. To show the text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*.", "dflt": true, @@ -16424,11 +16179,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "dx": { "anim": true, "description": "Sets the x coordinate step. See `x0` for more info.", @@ -16454,16 +16204,6 @@ "editType": "calc", "valType": "data_array" }, - "arrayminussrc": { - "description": "Sets the source reference on Chart Studio Cloud for `arrayminus`.", - "editType": "none", - "valType": "string" - }, - "arraysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `array`.", - "editType": "none", - "valType": "string" - }, "color": { "description": "Sets the stroke color of the error bars.", "editType": "style", @@ -16547,16 +16287,6 @@ "editType": "calc", "valType": "data_array" }, - "arrayminussrc": { - "description": "Sets the source reference on Chart Studio Cloud for `arrayminus`.", - "editType": "none", - "valType": "string" - }, - "arraysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `array`.", - "editType": "none", - "valType": "string" - }, "color": { "description": "Sets the stroke color of the error bars.", "editType": "style", @@ -16644,11 +16374,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -16662,33 +16387,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -16696,11 +16406,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -16711,11 +16416,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -16731,11 +16431,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -16744,22 +16439,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -16771,11 +16456,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -16789,11 +16469,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -16809,11 +16484,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -16826,11 +16496,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -16841,11 +16506,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -16867,11 +16527,6 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", @@ -16879,22 +16534,12 @@ "editType": "style", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "anim": true, "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "insidetextanchor": { "description": "Determines if texts are kept at center or start/end points in `textposition` *inside* mode.", "dflt": "end", @@ -16912,11 +16557,6 @@ "editType": "style", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used for `text` lying inside the bar.", "editType": "calc", "family": { @@ -16927,11 +16567,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -16947,11 +16582,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -16960,22 +16590,12 @@ "editType": "calc", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "calc", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -16987,11 +16607,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -17005,11 +16620,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -17025,11 +16635,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -17042,11 +16647,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "legend": { @@ -17637,21 +17237,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -17841,11 +17431,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "cornerradius": { "description": "Sets the rounding of corners. May be an integer number of pixels, or a percentage of bar width (as a string ending in %). Defaults to `layout.barcornerradius`. In stack or relative barmode, the first trace to set cornerradius is used for the whole stack.", "editType": "calc", @@ -17914,11 +17499,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.", @@ -17935,11 +17515,6 @@ "editType": "style", "min": 0, "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" } }, "opacity": { @@ -17951,11 +17526,6 @@ "min": 0, "valType": "number" }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, "pattern": { "bgcolor": { "arrayOk": true, @@ -17963,11 +17533,6 @@ "editType": "style", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the pattern within the marker.", "editType": "style", "fgcolor": { @@ -17976,11 +17541,6 @@ "editType": "style", "valType": "color" }, - "fgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `fgcolor`.", - "editType": "none", - "valType": "string" - }, "fgopacity": { "description": "Sets the opacity of the foreground pattern fill. Defaults to a 0.5 when `fillmode` is *overlay*. Otherwise, defaults to 1.", "editType": "style", @@ -18004,11 +17564,6 @@ "editType": "style", "valType": "string" }, - "pathsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `path`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shape": { "arrayOk": true, @@ -18027,11 +17582,6 @@ "." ] }, - "shapesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shape`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "description": "Sets the size of unit squares of the pattern fill in pixels, which corresponds to the interval of repetition of the pattern.", @@ -18040,11 +17590,6 @@ "min": 0, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "solidity": { "arrayOk": true, "description": "Sets the solidity of the pattern fill. Solidity is roughly the fraction of the area filled by the pattern. Solidity of 0 shows only the background color without pattern and solidty of 1 shows only the foreground color without pattern.", @@ -18053,11 +17598,6 @@ "max": 1, "min": 0, "valType": "number" - }, - "soliditysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `solidity`.", - "editType": "none", - "valType": "string" } }, "reversescale": { @@ -18080,11 +17620,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -18103,11 +17638,6 @@ "editType": "calc", "valType": "string" }, - "offsetsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `offset`.", - "editType": "none", - "valType": "string" - }, "opacity": { "description": "Sets the opacity of the trace.", "dflt": 1, @@ -18131,11 +17661,6 @@ "editType": "style", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used for `text` lying outside the bar.", "editType": "calc", "family": { @@ -18146,11 +17671,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -18166,11 +17686,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -18179,22 +17694,12 @@ "editType": "calc", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "calc", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -18206,11 +17711,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -18224,11 +17724,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -18244,11 +17739,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -18261,11 +17751,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "selected": { @@ -18327,11 +17812,6 @@ "editType": "style", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used for `text`.", "editType": "calc", "family": { @@ -18342,11 +17822,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -18362,11 +17837,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -18375,22 +17845,12 @@ "editType": "calc", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "calc", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -18402,11 +17862,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -18420,11 +17875,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -18440,11 +17890,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -18457,11 +17902,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "textposition": { @@ -18477,16 +17917,6 @@ "none" ] }, - "textpositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", - "editType": "none", - "valType": "string" - }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "texttemplate": { "arrayOk": true, "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `value` and `label`.", @@ -18500,11 +17930,6 @@ "editType": "plot", "valType": "any" }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, "type": "bar", "uid": { "anim": true, @@ -18565,11 +17990,6 @@ "min": 0, "valType": "number" }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" - }, "x": { "anim": true, "description": "Sets the x coordinates.", @@ -18641,11 +18061,6 @@ "end" ] }, - "xsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `x`.", - "editType": "none", - "valType": "string" - }, "y": { "anim": true, "description": "Sets the y coordinates.", @@ -18717,11 +18132,6 @@ "end" ] }, - "ysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `y`.", - "editType": "none", - "valType": "string" - }, "zorder": { "description": "Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`.", "dflt": 0, @@ -18799,21 +18209,11 @@ "editType": "calc", "valType": "any" }, - "basesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `base`.", - "editType": "none", - "valType": "string" - }, "customdata": { "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements", "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "dr": { "description": "Sets the r coordinate step.", "dflt": 1, @@ -18843,11 +18243,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -18861,33 +18256,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -18895,11 +18275,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -18910,11 +18285,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -18930,11 +18300,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -18943,22 +18308,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -18970,11 +18325,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -18988,11 +18338,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -19008,11 +18353,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -19025,11 +18365,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -19040,11 +18375,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -19066,11 +18396,6 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Same as `text`.", @@ -19078,21 +18403,11 @@ "editType": "style", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -19681,21 +18996,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -19885,11 +19190,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "line": { "autocolorscale": { @@ -19953,11 +19253,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.", @@ -19973,11 +19268,6 @@ "editType": "style", "min": 0, "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" } }, "opacity": { @@ -19989,11 +19279,6 @@ "min": 0, "valType": "number" }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, "pattern": { "bgcolor": { "arrayOk": true, @@ -20001,11 +19286,6 @@ "editType": "style", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the pattern within the marker.", "editType": "style", "fgcolor": { @@ -20014,11 +19294,6 @@ "editType": "style", "valType": "color" }, - "fgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `fgcolor`.", - "editType": "none", - "valType": "string" - }, "fgopacity": { "description": "Sets the opacity of the foreground pattern fill. Defaults to a 0.5 when `fillmode` is *overlay*. Otherwise, defaults to 1.", "editType": "style", @@ -20042,11 +19317,6 @@ "editType": "style", "valType": "string" }, - "pathsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `path`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shape": { "arrayOk": true, @@ -20065,11 +19335,6 @@ "." ] }, - "shapesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shape`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "description": "Sets the size of unit squares of the pattern fill in pixels, which corresponds to the interval of repetition of the pattern.", @@ -20078,11 +19343,6 @@ "min": 0, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "solidity": { "arrayOk": true, "description": "Sets the solidity of the pattern fill. Solidity is roughly the fraction of the area filled by the pattern. Solidity of 0 shows only the background color without pattern and solidty of 1 shows only the foreground color without pattern.", @@ -20091,11 +19351,6 @@ "max": 1, "min": 0, "valType": "number" - }, - "soliditysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `solidity`.", - "editType": "none", - "valType": "string" } }, "reversescale": { @@ -20118,11 +19373,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -20135,11 +19385,6 @@ "editType": "calc", "valType": "number" }, - "offsetsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `offset`.", - "editType": "none", - "valType": "string" - }, "opacity": { "description": "Sets the opacity of the trace.", "dflt": 1, @@ -20159,11 +19404,6 @@ "editType": "calc+clearAxisTypes", "valType": "any" }, - "rsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `r`.", - "editType": "none", - "valType": "string" - }, "selected": { "editType": "style", "marker": { @@ -20217,11 +19457,6 @@ "editType": "calc", "valType": "string" }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "theta": { "description": "Sets the angular coordinates", "editType": "calc+clearAxisTypes", @@ -20233,11 +19468,6 @@ "editType": "calc+clearAxisTypes", "valType": "any" }, - "thetasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `theta`.", - "editType": "none", - "valType": "string" - }, "thetaunit": { "description": "Sets the unit of input *theta* values. Has an effect only when on *linear* angular axes.", "dflt": "degrees", @@ -20307,11 +19537,6 @@ "editType": "calc", "min": 0, "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" } }, "categories": [ @@ -20380,11 +19605,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "dx": { "description": "Sets the x coordinate step for multi-box traces set using q1/median/q3.", "editType": "calc", @@ -20419,11 +19639,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -20437,33 +19652,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -20471,11 +19671,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -20486,11 +19681,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -20506,11 +19696,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -20519,22 +19704,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -20546,11 +19721,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -20564,11 +19734,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -20584,11 +19749,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -20601,11 +19761,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -20616,11 +19771,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -20652,11 +19802,6 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Same as `text`.", @@ -20664,21 +19809,11 @@ "editType": "style", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "jitter": { "description": "Sets the amount of jitter in the sample points drawn. If *0*, the sample points align along the distribution axis. If *1*, the sample points are drawn in a random jitter of width equal to the width of the box(es).", "editType": "calc", @@ -20830,11 +19965,6 @@ "editType": "calc", "valType": "data_array" }, - "lowerfencesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lowerfence`.", - "editType": "none", - "valType": "string" - }, "marker": { "angle": { "arrayOk": false, @@ -21406,32 +20536,17 @@ "editType": "calc", "valType": "data_array" }, - "meansrc": { - "description": "Sets the source reference on Chart Studio Cloud for `mean`.", - "editType": "none", - "valType": "string" - }, "median": { "description": "Sets the median values. There should be as many items as the number of boxes desired.", "editType": "calc+clearAxisTypes", "valType": "data_array" }, - "mediansrc": { - "description": "Sets the source reference on Chart Studio Cloud for `median`.", - "editType": "none", - "valType": "string" - }, "meta": { "arrayOk": true, "description": "Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index.", "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover. For box traces, the name will also be used for the position coordinate, if `x` and `x0` (`y` and `y0` if horizontal) are missing and the position axis is categorical", "editType": "calc+clearAxisTypes", @@ -21447,11 +20562,6 @@ "editType": "calc", "valType": "data_array" }, - "notchspansrc": { - "description": "Sets the source reference on Chart Studio Cloud for `notchspan`.", - "editType": "none", - "valType": "string" - }, "notchwidth": { "description": "Sets the width of the notches relative to the box width. For example, with 0, the notches are as wide as the box(es).", "dflt": 0.25, @@ -21495,21 +20605,11 @@ "editType": "calc+clearAxisTypes", "valType": "data_array" }, - "q1src": { - "description": "Sets the source reference on Chart Studio Cloud for `q1`.", - "editType": "none", - "valType": "string" - }, "q3": { "description": "Sets the Quartile 3 values. There should be as many items as the number of boxes desired.", "editType": "calc+clearAxisTypes", "valType": "data_array" }, - "q3src": { - "description": "Sets the source reference on Chart Studio Cloud for `q3`.", - "editType": "none", - "valType": "string" - }, "quartilemethod": { "description": "Sets the method used to compute the sample's Q1 and Q3 quartiles. The *linear* method uses the 25th percentile for Q1 and 75th percentile for Q3 as computed using method #10 (listed on http://jse.amstat.org/v14n3/langford.html). The *exclusive* method uses the median to divide the ordered dataset into two halves if the sample is odd, it does not include the median in either half - Q1 is then the median of the lower half and Q3 the median of the upper half. The *inclusive* method also uses the median to divide the ordered dataset into two halves but if the sample is odd, it includes the median in both halves - Q1 is then the median of the lower half and Q3 the median of the upper half.", "dflt": "linear", @@ -21533,11 +20633,6 @@ "min": 0, "valType": "number" }, - "sdsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `sd`.", - "editType": "none", - "valType": "string" - }, "selected": { "editType": "style", "marker": { @@ -21597,11 +20692,6 @@ "editType": "calc", "valType": "string" }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "type": "box", "uid": { "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", @@ -21644,11 +20734,6 @@ "editType": "calc", "valType": "data_array" }, - "upperfencesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `upperfence`.", - "editType": "none", - "valType": "string" - }, "visible": { "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).", "dflt": true, @@ -21743,11 +20828,6 @@ "end" ] }, - "xsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `x`.", - "editType": "none", - "valType": "string" - }, "y": { "description": "Sets the y sample data or coordinates. See overview for more info.", "editType": "calc+clearAxisTypes", @@ -21816,11 +20896,6 @@ "end" ] }, - "ysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `y`.", - "editType": "none", - "valType": "string" - }, "zorder": { "description": "Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`.", "dflt": 0, @@ -21879,21 +20954,11 @@ "editType": "calc", "valType": "data_array" }, - "closesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `close`.", - "editType": "none", - "valType": "string" - }, "customdata": { "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements", "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "decreasing": { "editType": "style", "fillcolor": { @@ -21925,11 +20990,6 @@ "editType": "calc", "valType": "data_array" }, - "highsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `high`.", - "editType": "none", - "valType": "string" - }, "hoverinfo": { "arrayOk": true, "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.", @@ -21949,11 +21009,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -21967,33 +21022,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -22001,11 +21041,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -22016,11 +21051,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -22036,11 +21066,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -22049,22 +21074,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -22076,11 +21091,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -22094,11 +21104,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -22114,11 +21119,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -22131,11 +21131,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -22146,11 +21141,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -22178,11 +21168,6 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Same as `text`.", @@ -22190,21 +21175,11 @@ "editType": "calc", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "increasing": { "editType": "style", "fillcolor": { @@ -22370,22 +21345,12 @@ "editType": "calc", "valType": "data_array" }, - "lowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `low`.", - "editType": "none", - "valType": "string" - }, "meta": { "arrayOk": true, "description": "Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index.", "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -22404,11 +21369,6 @@ "editType": "calc", "valType": "data_array" }, - "opensrc": { - "description": "Sets the source reference on Chart Studio Cloud for `open`.", - "editType": "none", - "valType": "string" - }, "selectedpoints": { "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.", "editType": "calc", @@ -22427,11 +21387,6 @@ "editType": "calc", "valType": "string" }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "type": "candlestick", "uid": { "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", @@ -22525,11 +21480,6 @@ "end" ] }, - "xsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `x`.", - "editType": "none", - "valType": "string" - }, "yaxis": { "description": "Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on.", "dflt": "y", @@ -22644,11 +21594,6 @@ "editType": "calc", "valType": "data_array" }, - "categoryarraysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `categoryarray`.", - "editType": "none", - "valType": "string" - }, "categoryorder": { "description": "Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`.", "dflt": "trace", @@ -23126,21 +22071,11 @@ "editType": "calc", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "calc", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "title": { "editType": "calc", "font": { @@ -23259,11 +22194,6 @@ ] } }, - "asrc": { - "description": "Sets the source reference on Chart Studio Cloud for `a`.", - "editType": "none", - "valType": "string" - }, "b": { "description": "A two dimensional array of y coordinates at each carpet point.", "editType": "calc", @@ -23316,11 +22246,6 @@ "editType": "calc", "valType": "data_array" }, - "categoryarraysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `categoryarray`.", - "editType": "none", - "valType": "string" - }, "categoryorder": { "description": "Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`.", "dflt": "trace", @@ -23798,21 +22723,11 @@ "editType": "calc", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "calc", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "title": { "editType": "calc", "font": { @@ -23931,11 +22846,6 @@ ] } }, - "bsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `b`.", - "editType": "none", - "valType": "string" - }, "carpet": { "description": "An identifier for this carpet, so that `scattercarpet` and `contourcarpet` traces can specify a carpet plot on which they lie", "editType": "calc", @@ -23958,11 +22868,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "da": { "description": "Sets the a coordinate step. See `a0` for more info.", "dflt": 1, @@ -24073,11 +22978,6 @@ "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -24201,11 +23101,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -24253,11 +23148,6 @@ "editType": "calc+clearAxisTypes", "valType": "subplotid" }, - "xsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `x`.", - "editType": "none", - "valType": "string" - }, "y": { "description": "A two dimensional array of y coordinates at each carpet point.", "editType": "calc+clearAxisTypes", @@ -24269,11 +23159,6 @@ "editType": "calc+clearAxisTypes", "valType": "subplotid" }, - "ysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `y`.", - "editType": "none", - "valType": "string" - }, "zorder": { "description": "Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`.", "dflt": 0, @@ -24725,21 +23610,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -24934,11 +23809,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "featureidkey": { "description": "Sets the key in GeoJSON features which is used as id to match the items included in the `locations` array. Only has an effect when `geojson` is set. Support nested property, for example *properties.name*.", "dflt": "id", @@ -24974,11 +23844,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -24992,33 +23857,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -25026,11 +23876,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -25041,11 +23886,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -25061,11 +23901,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -25074,22 +23909,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -25101,11 +23926,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -25119,11 +23939,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -25139,11 +23954,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -25156,11 +23966,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -25171,11 +23976,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -25197,11 +23997,6 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Same as `text`.", @@ -25209,21 +24004,11 @@ "editType": "calc", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -25364,11 +24149,6 @@ "editType": "calc", "valType": "data_array" }, - "locationssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `locations`.", - "editType": "none", - "valType": "string" - }, "marker": { "editType": "calc", "line": { @@ -25379,11 +24159,6 @@ "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "role": "object", "width": { @@ -25393,11 +24168,6 @@ "editType": "calc", "min": 0, "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" } }, "opacity": { @@ -25409,11 +24179,6 @@ "min": 0, "valType": "number" }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, "role": "object" }, "meta": { @@ -25422,11 +24187,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -25477,11 +24237,6 @@ "editType": "calc", "valType": "string" }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "type": "choropleth", "uid": { "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", @@ -25555,11 +24310,6 @@ "zauto": false }, "valType": "number" - }, - "zsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `z`.", - "editType": "none", - "valType": "string" } }, "categories": [ @@ -26006,21 +24756,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -26215,11 +24955,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "featureidkey": { "description": "Sets the key in GeoJSON features which is used as id to match the items included in the `locations` array. Support nested property, for example *properties.name*.", "dflt": "id", @@ -26249,11 +24984,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -26267,33 +24997,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -26301,11 +25016,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -26316,11 +25026,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -26336,11 +25041,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -26349,22 +25049,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -26376,11 +25066,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -26394,11 +25079,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -26414,11 +25094,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -26431,11 +25106,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -26446,11 +25116,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -26472,11 +25137,6 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Same as `text`.", @@ -26484,21 +25144,11 @@ "editType": "calc", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -26627,11 +25277,6 @@ "editType": "calc", "valType": "data_array" }, - "locationssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `locations`.", - "editType": "none", - "valType": "string" - }, "marker": { "editType": "calc", "line": { @@ -26642,11 +25287,6 @@ "editType": "plot", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "role": "object", "width": { @@ -26656,11 +25296,6 @@ "editType": "plot", "min": 0, "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" } }, "opacity": { @@ -26672,11 +25307,6 @@ "min": 0, "valType": "number" }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, "role": "object" }, "meta": { @@ -26685,11 +25315,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -26746,11 +25371,6 @@ "editType": "calc", "valType": "string" }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "type": "choroplethmap", "uid": { "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", @@ -26824,11 +25444,6 @@ "zauto": false }, "valType": "number" - }, - "zsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `z`.", - "editType": "none", - "valType": "string" } }, "categories": [ @@ -27277,21 +25892,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -27486,11 +26091,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "featureidkey": { "description": "Sets the key in GeoJSON features which is used as id to match the items included in the `locations` array. Support nested property, for example *properties.name*.", "dflt": "id", @@ -27520,11 +26120,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -27538,33 +26133,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -27572,11 +26152,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -27587,11 +26162,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -27607,11 +26177,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -27620,22 +26185,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -27647,11 +26202,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -27665,11 +26215,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -27685,11 +26230,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -27702,11 +26242,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -27717,11 +26252,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -27743,11 +26273,6 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Same as `text`.", @@ -27755,21 +26280,11 @@ "editType": "calc", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -27898,11 +26413,6 @@ "editType": "calc", "valType": "data_array" }, - "locationssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `locations`.", - "editType": "none", - "valType": "string" - }, "marker": { "editType": "calc", "line": { @@ -27913,11 +26423,6 @@ "editType": "plot", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "role": "object", "width": { @@ -27927,11 +26432,6 @@ "editType": "plot", "min": 0, "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" } }, "opacity": { @@ -27943,11 +26443,6 @@ "min": 0, "valType": "number" }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, "role": "object" }, "meta": { @@ -27956,11 +26451,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -28017,11 +26507,6 @@ "editType": "calc", "valType": "string" }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "type": "choroplethmapbox", "uid": { "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", @@ -28095,11 +26580,6 @@ "zauto": false }, "valType": "number" - }, - "zsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `z`.", - "editType": "none", - "valType": "string" } }, "categories": [ @@ -28587,21 +27067,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -28796,11 +27266,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "hoverinfo": { "arrayOk": true, "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.", @@ -28824,11 +27289,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -28842,33 +27302,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -28876,11 +27321,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -28891,11 +27331,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -28911,11 +27346,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -28924,22 +27354,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -28951,11 +27371,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -28969,11 +27384,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -28989,11 +27399,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -29006,11 +27411,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -29021,11 +27421,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -29047,11 +27442,6 @@ "editType": "calc", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Same as `text`.", @@ -29059,21 +27449,11 @@ "editType": "calc", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -29291,11 +27671,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -29357,11 +27732,6 @@ "editType": "calc", "valType": "string" }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "type": "cone", "u": { "description": "Sets the x components of the vector field.", @@ -29384,11 +27754,6 @@ "editType": "none", "valType": "any" }, - "usrc": { - "description": "Sets the source reference on Chart Studio Cloud for `u`.", - "editType": "none", - "valType": "string" - }, "v": { "description": "Sets the y components of the vector field.", "editType": "calc", @@ -29411,11 +27776,6 @@ "legendonly" ] }, - "vsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `v`.", - "editType": "none", - "valType": "string" - }, "w": { "description": "Sets the z components of the vector field.", "editType": "calc", @@ -29427,11 +27787,6 @@ "editType": "none", "valType": "string" }, - "wsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `w`.", - "editType": "none", - "valType": "string" - }, "x": { "description": "Sets the x coordinates of the vector field and of the displayed cones.", "editType": "calc+clearAxisTypes", @@ -29443,11 +27798,6 @@ "editType": "none", "valType": "string" }, - "xsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `x`.", - "editType": "none", - "valType": "string" - }, "y": { "description": "Sets the y coordinates of the vector field and of the displayed cones.", "editType": "calc+clearAxisTypes", @@ -29459,11 +27809,6 @@ "editType": "none", "valType": "string" }, - "ysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `y`.", - "editType": "none", - "valType": "string" - }, "z": { "description": "Sets the z coordinates of the vector field and of the displayed cones.", "editType": "calc+clearAxisTypes", @@ -29474,11 +27819,6 @@ "dflt": "", "editType": "none", "valType": "string" - }, - "zsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `z`.", - "editType": "none", - "valType": "string" } }, "categories": [ @@ -29926,21 +28266,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -30332,11 +28662,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "dx": { "description": "Sets the x coordinate step. See `x0` for more info.", "dflt": 1, @@ -30379,11 +28704,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -30397,33 +28717,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -30431,11 +28736,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -30446,11 +28746,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -30466,11 +28761,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -30479,22 +28769,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -30506,11 +28786,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -30524,11 +28799,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -30544,11 +28814,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -30561,11 +28826,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -30576,11 +28836,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -30608,31 +28863,16 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "description": "Same as `text`.", "editType": "calc", "valType": "data_array" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -30799,11 +29039,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -30938,11 +29173,6 @@ "valType": "integer" } }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "texttemplate": { "description": "For this trace it only has an effect if `coloring` is set to *heatmap*. Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `x`, `y`, `z` and `text`.", "dflt": "", @@ -31064,11 +29294,6 @@ "end" ] }, - "xsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `x`.", - "editType": "none", - "valType": "string" - }, "xtype": { "description": "If *array*, the heatmap's x coordinates are given by *x* (the default behavior when `x` is provided). If *scaled*, the heatmap's x coordinates are given by *x0* and *dx* (the default behavior when `x` is not provided).", "editType": "calc+clearAxisTypes", @@ -31159,11 +29384,6 @@ "end" ] }, - "ysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `y`.", - "editType": "none", - "valType": "string" - }, "ytype": { "description": "If *array*, the heatmap's y coordinates are given by *y* (the default behavior when `y` is provided) If *scaled*, the heatmap's y coordinates are given by *y0* and *dy* (the default behavior when `y` is not provided)", "editType": "calc+clearAxisTypes", @@ -31221,11 +29441,6 @@ "dflt": 0, "editType": "plot", "valType": "integer" - }, - "zsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `z`.", - "editType": "none", - "valType": "string" } }, "categories": [ @@ -31260,11 +29475,6 @@ }, "valType": "any" }, - "asrc": { - "description": "Sets the source reference on Chart Studio Cloud for `a`.", - "editType": "none", - "valType": "string" - }, "atype": { "description": "If *array*, the heatmap's x coordinates are given by *x* (the default behavior when `x` is provided). If *scaled*, the heatmap's x coordinates are given by *x0* and *dx* (the default behavior when `x` is not provided).", "editType": "calc+clearAxisTypes", @@ -31305,11 +29515,6 @@ }, "valType": "any" }, - "bsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `b`.", - "editType": "none", - "valType": "string" - }, "btype": { "description": "If *array*, the heatmap's y coordinates are given by *y* (the default behavior when `y` is provided) If *scaled*, the heatmap's y coordinates are given by *y0* and *dy* (the default behavior when `y` is not provided)", "editType": "calc+clearAxisTypes", @@ -31743,21 +29948,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -32143,11 +30338,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "da": { "description": "Sets the x coordinate step. See `x0` for more info.", "dflt": 1, @@ -32176,21 +30366,11 @@ "editType": "calc", "valType": "data_array" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -32357,11 +30537,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -32405,11 +30580,6 @@ "editType": "calc", "valType": "data_array" }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "transpose": { "description": "Transposes the z data.", "dflt": false, @@ -32492,11 +30662,6 @@ "dflt": 0, "editType": "plot", "valType": "integer" - }, - "zsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `z`.", - "editType": "none", - "valType": "string" } }, "categories": [ @@ -32951,21 +31116,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -33160,11 +31315,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "hoverinfo": { "arrayOk": true, "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.", @@ -33184,11 +31334,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -33202,33 +31347,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -33236,11 +31366,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -33251,11 +31376,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -33271,11 +31391,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -33284,22 +31399,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -33311,11 +31416,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -33329,11 +31429,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -33349,11 +31444,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -33366,11 +31456,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -33381,11 +31466,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -33407,11 +31487,6 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Sets hover text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", @@ -33419,31 +31494,16 @@ "editType": "calc", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "lat": { "description": "Sets the latitude coordinates (in degrees North).", "editType": "calc", "valType": "data_array" }, - "latsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lat`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -33572,22 +31632,12 @@ "editType": "calc", "valType": "data_array" }, - "lonsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lon`.", - "editType": "none", - "valType": "string" - }, "meta": { "arrayOk": true, "description": "Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index.", "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -33609,11 +31659,6 @@ "min": 1, "valType": "number" }, - "radiussrc": { - "description": "Sets the source reference on Chart Studio Cloud for `radius`.", - "editType": "none", - "valType": "string" - }, "reversescale": { "description": "Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color.", "dflt": false, @@ -33645,11 +31690,6 @@ "editType": "calc", "valType": "string" }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "type": "densitymap", "uid": { "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", @@ -33708,11 +31748,6 @@ "zauto": false }, "valType": "number" - }, - "zsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `z`.", - "editType": "none", - "valType": "string" } }, "categories": [ @@ -34160,21 +32195,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -34369,11 +32394,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "hoverinfo": { "arrayOk": true, "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.", @@ -34393,11 +32413,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -34411,33 +32426,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -34445,11 +32445,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -34460,11 +32455,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -34480,11 +32470,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -34493,22 +32478,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -34520,11 +32495,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -34538,11 +32508,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -34558,11 +32523,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -34575,11 +32535,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -34590,11 +32545,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -34616,11 +32566,6 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Sets hover text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", @@ -34628,31 +32573,16 @@ "editType": "calc", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "lat": { "description": "Sets the latitude coordinates (in degrees North).", "editType": "calc", "valType": "data_array" }, - "latsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lat`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -34781,22 +32711,12 @@ "editType": "calc", "valType": "data_array" }, - "lonsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lon`.", - "editType": "none", - "valType": "string" - }, "meta": { "arrayOk": true, "description": "Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index.", "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -34818,11 +32738,6 @@ "min": 1, "valType": "number" }, - "radiussrc": { - "description": "Sets the source reference on Chart Studio Cloud for `radius`.", - "editType": "none", - "valType": "string" - }, "reversescale": { "description": "Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color.", "dflt": false, @@ -34854,11 +32769,6 @@ "editType": "calc", "valType": "string" }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "type": "densitymapbox", "uid": { "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", @@ -34917,11 +32827,6 @@ "zauto": false }, "valType": "number" - }, - "zsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `z`.", - "editType": "none", - "valType": "string" } }, "categories": [ @@ -35013,11 +32918,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "dx": { "description": "Sets the x coordinate step. See `x0` for more info.", "dflt": 1, @@ -35051,11 +32951,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -35069,33 +32964,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -35103,11 +32983,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -35118,11 +32993,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -35138,11 +33008,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -35151,22 +33016,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -35178,11 +33033,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -35196,11 +33046,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -35216,11 +33061,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -35233,11 +33073,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -35248,11 +33083,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -35274,11 +33104,6 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", @@ -35286,21 +33111,11 @@ "editType": "style", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "insidetextanchor": { "description": "Determines if texts are kept at center or start/end points in `textposition` *inside* mode.", "dflt": "middle", @@ -35318,11 +33133,6 @@ "editType": "style", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used for `text` lying inside the bar.", "editType": "calc", "family": { @@ -35333,11 +33143,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -35353,11 +33158,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -35366,22 +33166,12 @@ "editType": "calc", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "calc", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -35393,11 +33183,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -35411,11 +33196,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -35431,11 +33211,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -35448,11 +33223,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "legend": { @@ -36043,21 +33813,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -36247,11 +34007,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "line": { "autocolorscale": { @@ -36315,11 +34070,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.", @@ -36335,11 +34085,6 @@ "editType": "style", "min": 0, "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" } }, "opacity": { @@ -36351,11 +34096,6 @@ "min": 0, "valType": "number" }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", "dflt": false, @@ -36376,11 +34116,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -36422,11 +34157,6 @@ "editType": "style", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used for `text` lying outside the bar.", "editType": "calc", "family": { @@ -36437,11 +34167,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -36457,11 +34182,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -36470,22 +34190,12 @@ "editType": "calc", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "calc", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -36497,11 +34207,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -36515,11 +34220,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -36535,11 +34235,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -36552,11 +34247,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "selectedpoints": { @@ -36589,11 +34279,6 @@ "editType": "style", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used for `text`.", "editType": "calc", "family": { @@ -36604,11 +34289,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -36624,11 +34304,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -36637,22 +34312,12 @@ "editType": "calc", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "calc", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -36664,11 +34329,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -36682,11 +34342,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -36702,11 +34357,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -36719,11 +34369,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "textinfo": { @@ -36756,16 +34401,6 @@ "none" ] }, - "textpositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", - "editType": "none", - "valType": "string" - }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "texttemplate": { "arrayOk": true, "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `percentInitial`, `percentPrevious`, `percentTotal`, `label` and `value`.", @@ -36779,11 +34414,6 @@ "editType": "plot", "valType": "any" }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, "type": "funnel", "uid": { "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", @@ -36859,11 +34489,6 @@ "end" ] }, - "xsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `x`.", - "editType": "none", - "valType": "string" - }, "y": { "description": "Sets the y coordinates.", "editType": "calc+clearAxisTypes", @@ -36909,11 +34534,6 @@ "end" ] }, - "ysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `y`.", - "editType": "none", - "valType": "string" - }, "zorder": { "description": "Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`.", "dflt": 0, @@ -36985,11 +34605,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "dlabel": { "description": "Sets the label step. See `label0` for more info.", "dflt": 1, @@ -37079,11 +34694,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -37097,33 +34707,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -37131,11 +34726,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -37146,11 +34736,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -37166,11 +34751,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -37179,22 +34759,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -37206,11 +34776,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -37224,11 +34789,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -37244,11 +34804,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -37261,11 +34816,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -37276,11 +34826,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -37302,11 +34847,6 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Sets hover text elements associated with each sector. If a single string, the same string appears for all data points. If an array of string, the items are mapped in order of this trace's sectors. To be seen, trace `hoverinfo` must contain a *text* flag.", @@ -37314,32 +34854,17 @@ "editType": "style", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "insidetextfont": { "color": { "arrayOk": true, "editType": "plot", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used for `textinfo` lying inside the sector.", "editType": "plot", "family": { @@ -37350,11 +34875,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -37370,11 +34890,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -37383,22 +34898,12 @@ "editType": "plot", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "plot", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -37410,11 +34915,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -37428,11 +34928,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -37448,11 +34943,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -37465,11 +34955,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "label0": { @@ -37483,11 +34968,6 @@ "editType": "calc", "valType": "data_array" }, - "labelssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `labels`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -37617,11 +35097,6 @@ "editType": "calc", "valType": "data_array" }, - "colorssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `colors`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "line": { "color": { @@ -37631,11 +35106,6 @@ "editType": "style", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "role": "object", "width": { @@ -37645,11 +35115,6 @@ "editType": "style", "min": 0, "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" } }, "pattern": { @@ -37659,11 +35124,6 @@ "editType": "style", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the pattern within the marker.", "editType": "style", "fgcolor": { @@ -37672,11 +35132,6 @@ "editType": "style", "valType": "color" }, - "fgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `fgcolor`.", - "editType": "none", - "valType": "string" - }, "fgopacity": { "description": "Sets the opacity of the foreground pattern fill. Defaults to a 0.5 when `fillmode` is *overlay*. Otherwise, defaults to 1.", "editType": "style", @@ -37700,11 +35155,6 @@ "editType": "style", "valType": "string" }, - "pathsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `path`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shape": { "arrayOk": true, @@ -37723,11 +35173,6 @@ "." ] }, - "shapesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shape`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "description": "Sets the size of unit squares of the pattern fill in pixels, which corresponds to the interval of repetition of the pattern.", @@ -37736,11 +35181,6 @@ "min": 0, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "solidity": { "arrayOk": true, "description": "Sets the solidity of the pattern fill. Solidity is roughly the fraction of the area filled by the pattern. Solidity of 0 shows only the background color without pattern and solidty of 1 shows only the foreground color without pattern.", @@ -37749,11 +35189,6 @@ "max": 1, "min": 0, "valType": "number" - }, - "soliditysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `solidity`.", - "editType": "none", - "valType": "string" } }, "role": "object" @@ -37764,11 +35199,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -37805,11 +35235,6 @@ "editType": "plot", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used for `textinfo`.", "editType": "plot", "family": { @@ -37820,11 +35245,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -37840,11 +35260,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -37853,22 +35268,12 @@ "editType": "plot", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "plot", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -37880,11 +35285,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -37898,11 +35298,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -37918,11 +35313,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -37935,11 +35325,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "textinfo": { @@ -37967,16 +35352,6 @@ "none" ] }, - "textpositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", - "editType": "none", - "valType": "string" - }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "texttemplate": { "arrayOk": true, "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `label`, `color`, `value`, `text` and `percent`.", @@ -37990,11 +35365,6 @@ "editType": "plot", "valType": "any" }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, "title": { "editType": "plot", "font": { @@ -38003,11 +35373,6 @@ "editType": "plot", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used for `title`.", "editType": "plot", "family": { @@ -38018,11 +35383,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -38038,11 +35398,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -38051,22 +35406,12 @@ "editType": "plot", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "plot", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -38078,11 +35423,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -38096,11 +35436,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -38116,11 +35451,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -38133,11 +35463,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "position": { @@ -38175,11 +35500,6 @@ "editType": "calc", "valType": "data_array" }, - "valuessrc": { - "description": "Sets the source reference on Chart Studio Cloud for `values`.", - "editType": "none", - "valType": "string" - }, "visible": { "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).", "dflt": true, @@ -38213,11 +35533,6 @@ "description": "hiddenlabels is the funnelarea & pie chart analog of visible:'legendonly' but it can contain many labels, and can simultaneously hide slices from several pies/funnelarea charts", "editType": "calc", "valType": "data_array" - }, - "hiddenlabelssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hiddenlabels`.", - "editType": "none", - "valType": "string" } }, "meta": { @@ -38654,21 +35969,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -38868,11 +36173,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "dx": { "description": "Sets the x coordinate step. See `x0` for more info.", "dflt": 1, @@ -38910,11 +36210,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -38928,33 +36223,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -38962,11 +36242,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -38977,11 +36252,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -38997,11 +36267,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -39010,22 +36275,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -39037,11 +36292,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -39055,11 +36305,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -39075,11 +36320,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -39092,11 +36332,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -39107,11 +36342,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -39139,31 +36369,16 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "description": "Same as `text`.", "editType": "calc", "valType": "data_array" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -39293,11 +36508,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -39425,11 +36635,6 @@ "valType": "integer" } }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "texttemplate": { "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `x`, `y`, `z` and `text`.", "dflt": "", @@ -39561,11 +36766,6 @@ "end" ] }, - "xsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `x`.", - "editType": "none", - "valType": "string" - }, "xtype": { "description": "If *array*, the heatmap's x coordinates are given by *x* (the default behavior when `x` is provided). If *scaled*, the heatmap's x coordinates are given by *x0* and *dx* (the default behavior when `x` is not provided).", "editType": "calc+clearAxisTypes", @@ -39666,11 +36866,6 @@ "end" ] }, - "ysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `y`.", - "editType": "none", - "valType": "string" - }, "ytype": { "description": "If *array*, the heatmap's y coordinates are given by *y* (the default behavior when `y` is provided) If *scaled*, the heatmap's y coordinates are given by *y0* and *dy* (the default behavior when `y` is not provided)", "editType": "calc+clearAxisTypes", @@ -39739,11 +36934,6 @@ "best", false ] - }, - "zsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `z`.", - "editType": "none", - "valType": "string" } }, "categories": [ @@ -39838,11 +37028,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "error_x": { "array": { "description": "Sets the data corresponding the length of each error bar. Values are plotted relative to the underlying data.", @@ -39854,16 +37039,6 @@ "editType": "calc", "valType": "data_array" }, - "arrayminussrc": { - "description": "Sets the source reference on Chart Studio Cloud for `arrayminus`.", - "editType": "none", - "valType": "string" - }, - "arraysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `array`.", - "editType": "none", - "valType": "string" - }, "color": { "description": "Sets the stroke color of the error bars.", "editType": "style", @@ -39947,16 +37122,6 @@ "editType": "calc", "valType": "data_array" }, - "arrayminussrc": { - "description": "Sets the source reference on Chart Studio Cloud for `arrayminus`.", - "editType": "none", - "valType": "string" - }, - "arraysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `array`.", - "editType": "none", - "valType": "string" - }, "color": { "description": "Sets the stroke color of the error bars.", "editType": "style", @@ -40070,11 +37235,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -40088,33 +37248,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -40122,11 +37267,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -40137,11 +37277,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -40157,11 +37292,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -40170,22 +37300,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -40197,11 +37317,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -40215,11 +37330,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -40235,11 +37345,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -40252,11 +37357,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -40267,11 +37367,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -40293,11 +37388,6 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Same as `text`.", @@ -40305,21 +37395,11 @@ "editType": "style", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "insidetextanchor": { "description": "Determines if texts are kept at center or start/end points in `textposition` *inside* mode.", "dflt": "end", @@ -41008,21 +38088,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -41212,11 +38282,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "cornerradius": { "description": "Sets the rounding of corners. May be an integer number of pixels, or a percentage of bar width (as a string ending in %). Defaults to `layout.barcornerradius`. In stack or relative barmode, the first trace to set cornerradius is used for the whole stack.", "editType": "calc", @@ -41285,11 +38350,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.", @@ -41305,11 +38365,6 @@ "editType": "style", "min": 0, "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" } }, "opacity": { @@ -41321,11 +38376,6 @@ "min": 0, "valType": "number" }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, "pattern": { "bgcolor": { "arrayOk": true, @@ -41333,11 +38383,6 @@ "editType": "style", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the pattern within the marker.", "editType": "style", "fgcolor": { @@ -41346,11 +38391,6 @@ "editType": "style", "valType": "color" }, - "fgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `fgcolor`.", - "editType": "none", - "valType": "string" - }, "fgopacity": { "description": "Sets the opacity of the foreground pattern fill. Defaults to a 0.5 when `fillmode` is *overlay*. Otherwise, defaults to 1.", "editType": "style", @@ -41374,11 +38414,6 @@ "editType": "style", "valType": "string" }, - "pathsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `path`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shape": { "arrayOk": true, @@ -41397,11 +38432,6 @@ "." ] }, - "shapesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shape`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "description": "Sets the size of unit squares of the pattern fill in pixels, which corresponds to the interval of repetition of the pattern.", @@ -41410,11 +38440,6 @@ "min": 0, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "solidity": { "arrayOk": true, "description": "Sets the solidity of the pattern fill. Solidity is roughly the fraction of the area filled by the pattern. Solidity of 0 shows only the background color without pattern and solidty of 1 shows only the foreground color without pattern.", @@ -41423,11 +38448,6 @@ "max": 1, "min": 0, "valType": "number" - }, - "soliditysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `solidity`.", - "editType": "none", - "valType": "string" } }, "reversescale": { @@ -41450,11 +38470,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -41741,11 +38756,6 @@ "none" ] }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "texttemplate": { "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `label` and `value`.", "dflt": "", @@ -41869,11 +38879,6 @@ "editType": "none", "valType": "string" }, - "xsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `x`.", - "editType": "none", - "valType": "string" - }, "y": { "description": "Sets the sample data to be binned on the y axis.", "editType": "calc+clearAxisTypes", @@ -41934,11 +38939,6 @@ "editType": "none", "valType": "string" }, - "ysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `y`.", - "editType": "none", - "valType": "string" - }, "zorder": { "description": "Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`.", "dflt": 0, @@ -42453,21 +39453,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -42662,11 +39652,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "histfunc": { "description": "Specifies the binning function used for this histogram trace. If *count*, the histogram values are computed by counting the number of values lying inside each bin. If *sum*, *avg*, *min*, *max*, the histogram values are computed using the sum, the average, the minimum or the maximum of the values lying inside each bin respectively.", "dflt": "count", @@ -42712,11 +39697,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -42730,33 +39710,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -42764,11 +39729,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -42779,11 +39739,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -42799,11 +39754,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -42812,22 +39762,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -42839,11 +39779,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -42857,11 +39792,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -42877,11 +39807,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -42894,11 +39819,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -42909,11 +39829,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -42935,21 +39850,11 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -43079,11 +39984,6 @@ "editType": "calc", "valType": "data_array" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "role": "object" }, @@ -43093,11 +39993,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -43341,11 +40236,6 @@ "editType": "none", "valType": "string" }, - "xsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `x`.", - "editType": "none", - "valType": "string" - }, "y": { "description": "Sets the sample data to be binned on the y axis.", "editType": "calc+clearAxisTypes", @@ -43419,11 +40309,6 @@ "editType": "none", "valType": "string" }, - "ysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `y`.", - "editType": "none", - "valType": "string" - }, "z": { "description": "Sets the aggregation data.", "editType": "calc", @@ -43477,11 +40362,6 @@ "best", false ] - }, - "zsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `z`.", - "editType": "none", - "valType": "string" } }, "categories": [ @@ -43951,21 +40831,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -44352,11 +41222,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "histfunc": { "description": "Specifies the binning function used for this histogram trace. If *count*, the histogram values are computed by counting the number of values lying inside each bin. If *sum*, *avg*, *min*, *max*, the histogram values are computed using the sum, the average, the minimum or the maximum of the values lying inside each bin respectively.", "dflt": "count", @@ -44402,11 +41267,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -44420,33 +41280,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -44454,11 +41299,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -44469,11 +41309,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -44489,11 +41324,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -44502,22 +41332,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -44529,11 +41349,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -44547,11 +41362,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -44567,11 +41377,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -44584,11 +41389,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -44599,11 +41399,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -44625,21 +41420,11 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -44807,11 +41592,6 @@ "editType": "calc", "valType": "data_array" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "role": "object" }, @@ -44821,11 +41601,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -45069,11 +41844,6 @@ "editType": "none", "valType": "string" }, - "xsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `x`.", - "editType": "none", - "valType": "string" - }, "y": { "description": "Sets the sample data to be binned on the y axis.", "editType": "calc+clearAxisTypes", @@ -45140,11 +41910,6 @@ "editType": "none", "valType": "string" }, - "ysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `y`.", - "editType": "none", - "valType": "string" - }, "z": { "description": "Sets the aggregation data.", "editType": "calc", @@ -45187,11 +41952,6 @@ "zauto": false }, "valType": "number" - }, - "zsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `z`.", - "editType": "none", - "valType": "string" } }, "categories": [ @@ -45236,11 +41996,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "domain": { "column": { "description": "If there is a layout grid, use the domain for this column in the grid for this icicle trace.", @@ -45327,11 +42082,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -45345,33 +42095,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -45379,11 +42114,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -45394,11 +42124,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -45414,11 +42139,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -45427,22 +42147,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -45454,11 +42164,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -45472,11 +42177,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -45492,11 +42192,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -45509,11 +42204,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -45524,11 +42214,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -45550,11 +42235,6 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Sets hover text elements associated with each sector. If a single string, the same string appears for all data points. If an array of string, the items are mapped in order of this trace's sectors. To be seen, trace `hoverinfo` must contain a *text* flag.", @@ -45562,33 +42242,18 @@ "editType": "style", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "anim": true, "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "insidetextfont": { "color": { "arrayOk": true, "editType": "plot", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used for `textinfo` lying inside the sector.", "editType": "plot", "family": { @@ -45599,11 +42264,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -45619,11 +42279,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -45632,22 +42287,12 @@ "editType": "plot", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "plot", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -45659,11 +42304,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -45677,11 +42317,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -45697,11 +42332,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -45714,11 +42344,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "labels": { @@ -45726,11 +42351,6 @@ "editType": "calc", "valType": "data_array" }, - "labelssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `labels`.", - "editType": "none", - "valType": "string" - }, "leaf": { "editType": "plot", "opacity": { @@ -46324,21 +42944,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -46533,11 +43143,6 @@ }, "valType": "colorscale" }, - "colorssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `colors`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "line": { "color": { @@ -46547,11 +43152,6 @@ "editType": "style", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "role": "object", "width": { @@ -46561,11 +43161,6 @@ "editType": "style", "min": 0, "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" } }, "pattern": { @@ -46575,11 +43170,6 @@ "editType": "style", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the pattern within the marker.", "editType": "style", "fgcolor": { @@ -46588,11 +43178,6 @@ "editType": "style", "valType": "color" }, - "fgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `fgcolor`.", - "editType": "none", - "valType": "string" - }, "fgopacity": { "description": "Sets the opacity of the foreground pattern fill. Defaults to a 0.5 when `fillmode` is *overlay*. Otherwise, defaults to 1.", "editType": "style", @@ -46616,11 +43201,6 @@ "editType": "style", "valType": "string" }, - "pathsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `path`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shape": { "arrayOk": true, @@ -46639,11 +43219,6 @@ "." ] }, - "shapesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shape`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "description": "Sets the size of unit squares of the pattern fill in pixels, which corresponds to the interval of repetition of the pattern.", @@ -46652,11 +43227,6 @@ "min": 0, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "solidity": { "arrayOk": true, "description": "Sets the solidity of the pattern fill. Solidity is roughly the fraction of the area filled by the pattern. Solidity of 0 shows only the background color without pattern and solidty of 1 shows only the foreground color without pattern.", @@ -46665,11 +43235,6 @@ "max": 1, "min": 0, "valType": "number" - }, - "soliditysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `solidity`.", - "editType": "none", - "valType": "string" } }, "reversescale": { @@ -46698,11 +43263,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -46722,11 +43282,6 @@ "editType": "plot", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used for `textinfo` lying outside the sector. This option refers to the root of the hierarchy presented on top left corner of a treemap graph. Please note that if a hierarchy has multiple root nodes, this option won't have any effect and `insidetextfont` would be used.", "editType": "plot", "family": { @@ -46737,11 +43292,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -46757,11 +43307,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -46770,22 +43315,12 @@ "editType": "plot", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "plot", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -46797,11 +43332,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -46815,11 +43345,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -46835,11 +43360,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -46852,11 +43372,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "parents": { @@ -46864,11 +43379,6 @@ "editType": "calc", "valType": "data_array" }, - "parentssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `parents`.", - "editType": "none", - "valType": "string" - }, "pathbar": { "edgeshape": { "description": "Determines which shape is used for edges between `barpath` labels.", @@ -46901,11 +43411,6 @@ "editType": "plot", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used inside `pathbar`.", "editType": "plot", "family": { @@ -46916,11 +43421,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -46936,11 +43436,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -46949,22 +43444,12 @@ "editType": "plot", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "plot", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -46976,11 +43461,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -46994,11 +43474,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -47014,11 +43489,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -47031,11 +43501,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "thickness": { @@ -47078,11 +43543,6 @@ "editType": "plot", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used for `textinfo`.", "editType": "plot", "family": { @@ -47093,11 +43553,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -47113,11 +43568,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -47126,22 +43576,12 @@ "editType": "plot", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "plot", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -47153,11 +43593,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -47171,11 +43606,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -47191,11 +43621,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -47208,11 +43633,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "textinfo": { @@ -47249,11 +43669,6 @@ "bottom right" ] }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "texttemplate": { "arrayOk": true, "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `currentPath`, `root`, `entry`, `percentRoot`, `percentEntry`, `percentParent`, `label` and `value`.", @@ -47267,11 +43682,6 @@ "editType": "plot", "valType": "any" }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, "tiling": { "editType": "calc", "flip": { @@ -47320,11 +43730,6 @@ "editType": "calc", "valType": "data_array" }, - "valuessrc": { - "description": "Sets the source reference on Chart Studio Cloud for `values`.", - "editType": "none", - "valType": "string" - }, "visible": { "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).", "dflt": true, @@ -47376,11 +43781,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "dx": { "description": "Set the pixel's horizontal size.", "dflt": 1, @@ -47413,11 +43813,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -47431,33 +43826,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -47465,11 +43845,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -47480,11 +43855,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -47500,11 +43870,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -47513,22 +43878,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -47540,11 +43895,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -47558,11 +43908,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -47578,11 +43923,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -47595,11 +43935,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -47610,11 +43945,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -47636,31 +43966,16 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "description": "Same as `text`.", "editType": "plot", "valType": "data_array" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -47784,11 +44099,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -47812,11 +44122,6 @@ "editType": "plot", "valType": "data_array" }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "type": "image", "uid": { "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", @@ -47929,11 +44234,6 @@ "fast", false ] - }, - "zsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `z`.", - "editType": "none", - "valType": "string" } }, "categories": [ @@ -47965,11 +44265,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "delta": { "decreasing": { "color": { @@ -48523,21 +44818,11 @@ "editType": "plot", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "plot", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -48725,11 +45010,6 @@ "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -48853,11 +45133,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "mode": { "description": "Determines how the value is displayed on the graph. `number` displays the value numerically in text. `delta` displays the difference to a reference value in text. Finally, `gauge` displays the value graphically on an axis.", "dflt": "number", @@ -49652,21 +45927,11 @@ "editType": "calc", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "calc", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -49885,11 +46150,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "flatshading": { "description": "Determines whether or not normal smoothing is applied to the meshes, creating meshes with an angular, low-poly look via flat reflections.", "dflt": true, @@ -49915,11 +46175,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -49933,33 +46188,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -49967,11 +46207,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -49982,11 +46217,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -50002,11 +46232,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -50015,22 +46240,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -50042,11 +46257,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -50060,11 +46270,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -50080,11 +46285,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -50097,11 +46297,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -50112,11 +46307,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -50138,11 +46328,6 @@ "editType": "calc", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Same as `text`.", @@ -50150,21 +46335,11 @@ "editType": "calc", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "isomax": { "description": "Sets the maximum boundary for iso-surface plot.", "editType": "calc", @@ -50392,11 +46567,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -50453,11 +46623,6 @@ "editType": "calc", "valType": "data_array" }, - "locationssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `locations`.", - "editType": "none", - "valType": "string" - }, "role": "object", "show": { "description": "Determines whether or not slice planes about the x dimension are drawn.", @@ -50482,11 +46647,6 @@ "editType": "calc", "valType": "data_array" }, - "locationssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `locations`.", - "editType": "none", - "valType": "string" - }, "role": "object", "show": { "description": "Determines whether or not slice planes about the y dimension are drawn.", @@ -50511,11 +46671,6 @@ "editType": "calc", "valType": "data_array" }, - "locationssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `locations`.", - "editType": "none", - "valType": "string" - }, "role": "object", "show": { "description": "Determines whether or not slice planes about the z dimension are drawn.", @@ -50593,11 +46748,6 @@ "editType": "calc", "valType": "string" }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "type": "isosurface", "uid": { "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", @@ -50620,11 +46770,6 @@ "editType": "calc", "valType": "string" }, - "valuesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `value`.", - "editType": "none", - "valType": "string" - }, "visible": { "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).", "dflt": true, @@ -50647,11 +46792,6 @@ "editType": "calc", "valType": "string" }, - "xsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `x`.", - "editType": "none", - "valType": "string" - }, "y": { "description": "Sets the Y coordinates of the vertices on Y axis.", "editType": "calc+clearAxisTypes", @@ -50663,11 +46803,6 @@ "editType": "calc", "valType": "string" }, - "ysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `y`.", - "editType": "none", - "valType": "string" - }, "z": { "description": "Sets the Z coordinates of the vertices on Z axis.", "editType": "calc+clearAxisTypes", @@ -50678,11 +46813,6 @@ "dflt": "", "editType": "calc", "valType": "string" - }, - "zsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `z`.", - "editType": "none", - "valType": "string" } }, "categories": [ @@ -51166,21 +47296,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -51399,11 +47519,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "delaunayaxis": { "description": "Sets the Delaunay axis, which is the axis that is perpendicular to the surface of the Delaunay triangulation. It has an effect if `i`, `j`, `k` are not provided and `alphahull` is set to indicate Delaunay triangulation.", "dflt": "z", @@ -51420,11 +47535,6 @@ "editType": "calc", "valType": "data_array" }, - "facecolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `facecolor`.", - "editType": "none", - "valType": "string" - }, "flatshading": { "description": "Determines whether or not normal smoothing is applied to the meshes, creating meshes with an angular, low-poly look via flat reflections.", "dflt": false, @@ -51450,11 +47560,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -51468,33 +47573,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -51502,11 +47592,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -51517,11 +47602,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -51537,11 +47617,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -51550,22 +47625,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -51577,11 +47642,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -51595,11 +47655,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -51615,11 +47670,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -51632,11 +47682,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -51647,11 +47692,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -51673,11 +47713,6 @@ "editType": "calc", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Same as `text`.", @@ -51685,11 +47720,6 @@ "editType": "calc", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "i": { "description": "A vector of vertex indices, i.e. integer values between 0 and the length of the vertex vectors, representing the *first* vertex of a triangle. For example, `{i[m], j[m], k[m]}` together represent face m (triangle m) in the mesh, where `i[m] = n` points to the triplet `{x[n], y[n], z[n]}` in the vertex arrays. Therefore, each element in `i` represents a point in space, which is the first vertex of a triangle.", "editType": "calc", @@ -51700,11 +47730,6 @@ "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "intensity": { "description": "Sets the intensity values for vertices or cells as defined by `intensitymode`. It can be used for plotting fields on meshes.", "editType": "calc", @@ -51720,36 +47745,16 @@ "cell" ] }, - "intensitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `intensity`.", - "editType": "none", - "valType": "string" - }, - "isrc": { - "description": "Sets the source reference on Chart Studio Cloud for `i`.", - "editType": "none", - "valType": "string" - }, "j": { "description": "A vector of vertex indices, i.e. integer values between 0 and the length of the vertex vectors, representing the *second* vertex of a triangle. For example, `{i[m], j[m], k[m]}` together represent face m (triangle m) in the mesh, where `j[m] = n` points to the triplet `{x[n], y[n], z[n]}` in the vertex arrays. Therefore, each element in `j` represents a point in space, which is the second vertex of a triangle.", "editType": "calc", "valType": "data_array" }, - "jsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `j`.", - "editType": "none", - "valType": "string" - }, "k": { "description": "A vector of vertex indices, i.e. integer values between 0 and the length of the vertex vectors, representing the *third* vertex of a triangle. For example, `{i[m], j[m], k[m]}` together represent face m (triangle m) in the mesh, where `k[m] = n` points to the triplet `{x[n], y[n], z[n]}` in the vertex arrays. Therefore, each element in `k` represents a point in space, which is the third vertex of a triangle.", "editType": "calc", "valType": "data_array" }, - "ksrc": { - "description": "Sets the source reference on Chart Studio Cloud for `k`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -51967,11 +47972,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -52016,11 +48016,6 @@ "editType": "calc", "valType": "string" }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "type": "mesh3d", "uid": { "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", @@ -52037,11 +48032,6 @@ "editType": "calc", "valType": "data_array" }, - "vertexcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `vertexcolor`.", - "editType": "none", - "valType": "string" - }, "visible": { "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).", "dflt": true, @@ -52088,11 +48078,6 @@ "editType": "none", "valType": "string" }, - "xsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `x`.", - "editType": "none", - "valType": "string" - }, "y": { "description": "Sets the Y coordinates of the vertices. The nth element of vectors `x`, `y` and `z` jointly represent the X, Y and Z coordinates of the nth vertex.", "editType": "calc+clearAxisTypes", @@ -52128,11 +48113,6 @@ "editType": "none", "valType": "string" }, - "ysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `y`.", - "editType": "none", - "valType": "string" - }, "z": { "description": "Sets the Z coordinates of the vertices. The nth element of vectors `x`, `y` and `z` jointly represent the X, Y and Z coordinates of the nth vertex.", "editType": "calc+clearAxisTypes", @@ -52167,11 +48147,6 @@ "dflt": "", "editType": "none", "valType": "string" - }, - "zsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `z`.", - "editType": "none", - "valType": "string" } }, "categories": [ @@ -52191,21 +48166,11 @@ "editType": "calc", "valType": "data_array" }, - "closesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `close`.", - "editType": "none", - "valType": "string" - }, "customdata": { "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements", "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "decreasing": { "editType": "style", "line": { @@ -52246,11 +48211,6 @@ "editType": "calc", "valType": "data_array" }, - "highsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `high`.", - "editType": "none", - "valType": "string" - }, "hoverinfo": { "arrayOk": true, "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.", @@ -52270,11 +48230,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -52288,33 +48243,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -52322,11 +48262,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -52337,11 +48272,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -52357,11 +48287,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -52370,22 +48295,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -52397,11 +48312,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -52415,11 +48325,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -52435,11 +48340,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -52452,11 +48352,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -52467,11 +48362,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -52499,11 +48389,6 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Same as `text`.", @@ -52511,21 +48396,11 @@ "editType": "calc", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "increasing": { "editType": "style", "line": { @@ -52714,22 +48589,12 @@ "editType": "calc", "valType": "data_array" }, - "lowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `low`.", - "editType": "none", - "valType": "string" - }, "meta": { "arrayOk": true, "description": "Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index.", "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -52748,11 +48613,6 @@ "editType": "calc", "valType": "data_array" }, - "opensrc": { - "description": "Sets the source reference on Chart Studio Cloud for `open`.", - "editType": "none", - "valType": "string" - }, "selectedpoints": { "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.", "editType": "calc", @@ -52771,11 +48631,6 @@ "editType": "calc", "valType": "string" }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the width of the open/close tick marks relative to the *x* minimal interval.", "dflt": 0.3, @@ -52869,11 +48724,6 @@ "end" ] }, - "xsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `x`.", - "editType": "none", - "valType": "string" - }, "yaxis": { "description": "Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on.", "dflt": "y", @@ -52931,11 +48781,6 @@ "min": 0, "valType": "number" }, - "countssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `counts`.", - "editType": "none", - "valType": "string" - }, "dimensions": { "items": { "dimension": { @@ -52944,11 +48789,6 @@ "editType": "calc", "valType": "data_array" }, - "categoryarraysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `categoryarray`.", - "editType": "none", - "valType": "string" - }, "categoryorder": { "description": "Specifies the ordering logic for the categories in the dimension. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`.", "dflt": "trace", @@ -52979,22 +48819,12 @@ "editType": "calc", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "values": { "description": "Dimension values. `values[n]` represents the category value of the `n`th point in the dataset, therefore the `values` vector for all dimensions must be the same (longer vectors will be truncated).", "dflt": [], "editType": "calc", "valType": "data_array" }, - "valuessrc": { - "description": "Sets the source reference on Chart Studio Cloud for `values`.", - "editType": "none", - "valType": "string" - }, "visible": { "description": "Shows the dimension when set to `true` (the default). Hides the dimension for `false`.", "dflt": true, @@ -53767,21 +49597,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -53971,11 +49791,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "hovertemplate": { "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `count` and `probability`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``.", @@ -54019,11 +49834,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -54167,11 +49977,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "dimensions": { "items": { "dimension": { @@ -54242,31 +50047,16 @@ "editType": "plot", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear.", "editType": "plot", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "values": { "description": "Dimension values. `values[n]` represents the value of the `n`th point in the dataset, therefore the `values` vector for all dimensions must be the same (longer vectors will be truncated). Each value must be a finite number.", "editType": "calc", "valType": "data_array" }, - "valuessrc": { - "description": "Sets the source reference on Chart Studio Cloud for `values`.", - "editType": "none", - "valType": "string" - }, "visible": { "description": "Shows the dimension when set to `true` (the default). Hides the dimension for `false`.", "dflt": true, @@ -54346,11 +50136,6 @@ "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "labelangle": { "description": "Sets the angle of the labels with respect to the horizontal. For example, a `tickangle` of -90 draws the labels vertically. Tilted labels with *labelangle* may be positioned better inside margins when `labelposition` is set to *bottom*.", "dflt": 0, @@ -55038,21 +50823,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -55311,11 +51086,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `line.color` is set to a numerical array. If true, `line.cmin` will correspond to the last color in the array and `line.cmax` will correspond to the first color.", @@ -55337,11 +51107,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -55595,11 +51360,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "direction": { "description": "Specifies the direction at which succeeding sectors follow one another.", "dflt": "counterclockwise", @@ -55707,11 +51467,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -55725,33 +51480,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -55759,11 +51499,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -55774,11 +51509,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -55794,11 +51524,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -55807,22 +51532,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -55834,11 +51549,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -55852,11 +51562,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -55872,11 +51577,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -55889,11 +51589,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -55904,11 +51599,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -55930,11 +51620,6 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Sets hover text elements associated with each sector. If a single string, the same string appears for all data points. If an array of string, the items are mapped in order of this trace's sectors. To be seen, trace `hoverinfo` must contain a *text* flag.", @@ -55942,32 +51627,17 @@ "editType": "style", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "insidetextfont": { "color": { "arrayOk": true, "editType": "plot", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used for `textinfo` lying inside the sector.", "editType": "plot", "family": { @@ -55978,11 +51648,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -55998,11 +51663,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -56011,22 +51671,12 @@ "editType": "plot", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "plot", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -56038,11 +51688,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -56056,11 +51701,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -56076,11 +51716,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -56093,11 +51728,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "insidetextorientation": { @@ -56123,11 +51753,6 @@ "editType": "calc", "valType": "data_array" }, - "labelssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `labels`.", - "editType": "none", - "valType": "string" - }, "legend": { "arrayOk": true, "description": "Sets the reference to a legend to show the pie slices in. Can be an array if `values` is set. In that case, each entry specifies the legend reference for one slice. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", @@ -56247,16 +51872,6 @@ "editType": "style", "valType": "number" }, - "legendranksrc": { - "description": "Sets the source reference on Chart Studio Cloud for `legendrank`.", - "editType": "none", - "valType": "string" - }, - "legendsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `legend`.", - "editType": "none", - "valType": "string" - }, "legendwidth": { "description": "Sets the width (in px or fraction) of the legend for this trace.", "editType": "style", @@ -56269,11 +51884,6 @@ "editType": "calc", "valType": "data_array" }, - "colorssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `colors`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "line": { "color": { @@ -56283,11 +51893,6 @@ "editType": "style", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "role": "object", "width": { @@ -56297,11 +51902,6 @@ "editType": "style", "min": 0, "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" } }, "pattern": { @@ -56311,11 +51911,6 @@ "editType": "style", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the pattern within the marker.", "editType": "style", "fgcolor": { @@ -56324,11 +51919,6 @@ "editType": "style", "valType": "color" }, - "fgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `fgcolor`.", - "editType": "none", - "valType": "string" - }, "fgopacity": { "description": "Sets the opacity of the foreground pattern fill. Defaults to a 0.5 when `fillmode` is *overlay*. Otherwise, defaults to 1.", "editType": "style", @@ -56352,11 +51942,6 @@ "editType": "style", "valType": "string" }, - "pathsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `path`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shape": { "arrayOk": true, @@ -56375,11 +51960,6 @@ "." ] }, - "shapesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shape`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "description": "Sets the size of unit squares of the pattern fill in pixels, which corresponds to the interval of repetition of the pattern.", @@ -56388,11 +51968,6 @@ "min": 0, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "solidity": { "arrayOk": true, "description": "Sets the solidity of the pattern fill. Solidity is roughly the fraction of the area filled by the pattern. Solidity of 0 shows only the background color without pattern and solidty of 1 shows only the foreground color without pattern.", @@ -56401,11 +51976,6 @@ "max": 1, "min": 0, "valType": "number" - }, - "soliditysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `solidity`.", - "editType": "none", - "valType": "string" } }, "role": "object" @@ -56416,11 +51986,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -56440,11 +52005,6 @@ "editType": "plot", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used for `textinfo` lying outside the sector.", "editType": "plot", "family": { @@ -56455,11 +52015,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -56475,11 +52030,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -56488,22 +52038,12 @@ "editType": "plot", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "plot", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -56515,11 +52055,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -56533,11 +52068,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -56553,11 +52083,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -56570,11 +52095,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "pull": { @@ -56586,11 +52106,6 @@ "min": 0, "valType": "number" }, - "pullsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `pull`.", - "editType": "none", - "valType": "string" - }, "rotation": { "description": "Instead of the first slice starting at 12 o'clock, rotate to some other angle.", "dflt": 0, @@ -56610,11 +52125,6 @@ "editType": "style", "valType": "boolean" }, - "showlegendsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `showlegend`.", - "editType": "none", - "valType": "string" - }, "sort": { "description": "Determines whether or not the sectors are reordered from largest to smallest.", "dflt": true, @@ -56632,11 +52142,6 @@ "editType": "plot", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used for `textinfo`.", "editType": "plot", "family": { @@ -56647,11 +52152,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -56667,11 +52167,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -56680,22 +52175,12 @@ "editType": "plot", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "plot", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -56707,11 +52192,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -56725,11 +52205,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -56745,11 +52220,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -56762,11 +52232,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "textinfo": { @@ -56796,16 +52261,6 @@ "none" ] }, - "textpositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", - "editType": "none", - "valType": "string" - }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "texttemplate": { "arrayOk": true, "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `label`, `color`, `value`, `percent` and `text`.", @@ -56819,11 +52274,6 @@ "editType": "plot", "valType": "any" }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, "title": { "editType": "plot", "font": { @@ -56832,11 +52282,6 @@ "editType": "plot", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used for `title`.", "editType": "plot", "family": { @@ -56847,11 +52292,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -56867,11 +52307,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -56880,22 +52315,12 @@ "editType": "plot", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "plot", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -56907,11 +52332,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -56925,11 +52345,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -56945,11 +52360,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -56962,11 +52372,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "position": { @@ -57007,11 +52412,6 @@ "editType": "calc", "valType": "data_array" }, - "valuessrc": { - "description": "Sets the source reference on Chart Studio Cloud for `values`.", - "editType": "none", - "valType": "string" - }, "visible": { "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).", "dflt": true, @@ -57041,11 +52441,6 @@ "editType": "calc", "valType": "data_array" }, - "hiddenlabelssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hiddenlabels`.", - "editType": "none", - "valType": "string" - }, "piecolorway": { "description": "Sets the default pie slice colors. Defaults to the main `colorway` used for trace colors. If you specify a new list here it can still be extended with lighter and darker colors, see `extendpiecolors`.", "editType": "calc", @@ -57077,11 +52472,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "domain": { "column": { "description": "If there is a layout grid, use the domain for this column in the grid for this sankey trace.", @@ -57172,33 +52562,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "calc", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "calc", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "font": { "color": { @@ -57206,11 +52581,6 @@ "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "calc", "family": { @@ -57221,11 +52591,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -57241,11 +52606,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -57254,22 +52614,12 @@ "editType": "calc", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "calc", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -57281,11 +52631,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -57299,11 +52644,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -57319,11 +52659,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -57336,11 +52671,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -57351,11 +52681,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -57369,11 +52694,6 @@ "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -57560,21 +52880,11 @@ }, "role": "object" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "customdata": { "description": "Assigns extra data to each link.", "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "description": "The links of the Sankey plot.", "editType": "calc", "hovercolor": { @@ -57583,11 +52893,6 @@ "editType": "calc", "valType": "color" }, - "hovercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovercolor`.", - "editType": "none", - "valType": "string" - }, "hoverinfo": { "description": "Determines which trace information appear when hovering links. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.", "dflt": "all", @@ -57612,33 +52917,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "calc", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "calc", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "font": { "color": { @@ -57646,11 +52936,6 @@ "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "calc", "family": { @@ -57661,11 +52946,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -57681,11 +52961,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -57694,22 +52969,12 @@ "editType": "calc", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "calc", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -57721,11 +52986,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -57739,11 +52999,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -57759,11 +53014,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -57776,11 +53026,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -57791,11 +53036,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -57817,22 +53057,12 @@ "editType": "calc", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "label": { "description": "The shown name of the link.", "dflt": [], "editType": "calc", "valType": "data_array" }, - "labelsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `label`.", - "editType": "none", - "valType": "string" - }, "line": { "color": { "arrayOk": true, @@ -57841,11 +53071,6 @@ "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "role": "object", "width": { @@ -57855,11 +53080,6 @@ "editType": "calc", "min": 0, "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" } }, "role": "object", @@ -57869,32 +53089,17 @@ "editType": "calc", "valType": "data_array" }, - "sourcesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `source`.", - "editType": "none", - "valType": "string" - }, "target": { "description": "An integer number `[0..nodes.length - 1]` that represents the target node.", "dflt": [], "editType": "calc", "valType": "data_array" }, - "targetsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `target`.", - "editType": "none", - "valType": "string" - }, "value": { "description": "A numeric value representing the flow volume value.", "dflt": [], "editType": "calc", "valType": "data_array" - }, - "valuesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `value`.", - "editType": "none", - "valType": "string" } }, "meta": { @@ -57903,11 +53108,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -57932,21 +53132,11 @@ "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "customdata": { "description": "Assigns extra data to each node.", "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "description": "The nodes of the Sankey plot.", "editType": "calc", "groups": { @@ -57989,33 +53179,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "calc", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "calc", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "font": { "color": { @@ -58023,11 +53198,6 @@ "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "calc", "family": { @@ -58038,11 +53208,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -58058,11 +53223,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -58071,22 +53231,12 @@ "editType": "calc", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "calc", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -58098,11 +53248,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -58116,11 +53261,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -58136,11 +53276,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -58153,11 +53288,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -58168,11 +53298,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -58194,22 +53319,12 @@ "editType": "calc", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "label": { "description": "The shown name of the node.", "dflt": [], "editType": "calc", "valType": "data_array" }, - "labelsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `label`.", - "editType": "none", - "valType": "string" - }, "line": { "color": { "arrayOk": true, @@ -58218,11 +53333,6 @@ "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "role": "object", "width": { @@ -58232,11 +53342,6 @@ "editType": "calc", "min": 0, "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" } }, "pad": { @@ -58262,21 +53367,11 @@ "editType": "calc", "valType": "data_array" }, - "xsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `x`.", - "editType": "none", - "valType": "string" - }, "y": { "description": "The normalized vertical position of the node.", "dflt": [], "editType": "calc", "valType": "data_array" - }, - "ysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `y`.", - "editType": "none", - "valType": "string" } }, "orientation": { @@ -58452,11 +53547,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "dx": { "anim": true, "description": "Sets the x coordinate step. See `x0` for more info.", @@ -58482,16 +53572,6 @@ "editType": "calc", "valType": "data_array" }, - "arrayminussrc": { - "description": "Sets the source reference on Chart Studio Cloud for `arrayminus`.", - "editType": "none", - "valType": "string" - }, - "arraysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `array`.", - "editType": "none", - "valType": "string" - }, "color": { "description": "Sets the stroke color of the error bars.", "editType": "style", @@ -58575,16 +53655,6 @@ "editType": "calc", "valType": "data_array" }, - "arrayminussrc": { - "description": "Sets the source reference on Chart Studio Cloud for `arrayminus`.", - "editType": "none", - "valType": "string" - }, - "arraysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `array`.", - "editType": "none", - "valType": "string" - }, "color": { "description": "Sets the stroke color of the error bars.", "editType": "style", @@ -58712,11 +53782,6 @@ "editType": "style", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the pattern within the marker.", "editType": "style", "fgcolor": { @@ -58725,11 +53790,6 @@ "editType": "style", "valType": "color" }, - "fgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `fgcolor`.", - "editType": "none", - "valType": "string" - }, "fgopacity": { "description": "Sets the opacity of the foreground pattern fill. Defaults to a 0.5 when `fillmode` is *overlay*. Otherwise, defaults to 1.", "editType": "style", @@ -58753,11 +53813,6 @@ "editType": "style", "valType": "string" }, - "pathsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `path`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shape": { "arrayOk": true, @@ -58776,11 +53831,6 @@ "." ] }, - "shapesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shape`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "description": "Sets the size of unit squares of the pattern fill in pixels, which corresponds to the interval of repetition of the pattern.", @@ -58789,11 +53839,6 @@ "min": 0, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "solidity": { "arrayOk": true, "description": "Sets the solidity of the pattern fill. Solidity is roughly the fraction of the area filled by the pattern. Solidity of 0 shows only the background color without pattern and solidty of 1 shows only the foreground color without pattern.", @@ -58802,11 +53847,6 @@ "max": 1, "min": 0, "valType": "number" - }, - "soliditysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `solidity`.", - "editType": "none", - "valType": "string" } }, "groupnorm": { @@ -58839,11 +53879,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -58857,33 +53892,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -58891,11 +53911,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -58906,11 +53921,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -58926,11 +53936,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -58939,22 +53944,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -58966,11 +53961,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -58984,11 +53974,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -59004,11 +53989,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -59021,11 +54001,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -59036,11 +54011,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -59071,11 +54041,6 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", @@ -59083,22 +54048,12 @@ "editType": "style", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "anim": true, "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -59231,11 +54186,6 @@ "min": 0, "valType": "number" }, - "backoffsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `backoff`.", - "editType": "none", - "valType": "string" - }, "color": { "anim": true, "description": "Sets the line color.", @@ -59315,11 +54265,6 @@ "up" ] }, - "anglesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `angle`.", - "editType": "none", - "valType": "string" - }, "autocolorscale": { "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", "dflt": true, @@ -59785,21 +54730,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -59989,11 +54924,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "gradient": { "color": { @@ -60002,11 +54932,6 @@ "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "role": "object", "type": { @@ -60021,11 +54946,6 @@ "vertical", "none" ] - }, - "typesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `type`.", - "editType": "none", - "valType": "string" } }, "line": { @@ -60091,11 +55011,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "dash": { "arrayOk": true, "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", @@ -60111,11 +55026,6 @@ "longdashdot" ] }, - "dashsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `dash`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.", @@ -60131,11 +55041,6 @@ "editType": "style", "min": 0, "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" } }, "maxdisplayed": { @@ -60154,11 +55059,6 @@ "min": 0, "valType": "number" }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", "dflt": false, @@ -60204,11 +55104,6 @@ "editType": "calc", "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "standoff": { "anim": true, "arrayOk": true, @@ -60218,11 +55113,6 @@ "min": 0, "valType": "number" }, - "standoffsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `standoff`.", - "editType": "none", - "valType": "string" - }, "symbol": { "arrayOk": true, "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.", @@ -60717,11 +55607,6 @@ "154", "arrow-wide-open" ] - }, - "symbolsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", - "editType": "none", - "valType": "string" } }, "meta": { @@ -60730,11 +55615,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "mode": { "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*.", "editType": "calc", @@ -60851,11 +55731,6 @@ "editType": "style", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the text font.", "editType": "calc", "family": { @@ -60866,11 +55741,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -60886,11 +55756,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -60899,22 +55764,12 @@ "editType": "calc", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "calc", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -60926,11 +55781,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -60944,11 +55794,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -60964,11 +55809,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -60981,11 +55821,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "textposition": { @@ -61006,16 +55841,6 @@ "bottom right" ] }, - "textpositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", - "editType": "none", - "valType": "string" - }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "texttemplate": { "arrayOk": true, "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. ", @@ -61029,11 +55854,6 @@ "editType": "calc", "valType": "any" }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, "type": "scatter", "uid": { "anim": true, @@ -61163,11 +55983,6 @@ "end" ] }, - "xsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `x`.", - "editType": "none", - "valType": "string" - }, "y": { "anim": true, "description": "Sets the y coordinates.", @@ -61239,11 +56054,6 @@ "end" ] }, - "ysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `y`.", - "editType": "none", - "valType": "string" - }, "zorder": { "description": "Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`.", "dflt": 0, @@ -61298,11 +56108,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "error_x": { "array": { "description": "Sets the data corresponding the length of each error bar. Values are plotted relative to the underlying data.", @@ -61314,16 +56119,6 @@ "editType": "calc", "valType": "data_array" }, - "arrayminussrc": { - "description": "Sets the source reference on Chart Studio Cloud for `arrayminus`.", - "editType": "none", - "valType": "string" - }, - "arraysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `array`.", - "editType": "none", - "valType": "string" - }, "color": { "description": "Sets the stroke color of the error bars.", "editType": "calc", @@ -61407,16 +56202,6 @@ "editType": "calc", "valType": "data_array" }, - "arrayminussrc": { - "description": "Sets the source reference on Chart Studio Cloud for `arrayminus`.", - "editType": "none", - "valType": "string" - }, - "arraysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `array`.", - "editType": "none", - "valType": "string" - }, "color": { "description": "Sets the stroke color of the error bars.", "editType": "calc", @@ -61500,16 +56285,6 @@ "editType": "calc", "valType": "data_array" }, - "arrayminussrc": { - "description": "Sets the source reference on Chart Studio Cloud for `arrayminus`.", - "editType": "none", - "valType": "string" - }, - "arraysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `array`.", - "editType": "none", - "valType": "string" - }, "color": { "description": "Sets the stroke color of the error bars.", "editType": "calc", @@ -61597,11 +56372,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -61615,33 +56385,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -61649,11 +56404,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -61664,11 +56414,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -61684,11 +56429,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -61697,22 +56437,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -61724,11 +56454,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -61742,11 +56467,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -61762,11 +56482,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -61779,11 +56494,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -61794,11 +56504,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -61820,11 +56525,6 @@ "editType": "calc", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Sets text elements associated with each (x,y,z) triplet. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y,z) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", @@ -61832,21 +56532,11 @@ "editType": "calc", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -62435,21 +57125,11 @@ "editType": "calc", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "calc", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -62639,11 +57319,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "dash": { "description": "Sets the dash style of the lines.", "dflt": "solid", @@ -63145,21 +57820,11 @@ "editType": "calc", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "calc", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -63349,11 +58014,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "line": { "autocolorscale": { @@ -63417,11 +58077,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.", @@ -63490,11 +58145,6 @@ "editType": "calc", "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "symbol": { "arrayOk": true, "description": "Sets the marker symbol type.", @@ -63511,11 +58161,6 @@ "square-open", "x" ] - }, - "symbolsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", - "editType": "none", - "valType": "string" } }, "meta": { @@ -63524,11 +58169,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "mode": { "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*.", "dflt": "lines+markers", @@ -63680,11 +58320,6 @@ "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the text font.", "editType": "calc", "family": { @@ -63695,11 +58330,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "role": "object", "size": { "arrayOk": true, @@ -63707,11 +58337,6 @@ "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -63723,11 +58348,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -63739,11 +58359,6 @@ "small-caps" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -63756,11 +58371,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "textposition": { @@ -63781,16 +58391,6 @@ "bottom right" ] }, - "textpositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", - "editType": "none", - "valType": "string" - }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "texttemplate": { "arrayOk": true, "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. ", @@ -63804,11 +58404,6 @@ "editType": "calc", "valType": "any" }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, "type": "scatter3d", "uid": { "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", @@ -63866,11 +58461,6 @@ "editType": "calc", "valType": "string" }, - "xsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `x`.", - "editType": "none", - "valType": "string" - }, "y": { "description": "Sets the y coordinates.", "editType": "calc+clearAxisTypes", @@ -63906,11 +58496,6 @@ "editType": "calc", "valType": "string" }, - "ysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `y`.", - "editType": "none", - "valType": "string" - }, "z": { "description": "Sets the z coordinates.", "editType": "calc+clearAxisTypes", @@ -63945,11 +58530,6 @@ "dflt": "", "editType": "calc", "valType": "string" - }, - "zsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `z`.", - "editType": "none", - "valType": "string" } }, "categories": [ @@ -63972,21 +58552,11 @@ "editType": "calc", "valType": "data_array" }, - "asrc": { - "description": "Sets the source reference on Chart Studio Cloud for `a`.", - "editType": "none", - "valType": "string" - }, "b": { "description": "Sets the b-axis coordinates.", "editType": "calc", "valType": "data_array" }, - "bsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `b`.", - "editType": "none", - "valType": "string" - }, "carpet": { "description": "An identifier for this carpet, so that `scattercarpet` and `contourcarpet` traces can specify a carpet plot on which they lie", "editType": "calc", @@ -64003,11 +58573,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "fill": { "description": "Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. scatterternary has a subset of the options available to scatter. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other.", "dflt": "none", @@ -64042,11 +58607,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -64060,33 +58620,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -64094,11 +58639,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -64109,11 +58649,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -64129,11 +58664,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -64142,22 +58672,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -64169,11 +58689,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -64187,11 +58702,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -64207,11 +58717,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -64224,11 +58729,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -64239,11 +58739,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -64274,11 +58769,6 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Sets hover text elements associated with each (a,b) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the data points in (a,b). To be seen, trace `hoverinfo` must contain a *text* flag.", @@ -64286,21 +58776,11 @@ "editType": "style", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -64433,11 +58913,6 @@ "min": 0, "valType": "number" }, - "backoffsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `backoff`.", - "editType": "none", - "valType": "string" - }, "color": { "description": "Sets the line color.", "editType": "style", @@ -64503,11 +58978,6 @@ "up" ] }, - "anglesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `angle`.", - "editType": "none", - "valType": "string" - }, "autocolorscale": { "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", "dflt": true, @@ -64972,21 +59442,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -65176,11 +59636,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "gradient": { "color": { @@ -65189,11 +59644,6 @@ "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "role": "object", "type": { @@ -65208,11 +59658,6 @@ "vertical", "none" ] - }, - "typesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `type`.", - "editType": "none", - "valType": "string" } }, "line": { @@ -65277,11 +59722,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "dash": { "arrayOk": true, "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", @@ -65297,11 +59737,6 @@ "longdashdot" ] }, - "dashsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `dash`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.", @@ -65316,11 +59751,6 @@ "editType": "style", "min": 0, "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" } }, "maxdisplayed": { @@ -65338,11 +59768,6 @@ "min": 0, "valType": "number" }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", "dflt": false, @@ -65387,11 +59812,6 @@ "editType": "calc", "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "standoff": { "arrayOk": true, "description": "Moves the marker away from the data point in the direction of `angle` (in px). This can be useful for example if you have another marker at this location and you want to point an arrowhead marker at it.", @@ -65400,11 +59820,6 @@ "min": 0, "valType": "number" }, - "standoffsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `standoff`.", - "editType": "none", - "valType": "string" - }, "symbol": { "arrayOk": true, "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.", @@ -65899,11 +60314,6 @@ "154", "arrow-wide-open" ] - }, - "symbolsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", - "editType": "none", - "valType": "string" } }, "meta": { @@ -65912,11 +60322,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "mode": { "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*.", "dflt": "markers", @@ -66003,11 +60408,6 @@ "editType": "style", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the text font.", "editType": "calc", "family": { @@ -66018,11 +60418,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -66038,11 +60433,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -66051,22 +60441,12 @@ "editType": "calc", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "calc", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -66078,11 +60458,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -66096,11 +60471,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -66116,11 +60486,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -66133,11 +60498,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "textposition": { @@ -66158,16 +60518,6 @@ "bottom right" ] }, - "textpositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", - "editType": "none", - "valType": "string" - }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "texttemplate": { "arrayOk": true, "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `a`, `b` and `text`.", @@ -66181,11 +60531,6 @@ "editType": "plot", "valType": "any" }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, "type": "scattercarpet", "uid": { "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", @@ -66290,11 +60635,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "featureidkey": { "description": "Sets the key in GeoJSON features which is used as id to match the items included in the `locations` array. Only has an effect when `geojson` is set. Support nested property, for example *properties.name*.", "dflt": "id", @@ -66346,11 +60686,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -66364,33 +60699,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -66398,11 +60718,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -66413,11 +60728,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -66433,11 +60743,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -66446,22 +60751,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -66473,11 +60768,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -66491,11 +60781,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -66511,11 +60796,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -66528,11 +60808,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -66543,11 +60818,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -66569,11 +60839,6 @@ "editType": "calc", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Sets hover text elements associated with each (lon,lat) pair or item in `locations`. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) or `locations` coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", @@ -66581,31 +60846,16 @@ "editType": "calc", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "lat": { "description": "Sets the latitude coordinates (in degrees North).", "editType": "calc", "valType": "data_array" }, - "latsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lat`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -66776,21 +61026,11 @@ "editType": "calc", "valType": "data_array" }, - "locationssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `locations`.", - "editType": "none", - "valType": "string" - }, "lon": { "description": "Sets the longitude coordinates (in degrees East).", "editType": "calc", "valType": "data_array" }, - "lonsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lon`.", - "editType": "none", - "valType": "string" - }, "marker": { "angle": { "arrayOk": true, @@ -66810,11 +61050,6 @@ "north" ] }, - "anglesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `angle`.", - "editType": "none", - "valType": "string" - }, "autocolorscale": { "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", "dflt": true, @@ -67279,21 +61514,11 @@ "editType": "calc", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "calc", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -67483,11 +61708,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "gradient": { "color": { @@ -67496,11 +61716,6 @@ "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "role": "object", "type": { @@ -67515,11 +61730,6 @@ "vertical", "none" ] - }, - "typesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `type`.", - "editType": "none", - "valType": "string" } }, "line": { @@ -67584,11 +61794,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "dash": { "arrayOk": true, "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", @@ -67604,11 +61809,6 @@ "longdashdot" ] }, - "dashsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `dash`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.", @@ -67623,11 +61823,6 @@ "editType": "calc", "min": 0, "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" } }, "opacity": { @@ -67638,11 +61833,6 @@ "min": 0, "valType": "number" }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", "dflt": false, @@ -67687,11 +61877,6 @@ "editType": "calc", "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "standoff": { "arrayOk": true, "description": "Moves the marker away from the data point in the direction of `angle` (in px). This can be useful for example if you have another marker at this location and you want to point an arrowhead marker at it.", @@ -67700,11 +61885,6 @@ "min": 0, "valType": "number" }, - "standoffsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `standoff`.", - "editType": "none", - "valType": "string" - }, "symbol": { "arrayOk": true, "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.", @@ -68199,11 +62379,6 @@ "154", "arrow-wide-open" ] - }, - "symbolsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", - "editType": "none", - "valType": "string" } }, "meta": { @@ -68212,11 +62387,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "mode": { "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*.", "dflt": "markers", @@ -68303,11 +62473,6 @@ "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the text font.", "editType": "calc", "family": { @@ -68318,11 +62483,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -68338,11 +62498,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -68351,22 +62506,12 @@ "editType": "calc", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "calc", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -68378,11 +62523,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -68396,11 +62536,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -68416,11 +62551,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -68433,11 +62563,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "textposition": { @@ -68458,16 +62583,6 @@ "bottom right" ] }, - "textpositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", - "editType": "none", - "valType": "string" - }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "texttemplate": { "arrayOk": true, "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `lat`, `lon`, `location` and `text`.", @@ -68481,11 +62596,6 @@ "editType": "calc", "valType": "any" }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, "type": "scattergeo", "uid": { "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", @@ -68570,11 +62680,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "dx": { "description": "Sets the x coordinate step. See `x0` for more info.", "dflt": 1, @@ -68598,16 +62703,6 @@ "editType": "calc", "valType": "data_array" }, - "arrayminussrc": { - "description": "Sets the source reference on Chart Studio Cloud for `arrayminus`.", - "editType": "none", - "valType": "string" - }, - "arraysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `array`.", - "editType": "none", - "valType": "string" - }, "color": { "description": "Sets the stroke color of the error bars.", "editType": "calc", @@ -68691,16 +62786,6 @@ "editType": "calc", "valType": "data_array" }, - "arrayminussrc": { - "description": "Sets the source reference on Chart Studio Cloud for `arrayminus`.", - "editType": "none", - "valType": "string" - }, - "arraysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `array`.", - "editType": "none", - "valType": "string" - }, "color": { "description": "Sets the stroke color of the error bars.", "editType": "calc", @@ -68808,11 +62893,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -68826,33 +62906,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -68860,11 +62925,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -68875,11 +62935,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -68895,11 +62950,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -68908,22 +62958,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -68935,11 +62975,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -68953,11 +62988,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -68973,11 +63003,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -68990,11 +63015,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -69005,11 +63025,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -69031,11 +63046,6 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", @@ -69043,21 +63053,11 @@ "editType": "calc", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -69232,11 +63232,6 @@ "editType": "calc", "valType": "angle" }, - "anglesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `angle`.", - "editType": "none", - "valType": "string" - }, "autocolorscale": { "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", "dflt": true, @@ -69701,21 +63696,11 @@ "editType": "calc", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "calc", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -69905,11 +63890,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "line": { "autocolorscale": { @@ -69973,11 +63953,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.", @@ -69992,11 +63967,6 @@ "editType": "calc", "min": 0, "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" } }, "opacity": { @@ -70007,11 +63977,6 @@ "min": 0, "valType": "number" }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", "dflt": false, @@ -70056,11 +64021,6 @@ "editType": "calc", "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "symbol": { "arrayOk": true, "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.", @@ -70555,11 +64515,6 @@ "154", "arrow-wide-open" ] - }, - "symbolsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", - "editType": "none", - "valType": "string" } }, "meta": { @@ -70568,11 +64523,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "mode": { "description": "Determines the drawing mode for this scatter trace.", "editType": "calc", @@ -70658,11 +64608,6 @@ "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the text font.", "editType": "calc", "family": { @@ -70673,11 +64618,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "role": "object", "size": { "arrayOk": true, @@ -70685,11 +64625,6 @@ "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -70701,11 +64636,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -70717,11 +64647,6 @@ "small-caps" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -70732,11 +64657,6 @@ "normal", "bold" ] - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "textposition": { @@ -70757,16 +64677,6 @@ "bottom right" ] }, - "textpositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", - "editType": "none", - "valType": "string" - }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "texttemplate": { "arrayOk": true, "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. ", @@ -70780,11 +64690,6 @@ "editType": "calc", "valType": "any" }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, "type": "scattergl", "uid": { "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", @@ -70911,11 +64816,6 @@ "end" ] }, - "xsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `x`.", - "editType": "none", - "valType": "string" - }, "y": { "description": "Sets the y coordinates.", "editType": "calc+clearAxisTypes", @@ -70984,11 +64884,6 @@ "middle", "end" ] - }, - "ysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `y`.", - "editType": "none", - "valType": "string" } }, "categories": [ @@ -71021,11 +64916,6 @@ "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "enabled": { "description": "Determines whether clustering is enabled or disabled.", @@ -71049,11 +64939,6 @@ "min": 0, "valType": "number" }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, "role": "object", "size": { "arrayOk": true, @@ -71063,11 +64948,6 @@ "min": 0, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "step": { "arrayOk": true, "description": "Sets how many points it takes to create a cluster or advance to the next cluster step. Use this in conjunction with arrays for `size` and / or `color`. If an integer, steps start at multiples of this number. If an array, each step extends from the given value until one less than the next value.", @@ -71075,11 +64955,6 @@ "editType": "calc", "min": -1, "valType": "number" - }, - "stepsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `step`.", - "editType": "none", - "valType": "string" } }, "connectgaps": { @@ -71093,11 +64968,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "fill": { "description": "Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape.", "dflt": "none", @@ -71131,11 +65001,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -71149,33 +65014,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -71183,11 +65033,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -71198,11 +65043,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -71218,11 +65058,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -71231,22 +65066,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -71258,11 +65083,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -71276,11 +65096,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -71296,11 +65111,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -71313,11 +65123,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -71328,11 +65133,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -71354,11 +65154,6 @@ "editType": "calc", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Sets hover text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", @@ -71366,31 +65161,16 @@ "editType": "calc", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "lat": { "description": "Sets the latitude coordinates (in degrees North).", "editType": "calc", "valType": "data_array" }, - "latsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lat`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -71535,11 +65315,6 @@ "editType": "calc", "valType": "data_array" }, - "lonsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lon`.", - "editType": "none", - "valType": "string" - }, "marker": { "allowoverlap": { "description": "Flag to draw all symbols, even if they overlap.", @@ -71554,11 +65329,6 @@ "editType": "calc", "valType": "number" }, - "anglesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `angle`.", - "editType": "none", - "valType": "string" - }, "autocolorscale": { "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", "dflt": true, @@ -72023,21 +65793,11 @@ "editType": "calc", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "calc", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -72227,11 +65987,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "opacity": { "arrayOk": true, @@ -72241,11 +65996,6 @@ "min": 0, "valType": "number" }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", "dflt": false, @@ -72290,22 +66040,12 @@ "editType": "calc", "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "symbol": { "arrayOk": true, "description": "Sets the marker symbol. Full list: https://www.mapbox.com/maki-icons/ Note that the array `marker.color` and `marker.size` are only available for *circle* symbols.", "dflt": "circle", "editType": "calc", "valType": "string" - }, - "symbolsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", - "editType": "none", - "valType": "string" } }, "meta": { @@ -72314,11 +66054,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "mode": { "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover.", "dflt": "markers", @@ -72458,11 +66193,6 @@ "bottom right" ] }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "texttemplate": { "arrayOk": true, "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `lat`, `lon` and `text`.", @@ -72476,11 +66206,6 @@ "editType": "calc", "valType": "any" }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, "type": "scattermap", "uid": { "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", @@ -72558,11 +66283,6 @@ "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "enabled": { "description": "Determines whether clustering is enabled or disabled.", @@ -72586,11 +66306,6 @@ "min": 0, "valType": "number" }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, "role": "object", "size": { "arrayOk": true, @@ -72600,11 +66315,6 @@ "min": 0, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "step": { "arrayOk": true, "description": "Sets how many points it takes to create a cluster or advance to the next cluster step. Use this in conjunction with arrays for `size` and / or `color`. If an integer, steps start at multiples of this number. If an array, each step extends from the given value until one less than the next value.", @@ -72612,11 +66322,6 @@ "editType": "calc", "min": -1, "valType": "number" - }, - "stepsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `step`.", - "editType": "none", - "valType": "string" } }, "connectgaps": { @@ -72630,11 +66335,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "fill": { "description": "Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape.", "dflt": "none", @@ -72668,11 +66368,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -72686,33 +66381,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -72720,11 +66400,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -72735,11 +66410,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -72755,11 +66425,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -72768,22 +66433,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -72795,11 +66450,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -72813,11 +66463,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -72833,11 +66478,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -72850,11 +66490,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -72865,11 +66500,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -72891,11 +66521,6 @@ "editType": "calc", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Sets hover text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", @@ -72903,31 +66528,16 @@ "editType": "calc", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "lat": { "description": "Sets the latitude coordinates (in degrees North).", "editType": "calc", "valType": "data_array" }, - "latsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lat`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -73072,11 +66682,6 @@ "editType": "calc", "valType": "data_array" }, - "lonsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lon`.", - "editType": "none", - "valType": "string" - }, "marker": { "allowoverlap": { "description": "Flag to draw all symbols, even if they overlap.", @@ -73091,11 +66696,6 @@ "editType": "calc", "valType": "number" }, - "anglesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `angle`.", - "editType": "none", - "valType": "string" - }, "autocolorscale": { "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", "dflt": true, @@ -73560,21 +67160,11 @@ "editType": "calc", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "calc", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -73764,11 +67354,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "opacity": { "arrayOk": true, @@ -73778,11 +67363,6 @@ "min": 0, "valType": "number" }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", "dflt": false, @@ -73827,22 +67407,12 @@ "editType": "calc", "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "symbol": { "arrayOk": true, "description": "Sets the marker symbol. Full list: https://www.mapbox.com/maki-icons/ Note that the array `marker.color` and `marker.size` are only available for *circle* symbols.", "dflt": "circle", "editType": "calc", "valType": "string" - }, - "symbolsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", - "editType": "none", - "valType": "string" } }, "meta": { @@ -73851,11 +67421,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "mode": { "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover.", "dflt": "markers", @@ -73995,11 +67560,6 @@ "bottom right" ] }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "texttemplate": { "arrayOk": true, "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `lat`, `lon` and `text`.", @@ -74013,11 +67573,6 @@ "editType": "calc", "valType": "any" }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, "type": "scattermapbox", "uid": { "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", @@ -74100,11 +67655,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "dr": { "description": "Sets the r coordinate step.", "dflt": 1, @@ -74150,11 +67700,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -74168,33 +67713,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -74202,11 +67732,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -74217,11 +67742,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -74237,11 +67757,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -74250,22 +67765,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -74277,11 +67782,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -74295,11 +67795,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -74315,11 +67810,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -74332,11 +67822,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -74347,11 +67832,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -74382,11 +67862,6 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", @@ -74394,21 +67869,11 @@ "editType": "style", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -74541,11 +68006,6 @@ "min": 0, "valType": "number" }, - "backoffsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `backoff`.", - "editType": "none", - "valType": "string" - }, "color": { "description": "Sets the line color.", "editType": "style", @@ -74611,11 +68071,6 @@ "up" ] }, - "anglesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `angle`.", - "editType": "none", - "valType": "string" - }, "autocolorscale": { "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", "dflt": true, @@ -75080,21 +68535,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -75284,11 +68729,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "gradient": { "color": { @@ -75297,11 +68737,6 @@ "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "role": "object", "type": { @@ -75316,11 +68751,6 @@ "vertical", "none" ] - }, - "typesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `type`.", - "editType": "none", - "valType": "string" } }, "line": { @@ -75385,11 +68815,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "dash": { "arrayOk": true, "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", @@ -75405,11 +68830,6 @@ "longdashdot" ] }, - "dashsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `dash`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.", @@ -75424,11 +68844,6 @@ "editType": "style", "min": 0, "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" } }, "maxdisplayed": { @@ -75446,11 +68861,6 @@ "min": 0, "valType": "number" }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", "dflt": false, @@ -75495,11 +68905,6 @@ "editType": "calc", "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "standoff": { "arrayOk": true, "description": "Moves the marker away from the data point in the direction of `angle` (in px). This can be useful for example if you have another marker at this location and you want to point an arrowhead marker at it.", @@ -75508,11 +68913,6 @@ "min": 0, "valType": "number" }, - "standoffsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `standoff`.", - "editType": "none", - "valType": "string" - }, "symbol": { "arrayOk": true, "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.", @@ -76007,11 +69407,6 @@ "154", "arrow-wide-open" ] - }, - "symbolsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", - "editType": "none", - "valType": "string" } }, "meta": { @@ -76020,11 +69415,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "mode": { "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*.", "editType": "calc", @@ -76062,11 +69452,6 @@ "editType": "calc+clearAxisTypes", "valType": "any" }, - "rsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `r`.", - "editType": "none", - "valType": "string" - }, "selected": { "editType": "style", "marker": { @@ -76132,11 +69517,6 @@ "editType": "style", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the text font.", "editType": "calc", "family": { @@ -76147,11 +69527,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -76167,11 +69542,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -76180,22 +69550,12 @@ "editType": "calc", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "calc", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -76207,11 +69567,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -76225,11 +69580,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -76245,11 +69595,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -76262,11 +69607,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "textposition": { @@ -76287,16 +69627,6 @@ "bottom right" ] }, - "textpositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", - "editType": "none", - "valType": "string" - }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "texttemplate": { "arrayOk": true, "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `r`, `theta` and `text`.", @@ -76310,11 +69640,6 @@ "editType": "plot", "valType": "any" }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, "theta": { "description": "Sets the angular coordinates", "editType": "calc+clearAxisTypes", @@ -76326,11 +69651,6 @@ "editType": "calc+clearAxisTypes", "valType": "any" }, - "thetasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `theta`.", - "editType": "none", - "valType": "string" - }, "thetaunit": { "description": "Sets the unit of input *theta* values. Has an effect only when on *linear* angular axes.", "dflt": "degrees", @@ -76426,11 +69746,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "dr": { "description": "Sets the r coordinate step.", "dflt": 1, @@ -76480,11 +69795,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -76498,33 +69808,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -76532,11 +69827,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -76547,11 +69837,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -76567,11 +69852,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -76580,22 +69860,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -76607,11 +69877,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -76625,11 +69890,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -76645,11 +69905,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -76662,11 +69917,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -76677,11 +69927,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -76703,11 +69948,6 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", @@ -76715,21 +69955,11 @@ "editType": "style", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -76891,11 +70121,6 @@ "editType": "calc", "valType": "angle" }, - "anglesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `angle`.", - "editType": "none", - "valType": "string" - }, "autocolorscale": { "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", "dflt": true, @@ -77360,21 +70585,11 @@ "editType": "calc", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "calc", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -77564,11 +70779,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "line": { "autocolorscale": { @@ -77632,11 +70842,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.", @@ -77651,11 +70856,6 @@ "editType": "calc", "min": 0, "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" } }, "opacity": { @@ -77666,11 +70866,6 @@ "min": 0, "valType": "number" }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", "dflt": false, @@ -77715,11 +70910,6 @@ "editType": "calc", "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "symbol": { "arrayOk": true, "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.", @@ -78214,11 +71404,6 @@ "154", "arrow-wide-open" ] - }, - "symbolsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", - "editType": "none", - "valType": "string" } }, "meta": { @@ -78227,11 +71412,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "mode": { "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*.", "editType": "calc", @@ -78269,11 +71449,6 @@ "editType": "calc+clearAxisTypes", "valType": "any" }, - "rsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `r`.", - "editType": "none", - "valType": "string" - }, "selected": { "editType": "style", "marker": { @@ -78339,11 +71514,6 @@ "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the text font.", "editType": "calc", "family": { @@ -78354,11 +71524,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "role": "object", "size": { "arrayOk": true, @@ -78366,11 +71531,6 @@ "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -78382,11 +71542,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -78398,11 +71553,6 @@ "small-caps" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -78413,11 +71563,6 @@ "normal", "bold" ] - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "textposition": { @@ -78438,16 +71583,6 @@ "bottom right" ] }, - "textpositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", - "editType": "none", - "valType": "string" - }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "texttemplate": { "arrayOk": true, "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `r`, `theta` and `text`.", @@ -78461,11 +71596,6 @@ "editType": "plot", "valType": "any" }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, "theta": { "description": "Sets the angular coordinates", "editType": "calc+clearAxisTypes", @@ -78477,11 +71607,6 @@ "editType": "calc+clearAxisTypes", "valType": "any" }, - "thetasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `theta`.", - "editType": "none", - "valType": "string" - }, "thetaunit": { "description": "Sets the unit of input *theta* values. Has an effect only when on *linear* angular axes.", "dflt": "degrees", @@ -78585,11 +71710,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "fill": { "description": "Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. scattersmith has a subset of the options available to scatter. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other.", "dflt": "none", @@ -78624,11 +71744,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -78642,33 +71757,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -78676,11 +71776,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -78691,11 +71786,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -78711,11 +71801,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -78724,22 +71809,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -78751,11 +71826,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -78769,11 +71839,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -78789,11 +71854,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -78806,11 +71866,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -78821,11 +71876,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -78856,11 +71906,6 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", @@ -78868,31 +71913,16 @@ "editType": "style", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "imag": { "description": "Sets the imaginary component of the data, in units of normalized impedance such that real=1, imag=0 is the center of the chart.", "editType": "calc+clearAxisTypes", "valType": "data_array" }, - "imagsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `imag`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -79025,11 +72055,6 @@ "min": 0, "valType": "number" }, - "backoffsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `backoff`.", - "editType": "none", - "valType": "string" - }, "color": { "description": "Sets the line color.", "editType": "style", @@ -79095,11 +72120,6 @@ "up" ] }, - "anglesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `angle`.", - "editType": "none", - "valType": "string" - }, "autocolorscale": { "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", "dflt": true, @@ -79564,21 +72584,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -79768,11 +72778,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "gradient": { "color": { @@ -79781,11 +72786,6 @@ "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "role": "object", "type": { @@ -79800,11 +72800,6 @@ "vertical", "none" ] - }, - "typesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `type`.", - "editType": "none", - "valType": "string" } }, "line": { @@ -79869,11 +72864,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "dash": { "arrayOk": true, "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", @@ -79889,11 +72879,6 @@ "longdashdot" ] }, - "dashsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `dash`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.", @@ -79908,11 +72893,6 @@ "editType": "style", "min": 0, "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" } }, "maxdisplayed": { @@ -79930,11 +72910,6 @@ "min": 0, "valType": "number" }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", "dflt": false, @@ -79979,11 +72954,6 @@ "editType": "calc", "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "standoff": { "arrayOk": true, "description": "Moves the marker away from the data point in the direction of `angle` (in px). This can be useful for example if you have another marker at this location and you want to point an arrowhead marker at it.", @@ -79992,11 +72962,6 @@ "min": 0, "valType": "number" }, - "standoffsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `standoff`.", - "editType": "none", - "valType": "string" - }, "symbol": { "arrayOk": true, "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.", @@ -80491,11 +73456,6 @@ "154", "arrow-wide-open" ] - }, - "symbolsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", - "editType": "none", - "valType": "string" } }, "meta": { @@ -80504,11 +73464,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "mode": { "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*.", "editType": "calc", @@ -80540,11 +73495,6 @@ "editType": "calc+clearAxisTypes", "valType": "data_array" }, - "realsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `real`.", - "editType": "none", - "valType": "string" - }, "selected": { "editType": "style", "marker": { @@ -80610,11 +73560,6 @@ "editType": "style", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the text font.", "editType": "calc", "family": { @@ -80625,11 +73570,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -80645,11 +73585,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -80658,22 +73593,12 @@ "editType": "calc", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "calc", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -80685,11 +73610,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -80703,11 +73623,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -80723,11 +73638,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -80740,11 +73650,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "textposition": { @@ -80765,16 +73670,6 @@ "bottom right" ] }, - "textpositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", - "editType": "none", - "valType": "string" - }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "texttemplate": { "arrayOk": true, "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `real`, `imag` and `text`.", @@ -80788,11 +73683,6 @@ "editType": "plot", "valType": "any" }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, "type": "scattersmith", "uid": { "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", @@ -80871,21 +73761,11 @@ "editType": "calc", "valType": "data_array" }, - "asrc": { - "description": "Sets the source reference on Chart Studio Cloud for `a`.", - "editType": "none", - "valType": "string" - }, "b": { "description": "Sets the quantity of component `a` in each data point. If `a`, `b`, and `c` are all provided, they need not be normalized, only the relative values matter. If only two arrays are provided they must be normalized to match `ternary.sum`.", "editType": "calc", "valType": "data_array" }, - "bsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `b`.", - "editType": "none", - "valType": "string" - }, "c": { "description": "Sets the quantity of component `a` in each data point. If `a`, `b`, and `c` are all provided, they need not be normalized, only the relative values matter. If only two arrays are provided they must be normalized to match `ternary.sum`.", "editType": "calc", @@ -80903,21 +73783,11 @@ "editType": "calc", "valType": "boolean" }, - "csrc": { - "description": "Sets the source reference on Chart Studio Cloud for `c`.", - "editType": "none", - "valType": "string" - }, "customdata": { "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements", "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "fill": { "description": "Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. scatterternary has a subset of the options available to scatter. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other.", "dflt": "none", @@ -80953,11 +73823,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -80971,33 +73836,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -81005,11 +73855,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -81020,11 +73865,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -81040,11 +73880,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -81053,22 +73888,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -81080,11 +73905,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -81098,11 +73918,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -81118,11 +73933,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -81135,11 +73945,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -81150,11 +73955,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -81185,11 +73985,6 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Sets hover text elements associated with each (a,b,c) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the data points in (a,b,c). To be seen, trace `hoverinfo` must contain a *text* flag.", @@ -81197,21 +73992,11 @@ "editType": "style", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -81344,11 +74129,6 @@ "min": 0, "valType": "number" }, - "backoffsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `backoff`.", - "editType": "none", - "valType": "string" - }, "color": { "description": "Sets the line color.", "editType": "style", @@ -81414,11 +74194,6 @@ "up" ] }, - "anglesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `angle`.", - "editType": "none", - "valType": "string" - }, "autocolorscale": { "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", "dflt": true, @@ -81883,21 +74658,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -82087,11 +74852,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "gradient": { "color": { @@ -82100,11 +74860,6 @@ "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "role": "object", "type": { @@ -82119,11 +74874,6 @@ "vertical", "none" ] - }, - "typesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `type`.", - "editType": "none", - "valType": "string" } }, "line": { @@ -82188,11 +74938,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "dash": { "arrayOk": true, "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", @@ -82208,11 +74953,6 @@ "longdashdot" ] }, - "dashsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `dash`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.", @@ -82227,11 +74967,6 @@ "editType": "style", "min": 0, "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" } }, "maxdisplayed": { @@ -82249,11 +74984,6 @@ "min": 0, "valType": "number" }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", "dflt": false, @@ -82298,11 +75028,6 @@ "editType": "calc", "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "standoff": { "arrayOk": true, "description": "Moves the marker away from the data point in the direction of `angle` (in px). This can be useful for example if you have another marker at this location and you want to point an arrowhead marker at it.", @@ -82311,11 +75036,6 @@ "min": 0, "valType": "number" }, - "standoffsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `standoff`.", - "editType": "none", - "valType": "string" - }, "symbol": { "arrayOk": true, "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.", @@ -82810,11 +75530,6 @@ "154", "arrow-wide-open" ] - }, - "symbolsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", - "editType": "none", - "valType": "string" } }, "meta": { @@ -82823,11 +75538,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "mode": { "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*.", "dflt": "markers", @@ -82927,11 +75637,6 @@ "editType": "style", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the text font.", "editType": "calc", "family": { @@ -82942,11 +75647,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -82962,11 +75662,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -82975,22 +75670,12 @@ "editType": "calc", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "calc", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -83002,11 +75687,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -83020,11 +75700,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -83040,11 +75715,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -83057,11 +75727,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "textposition": { @@ -83082,16 +75747,6 @@ "bottom right" ] }, - "textpositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", - "editType": "none", - "valType": "string" - }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "texttemplate": { "arrayOk": true, "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `a`, `b`, `c` and `text`.", @@ -83105,11 +75760,6 @@ "editType": "plot", "valType": "any" }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, "type": "scatterternary", "uid": { "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", @@ -83188,11 +75838,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "diagonal": { "editType": "calc", "role": "object", @@ -83249,11 +75894,6 @@ "editType": "calc+clearAxisTypes", "valType": "data_array" }, - "valuessrc": { - "description": "Sets the source reference on Chart Studio Cloud for `values`.", - "editType": "none", - "valType": "string" - }, "visible": { "description": "Determines whether or not this dimension is shown on the graph. Note that even visible false dimension contribute to the default grid generate by this splom trace.", "dflt": true, @@ -83283,11 +75923,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -83301,33 +75936,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -83335,11 +75955,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -83350,11 +75965,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -83370,11 +75980,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -83383,22 +75988,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -83410,11 +76005,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -83428,11 +76018,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -83448,11 +76033,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -83465,11 +76045,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -83480,11 +76055,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -83506,11 +76076,6 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Same as `text`.", @@ -83518,21 +76083,11 @@ "editType": "calc", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -83664,11 +76219,6 @@ "editType": "plot", "valType": "angle" }, - "anglesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `angle`.", - "editType": "none", - "valType": "string" - }, "autocolorscale": { "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", "dflt": true, @@ -84133,21 +76683,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -84337,11 +76877,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "line": { "autocolorscale": { @@ -84405,11 +76940,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.", @@ -84424,11 +76954,6 @@ "editType": "calc", "min": 0, "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" } }, "opacity": { @@ -84439,11 +76964,6 @@ "min": 0, "valType": "number" }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", "dflt": false, @@ -84488,11 +77008,6 @@ "editType": "calc", "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "symbol": { "arrayOk": true, "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.", @@ -84987,11 +77502,6 @@ "154", "arrow-wide-open" ] - }, - "symbolsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", - "editType": "none", - "valType": "string" } }, "meta": { @@ -85000,11 +77510,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -85074,11 +77579,6 @@ "editType": "calc", "valType": "string" }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "type": "splom", "uid": { "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", @@ -85636,21 +78136,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -85845,11 +78335,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "hoverinfo": { "arrayOk": true, "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.", @@ -85874,11 +78359,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -85892,33 +78372,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -85926,11 +78391,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -85941,11 +78401,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -85961,11 +78416,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -85974,22 +78424,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -86001,11 +78441,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -86019,11 +78454,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -86039,11 +78469,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -86056,11 +78481,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -86071,11 +78491,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -86097,11 +78512,6 @@ "editType": "calc", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "description": "Same as `text`.", "dflt": "", @@ -86113,11 +78523,6 @@ "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -86342,11 +78747,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -86399,30 +78799,15 @@ "editType": "calc", "valType": "data_array" }, - "xsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `x`.", - "editType": "none", - "valType": "string" - }, "y": { "description": "Sets the y components of the starting position of the streamtubes", "editType": "calc", "valType": "data_array" }, - "ysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `y`.", - "editType": "none", - "valType": "string" - }, "z": { "description": "Sets the z components of the starting position of the streamtubes", "editType": "calc", "valType": "data_array" - }, - "zsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `z`.", - "editType": "none", - "valType": "string" } }, "text": { @@ -86453,11 +78838,6 @@ "editType": "none", "valType": "any" }, - "usrc": { - "description": "Sets the source reference on Chart Studio Cloud for `u`.", - "editType": "none", - "valType": "string" - }, "v": { "description": "Sets the y components of the vector field.", "editType": "calc", @@ -86480,11 +78860,6 @@ "legendonly" ] }, - "vsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `v`.", - "editType": "none", - "valType": "string" - }, "w": { "description": "Sets the z components of the vector field.", "editType": "calc", @@ -86496,11 +78871,6 @@ "editType": "none", "valType": "string" }, - "wsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `w`.", - "editType": "none", - "valType": "string" - }, "x": { "description": "Sets the x coordinates of the vector field.", "editType": "calc+clearAxisTypes", @@ -86512,11 +78882,6 @@ "editType": "none", "valType": "string" }, - "xsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `x`.", - "editType": "none", - "valType": "string" - }, "y": { "description": "Sets the y coordinates of the vector field.", "editType": "calc+clearAxisTypes", @@ -86528,11 +78893,6 @@ "editType": "none", "valType": "string" }, - "ysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `y`.", - "editType": "none", - "valType": "string" - }, "z": { "description": "Sets the z coordinates of the vector field.", "editType": "calc+clearAxisTypes", @@ -86543,11 +78903,6 @@ "dflt": "", "editType": "none", "valType": "string" - }, - "zsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `z`.", - "editType": "none", - "valType": "string" } }, "categories": [ @@ -86587,11 +78942,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "domain": { "column": { "description": "If there is a layout grid, use the domain for this column in the grid for this sunburst trace.", @@ -86678,11 +79028,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -86696,33 +79041,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -86730,11 +79060,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -86745,11 +79070,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -86765,11 +79085,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -86778,22 +79093,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -86805,11 +79110,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -86823,11 +79123,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -86843,11 +79138,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -86860,11 +79150,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -86875,11 +79160,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -86901,11 +79181,6 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Sets hover text elements associated with each sector. If a single string, the same string appears for all data points. If an array of string, the items are mapped in order of this trace's sectors. To be seen, trace `hoverinfo` must contain a *text* flag.", @@ -86913,33 +79188,18 @@ "editType": "style", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "anim": true, "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "insidetextfont": { "color": { "arrayOk": true, "editType": "plot", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used for `textinfo` lying inside the sector.", "editType": "plot", "family": { @@ -86950,11 +79210,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -86970,11 +79225,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -86983,22 +79233,12 @@ "editType": "plot", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "plot", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -87010,11 +79250,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -87028,11 +79263,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -87048,11 +79278,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -87065,11 +79290,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "insidetextorientation": { @@ -87089,11 +79309,6 @@ "editType": "calc", "valType": "data_array" }, - "labelssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `labels`.", - "editType": "none", - "valType": "string" - }, "leaf": { "editType": "plot", "opacity": { @@ -87687,21 +79902,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -87896,11 +80101,6 @@ }, "valType": "colorscale" }, - "colorssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `colors`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "line": { "color": { @@ -87910,11 +80110,6 @@ "editType": "style", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "role": "object", "width": { @@ -87924,11 +80119,6 @@ "editType": "style", "min": 0, "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" } }, "pattern": { @@ -87938,11 +80128,6 @@ "editType": "style", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the pattern within the marker.", "editType": "style", "fgcolor": { @@ -87951,11 +80136,6 @@ "editType": "style", "valType": "color" }, - "fgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `fgcolor`.", - "editType": "none", - "valType": "string" - }, "fgopacity": { "description": "Sets the opacity of the foreground pattern fill. Defaults to a 0.5 when `fillmode` is *overlay*. Otherwise, defaults to 1.", "editType": "style", @@ -87979,11 +80159,6 @@ "editType": "style", "valType": "string" }, - "pathsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `path`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shape": { "arrayOk": true, @@ -88002,11 +80177,6 @@ "." ] }, - "shapesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shape`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "description": "Sets the size of unit squares of the pattern fill in pixels, which corresponds to the interval of repetition of the pattern.", @@ -88015,11 +80185,6 @@ "min": 0, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "solidity": { "arrayOk": true, "description": "Sets the solidity of the pattern fill. Solidity is roughly the fraction of the area filled by the pattern. Solidity of 0 shows only the background color without pattern and solidty of 1 shows only the foreground color without pattern.", @@ -88028,11 +80193,6 @@ "max": 1, "min": 0, "valType": "number" - }, - "soliditysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `solidity`.", - "editType": "none", - "valType": "string" } }, "reversescale": { @@ -88061,11 +80221,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -88085,11 +80240,6 @@ "editType": "plot", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used for `textinfo` lying outside the sector. This option refers to the root of the hierarchy presented at the center of a sunburst graph. Please note that if a hierarchy has multiple root nodes, this option won't have any effect and `insidetextfont` would be used.", "editType": "plot", "family": { @@ -88100,11 +80250,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -88120,11 +80265,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -88133,22 +80273,12 @@ "editType": "plot", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "plot", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -88160,11 +80290,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -88178,11 +80303,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -88198,11 +80318,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -88215,11 +80330,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "parents": { @@ -88227,11 +80337,6 @@ "editType": "calc", "valType": "data_array" }, - "parentssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `parents`.", - "editType": "none", - "valType": "string" - }, "root": { "color": { "description": "sets the color of the root node for a sunburst/treemap/icicle trace. this has no effect when a colorscale is used to set the markers.", @@ -88265,11 +80370,6 @@ "editType": "plot", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used for `textinfo`.", "editType": "plot", "family": { @@ -88280,11 +80380,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -88300,11 +80395,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -88313,22 +80403,12 @@ "editType": "plot", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "plot", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -88340,11 +80420,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -88358,11 +80433,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -88378,11 +80448,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -88395,11 +80460,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "textinfo": { @@ -88419,11 +80479,6 @@ ], "valType": "flaglist" }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "texttemplate": { "arrayOk": true, "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `currentPath`, `root`, `entry`, `percentRoot`, `percentEntry`, `percentParent`, `label` and `value`.", @@ -88437,11 +80492,6 @@ "editType": "plot", "valType": "any" }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, "type": "sunburst", "uid": { "anim": true, @@ -88459,11 +80509,6 @@ "editType": "calc", "valType": "data_array" }, - "valuessrc": { - "description": "Sets the source reference on Chart Studio Cloud for `values`.", - "editType": "none", - "valType": "string" - }, "visible": { "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).", "dflt": true, @@ -88956,21 +81001,11 @@ "editType": "calc", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "calc", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -89448,11 +81483,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "hidesurface": { "description": "Determines whether or not a surface is drawn. For example, set `hidesurface` to *false* `contours.x.show` to *true* and `contours.y.show` to *true* to draw a wire frame plot.", "dflt": false, @@ -89478,11 +81508,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -89496,33 +81521,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -89530,11 +81540,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -89545,11 +81550,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -89565,11 +81565,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -89578,22 +81573,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -89605,11 +81590,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -89623,11 +81603,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -89643,11 +81618,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -89660,11 +81630,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -89675,11 +81640,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -89701,11 +81661,6 @@ "editType": "calc", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Same as `text`.", @@ -89713,21 +81668,11 @@ "editType": "calc", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -89929,11 +81874,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -89981,11 +81921,6 @@ "editType": "calc", "valType": "data_array" }, - "surfacecolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `surfacecolor`.", - "editType": "none", - "valType": "string" - }, "text": { "arrayOk": true, "description": "Sets the text elements associated with each z value. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", @@ -89993,11 +81928,6 @@ "editType": "calc", "valType": "string" }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "type": "surface", "uid": { "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", @@ -90055,11 +81985,6 @@ "editType": "calc", "valType": "string" }, - "xsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `x`.", - "editType": "none", - "valType": "string" - }, "y": { "description": "Sets the y coordinates.", "editType": "calc+clearAxisTypes", @@ -90095,11 +82020,6 @@ "editType": "calc", "valType": "string" }, - "ysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `y`.", - "editType": "none", - "valType": "string" - }, "z": { "description": "Sets the z coordinates.", "editType": "calc+clearAxisTypes", @@ -90134,11 +82054,6 @@ "dflt": "", "editType": "calc", "valType": "string" - }, - "zsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `z`.", - "editType": "none", - "valType": "string" } }, "categories": [ @@ -90167,11 +82082,6 @@ "right" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "fill": { "color": { @@ -90181,11 +82091,6 @@ "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "role": "object" }, @@ -90195,11 +82100,6 @@ "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "", "editType": "calc", "family": { @@ -90210,11 +82110,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -90230,11 +82125,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -90243,22 +82133,12 @@ "editType": "calc", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "calc", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -90270,11 +82150,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -90288,11 +82163,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -90308,11 +82178,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -90325,11 +82190,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "format": { @@ -90338,11 +82198,6 @@ "editType": "calc", "valType": "data_array" }, - "formatsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `format`.", - "editType": "none", - "valType": "string" - }, "height": { "description": "The height of cells.", "dflt": 20, @@ -90356,11 +82211,6 @@ "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "role": "object", "width": { @@ -90368,11 +82218,6 @@ "dflt": 1, "editType": "calc", "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" } }, "prefix": { @@ -90382,11 +82227,6 @@ "editType": "calc", "valType": "string" }, - "prefixsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `prefix`.", - "editType": "none", - "valType": "string" - }, "role": "object", "suffix": { "arrayOk": true, @@ -90395,21 +82235,11 @@ "editType": "calc", "valType": "string" }, - "suffixsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `suffix`.", - "editType": "none", - "valType": "string" - }, "values": { "description": "Cell values. `values[m][n]` represents the value of the `n`th point in column `m`, therefore the `values[m]` vector length for all columns must be the same (longer vectors will be truncated). Each value must be a finite number or a string.", "dflt": [], "editType": "calc", "valType": "data_array" - }, - "valuessrc": { - "description": "Sets the source reference on Chart Studio Cloud for `values`.", - "editType": "none", - "valType": "string" } }, "columnorder": { @@ -90417,11 +82247,6 @@ "editType": "calc", "valType": "data_array" }, - "columnordersrc": { - "description": "Sets the source reference on Chart Studio Cloud for `columnorder`.", - "editType": "none", - "valType": "string" - }, "columnwidth": { "arrayOk": true, "description": "The width of columns expressed as a ratio. Columns fill the available width in proportion of their specified column widths.", @@ -90429,21 +82254,11 @@ "editType": "calc", "valType": "number" }, - "columnwidthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `columnwidth`.", - "editType": "none", - "valType": "string" - }, "customdata": { "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements", "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "domain": { "column": { "description": "If there is a layout grid, use the domain for this column in the grid for this table trace.", @@ -90522,11 +82337,6 @@ "right" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "fill": { "color": { @@ -90536,11 +82346,6 @@ "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "role": "object" }, @@ -90550,11 +82355,6 @@ "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "", "editType": "calc", "family": { @@ -90565,11 +82365,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -90585,11 +82380,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -90598,22 +82388,12 @@ "editType": "calc", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "calc", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -90625,11 +82405,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -90643,11 +82418,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -90663,11 +82433,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -90680,11 +82445,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "format": { @@ -90693,11 +82453,6 @@ "editType": "calc", "valType": "data_array" }, - "formatsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `format`.", - "editType": "none", - "valType": "string" - }, "height": { "description": "The height of cells.", "dflt": 28, @@ -90711,11 +82466,6 @@ "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "role": "object", "width": { @@ -90723,11 +82473,6 @@ "dflt": 1, "editType": "calc", "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" } }, "prefix": { @@ -90737,11 +82482,6 @@ "editType": "calc", "valType": "string" }, - "prefixsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `prefix`.", - "editType": "none", - "valType": "string" - }, "role": "object", "suffix": { "arrayOk": true, @@ -90750,21 +82490,11 @@ "editType": "calc", "valType": "string" }, - "suffixsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `suffix`.", - "editType": "none", - "valType": "string" - }, "values": { "description": "Header cell values. `values[m][n]` represents the value of the `n`th point in column `m`, therefore the `values[m]` vector length for all columns must be the same (longer vectors will be truncated). Each value must be a finite number or a string.", "dflt": [], "editType": "calc", "valType": "data_array" - }, - "valuessrc": { - "description": "Sets the source reference on Chart Studio Cloud for `values`.", - "editType": "none", - "valType": "string" } }, "hoverinfo": { @@ -90786,11 +82516,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -90804,33 +82529,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -90838,11 +82548,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -90853,11 +82558,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -90873,11 +82573,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -90886,22 +82581,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -90913,11 +82598,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -90931,11 +82611,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -90951,11 +82626,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -90968,11 +82638,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -90983,11 +82648,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -91001,11 +82661,6 @@ "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -91129,11 +82784,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -91198,11 +82848,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "domain": { "column": { "description": "If there is a layout grid, use the domain for this column in the grid for this treemap trace.", @@ -91289,11 +82934,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -91307,33 +82947,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -91341,11 +82966,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -91356,11 +82976,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -91376,11 +82991,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -91389,22 +82999,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -91416,11 +83016,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -91434,11 +83029,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -91454,11 +83044,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -91471,11 +83056,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -91486,11 +83066,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -91512,11 +83087,6 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Sets hover text elements associated with each sector. If a single string, the same string appears for all data points. If an array of string, the items are mapped in order of this trace's sectors. To be seen, trace `hoverinfo` must contain a *text* flag.", @@ -91524,33 +83094,18 @@ "editType": "style", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "anim": true, "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "insidetextfont": { "color": { "arrayOk": true, "editType": "plot", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used for `textinfo` lying inside the sector.", "editType": "plot", "family": { @@ -91561,11 +83116,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -91581,11 +83131,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -91594,22 +83139,12 @@ "editType": "plot", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "plot", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -91621,11 +83156,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -91639,11 +83169,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -91659,11 +83184,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -91676,11 +83196,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "labels": { @@ -91688,11 +83203,6 @@ "editType": "calc", "valType": "data_array" }, - "labelssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `labels`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -92275,21 +83785,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -92484,11 +83984,6 @@ }, "valType": "colorscale" }, - "colorssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `colors`.", - "editType": "none", - "valType": "string" - }, "cornerradius": { "description": "Sets the maximum rounding of corners (in px).", "dflt": 0, @@ -92515,11 +84010,6 @@ "editType": "style", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "role": "object", "width": { @@ -92529,11 +84019,6 @@ "editType": "style", "min": 0, "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" } }, "pad": { @@ -92571,11 +84056,6 @@ "editType": "style", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the pattern within the marker.", "editType": "style", "fgcolor": { @@ -92584,11 +84064,6 @@ "editType": "style", "valType": "color" }, - "fgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `fgcolor`.", - "editType": "none", - "valType": "string" - }, "fgopacity": { "description": "Sets the opacity of the foreground pattern fill. Defaults to a 0.5 when `fillmode` is *overlay*. Otherwise, defaults to 1.", "editType": "style", @@ -92612,11 +84087,6 @@ "editType": "style", "valType": "string" }, - "pathsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `path`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shape": { "arrayOk": true, @@ -92635,11 +84105,6 @@ "." ] }, - "shapesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shape`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "description": "Sets the size of unit squares of the pattern fill in pixels, which corresponds to the interval of repetition of the pattern.", @@ -92648,11 +84113,6 @@ "min": 0, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "solidity": { "arrayOk": true, "description": "Sets the solidity of the pattern fill. Solidity is roughly the fraction of the area filled by the pattern. Solidity of 0 shows only the background color without pattern and solidty of 1 shows only the foreground color without pattern.", @@ -92661,11 +84121,6 @@ "max": 1, "min": 0, "valType": "number" - }, - "soliditysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `solidity`.", - "editType": "none", - "valType": "string" } }, "reversescale": { @@ -92694,11 +84149,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -92718,11 +84168,6 @@ "editType": "plot", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used for `textinfo` lying outside the sector. This option refers to the root of the hierarchy presented on top left corner of a treemap graph. Please note that if a hierarchy has multiple root nodes, this option won't have any effect and `insidetextfont` would be used.", "editType": "plot", "family": { @@ -92733,11 +84178,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -92753,11 +84193,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -92766,22 +84201,12 @@ "editType": "plot", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "plot", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -92793,11 +84218,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -92811,11 +84231,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -92831,11 +84246,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -92848,11 +84258,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "parents": { @@ -92860,11 +84265,6 @@ "editType": "calc", "valType": "data_array" }, - "parentssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `parents`.", - "editType": "none", - "valType": "string" - }, "pathbar": { "edgeshape": { "description": "Determines which shape is used for edges between `barpath` labels.", @@ -92897,11 +84297,6 @@ "editType": "plot", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used inside `pathbar`.", "editType": "plot", "family": { @@ -92912,11 +84307,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -92932,11 +84322,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -92945,22 +84330,12 @@ "editType": "plot", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "plot", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -92972,11 +84347,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -92990,11 +84360,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -93010,11 +84375,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -93027,11 +84387,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "thickness": { @@ -93074,11 +84429,6 @@ "editType": "plot", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used for `textinfo`.", "editType": "plot", "family": { @@ -93089,11 +84439,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -93109,11 +84454,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -93122,22 +84462,12 @@ "editType": "plot", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "plot", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -93149,11 +84479,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -93167,11 +84492,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -93187,11 +84507,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -93204,11 +84519,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "textinfo": { @@ -93245,11 +84555,6 @@ "bottom right" ] }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "texttemplate": { "arrayOk": true, "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `currentPath`, `root`, `entry`, `percentRoot`, `percentEntry`, `percentParent`, `label` and `value`.", @@ -93263,11 +84568,6 @@ "editType": "plot", "valType": "any" }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, "tiling": { "editType": "calc", "flip": { @@ -93327,11 +84627,6 @@ "editType": "calc", "valType": "data_array" }, - "valuessrc": { - "description": "Sets the source reference on Chart Studio Cloud for `values`.", - "editType": "none", - "valType": "string" - }, "visible": { "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).", "dflt": true, @@ -93421,11 +84716,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "fillcolor": { "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available.", "editType": "style", @@ -93450,11 +84740,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -93468,33 +84753,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -93502,11 +84772,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -93517,11 +84782,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -93537,11 +84797,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -93550,22 +84805,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -93577,11 +84822,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -93595,11 +84835,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -93615,11 +84850,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -93632,11 +84862,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -93647,11 +84872,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -93687,11 +84907,6 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Same as `text`.", @@ -93699,21 +84914,11 @@ "editType": "style", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "jitter": { "description": "Sets the amount of jitter in the sample points drawn. If *0*, the sample points align along the distribution axis. If *1*, the sample points are drawn in a random jitter of width equal to the width of the violins.", "editType": "calc", @@ -94453,11 +85658,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover. For violin traces, the name will also be used for the position coordinate, if `x` and `x0` (`y` and `y0` if horizontal) are missing and the position axis is categorical. Note that the trace name is also used as a default value for attribute `scalegroup` (please see its description for details).", "editType": "calc+clearAxisTypes", @@ -94612,11 +85812,6 @@ "editType": "calc", "valType": "string" }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "type": "violin", "uid": { "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", @@ -94694,11 +85889,6 @@ "editType": "none", "valType": "string" }, - "xsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `x`.", - "editType": "none", - "valType": "string" - }, "y": { "description": "Sets the y sample data or coordinates. See overview for more info.", "editType": "calc+clearAxisTypes", @@ -94721,11 +85911,6 @@ "editType": "none", "valType": "string" }, - "ysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `y`.", - "editType": "none", - "valType": "string" - }, "zorder": { "description": "Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`.", "dflt": 0, @@ -95295,21 +86480,11 @@ "editType": "calc", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "calc", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -95528,11 +86703,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "flatshading": { "description": "Determines whether or not normal smoothing is applied to the meshes, creating meshes with an angular, low-poly look via flat reflections.", "dflt": true, @@ -95558,11 +86728,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -95576,33 +86741,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -95610,11 +86760,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -95625,11 +86770,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -95645,11 +86785,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -95658,22 +86793,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -95685,11 +86810,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -95703,11 +86823,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -95723,11 +86838,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -95740,11 +86850,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -95755,11 +86860,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -95781,11 +86881,6 @@ "editType": "calc", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Same as `text`.", @@ -95793,21 +86888,11 @@ "editType": "calc", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "isomax": { "description": "Sets the maximum boundary for iso-surface plot.", "editType": "calc", @@ -96035,11 +87120,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -96101,11 +87181,6 @@ "editType": "calc", "valType": "data_array" }, - "locationssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `locations`.", - "editType": "none", - "valType": "string" - }, "role": "object", "show": { "description": "Determines whether or not slice planes about the x dimension are drawn.", @@ -96130,11 +87205,6 @@ "editType": "calc", "valType": "data_array" }, - "locationssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `locations`.", - "editType": "none", - "valType": "string" - }, "role": "object", "show": { "description": "Determines whether or not slice planes about the y dimension are drawn.", @@ -96159,11 +87229,6 @@ "editType": "calc", "valType": "data_array" }, - "locationssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `locations`.", - "editType": "none", - "valType": "string" - }, "role": "object", "show": { "description": "Determines whether or not slice planes about the z dimension are drawn.", @@ -96241,11 +87306,6 @@ "editType": "calc", "valType": "string" }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "type": "volume", "uid": { "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", @@ -96268,11 +87328,6 @@ "editType": "calc", "valType": "string" }, - "valuesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `value`.", - "editType": "none", - "valType": "string" - }, "visible": { "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).", "dflt": true, @@ -96295,11 +87350,6 @@ "editType": "calc", "valType": "string" }, - "xsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `x`.", - "editType": "none", - "valType": "string" - }, "y": { "description": "Sets the Y coordinates of the vertices on Y axis.", "editType": "calc+clearAxisTypes", @@ -96311,11 +87361,6 @@ "editType": "calc", "valType": "string" }, - "ysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `y`.", - "editType": "none", - "valType": "string" - }, "z": { "description": "Sets the Z coordinates of the vertices on Z axis.", "editType": "calc+clearAxisTypes", @@ -96326,11 +87371,6 @@ "dflt": "", "editType": "calc", "valType": "string" - }, - "zsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `z`.", - "editType": "none", - "valType": "string" } }, "categories": [ @@ -96432,11 +87472,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "decreasing": { "editType": "style", "marker": { @@ -96502,11 +87537,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -96520,33 +87550,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -96554,11 +87569,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -96569,11 +87579,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -96589,11 +87594,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -96602,22 +87602,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -96629,11 +87619,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -96647,11 +87632,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -96667,11 +87647,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -96684,11 +87659,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -96699,11 +87669,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -96725,11 +87690,6 @@ "editType": "none", "valType": "any" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "hovertext": { "arrayOk": true, "description": "Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", @@ -96737,21 +87697,11 @@ "editType": "style", "valType": "string" }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, "ids": { "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "increasing": { "editType": "style", "marker": { @@ -96801,11 +87751,6 @@ "editType": "style", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used for `text` lying inside the bar.", "editType": "calc", "family": { @@ -96816,11 +87761,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -96836,11 +87776,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -96849,22 +87784,12 @@ "editType": "calc", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "calc", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -96876,11 +87801,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -96894,11 +87814,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -96914,11 +87829,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -96931,11 +87841,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "legend": { @@ -97067,22 +87972,12 @@ "editType": "calc", "valType": "data_array" }, - "measuresrc": { - "description": "Sets the source reference on Chart Studio Cloud for `measure`.", - "editType": "none", - "valType": "string" - }, "meta": { "arrayOk": true, "description": "Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index.", "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -97101,11 +87996,6 @@ "editType": "calc", "valType": "string" }, - "offsetsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `offset`.", - "editType": "none", - "valType": "string" - }, "opacity": { "description": "Sets the opacity of the trace.", "dflt": 1, @@ -97129,11 +88019,6 @@ "editType": "style", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used for `text` lying outside the bar.", "editType": "calc", "family": { @@ -97144,11 +88029,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -97164,11 +88044,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -97177,22 +88052,12 @@ "editType": "calc", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "calc", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -97204,11 +88069,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -97222,11 +88082,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -97242,11 +88097,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -97259,11 +88109,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "selectedpoints": { @@ -97296,11 +88141,6 @@ "editType": "style", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used for `text`.", "editType": "calc", "family": { @@ -97311,11 +88151,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -97331,11 +88166,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -97344,22 +88174,12 @@ "editType": "calc", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "calc", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -97371,11 +88191,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -97389,11 +88204,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -97409,11 +88219,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -97426,11 +88231,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "textinfo": { @@ -97462,16 +88262,6 @@ "none" ] }, - "textpositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", - "editType": "none", - "valType": "string" - }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "texttemplate": { "arrayOk": true, "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `initial`, `delta`, `final` and `label`.", @@ -97485,11 +88275,6 @@ "editType": "plot", "valType": "any" }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, "totals": { "editType": "style", "marker": { @@ -97552,11 +88337,6 @@ "min": 0, "valType": "number" }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" - }, "x": { "description": "Sets the x coordinates.", "editType": "calc+clearAxisTypes", @@ -97602,11 +88382,6 @@ "end" ] }, - "xsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `x`.", - "editType": "none", - "valType": "string" - }, "y": { "description": "Sets the y coordinates.", "editType": "calc+clearAxisTypes", @@ -97652,11 +88427,6 @@ "end" ] }, - "ysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `y`.", - "editType": "none", - "valType": "string" - }, "zorder": { "description": "Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`.", "dflt": 0, From eb7222207fb8c158518f6fd3aad8f96320ec0037 Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Mon, 8 Jun 2026 18:34:27 -0400 Subject: [PATCH 107/241] add draftlogs --- draftlogs/7623_change.md | 1 + draftlogs/7812_remove.md | 1 + 2 files changed, 2 insertions(+) create mode 100644 draftlogs/7623_change.md create mode 100644 draftlogs/7812_remove.md diff --git a/draftlogs/7623_change.md b/draftlogs/7623_change.md new file mode 100644 index 00000000000..44d984988e2 --- /dev/null +++ b/draftlogs/7623_change.md @@ -0,0 +1 @@ +- Remove all `*src` attributes, as well as `layout.hidesources` attribute, from the schema. Change signature of `plots.graphJson()` function to remove `mode` argument [[#7623](https://github.com/plotly/plotly.js/pull/7623)] diff --git a/draftlogs/7812_remove.md b/draftlogs/7812_remove.md new file mode 100644 index 00000000000..7c296c752ce --- /dev/null +++ b/draftlogs/7812_remove.md @@ -0,0 +1 @@ +- Remove config attributes `showLink`, `linkText`, `sendData`, `showSources`, and `showEditInChartStudio`, as well as trace attribute `stream`, since all of these were associated with Chart Studio and are no longer needed [[#7812](https://github.com/plotly/plotly.js/pull/7812)] \ No newline at end of file From 0a748909a696e0791aa6ba0ace164abacc10762a Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Tue, 9 Jun 2026 11:32:53 -0400 Subject: [PATCH 108/241] expand forbidden chars --- src/lib/slugify.js | 21 ++++++++++++--------- test/jasmine/tests/download_test.js | 2 +- test/jasmine/tests/lib_test.js | 8 +++++++- 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/src/lib/slugify.js b/src/lib/slugify.js index 16090e8f1c9..32342629717 100644 --- a/src/lib/slugify.js +++ b/src/lib/slugify.js @@ -2,7 +2,9 @@ // precompile for speed var HTML_TAGS_REGEX = /<[^>]*>/g; // anything contained in < > tags -var FORBIDDEN_CHARS_REGEX = /[\\/:*?"<>|$`'(){}[\],]/g; // Characters in the set: \/:*?"<>|$`'(){}[], +var FORBIDDEN_CHARS_REGEX = /[\\/:*?"<>|$%&!@#~.^`'(){}[\],]/g; // Characters in the set: \/:*?"<>|$%&!@#~.^`'(){}[], +var CONTROL_CHARS_REGEX = /\p{Cc}/gu; // Unicode control characters + var UNICODE_REPLACEMENT_CHAR_REGEX = /�/g; // U+FFFD, the Unicode replacement character var WHITESPACE_REGEX = /\s+/g; @@ -37,14 +39,15 @@ function toWellFormed(str) { * @return {string} */ module.exports = function slugify(str, maxLen = DEFAULT_MAX_LEN) { - var slug = toWellFormed(str ?? '') // Guarantee well-formed Unicode text - .replace(UNICODE_REPLACEMENT_CHAR_REGEX, '') // Drop Unicode replacement characters left by previous step - .replace(HTML_TAGS_REGEX, ' ') // Remove anything contained in < > tags, such as
(replace with a space) - .replace(FORBIDDEN_CHARS_REGEX, '') // Remove forbidden filename characters - .toLowerCase() // Lowercase everything - .trim() // Strip leading/trailing whitespace - .replace(WHITESPACE_REGEX, WORD_SEP_CHAR) // Replace any remaining whitespace with the word separator char - .replace(WORD_SEP_CHARS_REGEX, WORD_SEP_CHAR); // Replace multiple consecutive word separator chars with a single one + var slug = toWellFormed(str ?? '') // Guarantee well-formed Unicode text + .replace(UNICODE_REPLACEMENT_CHAR_REGEX, '') // Drop Unicode replacement chars left by previous step + .replace(HTML_TAGS_REGEX, ' ') // Remove < > tags, such as
(replace with space) + .replace(FORBIDDEN_CHARS_REGEX, '') // Remove forbidden filename characters + .toLowerCase() // Lowercase everything + .trim() // Strip leading/trailing whitespace + .replace(WHITESPACE_REGEX, WORD_SEP_CHAR) // Replace any remaining whitespace with the word sep char + .replace(CONTROL_CHARS_REGEX, '') // Remove control characters (after whitespace) + .replace(WORD_SEP_CHARS_REGEX, WORD_SEP_CHAR); // Replace multiple word sep chars with a single one if (slug.length <= maxLen) return slug; // Apply maxLen to the resulting string. Use Array.from().slice() instead of String.prototype.split() diff --git a/test/jasmine/tests/download_test.js b/test/jasmine/tests/download_test.js index 4dc0f469d3d..a0b7df9f6e9 100644 --- a/test/jasmine/tests/download_test.js +++ b/test/jasmine/tests/download_test.js @@ -115,7 +115,7 @@ describe('Plotly.downloadImage', function() { it('strips forbidden characters from the title', function(done) { downloadDefault({title: {text: 'Revenue, Costs & "Profit" (2024)'}}) .then(function(filename) { - expect(filename).toBe('revenue-costs-&-profit-2024.png'); + expect(filename).toBe('revenue-costs-profit-2024.png'); }) .then(done, done.fail); }, LONG_TIMEOUT_INTERVAL); diff --git a/test/jasmine/tests/lib_test.js b/test/jasmine/tests/lib_test.js index 3a451d4f571..ecbffad2774 100644 --- a/test/jasmine/tests/lib_test.js +++ b/test/jasmine/tests/lib_test.js @@ -1952,7 +1952,13 @@ describe('Test lib.js:', function () { }); it('removes illegal filename characters', function () { - expect(Lib.slugify('a/b\\c:d*e?f"g|h$i')).toBe('abcdefghi'); + expect(Lib.slugify('a/b\\c:d*e?f"g|h$i%j&k!l@m#n~o.p^q`r\'s,t')) + .toBe('abcdefghijklmnopqrst'); + expect(Lib.slugify('a>b Date: Tue, 9 Jun 2026 11:44:33 -0400 Subject: [PATCH 109/241] update locales files --- lib/locales/cs.js | 6 +++--- lib/locales/cy.js | 6 +++--- lib/locales/de.js | 6 +++--- lib/locales/es.js | 6 +++--- lib/locales/fi.js | 6 +++--- lib/locales/fr.js | 6 +++--- lib/locales/hr.js | 6 +++--- lib/locales/it.js | 6 +++--- lib/locales/ja.js | 6 +++--- lib/locales/ko.js | 6 +++--- lib/locales/no.js | 6 +++--- lib/locales/pt-br.js | 6 +++--- lib/locales/pt-pt.js | 6 +++--- lib/locales/ro.js | 6 +++--- lib/locales/ru.js | 6 +++--- lib/locales/si.js | 6 +++--- lib/locales/sk.js | 6 +++--- lib/locales/sv.js | 6 +++--- lib/locales/sw.js | 6 +++--- lib/locales/tr.js | 6 +++--- lib/locales/uk.js | 6 +++--- lib/locales/zh-cn.js | 6 +++--- lib/locales/zh-tw.js | 6 +++--- 23 files changed, 69 insertions(+), 69 deletions(-) diff --git a/lib/locales/cs.js b/lib/locales/cs.js index 4d715482e54..19b3c99562b 100644 --- a/lib/locales/cs.js +++ b/lib/locales/cs.js @@ -32,9 +32,9 @@ module.exports = { 'Reset view': 'Obnovit nastavení pohledu', // components/modebar/buttons.js:583 'Reset views': 'Obnovit nastavení pohledů', // components/modebar/buttons.js:529 'Show closest data on hover': 'Zobrazit najbližší hodnotu při najetí myší', // components/modebar/buttons.js:157 - 'Snapshot succeeded': 'Snímek vytvořen', // components/modebar/buttons.js:66 - 'Sorry, there was a problem downloading your snapshot!': 'Omlouváme se, ale došlo k chybě stahování snímku!', // components/modebar/buttons.js:69 - 'Taking snapshot - this may take a few seconds': 'Vytváří se snímek - může zabrat pár vteřin', // components/modebar/buttons.js:57 + 'Image download succeeded': 'Snímek vytvořen', // components/modebar/buttons.js:66 + 'Sorry, there was a problem downloading your image!': 'Omlouváme se, ale došlo k chybě stahování snímku!', // components/modebar/buttons.js:69 + 'Capturing image - this may take a few seconds': 'Vytváří se snímek - může zabrat pár vteřin', // components/modebar/buttons.js:57 'Zoom': 'Zvětšení', // components/modebar/buttons.js:85 'Zoom in': 'Zvětšit', // components/modebar/buttons.js:121 'Zoom out': 'Zmenšit', // components/modebar/buttons.js:130 diff --git a/lib/locales/cy.js b/lib/locales/cy.js index f8f792eac4d..475a28134f2 100644 --- a/lib/locales/cy.js +++ b/lib/locales/cy.js @@ -32,9 +32,9 @@ module.exports = { 'Reset view': 'Ailosodwch y golwg', // components / modebar / buttons.js: 592 'Reset views': 'Ailosod olygfeydd', // components / modebar / buttons.js: 540 'Show closest data on hover': 'Dangos y data agosaf wrth hofran', // components / modebar / buttons.js: 168 - 'Snapshot succeeded': 'Llwyddodd y Ciplun', // components / modebar / buttons.js: 77 - 'Sorry, there was a problem downloading your snapshot!': 'Mae\'n ddrwg gennym, roedd problem wrth lawrlwytho eich ciplun!', // components / modebar / buttons.js: 80 - 'Taking snapshot - this may take a few seconds': 'Tynnu ciplun - gallai hyn gymryd ychydig o eiliadau', // components / modebar / buttons.js: 62 + 'Image download succeeded': 'Llwyddodd y Ciplun', // components / modebar / buttons.js: 77 + 'Sorry, there was a problem downloading your image!': 'Mae\'n ddrwg gennym, roedd problem wrth lawrlwytho eich ciplun!', // components / modebar / buttons.js: 80 + 'Capturing image - this may take a few seconds': 'Tynnu ciplun - gallai hyn gymryd ychydig o eiliadau', // components / modebar / buttons.js: 62 'Toggle Spike Lines': 'Toglo llinellau pigog', // components / modebar / buttons.js: 559 'Toggle show closest data on hover': 'Toglo dangos y data agosaf wrth hofran', // components / modebar / buttons.js: 364 'Turntable rotation': 'Cylchdroi trofwrdd', // components / modebar / buttons.js: 296 diff --git a/lib/locales/de.js b/lib/locales/de.js index 2be03de0398..1e066990a46 100644 --- a/lib/locales/de.js +++ b/lib/locales/de.js @@ -31,9 +31,9 @@ module.exports = { 'Reset view': 'Ansicht zurücksetzen', // components/modebar/buttons.js:583 'Reset views': 'Ansichten zurücksetzen', // components/modebar/buttons.js:529 'Show closest data on hover': 'Zeige näheste Daten beim Überfahren', // components/modebar/buttons.js:157 - 'Snapshot succeeded': 'Snapshot erfolgreich', // components/modebar/buttons.js:66 - 'Sorry, there was a problem downloading your snapshot!': 'Es gab ein Problem beim Herunterladen des Snapshots', // components/modebar/buttons.js:69 - 'Taking snapshot - this may take a few seconds': 'Erstelle einen Snapshot - dies kann einige Sekunden dauern', // components/modebar/buttons.js:57 + 'Image download succeeded': 'Snapshot erfolgreich', // components/modebar/buttons.js:66 + 'Sorry, there was a problem downloading your image!': 'Es gab ein Problem beim Herunterladen des Snapshots', // components/modebar/buttons.js:69 + 'Capturing image - this may take a few seconds': 'Erstelle einen Snapshot - dies kann einige Sekunden dauern', // components/modebar/buttons.js:57 'Zoom': 'Zoom', // components/modebar/buttons.js:85 'Zoom in': 'Hineinzoomen', // components/modebar/buttons.js:121 'Zoom out': 'Herauszoomen', // components/modebar/buttons.js:130 diff --git a/lib/locales/es.js b/lib/locales/es.js index 15a8a41369b..9e27a55c2e3 100644 --- a/lib/locales/es.js +++ b/lib/locales/es.js @@ -33,9 +33,9 @@ module.exports = { 'Reset view': 'Restaurar vista', // components/modebar/buttons.js:582 'Reset views': 'Restaurar vistas', // components/modebar/buttons.js:528 'Show closest data on hover': 'Mostrar el dato más cercano al pasar por encima', // components/modebar/buttons.js:157 - 'Snapshot succeeded': 'La captura de la instantánea finalizó correctamente', // components/modebar/buttons.js:66 - 'Sorry, there was a problem downloading your snapshot!': '¡La descarga de la instantánea falló!', // components/modebar/buttons.js:69 - 'Taking snapshot - this may take a few seconds': 'Capturando una instantánea - podría tardar unos segundos', // components/modebar/buttons.js:57 + 'Image download succeeded': 'La descarga de la imagen finalizó correctamente', // components/modebar/buttons.js:66 + 'Sorry, there was a problem downloading your image!': '¡La descarga de la imagen falló!', // components/modebar/buttons.js:69 + 'Capturing image - this may take a few seconds': 'Capturando una imagen - podría tardar unos segundos', // components/modebar/buttons.js:57 'Toggle Spike Lines': 'Mostrar/Ocultar Guías', // components/modebar/buttons.js:547 'Toggle show closest data on hover': 'Activar/Desactivar mostrar el dato más cercano al pasar por encima', // components/modebar/buttons.js:352 'Turntable rotation': 'Rotación plana', // components/modebar/buttons.js:288 diff --git a/lib/locales/fi.js b/lib/locales/fi.js index 82ae56a9ada..5b7cb940cb4 100644 --- a/lib/locales/fi.js +++ b/lib/locales/fi.js @@ -32,9 +32,9 @@ module.exports = { 'Reset view': 'Palauta näkymän oletusasetukset', 'Reset views': 'Palauta näkymien oletusasetukset', 'Show closest data on hover': 'Näytä kursoria lähin data', - 'Snapshot succeeded': 'Tilannekuvan ottaminen onnistui', - 'Sorry, there was a problem downloading your snapshot!': 'Pahoittelut, tilannekuvan lataaminen epäonnistui!', - 'Taking snapshot - this may take a few seconds': 'Otetaan tilannekuvaa - odota hetki', + 'Image download succeeded': 'Tilannekuvan ottaminen onnistui', + 'Sorry, there was a problem downloading your image!': 'Pahoittelut, tilannekuvan lataaminen epäonnistui!', + 'Capturing image - this may take a few seconds': 'Otetaan tilannekuvaa - odota hetki', 'Toggle Spike Lines': 'Näytä huiput', 'Toggle show closest data on hover': 'Näytä kursoria lähin data', 'Turntable rotation': 'Tasokierto', diff --git a/lib/locales/fr.js b/lib/locales/fr.js index 4e4653f8eee..dc6e27f2d5c 100644 --- a/lib/locales/fr.js +++ b/lib/locales/fr.js @@ -33,9 +33,9 @@ module.exports = { 'Reset view': 'Réinitialiser', 'Reset views': 'Réinitialiser', 'Show closest data on hover': 'Données les plus proches en survol', - 'Snapshot succeeded': 'Conversion réussie', - 'Sorry, there was a problem downloading your snapshot!': 'Désolé, un problème est survenu lors du téléchargement de votre graphique', - 'Taking snapshot - this may take a few seconds': 'Conversion en cours, ceci peut prendre quelques secondes', + 'Image download succeeded': 'Téléchargement du graphique réussi', + 'Sorry, there was a problem downloading your image!': 'Désolé, un problème est survenu lors du téléchargement de votre graphique', + 'Capturing image - this may take a few seconds': 'Conversion en cours, ceci peut prendre quelques secondes', 'Zoom': 'Zoom', 'Zoom in': 'Zoom intérieur', 'Zoom out': 'Zoom extérieur', diff --git a/lib/locales/hr.js b/lib/locales/hr.js index 061acf8f394..e73d7511fa3 100644 --- a/lib/locales/hr.js +++ b/lib/locales/hr.js @@ -32,9 +32,9 @@ module.exports = { 'Reset view': 'Resetirajte pogled', 'Reset views': 'Resetirajte poglede', 'Show closest data on hover': 'Prikaži najbliže podatke pri zadržavanju mišem', - 'Snapshot succeeded': 'Preuzimanje slike uspješno', - 'Sorry, there was a problem downloading your snapshot!': 'Pojavila se greška prilikom preuzimanja slike!', - 'Taking snapshot - this may take a few seconds': 'Preuzimanje slike - ovo može potrajati nekoliko sekundi', + 'Image download succeeded': 'Preuzimanje slike uspješno', + 'Sorry, there was a problem downloading your image!': 'Pojavila se greška prilikom preuzimanja slike!', + 'Capturing image - this may take a few seconds': 'Preuzimanje slike - ovo može potrajati nekoliko sekundi', 'Toggle Spike Lines': 'Postavljanje pomoćnih linija', 'Toggle show closest data on hover': 'Postavljanje prikaza najbližih podataka pri zadržavanju mišem', 'Turntable rotation': 'Turntable rotiranje', diff --git a/lib/locales/it.js b/lib/locales/it.js index 7118f71d620..41b2877fd2d 100644 --- a/lib/locales/it.js +++ b/lib/locales/it.js @@ -32,9 +32,9 @@ module.exports = { 'Reset view': 'Reimposta la vista', // components/modebar/buttons.js:583 'Reset views': 'Reimposta le viste', // components/modebar/buttons.js:529 'Show closest data on hover': 'Mostra i dati più vicini al passaggio del mouse', // components/modebar/buttons.js:157 - 'Snapshot succeeded': 'Screenshot creato con successo', // components/modebar/buttons.js:66 - 'Sorry, there was a problem downloading your snapshot!': 'Si è verificato un errore durante la creazione dello screenshot', // components/modebar/buttons.js:69 - 'Taking snapshot - this may take a few seconds': 'Creazione screenshot - potrebbe richiedere qualche secondo', // components/modebar/buttons.js:57 + 'Image download succeeded': 'Screenshot creato con successo', // components/modebar/buttons.js:66 + 'Sorry, there was a problem downloading your image!': 'Si è verificato un errore durante la creazione dello screenshot', // components/modebar/buttons.js:69 + 'Capturing image - this may take a few seconds': 'Creazione screenshot - potrebbe richiedere qualche secondo', // components/modebar/buttons.js:57 'Zoom': 'Zoom', // components/modebar/buttons.js:85 'Zoom in': 'Ingrandisci', // components/modebar/buttons.js:121 'Zoom out': 'Riduci', // components/modebar/buttons.js:130 diff --git a/lib/locales/ja.js b/lib/locales/ja.js index e227cf3c139..fb201027411 100644 --- a/lib/locales/ja.js +++ b/lib/locales/ja.js @@ -31,9 +31,9 @@ module.exports = { 'Reset view': 'ビューをリセット', // components/modebar/buttons.js:583 'Reset views': 'ビューをリセット', // components/modebar/buttons.js:529 'Show closest data on hover': 'ホバー時に一番近いデータを表示', // components/modebar/buttons.js:157 - 'Snapshot succeeded': 'スナップショットに成功', // components/modebar/buttons.js:66 - 'Sorry, there was a problem downloading your snapshot!': 'すみません、スナップショットダウンロードでエラーです!', // components/modebar/buttons.js:69 - 'Taking snapshot - this may take a few seconds': 'スナップショットを撮影', // components/modebar/buttons.js:57 + 'Image download succeeded': 'スナップショットに成功', // components/modebar/buttons.js:66 + 'Sorry, there was a problem downloading your image!': 'すみません、スナップショットダウンロードでエラーです!', // components/modebar/buttons.js:69 + 'Capturing image - this may take a few seconds': 'スナップショットを撮影', // components/modebar/buttons.js:57 'Zoom': 'ズーム', // components/modebar/buttons.js:85 'Zoom in': '拡大', // components/modebar/buttons.js:121 'Zoom out': '縮小', // components/modebar/buttons.js:130 diff --git a/lib/locales/ko.js b/lib/locales/ko.js index 73d7d34bf2f..920acea272e 100644 --- a/lib/locales/ko.js +++ b/lib/locales/ko.js @@ -32,9 +32,9 @@ module.exports = { 'Reset view': 'view 초기화', 'Reset views': 'views 초기화', 'Show closest data on hover': '마우스를 올리면 근접한 데이터를 보이기', - 'Snapshot succeeded': 'Snapshot 성공', - 'Sorry, there was a problem downloading your snapshot!': '죄송합니다, snapshot을 다운로드 중 문제가 발생했습니다!', - 'Taking snapshot - this may take a few seconds': 'snapshot 찍기 - 수 초가 걸릴 수 있습니다', + 'Image download succeeded': 'Snapshot 성공', + 'Sorry, there was a problem downloading your image!': '죄송합니다, snapshot을 다운로드 중 문제가 발생했습니다!', + 'Capturing image - this may take a few seconds': 'snapshot 찍기 - 수 초가 걸릴 수 있습니다', 'Toggle Spike Lines': '스위치로 Lines을 고정합니다', 'Toggle show closest data on hover': '스위치로 마우스를 올렸을 때 가장 가까운 데이터를 보여줍니다', 'Turntable rotation': 'Turntable 회전', diff --git a/lib/locales/no.js b/lib/locales/no.js index 7956d7c2352..801b48822cb 100644 --- a/lib/locales/no.js +++ b/lib/locales/no.js @@ -32,9 +32,9 @@ module.exports = { 'Reset view': 'Nullstille visning', // components/modebar/buttons.js:512 'Reset views': 'Nullstille visninger', // components/modebar/buttons.js:550 'Show closest data on hover': 'Vis nærmeste verdi når musepekeren holdes over', // components/modebar/buttons.js:166 - 'Snapshot succeeded': 'Bilde Laget', // components/modebar/buttons.js:75 - 'Sorry, there was a problem downloading your snapshot!': 'Beklager, noe gikk galt under nedlasting av bildet', // components/modebar/buttons.js:78 - 'Taking snapshot - this may take a few seconds': 'Oppretter bilde - dette kan ta noen sekunder', // components/modebar/buttons.js:60 + 'Image download succeeded': 'Bilde Laget', // components/modebar/buttons.js:75 + 'Sorry, there was a problem downloading your image!': 'Beklager, noe gikk galt under nedlasting av bildet', // components/modebar/buttons.js:78 + 'Capturing image - this may take a few seconds': 'Oppretter bilde - dette kan ta noen sekunder', // components/modebar/buttons.js:60 'Toggle Spike Lines': 'Aktiver / deaktiver topplinjer', // components/modebar/buttons.js:569 'Toggle show closest data on hover': 'Aktiver / deaktiver nærmeste verdi når musepekeren holdes over', // components/modebar/buttons.js:361 'Turntable rotation': 'Flat rotation', // components/modebar/buttons.js:290 diff --git a/lib/locales/pt-br.js b/lib/locales/pt-br.js index 9a85104b062..9a6471222e3 100644 --- a/lib/locales/pt-br.js +++ b/lib/locales/pt-br.js @@ -32,9 +32,9 @@ module.exports = { 'Reset view': 'Restaurar visão', 'Reset views': 'Restaurar visões', 'Show closest data on hover': 'Exibir dado mais próximo ao pairar', - 'Snapshot succeeded': 'Captura instantânea completa', - 'Sorry, there was a problem downloading your snapshot!': 'Desculpe, houve um problema no download de sua captura instantânea!', - 'Taking snapshot - this may take a few seconds': 'Efetuando captura instantânea - isso pode levar alguns instantes', + 'Image download succeeded': 'Download da imagem concluído com sucesso', + 'Sorry, there was a problem downloading your image!': 'Desculpe, houve um problema no download de sua imagem!', + 'Capturing image - this may take a few seconds': 'Efetuando captura da imagem - isso pode levar alguns instantes', 'Toggle Spike Lines': 'Habilitar/desabilitar triangulação de linhas', 'Toggle show closest data on hover': 'Habilitar/desabilitar exibição de dado mais próximo ao pairar', 'Turntable rotation': 'Rotação de mesa', diff --git a/lib/locales/pt-pt.js b/lib/locales/pt-pt.js index 042766ed0e1..50cf6feb4a8 100644 --- a/lib/locales/pt-pt.js +++ b/lib/locales/pt-pt.js @@ -32,9 +32,9 @@ module.exports = { 'Reset view': 'Restaurar vista', 'Reset views': 'Restaurar vistas', 'Show closest data on hover': 'Exibir dado mais próximo ao pairar', - 'Snapshot succeeded': 'Captura instantânea com sucesso', - 'Sorry, there was a problem downloading your snapshot!': 'Desculpe, houve um problema no download de sua captura instantânea!', - 'Taking snapshot - this may take a few seconds': 'Efetuando captura instantânea - isso pode demorar alguns segundos', + 'Image download succeeded': 'Download da imagem concluído com sucesso', + 'Sorry, there was a problem downloading your image!': 'Desculpe, houve um problema no download da sua imagem!', + 'Capturing image - this may take a few seconds': 'Efetuando captura da imagem - isso pode demorar alguns segundos', 'Toggle Spike Lines': 'Habilitar/desabilitar triangulação de linhas', 'Toggle show closest data on hover': 'Habilitar/desabilitar exibição de dado mais próximo ao pairar', 'Turntable rotation': 'Rodar', diff --git a/lib/locales/ro.js b/lib/locales/ro.js index e77bc2fdd15..3937874a11c 100644 --- a/lib/locales/ro.js +++ b/lib/locales/ro.js @@ -37,9 +37,9 @@ module.exports = { 'Reset view': 'Resetează vizualizarea', 'Reset views': 'Resetează vizualizările', 'Show closest data on hover': 'Afișează cele mai apropiate date la trecerea cu mouse-ul', - 'Snapshot succeeded': 'Crearea capturii de ecran a reușit', - 'Sorry, there was a problem downloading your snapshot!': 'Ne pare rău, a apărut o eroare la descărcarea capturii de ecran!', - 'Taking snapshot - this may take a few seconds': 'Se crează captura de ecran - poate dura câteva secunde', + 'Image download succeeded': 'Crearea capturii de ecran a reușit', + 'Sorry, there was a problem downloading your image!': 'Ne pare rău, a apărut o eroare la descărcarea capturii de ecran!', + 'Capturing image - this may take a few seconds': 'Se crează captura de ecran - poate dura câteva secunde', 'Toggle Spike Lines': 'Comutarea afișării liniilor de vârf', 'Toggle show closest data on hover': 'Comutarea afișării celor mai apropiate date', 'Turntable rotation': 'Rotație pe axă', diff --git a/lib/locales/ru.js b/lib/locales/ru.js index 00fff8a4c49..6350d49066d 100644 --- a/lib/locales/ru.js +++ b/lib/locales/ru.js @@ -32,9 +32,9 @@ module.exports = { 'Reset view': 'Сбросить отображение к значениям по умолчанию', 'Reset views': 'Сбросить отображения к значениям по умолчанию', 'Show closest data on hover': 'При наведении показывать ближайшие данные', - 'Snapshot succeeded': 'Снимок успешно создан', - 'Sorry, there was a problem downloading your snapshot!': 'К сожалению, возникла проблема при сохранении снимка', - 'Taking snapshot - this may take a few seconds': 'Делается снимок - это может занять несколько секунд', + 'Image download succeeded': 'Снимок успешно создан', + 'Sorry, there was a problem downloading your image!': 'К сожалению, возникла проблема при сохранении снимка', + 'Capturing image - this may take a few seconds': 'Делается снимок - это может занять несколько секунд', 'Toggle Spike Lines': 'Включить/выключить отображение линий проекций точек', 'Toggle show closest data on hover': 'Включить/выключить показ ближайших данных при наведении', 'Turntable rotation': 'Вращение на поворотном столе', diff --git a/lib/locales/si.js b/lib/locales/si.js index 1289bef58a9..f81667e4f6d 100644 --- a/lib/locales/si.js +++ b/lib/locales/si.js @@ -38,9 +38,9 @@ module.exports = { 'Reset view': 'දැක්ම යළි සකසන්න', // components/modebar/buttons.js:599 'Reset views': 'දැක්ම් යළි සකසන්න', // components/modebar/buttons.js:637 'Show closest data on hover': 'සුනංගු කිරීමේදී ආසන්නම දත්ත පෙන්වන්න', // components/modebar/buttons.js:228 - 'Snapshot succeeded': 'ඡායාරූපය සාර්ථකයි', // components/modebar/buttons.js:67 - 'Sorry, there was a problem downloading your snapshot!': 'සමාවන්න, ඔබගේ ඡායාරූපය බාගැනීමේ ගැටලුවක් ඇත!', // components/modebar/buttons.js:70 - 'Taking snapshot - this may take a few seconds': 'ඡායාරූපය ගැනෙමින් - මෙයට තත්. කිහිපයක් ගතවිය හැකිය', // components/modebar/buttons.js:52 + 'Image download succeeded': 'ඡායාරූපය සාර්ථකයි', // components/modebar/buttons.js:67 + 'Sorry, there was a problem downloading your image!': 'සමාවන්න, ඔබගේ ඡායාරූපය බාගැනීමේ ගැටලුවක් ඇත!', // components/modebar/buttons.js:70 + 'Capturing image - this may take a few seconds': 'ඡායාරූපය ගැනෙමින් - මෙයට තත්. කිහිපයක් ගතවිය හැකිය', // components/modebar/buttons.js:52 'Toggle Spike Lines': 'Toggle Spike Lines', // components/modebar/buttons.js:656 'Toggle show closest data on hover': 'Toggle show closest data on hover', // components/modebar/buttons.js:440 'Turntable rotation': 'බමර කරකැවීම', // components/modebar/buttons.js:351 diff --git a/lib/locales/sk.js b/lib/locales/sk.js index 52360965110..ef5e20c4c16 100644 --- a/lib/locales/sk.js +++ b/lib/locales/sk.js @@ -32,9 +32,9 @@ module.exports = { 'Reset view': 'Obnoviť nastavenie pohľadu', // components/modebar/buttons.js:583 'Reset views': 'Obnoviť nastavenie pohľadov', // components/modebar/buttons.js:529 'Show closest data on hover': 'Zobraziť najbližšiu hodnotu při prejdení myšou', // components/modebar/buttons.js:157 - 'Snapshot succeeded': 'Obrázok vytvorený', // components/modebar/buttons.js:66 - 'Sorry, there was a problem downloading your snapshot!': 'Ospravedlňujeme sa, došlo k chybe pri sťahovaní obrázka!', // components/modebar/buttons.js:69 - 'Taking snapshot - this may take a few seconds': 'Snímanie - môže trvať niekoľko sekúnd', // components/modebar/buttons.js:57 + 'Image download succeeded': 'Obrázok vytvorený', // components/modebar/buttons.js:66 + 'Sorry, there was a problem downloading your image!': 'Ospravedlňujeme sa, došlo k chybe pri sťahovaní obrázka!', // components/modebar/buttons.js:69 + 'Capturing image - this may take a few seconds': 'Snímanie - môže trvať niekoľko sekúnd', // components/modebar/buttons.js:57 'Zoom': 'Zväčšenie', // components/modebar/buttons.js:85 'Zoom in': 'Zväčšiť', // components/modebar/buttons.js:121 'Zoom out': 'Zmenšiť', // components/modebar/buttons.js:130 diff --git a/lib/locales/sv.js b/lib/locales/sv.js index f3b215a4996..4d9c355f92a 100644 --- a/lib/locales/sv.js +++ b/lib/locales/sv.js @@ -32,9 +32,9 @@ module.exports = { 'Reset view': 'Återställ vy', // components/modebar/buttons.js:512 'Reset views': 'Återställ vyer', // components/modebar/buttons.js:550 'Show closest data on hover': 'Visa närmaste värde när muspekaren hålls över', // components/modebar/buttons.js:166 - 'Snapshot succeeded': 'Bild skapad', // components/modebar/buttons.js:75 - 'Sorry, there was a problem downloading your snapshot!': 'Tyvärr gick något fel vid nedladdning av bild', // components/modebar/buttons.js:78 - 'Taking snapshot - this may take a few seconds': 'Skapar bild - detta kan ta några sekunder', // components/modebar/buttons.js:60 + 'Image download succeeded': 'Bild skapad', // components/modebar/buttons.js:75 + 'Sorry, there was a problem downloading your image!': 'Tyvärr gick något fel vid nedladdning av bild', // components/modebar/buttons.js:78 + 'Capturing image - this may take a few seconds': 'Skapar bild - detta kan ta några sekunder', // components/modebar/buttons.js:60 'Toggle Spike Lines': 'Aktivera/Inaktivera topplinjer', // components/modebar/buttons.js:569 'Toggle show closest data on hover': 'Aktivera/Inaktivera visa närmaste värde när muspekaren hålls över', // components/modebar/buttons.js:361 'Turntable rotation': 'Platt rotation', // components/modebar/buttons.js:290 diff --git a/lib/locales/sw.js b/lib/locales/sw.js index 6d173e19b80..70f94eae51a 100644 --- a/lib/locales/sw.js +++ b/lib/locales/sw.js @@ -32,9 +32,9 @@ module.exports = { 'Reset view': 'Weka upya mtazamo', 'Reset views': 'Weka upya maoni', 'Show closest data on hover': 'Onyesha data iliyo karibu zaidi kielekezi kinapoelea', - 'Snapshot succeeded': 'Snapshot ilifanikiwa', - 'Sorry, there was a problem downloading your snapshot!': 'Samahani, kulikuwa na shida kupakua picha yako!', - 'Taking snapshot - this may take a few seconds': 'Kuchukua snapshot - hii inaweza kuchukua sekunde chache', + 'Image download succeeded': 'Snapshot ilifanikiwa', + 'Sorry, there was a problem downloading your image!': 'Samahani, kulikuwa na shida kupakua picha yako!', + 'Capturing image - this may take a few seconds': 'Kuchukua snapshot - hii inaweza kuchukua sekunde chache', 'Toggle Spike Lines': 'Badilisha Mistari ya Spike', 'Toggle show closest data on hover': 'Badilisha mabadiliko ya karibu zaidi kwenye hover', 'Turntable rotation': 'Zunguka kwa mhimili wa Z', diff --git a/lib/locales/tr.js b/lib/locales/tr.js index 7accb25bcd5..3bdf679696f 100644 --- a/lib/locales/tr.js +++ b/lib/locales/tr.js @@ -31,9 +31,9 @@ module.exports = { 'Reset view': 'Görünümü sıfırla', 'Reset views': 'Görünümleri sıfırla', 'Show closest data on hover': 'Üzerine gelince en yakın veriyi göster', - 'Snapshot succeeded': 'Anlık görüntü alındı', - 'Sorry, there was a problem downloading your snapshot!': 'Üzgünüz, anlık görüntünüz indirilirken bir sorun oluştu!', - 'Taking snapshot - this may take a few seconds': 'Anlık görüntü alınıyor - bu işlem birkaç saniye sürebilir', + 'Image download succeeded': 'Anlık görüntü alındı', + 'Sorry, there was a problem downloading your image!': 'Üzgünüz, anlık görüntünüz indirilirken bir sorun oluştu!', + 'Capturing image - this may take a few seconds': 'Anlık görüntü alınıyor - bu işlem birkaç saniye sürebilir', 'Zoom': 'Yakınlaştır', 'Zoom in': 'Yakınlaş', 'Zoom out': 'Uzaklaş', diff --git a/lib/locales/uk.js b/lib/locales/uk.js index 635bd202563..c39a8dd15e9 100644 --- a/lib/locales/uk.js +++ b/lib/locales/uk.js @@ -32,9 +32,9 @@ module.exports = { 'Reset view': 'Встановити відображенню значення за замовчуванням', 'Reset views': 'Встановити відображенням значення за замовчуванням', 'Show closest data on hover': 'При наведенні показувати найближчі дані', - 'Snapshot succeeded': 'Знімок успішно створений', - 'Sorry, there was a problem downloading your snapshot!': 'На жаль, виникла проблема при збереженні знімку', - 'Taking snapshot - this may take a few seconds': 'Створюється знімок - це може зайняти кілька секунд', + 'Image download succeeded': 'Знімок успішно створений', + 'Sorry, there was a problem downloading your image!': 'На жаль, виникла проблема при збереженні знімку', + 'Capturing image - this may take a few seconds': 'Створюється знімок - це може зайняти кілька секунд', 'Toggle Spike Lines': 'Увімкнути/вимкнути відображення ліній проекцій точок', 'Toggle show closest data on hover': 'Увімкнути/вимкнути відображення найближчих даних при наведенні', 'Turntable rotation': 'Обертання на поворотному столі', diff --git a/lib/locales/zh-cn.js b/lib/locales/zh-cn.js index 7252e623a03..48348afa5a6 100644 --- a/lib/locales/zh-cn.js +++ b/lib/locales/zh-cn.js @@ -31,9 +31,9 @@ module.exports = { 'Reset view': '重置视图', // components/modebar/buttons.js:583 'Reset views': '重置视图', // components/modebar/buttons.js:529 'Show closest data on hover': '悬停时显示最近的数据', // components/modebar/buttons.js:157 - 'Snapshot succeeded': '生成快照成功', // components/modebar/buttons.js:66 - 'Sorry, there was a problem downloading your snapshot!': '抱歉,下载快照出现问题!', // components/modebar/buttons.js:69 - 'Taking snapshot - this may take a few seconds': '正在生成快照 - 可能需要几秒钟', // components/modebar/buttons.js:57 + 'Image download succeeded': '生成快照成功', // components/modebar/buttons.js:66 + 'Sorry, there was a problem downloading your image!': '抱歉,下载快照出现问题!', // components/modebar/buttons.js:69 + 'Capturing image - this may take a few seconds': '正在生成快照 - 可能需要几秒钟', // components/modebar/buttons.js:57 'Zoom': '缩放', // components/modebar/buttons.js:85 'Zoom in': '放大', // components/modebar/buttons.js:121 'Zoom out': '缩小', // components/modebar/buttons.js:130 diff --git a/lib/locales/zh-tw.js b/lib/locales/zh-tw.js index 02a29ffc9c9..81f5d209efd 100644 --- a/lib/locales/zh-tw.js +++ b/lib/locales/zh-tw.js @@ -38,9 +38,9 @@ module.exports = { 'Reset view': '重置視圖', // components/modebar/buttons.js:583 'Reset views': '重置視圖', // components/modebar/buttons.js:529 'Show closest data on hover': '游標停留時顯示最接近的資料', // components/modebar/buttons.js:157 - 'Snapshot succeeded': '快照成功', // components/modebar/buttons.js:66 - 'Sorry, there was a problem downloading your snapshot!': '抱歉,下載快照時發生錯誤!', // components/modebar/buttons.js:69 - 'Taking snapshot - this may take a few seconds': '產生快照中 - 可能需要一點時間', // components/modebar/buttons.js:57 + 'Image download succeeded': '快照成功', // components/modebar/buttons.js:66 + 'Sorry, there was a problem downloading your image!': '抱歉,下載快照時發生錯誤!', // components/modebar/buttons.js:69 + 'Capturing image - this may take a few seconds': '產生快照中 - 可能需要一點時間', // components/modebar/buttons.js:57 'Zoom': '縮放', // components/modebar/buttons.js:85 'Zoom in': '放大', // components/modebar/buttons.js:121 'Zoom out': '縮小', // components/modebar/buttons.js:130 From 89b4e336e4b457eddc37b1ac54d69b9562f5219a Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Tue, 6 Jan 2026 16:54:53 -0500 Subject: [PATCH 110/241] run formatter --- src/plots/cartesian/tick_value_defaults.js | 28 +++++++++------------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/src/plots/cartesian/tick_value_defaults.js b/src/plots/cartesian/tick_value_defaults.js index 68b9207ee62..9b3b8ac0a2d 100644 --- a/src/plots/cartesian/tick_value_defaults.js +++ b/src/plots/cartesian/tick_value_defaults.js @@ -6,7 +6,7 @@ var isTypedArraySpec = require('../../lib/array').isTypedArraySpec; var decodeTypedArraySpec = require('../../lib/array').decodeTypedArraySpec; module.exports = function handleTickValueDefaults(containerIn, containerOut, coerce, axType, opts) { - if(!opts) opts = {}; + if (!opts) opts = {}; var isMinor = opts.isMinor; var cIn = isMinor ? containerIn.minor || {} : containerIn; var cOut = isMinor ? containerOut.minor : containerOut; @@ -14,35 +14,29 @@ module.exports = function handleTickValueDefaults(containerIn, containerOut, coe function readInput(attr) { var v = cIn[attr]; - if(isTypedArraySpec(v)) v = decodeTypedArraySpec(v); + if (isTypedArraySpec(v)) v = decodeTypedArraySpec(v); - return ( - v !== undefined - ) ? v : (cOut._template || {})[attr]; + return v !== undefined ? v : (cOut._template || {})[attr]; } var _tick0 = readInput('tick0'); var _dtick = readInput('dtick'); var _tickvals = readInput('tickvals'); - var tickmodeDefault = isArrayOrTypedArray(_tickvals) ? 'array' : - _dtick ? 'linear' : - 'auto'; + var tickmodeDefault = isArrayOrTypedArray(_tickvals) ? 'array' : _dtick ? 'linear' : 'auto'; var tickmode = coerce(prefix + 'tickmode', tickmodeDefault); - if(tickmode === 'auto' || tickmode === 'sync') { + if (tickmode === 'auto' || tickmode === 'sync') { coerce(prefix + 'nticks'); - } else if(tickmode === 'linear') { + } else if (tickmode === 'linear') { // dtick is usually a positive number, but there are some // special strings available for log or date axes // tick0 also has special logic - var dtick = cOut.dtick = cleanTicks.dtick( - _dtick, axType); - cOut.tick0 = cleanTicks.tick0( - _tick0, axType, containerOut.calendar, dtick); - } else if(axType !== 'multicategory') { + var dtick = (cOut.dtick = cleanTicks.dtick(_dtick, axType)); + cOut.tick0 = cleanTicks.tick0(_tick0, axType, containerOut.calendar, dtick); + } else if (axType !== 'multicategory') { var tickvals = coerce(prefix + 'tickvals'); - if(tickvals === undefined) cOut.tickmode = 'auto'; - else if(!isMinor) coerce('ticktext'); + if (tickvals === undefined) cOut.tickmode = 'auto'; + else if (!isMinor) coerce('ticktext'); } }; From ee773ca982e60ee05102e1ec9dc53abcd5f55bb6 Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Tue, 6 Jan 2026 17:08:45 -0500 Subject: [PATCH 111/241] set default tickmode to 'sync' when axis is overlaying --- src/plots/cartesian/tick_value_defaults.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/plots/cartesian/tick_value_defaults.js b/src/plots/cartesian/tick_value_defaults.js index 9b3b8ac0a2d..2a2e6493fcc 100644 --- a/src/plots/cartesian/tick_value_defaults.js +++ b/src/plots/cartesian/tick_value_defaults.js @@ -22,8 +22,18 @@ module.exports = function handleTickValueDefaults(containerIn, containerOut, coe var _tick0 = readInput('tick0'); var _dtick = readInput('dtick'); var _tickvals = readInput('tickvals'); + var _overlaying = readInput('overlaying'); - var tickmodeDefault = isArrayOrTypedArray(_tickvals) ? 'array' : _dtick ? 'linear' : 'auto'; + var tickmodeDefault; + if (isArrayOrTypedArray(_tickvals)) { + tickmodeDefault = 'array'; + } else if (_dtick) { + tickmodeDefault = 'linear'; + } else if (_overlaying) { + tickmodeDefault = 'sync'; + } else { + tickmodeDefault = 'auto'; + } var tickmode = coerce(prefix + 'tickmode', tickmodeDefault); if (tickmode === 'auto' || tickmode === 'sync') { From c9aea83df2078ee1f0a1eefb0569e77f0952fd33 Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Thu, 8 Jan 2026 10:07:54 -0500 Subject: [PATCH 112/241] remove duplicate draw call for axes with tickmode: 'sync' --- src/plots/cartesian/dragbox.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/plots/cartesian/dragbox.js b/src/plots/cartesian/dragbox.js index 0aa0caceee2..2f206903146 100644 --- a/src/plots/cartesian/dragbox.js +++ b/src/plots/cartesian/dragbox.js @@ -732,7 +732,10 @@ function makeDragBox(gd, plotinfo, x, y, w, h, ns, ew) { for(i = 0; i < axList.length; i++) { var axListI = axList[i]; var axListIType = axListI[axisType]; - if(!axListI.fixedrange && axListIType.tickmode === 'sync') activeAxIds.push(axListIType._id); + var axId = axListIType._id; + if(!axListI.fixedrange && axListIType.tickmode === 'sync' && activeAxIds.indexOf(axId) === -1) { + activeAxIds.push(axId); + } } } From 3a31aaf404e75d793aee58c77faad6eb7ce0c58e Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Mon, 19 Jan 2026 14:39:40 -0500 Subject: [PATCH 113/241] bugfix: if overlaid axis is categorical, default to 'auto' rather than 'sync' --- src/plots/cartesian/tick_value_defaults.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/plots/cartesian/tick_value_defaults.js b/src/plots/cartesian/tick_value_defaults.js index 2a2e6493fcc..e988c809592 100644 --- a/src/plots/cartesian/tick_value_defaults.js +++ b/src/plots/cartesian/tick_value_defaults.js @@ -23,13 +23,14 @@ module.exports = function handleTickValueDefaults(containerIn, containerOut, coe var _dtick = readInput('dtick'); var _tickvals = readInput('tickvals'); var _overlaying = readInput('overlaying'); + var _categorical = axType === 'category' || axType === 'multicategory'; var tickmodeDefault; if (isArrayOrTypedArray(_tickvals)) { tickmodeDefault = 'array'; } else if (_dtick) { tickmodeDefault = 'linear'; - } else if (_overlaying) { + } else if (_overlaying && !_categorical) { tickmodeDefault = 'sync'; } else { tickmodeDefault = 'auto'; From e7cd9794f0ef135c98a6850644f1b79769644b42 Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Mon, 19 Jan 2026 14:40:02 -0500 Subject: [PATCH 114/241] explicitly set tickmode auto for mock --- test/image/mocks/shapes_layer_below_traces.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/image/mocks/shapes_layer_below_traces.json b/test/image/mocks/shapes_layer_below_traces.json index 9b221568538..049b66b9c4c 100644 --- a/test/image/mocks/shapes_layer_below_traces.json +++ b/test/image/mocks/shapes_layer_below_traces.json @@ -103,7 +103,8 @@ "yaxis2": { "gridwidth": 2, "side": "right", - "overlaying": "y" + "overlaying": "y", + "tickmode": "auto" } } } From 1f02b3daa23f3a4fe3b841a246497c7007e89fd1 Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Tue, 20 Jan 2026 11:58:06 -0500 Subject: [PATCH 115/241] update tickmode attribute description --- src/plots/cartesian/layout_attributes.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/plots/cartesian/layout_attributes.js b/src/plots/cartesian/layout_attributes.js index d1ce0158ace..39d0e360e6c 100644 --- a/src/plots/cartesian/layout_attributes.js +++ b/src/plots/cartesian/layout_attributes.js @@ -35,7 +35,8 @@ var tickmode = extendFlat({}, minorTickmode, { description: [ minorTickmode.description, 'If *sync*, the number of ticks will sync with the overlayed axis', - 'set by `overlaying` property.' + 'set by `overlaying` property. When no other tick info is provided,', + 'overlyaing (non-categorical) axes default to *sync*, while other axes default to *auto*.', ].join(' ') }); From 5732ff950cff8217cc947d38651b71870a026abe Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Tue, 20 Jan 2026 13:52:08 -0500 Subject: [PATCH 116/241] update plot-schema --- test/plot-schema.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/plot-schema.json b/test/plot-schema.json index 86964d4f5e9..2c2ef701a54 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -14867,7 +14867,7 @@ "valType": "number" }, "tickmode": { - "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). If *sync*, the number of ticks will sync with the overlayed axis set by `overlaying` property.", + "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). If *sync*, the number of ticks will sync with the overlayed axis set by `overlaying` property. When no other tick info is provided, overlyaing (non-categorical) axes default to *sync*, while other axes default to *auto*.", "editType": "ticks", "impliedEdits": {}, "valType": "enumerated", @@ -16146,7 +16146,7 @@ "valType": "number" }, "tickmode": { - "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). If *sync*, the number of ticks will sync with the overlayed axis set by `overlaying` property.", + "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). If *sync*, the number of ticks will sync with the overlayed axis set by `overlaying` property. When no other tick info is provided, overlyaing (non-categorical) axes default to *sync*, while other axes default to *auto*.", "editType": "ticks", "impliedEdits": {}, "valType": "enumerated", From 5bd782aa3fe990388700eae32079757e778b14fe Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Mon, 26 Jan 2026 11:54:04 -0500 Subject: [PATCH 117/241] Apply suggestions from code review Co-authored-by: Cameron DeCoster --- src/plots/cartesian/dragbox.js | 2 +- src/plots/cartesian/layout_attributes.js | 2 +- src/plots/cartesian/tick_value_defaults.js | 3 +-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/plots/cartesian/dragbox.js b/src/plots/cartesian/dragbox.js index 2f206903146..e66ec74628d 100644 --- a/src/plots/cartesian/dragbox.js +++ b/src/plots/cartesian/dragbox.js @@ -733,7 +733,7 @@ function makeDragBox(gd, plotinfo, x, y, w, h, ns, ew) { var axListI = axList[i]; var axListIType = axListI[axisType]; var axId = axListIType._id; - if(!axListI.fixedrange && axListIType.tickmode === 'sync' && activeAxIds.indexOf(axId) === -1) { + if(!axListI.fixedrange && axListIType.tickmode === 'sync' && !activeAxIds.includes(axId)) { activeAxIds.push(axId); } } diff --git a/src/plots/cartesian/layout_attributes.js b/src/plots/cartesian/layout_attributes.js index 39d0e360e6c..d7c207fd21f 100644 --- a/src/plots/cartesian/layout_attributes.js +++ b/src/plots/cartesian/layout_attributes.js @@ -36,7 +36,7 @@ var tickmode = extendFlat({}, minorTickmode, { minorTickmode.description, 'If *sync*, the number of ticks will sync with the overlayed axis', 'set by `overlaying` property. When no other tick info is provided,', - 'overlyaing (non-categorical) axes default to *sync*, while other axes default to *auto*.', + 'overlaying (non-categorical) axes default to *sync*, while other axes default to *auto*.', ].join(' ') }); diff --git a/src/plots/cartesian/tick_value_defaults.js b/src/plots/cartesian/tick_value_defaults.js index e988c809592..faa2d36f03b 100644 --- a/src/plots/cartesian/tick_value_defaults.js +++ b/src/plots/cartesian/tick_value_defaults.js @@ -5,8 +5,7 @@ var isArrayOrTypedArray = require('../../lib').isArrayOrTypedArray; var isTypedArraySpec = require('../../lib/array').isTypedArraySpec; var decodeTypedArraySpec = require('../../lib/array').decodeTypedArraySpec; -module.exports = function handleTickValueDefaults(containerIn, containerOut, coerce, axType, opts) { - if (!opts) opts = {}; +module.exports = function handleTickValueDefaults(containerIn, containerOut, coerce, axType, opts = {}) { var isMinor = opts.isMinor; var cIn = isMinor ? containerIn.minor || {} : containerIn; var cOut = isMinor ? containerOut.minor : containerOut; From 801a109ff9d25cfe9ce13c0b1deea6b4ae1aacfc Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Mon, 26 Jan 2026 12:24:56 -0500 Subject: [PATCH 118/241] update plot-schema --- test/plot-schema.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/plot-schema.json b/test/plot-schema.json index 2c2ef701a54..5ae14291f41 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -14867,7 +14867,7 @@ "valType": "number" }, "tickmode": { - "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). If *sync*, the number of ticks will sync with the overlayed axis set by `overlaying` property. When no other tick info is provided, overlyaing (non-categorical) axes default to *sync*, while other axes default to *auto*.", + "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). If *sync*, the number of ticks will sync with the overlayed axis set by `overlaying` property. When no other tick info is provided, overlaying (non-categorical) axes default to *sync*, while other axes default to *auto*.", "editType": "ticks", "impliedEdits": {}, "valType": "enumerated", @@ -16146,7 +16146,7 @@ "valType": "number" }, "tickmode": { - "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). If *sync*, the number of ticks will sync with the overlayed axis set by `overlaying` property. When no other tick info is provided, overlyaing (non-categorical) axes default to *sync*, while other axes default to *auto*.", + "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). If *sync*, the number of ticks will sync with the overlayed axis set by `overlaying` property. When no other tick info is provided, overlaying (non-categorical) axes default to *sync*, while other axes default to *auto*.", "editType": "ticks", "impliedEdits": {}, "valType": "enumerated", From 8c698980b67dd3e8aee6924b3588683efecad370 Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Mon, 26 Jan 2026 15:56:06 -0500 Subject: [PATCH 119/241] add draftlog --- draftlogs/7684_change.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 draftlogs/7684_change.md diff --git a/draftlogs/7684_change.md b/draftlogs/7684_change.md new file mode 100644 index 00000000000..93797426c49 --- /dev/null +++ b/draftlogs/7684_change.md @@ -0,0 +1 @@ + - Set default layout.axis.tickmode to 'sync' when axis is overlaying [[#7684](https://github.com/plotly/plotly.js/pull/7684)] \ No newline at end of file From 99cfed5426d7bda7b8676ab50a8302b70488aac7 Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Tue, 9 Jun 2026 13:29:41 -0400 Subject: [PATCH 120/241] update baselines images --- test/image/baselines/20.png | Bin 86114 -> 85368 bytes .../baselines/autorange-tozero-rangemode.png | Bin 27759 -> 29415 bytes .../baselines/candlestick_double-y-axis.png | Bin 88620 -> 88020 bytes .../candlestick_rangeslider_thai.png | Bin 89668 -> 89113 bytes .../legend_scroll_beyond_plotarea.png | Bin 52376 -> 51419 bytes test/image/baselines/legend_visibility.png | Bin 28470 -> 30157 bytes .../baselines/mult-yaxes-subplots-stacked.png | Bin 55597 -> 52671 bytes test/image/baselines/multicategory_series.png | Bin 42312 -> 41355 bytes .../baselines/range_slider_legend_left.png | Bin 50502 -> 49580 bytes test/image/baselines/yaxis-over-yaxis2.png | Bin 22452 -> 23834 bytes test/image/baselines/zerolinelayer_above.png | Bin 27127 -> 27481 bytes test/image/baselines/zerolinelayer_below.png | Bin 27334 -> 27697 bytes 12 files changed, 0 insertions(+), 0 deletions(-) diff --git a/test/image/baselines/20.png b/test/image/baselines/20.png index 230a6baf8b79589a95bc68e8719c4f48b801e01e..49c76b32f792998a90ecb80b148f3a06ebe86a2a 100644 GIT binary patch literal 85368 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 z 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

Kj%08xrSiyC@M-YM>JguP|s-k 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

5!mcNjQEi{*r{eK3%&*(0w9X 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 O48<#|vM;64zW)cCJE|@K literal 86114 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

hls{P`nbM5{ zTjD2;UqBh&Qzb~9-JrwBVHxR7_l5(|6855Q+UM|{41y_F_jZQ2GXAiF=9aCo_ypS& z-&v{woFcS|t+(DnS}N9KRnp`?Sis|IOz3M)_#%cj0)WT07Wuh5n(aZvJOUGIJO8NA zY!Xp5H0n${y}1_V^XGWm>v3sz)7fw_IG<9MsZJ+>O3T$CNGu@l@hfW_g7aEENaGnrZ$QY91tRE4I0&tMKnm zHA}jR68!eX*690~ekf!)$^DLjfjI6S19fA1IbI5+ik05 z$2M=On9vXRedNcmRk1pHhD7&HBM&!|Hjj0TJ~w}G2DH9kT)u!F3B zxjh;<|JnRJQ(jWDxDCfDBU_iC&Cb+~Nq6wdk3L4WovJ37jQN07ae5##;zugRRxq-%&hY}rVx+Y+ zzv$ZcvLlbJH){-9!MOsDShD`QUdZ$Ok1x@EY=Sq()t7(Wqvq^bCKtb}x19d-mR@nEAwDIddeo3TUf0LIH8T&B6`*l{ z4F%_wrgOF#Y^-f`?BJi;OhreB33{N#?lgong>(&cAhoo3tR8=fA#0?5{kq_FXF2~K zQWnp87btl7V5_O>KGM5;XmA0!K(!zj`S+DXb5je?B3mINm3LTh-v_e;9vxCBQ(_X| zs2`^dXWGuVxlDCc6F{K#q_iDij8azKpZW4lK9)zD(2|*V4*yb*z^~2dH~aK%_Nb6yA^Xm z#np-{5Vp^cwx9(#1QKqUM8AKLb^3*HJh{qCGGlx__W~auKVfEecAAV)73KkPXM4Px z%j!{UK-MsuYES*MPYiqm6IHjqmb4ZRPt)m*$5*&fW zoAy{-bsdnyAFst(tIkh@bR^&{n_HHhx{z)6{=iZ2JYqX-BGabbyhc4$0yWCN5w)oV4 zT3J~~Mty|hZ1nJj)ZDrphUJsNEpP43d}1*VD#QZVU)$p|Flrk*2+z3Z*S5>YYCNnz zZ_u~UKsy&Z<3UlmO;bPGyB6{kQ#@H0#uro*U7U7lDf7c&l8+U?3#zlT3|=4~>QCyk z$^>&q%y2hA&smHAP9A5k%X}YhNosD>-7FShzRk4aPa53kd_uc*ROO%jb5@@D4r&095&)tPUkF*F&k@as#ysc)RyoE zUVeQi*KA7yf}i7E%2`Iz{L=uA7q2k6d-mo=Xn$kD7*lJJq0+3dybp7xYIqQWj;t&_ z&*Q<_-qH8HfHHSz%sICz&Gex4;Zv%n(sUBnF3J#tEW6$Dnc)yXS%N?cw(NhV#0Cy- z)=fXQcgZiRo4CEMj>m{RHw?K)lY6Fat2@{g^*3IZn4W{js^9*4J18P#uU`5zj!K>}kDJSR_-4e(+K z^(-LCL4w1A?O9$^pGtkl>!Gjv1f}=Qf3x4VU~Y?2kEtN?Nz;C<`Xv0aPz)|?6bC>B#8i4MB({lgn zN{(T40~x;ErWZ{n3kG7K#G|cCRZ?65{>m(wI{@}9v#{M>!l>@m#G5Il#rw~hEVdh+ zB<;ad-yaH8t!wmM5K{BlV=?53od`!rZ&SH(X2@;nq?Vz7VTtRy>pAw>l_R@O^-d~I zo(bz!%P8n2f^%tZ41@i3y>L0peMaQLCK5L-%!K z^TE}`AiTay(N%FvR2eE-8jvdKqP zW^u=n15v}1?S`aPv~1iMQ;Xz)wbK5%nr$LxvvZ)QlB}B^%po@aa|q-~;C1x>6SgKO zWyN(zG6NY?$nsDToxVNue!o_I4Y+=ukdj!#D8$3ojt%*v8Dpmy42`ygx;w*Aw$xyM z;U7xn3!fgcPE0LTUkb@E$&4bc=^D0HhVfJfjOaO(9s|n?JAVR zmE+{No=R>zy7sDHZAq`_Ij9p@I`P;H2$?wICc5=rtB7*7xo}$Ar(AFoV8kgo43uWx zI-$Ap?!a`t4KD50Jn|IU9lMqfbMFuJsHi_2D`5um?IXQ$>S5hRD{Y_8u$|{Cks^BOG4jrGJ4fFUwc7u|Te5TJ zxvl!s{+JBi967tb2Fu$cwiW=lJMh^8GJAr>3g56P&}#bKOgoU#yTO87u9+2KmMGoV zluD08jeQwWfWL&Jwb_JvQB-=-5z2AO z$xls5N2-M+%c`0+-c1SlBhKa3%K$L9OmwGkoS5W@2hf8@i17XiX~Chj3!m=OJnhXd zvwegP1K`^0J!M_Ikel4DXG*skx8=_k+EBkpr*yg%Kb-a`*htPorvxtDm1H1uB|FY3&zj5L__OQ-1UwQE!4dPYpyBv$;)g^530Zh;%!6lJwuxg`XI-DiQDP>e4xytDu0|BIVR$^yHH%khsAX5L?-|nqb2BWD(B0HT zZAkTTz+)f3z|y=2@Cz(Z-EO^yR9wtg7U#_^>UJ?V^looQq3g-4NIs!0lD78>(uh4H z1f%lhPT|S#a`n`-!|rMdDyvlUq(dVr#kb$mM@M~s_vL+Di-z3ODS1X}DW2W^!8U z<^2AAB@)V$1SXVQRI3BwHk&sS+y|^HLvH_Y7-Rr0QFi<_URJ~xeJVQxVy`b4N;PJl zG^NffJrYtyA`-otrI*Y|`F*x@|BXerjuF5&VNrIanU2ZGtdkwweb`n>O`;(}>mnvu zos|`U*52lq$ZEtOdAfePB?F*uhcfEvmisE;87IT9`RJEzn41?k?Z{n8=*tf02f(T#0xQ?YbZ$g zTKNPJ46l`1N#o_^X$XuV^$rEnF1y*^w|FgI38?Uz6eZ^TkV29dFy;I)L&K1b^bI-T z%a!v`0LC-8qxsa@UZ$SBw=)I?z|q67Ga=?|+8?DE>u_-mI=>rcB?Jqu#1XEfoq<%M zhC};j^ci?%nZR!O+wR{k1uS`C2sil$8EF4~&P9i`uKf?XLD-?{5nC-d z0Pt0L!dFd5xLyGeW`upeLZa3SI9#nOaMKY3w)_+Nzak^~Oi8wDKPj(VJ@||iWJRK| z+c2Qf12((ure?gm1$~dU8m_%oMn2xJ?li7lUq_2>l7aq-|puch&jSlA%i3Lg9}};uq*CfjpB)SHUv|+*Z@g~8{xbgnu$+UFECn!B z(k=G+9O$2deGTp}z8EaTUMx`ns|L7X6N~CN-FOrL4VI|*`SGolRu#Zcl4j(>Rca6M zu*p55eOuDC_kOijQ1s_+)<)i0!Gs z_kAGM*9Dssx^U$+|KvsdG$m0j4!`u8w#T)rTSWtaK+RS|oARj&!^e#sedR0ZfcW8> z5>BPr)`G6|_m1@kHa`dM11=M;tL-&;*T?o-F|@Ftu%*5a!y3*~)xIzTeuIpYni&ol zOC{d}FMzAt=s)R71ZBj~2`tB7VUhOPaRl~B017`c<~c|zDJdT6^NT8i+w1HEzEc$W zCrId{FOV%5cn>nMv3;Jh2^E>eNzz+rGY z7D92e_v2%4p}0vEkp+v`^7DCvXHXFQBLgcR6V204vxSJ(WVLGv|y@2 zDfgrJ!eTVH*JhPfH32rCE+>j5Hpkv5R2#v`>9V5-`P}*K$qTSeBogujk6p*SiYarW zT6bkg7Pw`UBmCL7Z_K4E`c**#1YnD`{v9X=- zbU&ikXyy&5jAD3&V5D|oWf*MKwax7cT7*i3_4NKN}UVn6&T zACaW56Dvnmf)imgMl)m}4ER)9C7=mJo!pM+w_hbQfOWgcSihvL#fEo64Jyhj>Kr{^ zi8NpVqU%mAcYfwC+)P;U{xpkNJ6hehecSkWD8OO`=L_FD9Pe&jtmDF8Z;=(N)MXzJ z35R^)Whj@ere9wpw2(90fq}7GZ+;M@2LYX1q*P_E&bT@J=m*-moqjh*mJ)g3(5ljR z$0FU3@=zSlfdKl36V4AX;=3Nx;jwTO>~U9E>i>hQ*O?;z-SM6!v zfCvQzZ-8*~&d(nUpaS~ZDzK2Q0bYD=F@+1&Q(P#Xk2xs>J26G2qi>MNnm;=Bm_VP&^_ z7yxW|9o$Hbdg<0CWkOhvD7CeQ;YYm)-v(Z_N#ZIi#`Y7ra;PqLxmml6IN6gDBda{4pB=aG+44b0Jo=_`1QsGIKNo#EW9A7hRNljiEb$`L zZZ$Bzs)LGfVeFl~T?htRUYc$fd-Al1doHUMSGUpSvrW}yS?lw2OAcZ1v!EV4iH6l+ z(siNK7GLaLgBng`rK`J*b?SRejqY}RRxin3UmYDL^qxlN<1DovqP&VRgYd#<{G=B0 zHlqM~+R#?k$;D}eJw142WTJq=-cWeDL->g^oZ9+2)A3%4xTMNWs2pJDp4-@}a$^MD z4Zki8PrN#`*bPH>hB{67kvU27kpsgIPUx- zHs`Fu;mw7CYmGV9CCMRuo*dUaQ?pY>+LLyiaUP(K@{SKK=iDN0T8GpQ2{Nv!zvkNB z2!TndK(9lfe_OY=c=!r(p@=28*BULCwh=-&9D-L*r-gGq<|PD|i#uMvCvd<(hSaj5 zg7z^MtzX%toGlfMt*9I&ed8tIMcW}lRMy>`Ei`r+yxH#x$viBftp6=Rjb(M;#n-L2 z{q}Ev-4nBbD=+Dyo~SnSYn@9(gyb$nRbhIzYd<$a!Fi8!FCbv#v|ev{xal;qLGN-+ z0UZZ(q7A89DSY{0H56a(l^?^K@|?*=gsZ^7m0tBl!7XKSAz5D}b_0LQ^0r_W9kJe9Kxm|38Y3hGrX`b{_&4LgdH-^tbgkFU23i}G#vw(0H=kZz?0L^>4^ zY3XL9k?wA!OX&vb?vn2A?v(C^p`Hu>_x-GUz3W-;CqKBkIm%o!=lMJK-+q8BIqV#@ zG;%h7%NC+X?|GHxDtVE?0g=(J?Wn*mr2QUA{rs&vxjPo8VCupB$jUfEXYTjSkj8uc z0grJ)8)Zy3)lGg@4LwCMhgv7wo<1{UprRzV350xKhpxCf=Q|b01wX6p(2ngU+dLLr zv2v&j)QSv!;NnoH3|sLzz6DX{{WL7P&Zc04yckauhvGi-`hvgLP5#uErBwo<;^4a){DqYo zQdW+dk4?YRarRCE(ocwB-84B^nkk@q6;Qjfdt0|7d*RLBuPj}iNJEa~X5<1$005&# zLxE7SgHvGQ?_AZz#erwzV&j+I^9zo#j;ols0v!1gOtO3S%EYX*Q#3be?_7Y4)fd2! z0373tC0Ryk{GHD!`E1+NR3*(|N$S}pYeEv!tmN;cQH@&`X&GA%%Dq${Vd~!I((!b% zQV&-JWNd+F> zOy|W~x`X19)3w|`bTXASbsx^pQs@ry%LRR!54?)OU+lWlEmNGW!Nb@VLBa>f@Av92 zt`=Mvidb;X>MkA|_DW@(bPdM(W^PO+jL(7J(Q_i|S~zlVwbT$K-4$$)VltJVrPY+{ zoSMp{NQ|XvB>VsHC{wpu?z^VR>RZAV=ojLu znrHK%<|3Ps@t+s)_HKl4omWNHSuHtM^>bTkx|~m5Axg>I`D4Sk$9u%_Bj1slhLO9> zE#MC+Da%vNSnk|AOh%S53(tAC?=Z$K;QD-mOL{=Sutom}9C8Y4rst9?>U4OWuPJU7 zEG`g7t!RcAP@5W{iNv8S@PAY{drID6B9TC8U1v@wJRLmh>zY=+&SGBrp}!}#CS@OR zU*9$;23#y?gq(wg){fLh*lcLCyX#ICQFravfXfR2c-k}w&rz7^F*uv7+4GA@obTw;4L(~S%u6~CtUf4oiygU(vN zwOU#dI)tb2S@2ge@c%ZSq6;b6hXv`&B4&kEjB10Ag%JK@6k(f+`yjdm1PXZ5n#NYWzKxWp!q^fw@E7(Dtet2D}_nkY1gf&po@btfZCRh-A;a< z>x?M<)lFI&7`z3#m6OGK<@NT4AcD>$3S=#h2b{)`XPm_G_W!llj1itpA99^~bK zJ8ygt+fv=kK1~`+W6`Y=hv&=tBs}e|x$YGPA_mtiEjMy&u={c@&YWZpS`Xun`dO8E z>0b@QZ?i~`%*$yx zivYva0TfKn)uP+yhS*{9Ci}SXfFdRD>>LW<_FVaC@y>9Zgtv>!`ZdK)yHt)p{+j`2 zKY%nBY-h;?G#GG7Rd_ZG2%iohtT*hmk#Op63+!h&pflqB_9Fqx~bjXDg zlRzzAm1pv_o~e9gjgluToF4NHhy`9laz+nS{L0_=z|K^`R zv46U{x8(ZGOMwjHaMgwzKbW{=EJnE49TUTkUKz@`wr3uAEXZODk$!=mo-zLbBYiv? z0%o(WW`53B4IwCV@bK+305UQ%Rqt*I<4e8e&y)kaF$7`yZ3swW`kIV~eJ{p-?b@CQ zFw@aO-l-Bj(toF@kEaii!5}F3UGjV13d0q>$(;cx7hz_Vrq1iVL)4Z)9Hbk|-t_c1 zIk52=h1c6k`1ygF*a8s|Eubp3%23m?@LJ?#OiuX72762ig%q8;K9OOVYGIi0wQrdv z5lYMBdg;&nWR)d0m`JS|DgK~-s;~-MTJ)@=M?ZmIaqkDrwB+dw^6`@H4DZ(1j{gCT z*`u@?-0H@bUFKMU;NNft0LpidSw#3zs@};1Lw9jiE@yZIiM=d#l&c0$1d^=GwRg4# z(fuxcSozvo#jj;nQT^75Hv)dVIiXXu{!Rc4u}YFYXoiQjT-x6HJBZhL!X`<#%X{da zOi4WC)^=oHXuh079WR}R-dbe(Xyo)PCm&m8ep2~K)Td3jP>o|s>eVSBrjb zU?|}3cJ6gt(JB7^tx}Ex<((s^_oP9I1HR|e=}a!VUK$J-r*cn{p+st}bFs9{&16Zn zKuPU!-|k=6&bBAMwC4ixs))=`#rO-M@zam9LO*Qb~4)ZQ>apXm zOovJ*c|KlXR{{`s3fy}a?@-X%{7|IouMY?8z-PV|JND{`V+w+3mDU{>SSA3t#?jBk zh6gRa1&Sx1&yLVOA~tb|M@piW?L*mVOmEG1ef)-rXBPYMm9xV3o^!pct9r(EcI9tu z;8|=nnHB^1AaWE&l)w1N4 z7M!*9_qMJlSOs+v7`>;~GHGlk9B1&#ql5Gz5I0UuR9J9 z4jh-P)VW{J3h>}Xus9|_+Pq!&_V4^yZ&FdmtzdYLnIDx`f#%iHJRV`~mga@QQXlgpkP?J5BzjZRXX~WE?rdkM?^99+RFi+=2M*kG4C3(GMpJ5j+EsGN)fxpqE6%$u~8EL$>~jW zoB%1vIBYh>#z%DO}(3?-WCt62J>%O{RQrNg@w_l z*QgG#P7}nkU(iEN4TK1j9q{p*P~t!Xt!{Ed&QCR;q7@rIUFo77F|7($wlN`9-?p+% zFitSVyho*dxKHqZy`9mu&JKTSXUB@D%v*zj7iE+418z}OP<%b(ex#29Y@QCPE zbE2F7vAeMF;pe{hh*y|8w!rhRlcI?sBM(oaWxl?*L(>jJ(G0-SA1dQ~VlrzCksX49 z%9;FWO%6!^P<=4n!PGG_U*llgh3R#bRdfp*$K7KU2q5mi_2Ap}My=jDX82a$8y z*#4=TiW`xrRx-V3&8=Lynf6ddxFvRqB|MRuLp?7JC$FyiZsFWErn}2q4$gX)ai>=t zBH{55F*wE0=bSSMIeJ$fB@HCCcr?P93xVDZ9u2>An1b6%^H_Qy_dRWk-DImPf=xOa z4m+PoTy&}ImcA+dqAvTkG_UX{UWICIQeq_u^49H=ZXhKg$wTe3J>D0O55?Hfyc&o@ z`zhby)as<6NX>@wC9Bam8UP4dUQ5Uqq8X_#0L03U28={rKuQgmovr#j0D!Y^|8~j| z&&OO55TF_dlgG)$RCBxO*-oa$<0K0F6gxYb*T1^ycyR);oNJ?CN+G!000?SE@+pjg z5e9ILua0`39iQFV*$!LTasECK14S`~#=qZs-8eer4&fz72f96R_yq0Ep`ay?M=@|r zKm8B)MG`iSZH!>iodfJ#9DVgfm1abi&sqoBjfs&HkQ`e zY*n-Vrp&G4?YHRi?K`jZUVI@PpBIV7^UO0Qk0B)3CbKf}@I_v+I^o%KIZ+xP#;p2Z zI-D#^9;-10(lV=AC1s35XT;m>*K4CYK9?d_jiAql4yv;t#f{w}#>>GkujA4lwsf1P zxTp@|iTAnq3(8bkBQLF5={v67_v>7Bd0NSjn!pLUS{>Bix-;j6fe=~QPdrRRT?8K%yET@qTw=)ioSKgNh*G5;eUfBTS(J9;7X?Kx0Gr_a z96D-M%|s0@ly7I*4_*MG9;G3Czz*;Kg(YMZWAwtV&CKN zXolbB|3lriNED1(_C9y;9ziXG_9)NxD5x<$MHVP?Jct)LVFu-Vp}n+yf0O@%fw3hu zFyW=l;lYhbPFE{wJm25_wT@yur-;#_FU%|~e2r}d! z3bY-+2eoo#4GLUXZ?E5FK4__*m()>i0zuwmd*D@61ds0T!Fb}q5nAzn$V3NjUTyJfK977vOK_$=ey}Hkas8xs zF)QU<@tKXUR_~-tXtP7zj`idMzaDb7)BfyL=5?^NS_bG_V8NxasE~sqxpA{8?xmY) zh9S>K*roev$y@uQ02#1*SJ7LCk1&!+OWB((M?;)UB#l^#4RY2zEw91+)`R#4?C-Ue2SN#wN&J-DZuNOio7#ht0uJTGozJ_sIi85=hth1HCWM%M&` zYiHMnOFz8GhrBN30W7n_V}fQb(9zH6`3V7?m>i+ylBzH?WF08GBRx9)W-A~e#eRSg z_iXkU4=}DrG=>KHHDPG{NU>)^+$=ruA8QdTcdGuN_RLamqJpRAm^iCFHsR|I9Pzkn z|I1L6tfmO~ObMM4;3zq+x!=il1GygVBPb2-_)laa8>&PgW(c-Js%)smDsy+Wc-jZG zONu!@o=&d!B=IB71hnujhgzH_0o!0pLG3wX;h!cy$O!y^LcOqsK6S(q2?^W&LgHs0 zM^O^RPjCw#frCYJekGDl1mtIvb)@xNzWLa6Nl``m`iIV+>Pg@DEiLnk8_=R>q&v#3 z0@s0*B>2{Og|mbkU0d613usSo7_3O>_{Z&w`dyDOB>MfyHl}RYE;7^V^!(Lp1?P+u z{wC(fndj;eW)lt)Q#yu0qT`~fFWr?Wok4uY7e)25;u6GeeC0JcDAI?Cbi&&Wa%cBp zUA&pFr)uR|j?`9WL1NIOEy=^{{DjGoCLR9ra|&C@1UrwF08YD(^ik;hc<8MM)F6kb zbhL-_FYMu?tqFna0+%-;YlFh)zuz%jALs))=$g>nC|G0C81LztxN^k( z;+Xwr8Pg)z)+Sd|rEB9)OI3d1RHdL&pA4v{RcK$RGihf3LGrHT>B_1#pt>Fxf}2R` z=5_azhsbp}i|XG+6^?H~82-)mpAzd+Ua2>^laMuPEQ`%z{9Imm?W z4EtehR0x;)^7kr}Rj%^=E7i);R@~>@&B^Maq|3kY6Yeotjj7jqQf|nNl3DK3{e?RXAoD$Okq_2LUcE*{kvnC)-^~OU ze00k!JIVrMiQ7pCH-hnDHpvMZW7pX2`F+@|&vOlA%Y-vjy|r-QD$ZMOWXc znNmxI4i=SfsfFnAn#w&b=VQ{GeDt)8pz=7BT|n=AzG@(~kXpzMa`!B;<$6?Bt)43z z85FrLea73P2618XBd8;lM$?k324L4wMuZdE_GU*oR}j}()lqSt3ZfO%*AoJ2!;&b* z7zI`{!qSe&gOHn+J0p9|^S4xW7XGUun3PWQ@9-Y)=)Z3sYu%G}kIFZ4XN71pws@8P z8EfQfD0_kyOXgf3YQFg}n2>UiQag2WM+*%Aq%PwGPMtAsSvCg;`fMA8Y1~ab@OcY`Q}6ij1fVRoo%5e{EMB5e87Kx-rC-wNY$9z z+V(=2((VwwSH=R=a3y=Fb&>k{ktHqY$ox`AQR&Tb94)!Pcc6`d<9(>F8B%YP=lFA822=?fE7V%B+O*k(t$=17ZH<2`rEjDtIkwdtnLZg1lCqZ+$ zamA>_zLwjhemK5{fHRq=iDbtrG<5+21^C*n7x(dFd>!iW6|!=U`r{nD$xAEQAPO}i zC=5mHuyc0sJI|-1Cqgq?n@!LpA<2BscKy|M^~JQIa}l$R`dn&4Xe)VQTgu_j+uii& zCbfzw`aaT9j9NmnMB8eG@j<_(bMu`|GeQ)Gv(R=-(mO?o$D}AsM^tr3^2#l{ z#+XBqUMnZ-U+7U$9`CW3F=AuNzBB!b@l{vkoyITI!yp1LL`N1kYC96~m;FZQetv)@ z#>6y{GHX@5w+?nxX`7{6w;v!rQO+Rf2h4S zy|s5R#K=c?MLQRp$`_^~8!25B9e)I#Oy z-B+^{Z<40U;!v}d^my^rh zwx`l_`;h|4_uR{D<4p@)lZV z=9Ww_+VlDE_^NVvRhU;U5QaLN5G0hK2CQ7Q;FfMhCT&TVypv~Ps^h zAWOJtr&5_uHY_08PLOJ-x0?N=a!$^-dGDwwE$%Ri91aoQedBy*FP|N`uG`ric^8lx zhDx0G^5{2#zVR0tc9v$H^kIiwt{-iNuOXEM&}A&b3x@RVa9+OV596V^5=U?eYz|=c z9D23#so>A{HiD++qRQTggTlMJ6(uOB6-l^cZZr1Cgs&rG<$z6zr;=TOrGGLmb^(oa^vHt3$oidm2;-E~+@V*AabtDlF zn`#pq%iFgq@e`YdXWmo;JVs#h6)N zY}}l+os-*aGFq+IItg|QfZYRsDdyGLGfZOx8rGNjNP=Tat*xR04k~UteM&&R|9fQ% zrcJg}WPjuyeX<4H5AmpL1_v~Bxt5YE-yhE1<)1wcZxXOFod|EUr?>Y-0n1|j=8{q? zkNK4PpygZJot6T~OdNhL^!!gw&~!4E~qIK)sx>E!3;B3&&!sqlq~xh zXXq_UU{!Ot-s_alpm#mP@k&bi;{k-y;TQ_iEj385iO1oABn$DL44V!e<*GxR3*9#| zw3%ClrtwnDyG*4^Jmx52a$?8y>-l0x(Dp~IL#@;8TdwXVB06?tX+1XHTSKSVu<;S|8l(xe? zcxg({+2GXO99fR5bSSyIMoJiV#k^mW5r95jURhHG!9rKpOtgA0epYtRlwC+*-|w-cd|9g zuW{IQ@|9>0&;2e@WgVw~1Xo{$qEdDL%W%ad`)`&L$nX*~a z-1D+~E;;5p+ns^wXE+TCAda>)d7i4xE5902>7-0sx~8#&9MNf2?^8Xboi^Ev`Bn$5_$pg=X#yqlSmTbc|s@hKM%!fq`;Wlqj_HC~~wmrH37` zUb3s|KskwP+H8XYC)sF*G!Gen8vZ|F?9%VnjM3xMgTY=PT~i^i2j`nNVWB4cKMQ5( z`0iPaziwS;8F;@({*c=ZZs$PBK!q;B7^g) zJ@v;{b%Y&Ckp-rzQYfHy)(cZD}%`4e+y2!IoV{nf7a$=q#Mg>H|csR^Cc-#m0Ic9vFdEl!2L|kHM2l*=2z-fo8x;@zh-b&edusRFjD(yH4b~mMO*f53 zjD*|^&(4;T%a6lVt-G5qbj|X}*IpVyHvi(f^}2I|omNKWu>S|x&3pE5uv@VboxC~x zJFJ^eQqRL}qcM3qz0>fgrI90!oN55vq94oLe6m_--JQ&d{L#YfKzyCP90@Lcf=>ru z^R#e7{NGrypgN-W(8s&`9?e?y&K%Tj0EIB0c%p?1AQGbU@Ym)#?8vkU?fTsG)**oN zs70VgU1)!pFX9>3y@Tv{5pzff(cCLAo*|xJ#3y+MDv};1G8N&e4sFfQ!42uJtZNyk z`zEW=Rd4bE)yAM*bm_hCp3-DzNml3S{IG~=#6rvZ$PT7ccvo;do$jJO?&;wl)U~gR z8|g-id^KN?5$94dOI=$jR9oZ)fi`EV075yov^^;bQJIK3WSR)#eDjl1r;lm5S<^f< z5FHngRJCZ4gK?td{#;<#s%SL*h<}xro*Pl31zOWI>z)*?p#ys^s@pV-^vxmR(gR1mo zV77bJC-Zx4t({WRdrd+f54vNWN|L&!E4B{A8Bg$;^R>hUS;wQ4S6di7YP)Jmftmc& z9C89sDs?vL9^Lior@`AY2*ti@u+UhLP6TF_C{LP;(sLyy zGDO&{;oc27M*jHztkSO^&->yN9NL+jd7U#`t-NUPrUKflX*x~!2T-8s<(hdGR}nr9 z!KTdTvpZQidnp9&&@ujq>a`44`6gp2hrSru=JUsWT>bg0M3$BDwfC|V!b1YA z{=plF0xw^RgIZ9`R(&WUh;-ta+d3rTFUFl>l#VE!53;jWGUYrRxsLVBBbl{B`JItI zktv~r3+MbfEWGjQS^0V=y>ll{^Xujwa^BOUyyw0WuCW?e{&y}8#)xA_`6F>O>)Hku zcf(wV&=Rc6UQT8cyJ7rLVy_^E!|hh8KV(!4Hw*+~)^%FFgk@};E$#X0m={*2f;+~J z^V>MagDwDh{|hc74e$(%%&P8Se%d%-BJUTZ(wpS*OQ}q8rT)`2v>z>p`MCcsPz9#o z-W!^0SB6Cpb*`VtX3}Zw>F&=>?Rs))T$ zfilN47xXw1Q!r)9#vtVIG>PRzX>%N}`js`p>XDef_8Ioc>((kFV-4B!(>qdF4{ym$Eh_@IfdrAjI$q?xB=$utDcosKg z>*Bi(!3G2*B1`4#(iA=%r?8`lE`Qb9gyI1cRMs9Wy2;ie`l&;ea=ci@>)q~vKIG_r z&>+Eu_TlvPF7;cbPj+99P52OFzLD5Ctp|qW0S1VQ_oUrxs{gKLqszjuOS2%;YTVwNZmp#IW#|TKYq?IRCKKW?$&H}df~LGU-J&I)>fL^q7PMO%YWA(L^dJTuir1|GtPyg z*u#Ra&zxO#t7b@~%vwt4qw_Om;LsxOy|E;~8NAFtniR|Q=LjEF)*nnp0;3i2dyJPz2z%D#v$~QICWhi+B7)v|BT=FIbJEBywR<^_ng`Fivx5R52G~7W~wQ67u55 z`QBChjzjsoio{{Zp%{Tt{I7|Jt9{(M{ymJT!1 z4c2^V*K~%|2LrzRq-T$*)NB^QtSl}UgF0Fl~{}!bNz-#`0;kDl?dHyd_5LH>iP&R2g-q)2Mr4=^kw2^!0>f;FpW4%~dl;;tbLR;~HlCaY$Ac{X|t=^or->z%)_%f`vwAFAq@;xYSfX~^nD znQq^oBDUvyu!eMq!)M>(Xm4Z{4&buEF>_ZLNpCCno^eBMq{8T+xR5GCsH-w^FEELV z@ksc>;g!w>_#=zpvMow8%+mUnULdG8{Z-b@s$-q2_;OB&Diaaj5SoX;byeh?amuQykyh%7pvY;Ji5dyOGT)eLbh9 z1iomS=*#6ez;4Gpg_^87+i&E{cLr_z6`@l>%T?#biekk>rc{{ItHpVO!f_o7{PH`) zuX{@RKRJ&0?=R$+TI?~8$yRZNmN;;dcjSaI!K!SKmg}!c9EqmawE$s>0es2DZ^Qh~ zgVIE#$N+1Tg&Yl%S?q+oR*A8Rd(T$$CJ!ws6XivaHz_xQ<5TU)*BW({j$@U^tP+b| zSBti+s!S>Q);aFqS-`;~=8yOHuS9~Ct-L(lgl-{64lU;Zj&-`)FnN1taX^}(aGvS; z+z~xj_0;Qn&|+3pbOw|V^rl1Q-p=Fq?`OkJG0!)htlBnnYd~R70GBLEXP88PMF6sSV6*Er!|lZncmyaH(w8`;?=7! zYjsZnw|BXD>#>_!J(r2CsWz4EjoeNQMQb$CuRYKUcb^fU!)pBkW-P zW~>wVi#5HT9VasN8*MHeyEr1zKK)_!Dt2BMD%Pncpf1~|jPtd>GJVhzg_lKm`lqD{yx83g zd*gz~opg-*3zQq^&EXxJ5O1##QkuNIgvKIU>Le2kQCkGhmxFarlakM-6e+B>PLxixbOzO4aD zN5|Uk>&J^cDPqlA+dt!v=lxPfTfOxSXw3NqeqLP7>Rm4LSDTSDPi&mqtVJ3)BmQn1 zpT+?6_Mzi9*L%ynt~_=dZ?20q!-05h?azJ$u!Mu@(`rd4Z)IlIOPin-SaiW(eg{3Y z$A`G8b%s6zZYEnNTi3hvc-$MYIT&;HnGr%NZo($)thIZBJ6=Sz*Tq00_Yit$u1MrK zGUtx-@c}*gm1DUQ%EP z#pC+)L`>4)M38mj-}>Nc39T}=k&a(+dzB?Z_?``KlAJUQK<1H0p$OO@WOaO#C`>U{ z9bmBg_w-lILAsNromU{H4vQ0anDn($y-NY3-dA@hUochVGP z+c|^djBV)j;AWVjlh^)InGa{XqK>oe1BV={cK>OQDN2#o0pO{J1tLJ{DI-1nC+mo} z9Hjd%dyHUQGK}pKe1PLH!$@|w*}yn9^r%qak4T}8`MMPx!_pcC|bVp$)k>A!mY`wfd@RoZ7nWw$}@L(>iPM z!J(B9B2sLh3u=H@yNi;F&nPflyzNw+(P^&DQ7kF5oRO2^GC)`KEeYBG~h?lDGBJECzt6Ty{x zLptpf$vM8EZ6ae%P`tU4-#e9t0l9UW~Jl}v>X z{w;zYf8BN(xOAKEO;`;CoZnLa61IOu0jTEyfT}6%JpfR(b5%F)hE`tFzO)p#+djk` zE~$gQVbq9`vv~H)0ZMA$iVurmqE)-@kURR7c!je$pm?CQ=(}k#0>va<}8y z&jIh$wF(}MZFb8)aYq$8sq~0J*0(`U`bX{Wmm2ki>Z#{380;Y|rkw__BiG&_h@S)U zQd@mM=k;+}WPR^VZ^VQMB0Pri-+ly!aWopPqQHx~xqz+rg@e96gx4GdSh5M{>_JAz zg`%m`+iz|g5UxMr#D-6;U-XH!TvU$2VKdqbN4^zO_tga-#5Ti1YhvU>+ z>k(=9o5QTz^)2K593i2+EsEhM7!7Y@jtw;Cg> zhO(x}15$-;@q>03Hh4gXI)@1GM$GSoPIO4D@E{woXoR)xq>BJu_%$pdpZqLwtlACD zdY$*sEtmq%BNrvV+9RgV2)U{Vj@_-A)Rec6Bk6*+C_5oe?LkGZYJR~J7IWvr1oeNe zU7XjFId*YyLIPEayRSejpCa2k*{&hUIX70?q(3-hu)lCAo4jExej{3LR?b~5KOa<* zx`0u4(?|+P(}Fi;qw#Zr?_9*&Y$Xo;U$yWb#Sc>NR@2KR(GD1b2<^=*ZDMuH{;e&L zKmRHZLOV!ZEekXNqHLY_>t^-jgSvIL^YZdy*!G9yi%0xcT%6}as&VVDF6gD=3@!xP z`iaNXc9OP7%lHDIK@UFnEqvZW5yqL78hLfUad(csL4w1m&N|=DO(M5gV%Rpw&gI4r z(yJfb;Ee(};CRb;$lx~2;H^ocZ0{!t>R*mOI^SMY3mPzGG$I1(J)n%>a~WN+CM4+V zb_3nKknXK540TImyi&C=jy>%H8Fc`rV@d?OWkO|D+kf`=ygO3f>1LLszBcTR)mt6! z#@Nb%c*qN@SHUg0H)K$RF83QSn;((3?Ua^lb2rq#OY3%z$H6wi1sao1EocV1zXeM# z298xXB7~0H?4AV!UrwMv9n@lfZbLRA1upw|vS@iz&m)Wv-0CrH-UgNp@@c7x7`);4 zKo)HH#(HaVk86gZKPKh1b~YVY!6AsMalW1dCIp(}OE8^5Zb*O)r57a+=&=2X*$N7* zJ0o=R??$zuZM=%^)DFPJ?S1#I(=Yy^Q@|idTxH_hDYAtQ^alXljGsV6wn+3o_+cV=&4YwBk$^+UbJ^@O>pPR|A3_3pyvM}O z3HJC-%gepSVdbe(w@!lo^1M59@3G<} zQR-~v3U=H-{GsJ}RszjP_QB39637kqDZiAyhu*_gykn4XM|X-vL3&+W4f(hNxFGcS z`mC^~3SS9XiUK|0BoRn(f$VtHr_1?#{ik^aph!AS+m*w?kam$$&CR(mq5&_a;Lg`M zMrlQcv*~%am1zYmyYcs^v+TP+=CdKGKIN#Wxi()K`YeieMqq@|#DquYDa&2C6~^6S za1E~~r9KG90t}!pU-PKEf7wj{kT4r-sW;dv7x@yxXa~N@}anR8i+d#8W^fP-4rFs1}2`h`$DWh zk>O&1vKZKo_m!YH{qt%JnZ?^d>9Ii60YIYBF#V52!(Md2dC#zd#9+VkLjH0VY@U&O z;jwy#oDb%2!Y3Bu3z(fRebV-}VeDN`BpvPJ`r~n_V&(l z?N7RQY$f6K0Nv90mL;AkL&ffb$-{kDxAXb=%I@BQY194+%eAvxk8sy`P~*>F9KQSL zi|+~0lxb^>d_k}|RgTW5IO$8Jz9^NSmN?w?7&fUGr2~Qk*4x>EO%mjcsV^Og1fVjm z$_4056*c(#*?$WExwhDa9P@pt8o$0YP7^!qlmF}mA&N0yg)ZmgqYJ6nHL7bCM2J2< zL=;?jy5VBG)q7HTsJVm#@_S#*Kh=IVuU5O4rQ-DWMdUhG#<9KJA!K$NR&70UD`Ehn z7N$#ok<9dDnv@3(oCG)-h{FzeF+ky-$eLxVA^w}MLI`i_8T#{v#QEtR zTcu!OAf{4b?zBy1UAsv9Cr)jNoD!TK*qqA*{JYD;_x~55`s!RhiDOgug;T+2|>fg%edo;Mnb8|0CO5j=^aHyV_eb%^E zy)6jH4ZI%MHa>-a>Inq}=M^Ts8Kz1um}2;Tebp|;C9XR{tZ%cI(qipc*PFJAbGk*n z*hb#bm0oE2v!^C{;^Eo)wvDp>aO9rtq{@oz&PRNGW6xh($TKqXq#oJJwGwek{1>vLP6O8`Ugrrmj-+cyV{>PO0p!!ri*&5w0)0G+=IYn>-)j#~`nm@ZHLjhMqS6snt;m();`OfvNA>P-F{$`?DyXY7 z1({QXLv@JAnHQ6P6Y$SGR!+ySw+!DP+X>a*!k&pvtM)d9pigqO0ZR=>&AmQNsay1% z;L=$ldU~NbH-gGHT$>BnRbeh1VN|_P_^k=84YN*#Mki8`yp|A zRh~gi-)CmK<%V!LC1y{wj2h7Y-D}}HutJ6*FJGcu)qU{}_wv9A@q1(4+_6?H^E5E7 zc^eN6;zup)m4)(na!0Q<%?UZrnRl6!qWHuL&4R#Zl{Q6^JPYS##e$y421@6i{;9UPn8R;#Q&~Keqm&Nre!jRnljvifX=C=p6FV6wH z_q%H`!6VqUb=C_?P`dclRBpViybO0ZGY(=qIRc&s+SSWoO1FzsA>^XT}^_HYe@|c`36&jc4u) zdrL0^j~&d!NDKBlpUC1!Bob)AmWjtAt|>kgIuj}TUfBxYFuoa$-%&#dATRmbT1>{L z21k$ypG6fp0D?@Kib6m-z>LyGEU~_c8!v`{VvH86z0_94?HiztrfNw&Ljf|soXcCa zvrRua$r?i^3^mouV+t7PNTG;6?Z$-3Cx(P0I^~VEO|IS={tIED8Bw40Oj@$L;wu~6LRQY9>-(}bqE}GwLqN?3WnN_zp9Mrv z1xS`iAZ8oJICAefjaF8AtMLD4fl1!gBEIp0hR?Agors~a)5xUq(E9oBPTtlNsz7*Q zi^Z@yoxm{Qfb2)_KlApNHmpxR+a>^Sm~opsnwc3#0vU}(Z5l(6upQjgu<{okz}G}7 zk}+d*6O$#pAjmd=`rHE5s7aTF`{FBNC9-hg`Mx>wsVW5l^QW$_4bkTp!_d@@qmf3I zs7ClE8Qyp!N1kRkj{)3^_z74vE-P%|s%Q#q8uB)WdF%4pfIzhkz^|4){)C-V8J4Y} z0c$(7xWOnZZez}hocY^-*5CMC(2W(y0)j3@ZOeBvOUQ&XR^+d@ z(f|6~Hx@+#B-?+2<07*=Xt0fD7d1ydR|0~e1-^e4pqOf+h?s76mq+$L)S0#WrE~QAtw;I=$19$UEFJdGHh02gDMuZC0He$$|S3 zxrNh@tF;`z!0+hpVnh{L);+-5if9cqL7q|Ygu;*iy9xzZ`wT2ac;xqyx1*wn7B1Oj z0n*n*acFd6iEAWi{w-;iXrP>aM+~G>z>`=^mj&zYtF3Eh+}WtaKMpwxp|0WeF~E9x zaT%0=LW~&|l2e@-d2CQg#xF?#050p_PP9h0mfF&qGws!Ny{0k`EU(CP1R6&3i z{_UpyuOCDd->Oql;wG(KmKQ65d|NWz~!})Ph;xuAe01f;D(2+l5Mz537S?=&)0g06|cVvI~2f*+S*pN@{ zFU>VviKPIs^?ylpG!Xu$Ltmd- z4d9){1oRK<-YN8ZHTtW?>vq0aLY|8ewrG`s4aWljgQ*-<_|EYUvL*hADLS28^4)U@$VESd3`98~A zB7>Y%K+2;--cH;rHx;OrSc(zRs%!XlS zeS`Tfr%|ohSBoz6H4%K>b#`PWGRCXUuz7T{@6yu#ncNN}$jYUf7FYdAeKA4ZRq-Xi zr(_l+Cts=gt-}B+F|91&Ah3MAW^_Mm)5;3wQ}qhuGM47d&52ynFCOG33N(yd1~#TQ zAQXW;5&jQdUl~wU)3q%nDIL;COA6904N^)xwocFd&}iF4?s{IQ?&RbRJU0{`V0sm?n6gH#xiV zsYUWS6h0v561L{y;*TAQ4z{N&55o4nX$ zA~R7qT8lD*IWmZg)J~BHMO0NDlyY8tXVy(I9*4}?ImyRg8|F}sT1x5a8dx6If3=mq z_|}VVZA{5jHyq2fPpIqv<;N>iuXjo4d}M7{W);#q^hs0}Bf%)7dGmA$F@J^I2;U&}4&mHkFo@_3SF& zIy(WUR!x#=hTlc?QiH@ZfGdlB1&K=?mwE;3f0_dtI z7D_!o|5%nBFB0jHn5qC+R|05%v#v~VYTh56Ry2DeX4$u^ULr*fnL7N)kBcQBGi~GN z7x3441Ph|b(dw6-MH@X+tUywIIN1fa;cOm0Tj^O{?z>XG?R9gm^7Dd9>43&YZl6WP z?=TfcX?wxEdrTznZX3sTJ2lTPB+onK=UX@MIn(-+p{0+G7PnSsC3it>FHjH@y$hyk z9%{!iFzOW^Ui8%$)yf*t|8MsE1vJT8`@MSFr$0nGo^qHxbbZ4EWj?60#VH|f`cNfF zEwIy{zaxR8;Ipc&A&cBuuGWQk&gq_7raEZ? z4L8tUG?ACXCTxQxq%ShJGNg?A^`&s_!?bA~kXUoj6b%Wdc4epOnO=|<2~hWpn^i1S zK7N~E=XT(|Au^U11L)orjS{!xUFiZme9R~D8enua3}2H1Iq!w8QBO?NO-qE2JC+gd zimR0wT5sOq=jP>UWQ13fAsI#In3}{A1PRtUv(#C|BGw9>PX4$heY{mcMJ4IA=h7yM zCe-3^Cvy0O(Vwnt8h14cv@?6wZGn0ugt2(+(hN>;IoiQHNKYyx3nI3dTpowzzR>|{+fTT=O!^KG% z=ku|e_?|kCKXm;cXAwtC^V-ei(`*wNs#UQg!da2WSO3NWh;kK$Yk@ohLbjpfP1{eJ zgOvlCMUz$m=Pi4-CZ`8qG%H~nU&&G!#>B4)Sa())1kBQx2lsV8z328c1ev&gbV_fuwNc}8ibZ`zjFFn) zM=#;H;zseDuxpmBaSWXJY1u9q>Nn_YB8AUcTlT%d-|pBj8})viF5v?UwJw5=l5nAXI2EhMrJ5+ zH$J>pFBd0iT$2VI2W7z8qIE!#Z}-yD0=u2jtbPgU@s|0<>4h=m2*y{`fMmSq^+4IU zOf<2^P_Vv+6cqRnyX?3E9kR>NBCrXrnky#tu;rAg;UuVP5WuA<+zM=sSG3vkcA2sm zoE+UfLne`ERXUpiS(Zi!AdvAewrJNx&U#SeZL^vwy*kn4S?dB#=Sb#1R!t*En)h}Tec3@zOUpWczB)btTq@QF?oDIH8 z(PLfZ^PA@D67Ns0<3rN!cU+H}`TvV=63dnYgF)|^lWjKj^dPe;e(iXOGsg45$@Ycw zr(`J)7a)jUpb|g&WqU8eO>?jWnbhzX_cfnlWIz^t*a|U*N60?Q+=_sOg~h_&p4Dr& z&M0h-t!!V#{ka2FglC&XiYJ`q^u5{G93PHP+21szr&A=vQs{mf8vfbW4p(Cw0mach z{@gXC%cGo9F_4FoW68wae45T9PL(RA7<^d@*3Q}@`&0R5`ZfNGv+KDHQx-asWy zr>~pEd}(}Pb60-3q#&GqYj|K1t?;xkEupjJ2r*~L+pwgj1i}8%TQ`*hfm4d&_2;@i z0Rp=^NC#56dF$mC2{43k3+_bx8dk&OMtG6-h}Ia2>(1R@tZVhVR^$B2nIa$hyuGlX^^PG(!if^a~Gv6 z=IWjgiKj+w0a3G5_-))b-@OF8<KeMoyZi*34iI{8zn9o1i?j*oh)PIjRQkyjEt zSxG_et=i=ZYKeMpOt_WEi!b6kct+*~YH#iaCtIOVZ{B2(mIqkQivU{CFvti zHV-`Qw|gEAi9!MOVgtkobS&f@SYZs|d@8P`XALQ!gXt%MAzk%@kUni!^{C4}+)-A4&NAi_n{YCHLD>k@ zQvpJ=h_%z=s&t!Z6&owPT~&ot*z@DFe#PU~T$aywd)^)<*|f_PyBT+zA}!Si5xcw! zjw`g9;-M=6xY5FCb)oca2V?qHZXOJL?unvtZg@1;ReNk8W{nU(ERPE`wgNr&MvoNY ze(2pUO?)l0x_S6Ve+S`T|9K*bvKQVnMv*IQ%D8BiNf+Ec(ZlZQ}vwZvYuId zhi`2l_RkyF4n?m*pLy(%&gBc;dFm66L+n7^#m{$X1YdK^x zJ$5(k=l8NH3@3SR|6gNoC-9;XhDsfxh6CzOrcbs2pVh(Y-TCMI46^5PWu&9|FhE5i zdz7v+>zcQq!xk-QqoB?v;^TGl_|ghh47t&u?pv=)*cZXL!mG6F)(sT4SqVSH&(ogumEXI9Z}fNv3&V`;rxRP7z1=$rRL&QVuBV1V; z4CceHD=_x^8c^$I+j#f!R{6Gh7hnHd2c6}s&JXd8tbVT`RYh`WqZcW&L}zg6xVmO& zH!v(6u;EaopXWW6tt=86Fyv9(pdDz6Pfzzk|5bkhioD+97GtaGZ@CHC_fgW*FfTmi z7$)I+e1HOI)?oOO5cnJk&gWS@-e|#{6C9jft5&t`oN@LwqWgnV;N($4ow+nGg@I}W zookzM$pmLp%u0R^r~$bKA-<3wJCDrL-~T(xq&Y=f5I2HVxlP~Fu~CKj4#MY5u?JGy z2SKhI6D>j|ATwfk0Q8XkW)>t*?-X{PCIjLvq*R}kYGhQ)K4%8E@KB55ba912^P;r% zOu-?yJAn^OT1e}umjf|h&4OpSY9<#mW5fwg8cz?O^uE}q4ujXke7~KH?_WDd%3SHu z;TXmn-Ez)@A8wd@w1;WX_00us@$^iv^QK2-*=wNQzwnhur~_Y8;`n^yF?_FDu|iu5 zA^oJ>|5h^bKM41Eo|JD7ieDW?K_PW&l;IWfi1^+pk)m-$jlw&N)IA@tr z8-Ge|!caHJV`n)GEmB{^ncz;O?~lX8D5iu4l?XJ#=Jy=?VN^MC-_=<_h-vz6>2YlnVUSWPF0pO-imNC$U;H#qUkL8p zuiJJ;F^m|>3+}Ap0Uf)?&O6+wkKQ$adr$Qu`x?kNz|fsS0gX$aFdCtGGGebslD=}% z5KZiaNN;L1n?p+?vkY`Q2-lS?IL^7l&;XgkgR!?DQ5y(P`laV3ZoJ%-xj1*sV5f8e zAx03v(nW;C7Cz*O@~9L0yyNKZNyhDgw|(d*NpMfBtuE`YgAI7r^GZt<00C8WJwK7_ z$&wab5~~~@QXJIcJ0K-#1A-3Nv=F^j6kh2cGQEbnYnYW-N- z2w_c62*SgfhOj90>=8*qiTxJA7EMt^hulrmh;?`dfk?6+kM0p5KB^2d{znaXBdgk( zNdZ{Ge(V3Cco-!IBoF(`4SkeeLR4&vwV}Fk! zK{Cor^>eYC{zytALZlTs@Di2En4keCFudY1nl`~`DECj+-scQ3_-qIkv3RW70H5!H zsOd$=g#W7M%HG*sq&01uMW?1PXUFfS;lHQk9|Dy8zmW+j@Ttr3$nngpK!jU?b0hX$W&#Y5*BcmzqpF>A^}kc0?4dZ}0I_c_9o;8S zR$NdJF$1*L55%;ve#d%oAhF&cCh9o-Ignk~kAW1nu}4w)niV*rALvh)6#vng`S3kJ zxTB}|kIamnS;B3<1fU7#C4D0W2vOf47I~9#)ztj8dxoe7IhJx@q&TzkUVK+$huVY? zRz1*ZO$_}-Zc>c>1;UVA<9q$^1tZ`{?4SWYKe!>PUmBSnB3wbJ!4BYxC|u^1jP{Zt z$4WfW!(C~V&KG}U0U^+TR565}f~YdRSj0*>J=Dt`nadzn_j@w3BD94aM!3&UWW-h6 zYvuC9CWq36owA@{Ao2QiY8iikSdP*`$e5pYn*X$JOiAX-{DWM4^u`2lt@@t4iwt_5 z45DLU*6=W?-|-`o4X?zuii#Z|x}#%h&^irb1*?8`KQlxqc;~%u4SP^l?+4*0iYo3v z7v4(k74>_Ss71bBw$JMKb{k9q7Jzmw*4Go5h>w8^IJ}!MqiGZ#fZqXCSrmYl&g+~f z?loHK9q}c(L29ve*4{^6K@}bxBg3?EGSaX@s{e;;FJ_Z9J<@=BZd;_K(?H3REG!{AcZ1tFy7SVgeRt!WZ-Vf0 zD)aQnJ$>O2jhp1zZy`D(XL=~C?dl#f@o@NZ_x&GHaPkx)-~^)$q#`~FMgCQ6Y52yO zR_n?(nc3&3f(~ZGy=X9GHVnS(7YSy?LW14${w?@LBuL)ouQ{j#nG(2?-b#QQF>gJwy?J&KF<>?9@#;{c)tnV*_t$`ATsKiU;-;%+xIKL%> z=8lw=Cl1*hob^m ziuZEC@Allk9RUT8d%0l7T01hH^nZ*<7-B>Slz~s6`!KSBlLF{mMorTj4g#y~2a@VY z!|3xQyM(g|ah6Om{Qp%WGmz7F$w5Wt_tV-M2|4-?AoHKQ$zlweIZQg|djkyY+z5kU%7U0N6!=_$$y2enJFNE-!P5)cLPHp41N>Tk zzU*fW#Rq)mknP-W-QYoh1OC@)@CB>}KW#R<9+puJG9B&)P9L8JgpXO{^q1W)sd#AG zLB~N#YTvaJ0H9hcHw2@`w64Vqk_Y|=nEEb+Ea&$y4dy_UaB`Rh@tNbjkIx|nAI-a@ z%_$>Z02Jh2{Yv({am14XI_(gJ+xwCP$U2JK;K{oo_Irskk{9Z)DxQp&MZ)wseF9Oy z!Cw_ydj(;aM}X2?1<2g}vbV03CIt3(&{TSnaNn-yaZ$t(yjrHk>F{k_sWjKNw*}WW* z)RJQojGn=sv}$nK4rbuJ~_Y>m%fZ=8=W84suf3 zA`*P~-G+Q)u#L=7mn7luQNtR@VyamPyQ$}JzmjlBX*AaV0Z?PEuY!PkKR4lxdHNhU zPp~x~#f0dB^i5*`U62`~c0~d&eY!}3$CL4^znLPzMn@ssTOZ!6o$@moct8k*2^KYT zV>uVzArf2F@}o5x3ACj8t{9Mk2TSd$t*wj~4iTuuU zM+p{-m(VZuc{zQs@Wp70h5@JLeNM41(`ze#Rx36 zA45J&y+Fi2t#Y{xvC4Aza|#3_nxVB!2ZieughM4sO#TK66ph^0a~r2MGBb z*c?0vw+;B9x=C__^#P&-fu{eEF(t#Ci;9r>UX!lyW3 z@a4>qvr`P`$xkT+$>dmd<%cEyyo9S_pMd%nO8Tyc`=!uN-xz?!(sy%-_23UN(-(^V zlk_Uqt)tV?<@|*6to|1O+P_A@CfS?LmURRmpMK)dU3A)6L#JA%w z;LihUTUCZ55&)&chbbSBGRCD~^ai&3CB5xXKCO(G{WE`AM0kj#*fVP|1o3AlPj(qT z2>~v>*GKFNzyl!JMC$vlXQQ=1wED!DOAg~H~G~f@rzma?FwJ& zCD_AekI|JB*&D_8i_g>yqI1i!gE`@@&8M`J3}P$vVMMFALMpK+cuB9GvqXni9~opQ zzB+vaxCvT^#vV1yuJD~Gn|@xtx_x;Ai?i`r%i9urdJJYF-mG#RdXolc;IqQ!t(fE&hH)LvB=>kOgW-Ce z-LkS8>pt%F#Uy-oVeXRhdg2BwIhik{FXb)0kUTuh#^dCkN;hA@&vo{s>vT-zjW5Xz z;pg*Ls7#E%PBa;uEKS~ne*bVx{YH|=ZVK7E#tWvw;)6BR^t$P=d4(l|eNk~fQjvAY z3udYG(OsX6I_Y2?w5&jyOvsKit0%%@;@d5aih<7u3@2jybBaSWlgUO%ou2M;N;UEK zQdSd=yFRYX1#(bzrx*4RKMN^EvE)veKibO~8|{R<#*L;73Snaoi_W3eJ%P@Xk>OR! z+TfF@&gA?o*R>Y0Vq_%Yw)yy>)g%|Lql0VLlP}JnY`>$sY*L*lG1KSli~e#U@_%?& zz#FP~HPF&J-lgz%#_D>9_A(T?qae7mNwAk#L$!1tQ-xPw-AU8l4qIGv3b7pPjW9Ju|zMxxU=fH@LZU!qsnTqqkkp>Olwm3-OKG`uV|= zB{*(gH~4t{UwvJYi<-v51<{I0Ikx9ZulH5cKbIRE!hZ7_$q&--D=gF+0*r?kKmSkS zN_;r`FNyU!&`GJ@F|R3H)*kImCWkNV9rCBHiU_S0m_<$%OvS&4RQEXq45#Y%FBM4) zf7Wdr@6g1&FV6|RLq=$}L$}zSNTRC}y$ee*HwXBT=dbpCz0pqflkvqgDx2xuQ%*Z4D$ms>MN9au5bDfQIdy=6`Ied>UOxotfX){ff(8OVV?(WKRsTj z-p%)g(&@{lj>22jD?m}sRWqHAW;f%a)(e1f8)|C2Iy75-S)-nQ16uR2UawY(7EaGg z67hj*jGc7RqG!(mPZ@vpLFRNDo&0Bt&Zg&N2stI4lV}&tTyD;3ckPi28%sef&y7G7 z{sl`~;fQI;Zf!>F>5u0K!6dM5G{)!t{>#HPXKCNa!V~lEQei+W3YA*n&a0}W`)!nw z?rLDPv&DqLVCfz9!$Z?{(}n)J#aL!`Csuhu*WuTRsUBGqxTR=ov&m5Il=Y~*<`p+Z zSjMk1#uk4yKoyJH0WICbmhT3%h8nHxJT8@wb*zf&#ms4~Pfib{$xhFBvdXNFyl_DY z_I6Z->3K zY6@dNq-9jv>ug>t5)hN}v?Mib7n|s|8Xw;tRY&8QC@c%cYu)ybD@I0no1VI(ia(O| zJ>`KJyj!-G*5v0~%XxNKLmIgaG=^vM4Ll?s%qaeORTO1qKfPbZ8F*gLv+Z1OV*hM( z5|UwXIC+Qu2-G1!otAh%ECO{l)mP8B{onoU7;2ZxuP%4HF)c|$K}+A{Cr1~DpBVfZ zQl;_5%Lgh(tIOgD?r7XEli<{AsAEo>Yc9>(kmMHXhcsVkOIh5(0kSR?yR}h%WIQ3z z3R8$m1VU6qw);yOif?KW_i+4HC<4roO~MiE$)Iw=uCO$cn<872KcvehqM;aB+(X2g z6G^vyXGh&9I`0|BHZ@?XEb9thv5vm!bL`t~!r3`ZN*uX}KR$^TYPG+8J+&KBH!NLu zdWBf$uH0yJRp;5o#3s|np;AoF%#4=#jo&tBq2H~w@QmthynO?JnrQY+X|;)B+N>4x z!$ph8Z`NdC^7?2opT&2kY*TXlY)~5ezHr- zAtU$(=!^vY;9RwS(ZwMqCYGI>YZkrNVgpz9E#5d?FPFZ-eqTGPy}j9dt@nF7P;9i@ zbwVmq0HK(zL!>pk)x}E0RpXNKiTl*wV5&0l zfs_e9lxf)2FRUJnMI4_@m2Wm>P9mntIj^?Uy2-1j%RWP^48JDM!`%nquXrmZT|U+H z2}@JV1v23@PjE*Uo`2roSb!iDn@mCED3dXN&Dyi1-^gy?=~)vM2B2TG%-8iRC}5P4 zx+OVjL_wiD|IQr?8I$aUIu!kFOJ%vFpp(Vr4MlklL7Pekf8Ru5M`vf7&!G{awek8K zTy7f@q=b%3ON-f(q>iVj#pVl-4;s!HofQkyYbr`gN_^A{tZ)cvuYc9AlK>HNCi~UZ zA8H5C@A1l@9*OAn{p@IknHrwj$JWjVI*XwJw{Cu<@rndI+(eHeUo_@QGdkyUlfL1M z8k_xfDcHc}PrrU5F$}6vMrE1`r!yBDUA9uQ@d9_~sxwy~Q-4%D+;c3}9LDZPnM;eAgrq+&8aW_0$klbYCc=}KkHTFc?AhMK zUSDmQoK3gF*v0ZerAYZQcGU49R1Loj^XAJbmZ|JD0bl)%DPQFY%Yn0#z>~2-r+cnM zn0CFF4j^~pJlw}W5JzL+Y9hQTX}}w9$M=2K%}XD!>Z=T}^oj2saLQyRPChB%AnIvK z$Z%^?ja=M(tHR=6Uy3-tFU7L;ytEdLfZ8B~oL3gv)}ZQ@tkkO~4UZo$O-lY?7ZKL$ zzQ`;uA!UP6U_WQx#(-W&rhfXfbL_Kf`r`JlgC3m7{papnJ8s7&6L8-(9isI;j`4AZ zB^y*zo_`m+eEL&je`uNDWauuf2RqWbd*1i8WkOX}J0jYYd9~ovF zNmps)$!}W@0j&wrUs%^18CmQ+y7F7wU_u2y+*M(yM1JTa9vd32VPr5;iN}!_KVCAo z57Rg;wAOMg_efNwlD(uj1!9F0$78lA)!ztPKvgK9Ms24YvGenBvA5Ny=%_%=Q^~{X z+{>RCEUK{-xjYtWeLKhkfr9%fgI%bt`(s1G_o^}YX8iV5iyM8ma;23_%y#>@Bguu| z{*iSjdpNaawqk5l%<~^K_)!btByr2P)~lfcYp-ROauHab2q73|A#UY{nk7P_IFGj2 ze}Td6ZKJYX@t<@G?;Nh~=?__7*!R;EaH!G{*!x@bCpW!+KgDLkVRJ&$RH37maRS)M zMQ2Ax#&K$s8(^RNb2v8j;x~;~J!+-Ea$8)Y73_VC`F^zut@B(vbeT%S5=KXCBdjrn zkQH8e5f92>9j25PzXe)0ca!xYEe0OG-c&w)@?| zcfDeq{49P|Sm7_Xp*m5OMy8O&lUH-q>yg1Bo0a38LCX5h_)g_CGoyt3@K=FJ2{St^ zCq6zFY!li&sj&^mBDQcke2ZWmjeReMd?-KDR+#l{h&Ktw0@f?biPR-PVq2!iKY1ihy}KG0bEiQzq<{N$AZjZpi;g${SU>9zgUi)&}$5pw?EK_&n`KrIH0gI_Ur6+6Q3Qm4um#`3; zw0Rv%{V#yLE4-kYSRTLJpgRgJv&%A;EpNR)cWySUI^odDv`EP{$rGn!Y%v<=nArd? zI-VQ?x7M_nbeA8|l6isGGSGL~U{ml*|MM%+6kmh`Qg40^tL$B^4B`J`!ed7@&b74Q zcDt5Xmt_v+WA-cZa7Q?&b(@W>ZuROaz|-BU#S7wny{Bc?Xt!Ni*5(0HXL?<#9QhrK z8~r|y7%%Nn_1N}kkW#oWpr^m#OY#`53$XdCj*ep-5^WK1hmia)dbfuFhcH|*_P&&Z?36Fk>@rxpdd;@|S0ZHpY z>}YjH@m0`S1n$_RK>yhYlJNe#8sQr>2HBtQ2|;3HTzEeHJJrd-kH&t7PX3fJphNvj zDH$EAheC+p?{yPFaI&u=HQx&ST>)^91)U%cVqkEgfh)=I3}*Mh(|;br69nRB#A0)G zS5&+A-~RocLa@Cd;DV9k3rS+o$dBF*=w$T2uM3%iJJHKVt^9@7?r&BO*-b#|E5s$U z?^}A`g8NIcq)>UbGwY9HjXmxAq|%$K9>`MJ4G*!}Z`v@9nX&Wn@$qPeSJHt@EmT6n z_{yNo!K1{4goTZbiBz8Q3OfxAjp~}33T2eUc@!VL$kw4}>?2V@<_IC*_x!)|Pk~My z{N(*z4~qD2Cy+t2B7U-fytU9a0tiy_SlQ$LcgLEjLW_6SYq@3g|5ua2KU~a^Zo*?S zlL5a*hRqK8ryoB_fMGZ5hGs|+McJ@Uk@bQhH8M`GklLepC{=|5 z{f!Ddju8R|Q}HNC{El}1)2$G2lUftOO!&V)=lKd52M@SxFYw|#Fi@qR|2$bJ9ujCZ z`at>bUM)rZ9T)p%#L!<#h$#g{z%ijH0qyT00Y|e9%9tZctvG-R(tZ?(HZlz zPV=GX=gvPO=C$7`Dk`$LomvD}Qqa;Ocw8Qrm=G4$tPx=2;KcboO1yaK!Ixrbe2$!E`bJQP|1%`uWxNpps`YNB;PO|5 zEeJv(ep2~+!;eiDSfDoNI&KJGG(`mQ{OW3X+PZO9fjDa8x@xKy{(0Vg z&k13Ix1sW(DuI0L^AkPA?r)E>LE5$UDfngP8$6%xZfORs z@7QHVeJ!Ioia_(XD2PT|JvW*s5%p}|OK{G0n=zQ}2|Yb>xZo|uX0EsICAhpLe z?kqLzu^HELT0EV$?mQY03{OZP3NG`(1|SV^P1L}uoig)gKUcn_#AVhFp?dkHsk0M)=Cidmf41On`+1fKhBmV-?F*#aZD`Iew~GQoLmz>S zAdA%u7bPX7eYRY|E+0EPjz*Lm3lr?s=Nv}~V8yW@3T3ZxmVver2WaC;Ml@r?m8*HR)OP9aju zhIJeTF(FHO#?*Z)C(EXj*r{n?V4rVbZ(=PlFmR&Yjnk@n(LYT2TWI~!#lz=Dy+XiR zW6cj5?{3gQU#Cwv^4}~p`>K`b`+c<5X>jL0PYjRI@vPBuNcrQ@7OsJPdV1DnvqP|@ z8B?#7&k}8tPs45Z6%5sfE(GtcePd%E%Or5UYO8Ae)lGkXb2e|g9LiZKtlpW}B9U2h zWHsnLz^jnMK(FGp-k(@~{i~-PgvZd(W<1VjCmOvPn<=N%A49#40cPI+0+@EcZDN-+ zJy}ztW5e}AZ`^Yh%PF?t@{KPVR?W#?x27`kf;Z(hBrfM6RQPPB!<06O$Vf;ET3U=P zZy%x(nMhGLwYQ74RUR3N*DPsNS&1nrVb5p$DO)m<7D@vsBW|R+Xp=DFfwG!hvcMw& zjEJHReMxuyRKKrpOU#Y}6Vt^*G0jsz(K$(}{g|@qn<)N~EO`lW@rMuxG~=?KxIl4m z9gr%9|DyXI;^DyubCq`zj>e8L<^ic;5wE)C#QsQDcsl{R=e0B6^+9Xjwsi+Pm{f^s zfqwFPAZBx=Yiw-XF~y-03PQ{5GZ({Ol07esc3wGwVH%A-IAUeoORFkDFaD7aL=Y(gikDAfWL9-sWtk>f>BHd9X~%G z@;qRm9E72i*-`J_J#J*aB%YtWBmOB+g*($#n44{OT9-J#BkHN%P|_f*_@sXX+eGw@ zspr#5j|SPDziB0+O_-4N1yMCeaZ|Fxkpp`6p@VOHvPSUBd3UymDGbTCqF& zOM}a_&BrX}u&m3hC0>2E)C0?Mu9tzwt`3f2jtHbAsJzBErJ;dtSleSGkSfA^zi0=5 zx7r$=C&S?gu~0stMb>RT74RWnR}#BgyWv&SxU$ruGDxJ_Go3gWuL2r6i;Av;6l>)I z-z6n(&z$cbF8p%V5CA%tJ-g?JIiw|*C1dC7kzNY+l?XGNB(}>4uxH5r^^yG76xTyn zX>&j1de^eXUQU@Ydb(cHU>oBZ%)WO}<8Z>Sj?~tA73yn_miAgP(7=nRbxzssb20CW z(IPKf4}N@qm_oF1pXqLi3xnG*7Nwz|35cJp?q8oC3}$V#wi;_N0 z6Y2%HybV)68&8L9PHb^zCnl!Jww7o$Pkt$H@a8bzYTS|{4I_)r*7W0qnw7!`l6t4d zQxrOHA!%M7WFYJjq8MARf1R3=ePbJE^Sw5FLt8_wEUWUBL5Ie3-F4l79OTTUH7ZUD z3rRKE0?(24Qh~>89_TFre!-Vd2V{p-N4p$&h;Lo@nVn%>b*F+ynsz@<6VQ0Vj+%^uUHN$_eP*iayMzQRj2q``r$pNPkI_!nk2>&`4XO4tUbe6?x*qj zHCHBQ=o8RwkGKy_veeQ;5GKv(#AH3K^b7H%x&2HBrC}9IGTzK!L&UI^Z-<&-f@k7= z=Q8IjsvwJ9%TPga(HFiU0p|x&W$u1oA1d1e{QSPbDIy55zRPn@{1vl+LBz_DadP9? zYAijw&Rit-Pn0L)FTeeSzOc8?L|s7eQ%SI4lMBT>%N>DA6pNmszXT zLCyDH;pUOPdDNKXi9n1=N1gx6kYc>Cm}DNXFsl6=qUnWCw3R2j~C0oDq_BwqO}jGO8=+MmLIsuIg+Rx zG;-Z$*z;Vb5$#z2?=P8o+<1JMYksJzFFtu1BWPRm(K7jBPUZkHlW&e+Ki^X<_Dlb& z8k5)cyT@P5S6<4@9UsaH|CCLhfo*WCmCktY#A$s%Md*@$5lTAukv^#ox(;nm$qrwZ zYA;sDdEHMKS7+0IyK7*bzU}eUQM7HL%L##ur(-ECfqfqtO08$?#5z9O4L-XYc4i}o z){h#;!wLjq?C!k#{8&p^P{*tb1+hHuU{Sh1Nf3XXGH?u6*52iRbK!)3Tg`hg9MFG~ zi_EEn9RDQBR6ueN)C(ymU;OJlfe$O0ISIL7!36j8e;j_k0+;W0WRcxbhxp0y?_fiA zc}kF7o>EMF2-W@C;G+&*et(`SW&j&njh`pvmVc)!Iuw|vy?#Qx+b_c0cws=+);}j1 zaN(nnIb=Wx%UvL>l#b8Z;e-)Mtq zZ#hK8nxKOo!NS2ZWM?PCi7BB&iM?_~V-(t`KSP(?K$rYA;HK9~J!#?CYP9`oZ>M+n zEUv3J&TfF8;(aZ0k`jIdIy$tl5CQ_!6EfHj-rE@H&9f){IU$k=6S3ZGG~lD(*C*b4 zBkWbCFj)TiBKVXW>k~HkQ7<{!``S0Ll#%~+BlKcsD2y4qHRh-PxjEzuO?n6)7xtcI z3G*StLW7ys#2H2c*X58f8K}rE{QkWA{VQ9@2*ElL!o;lgQrNs5!MNt! z6TIfw;AFV9V2O~Yj#nL&vdfs0Zm)EiJ{WiN((9mqj(%mp@VYSbF>&9LR4~g)O%A@^ za&M^kQH?ZZk)IzHUatA#{wptoo*BkMR<`uzlrNvhTk6n2?u*^dTU~~u)4NJzP53%$ zwGK6b&XC$F?Zhb$>Cl_0cJnip&r!ILMsi_*CMRyZtx;5EPOcC6$z0hXf<+>n!4X}2 zy}ioBe?1zXb8vjxcC$YdzDH^=p`eD&ajU0E)@Xb2(A9Gk%cF5GPdG8jLGx?hN$~j4 zMxeO!`EtO}@!i)Yn;E@?Nv95n&IHsAK6?|+>csE2d2^~b=AP=l$83yHad)+zn>=3y zr!}?U>qz$8mK%EUHIFyePU0sn&s4Aj>6X$cqV&Mn=;A_g_ENsDB}}q6e*7*PRe51| z{}Gxz8g|}m6wadAwgSScgw$=9t@Ns7K;&7F56i(!${dyd29vvwRkPOSQNxP{7qd=$ zi7s>hL(%BG)CC0b{^+ zUaxFD&0{h6fnt$RgTY=qrc}mK$R=Q55XbLcseWX`aQoQIsmPK6nc&#eTZOs2#W$T) z)ZW+RgnYf5W8U3mn$P(8mVnYYE!ucs)aQG{4#5IbmJ2V?;Q_R%sp-c=%wY12;1tml zOw_^j>wRch(l4Gh*cBxCe%``R;)E!uX#VovXeJ!5^E4PKlchVxR`SG;zDvK2^pri= zSP##QiJpDw=*!Ge$Oc33v7MIr+ShPL#DeiQbSN zS6QdS?%nuZB}v_y%Z;(`6O8-W%SonNxv=+;;q6CMQEy>hyp^HKDo3>CDRKC%Lgnwm zsUBV5s8R~ta=vEt=0>iGl!vdoJ}5)tvZdBW_LIgIj(ccmb6D;c3;&8NE0lNK#fJJ} z&9#Kv8MG(dyROx`u7Gh;746K-xx-xh+YOgqcS~y2eC~xh--sk+hmYVId|HO%}a?cG&3?R>s_W|)Gm#?_HJPN!cE9@ZXG!SuSd zgo!=v4{1Z29oZyTC;d)D!=8jMUms4nkFe_xA&DI+#XQGe;udf^PS~Q8ZLgkN-0>;f z;u|SL(J?8a)Oxk)Kj*MPayYYS$7FdYKfvvuYLnB_-THb`+z`cDZ7 z3H&eg6Cj2x=Q5>PI}(G*w7BrqccRvv*>mr%?AMsgBSJqVRbuYlSS&Ou{na}aqmUQ_ z0k;E&!i2{6%NpUn!i24BlkqHe8#31{J7`ote!68R<>|j#<|)4P{*LNNcue^7y6z#) zS5+bV8~!o=??TJUB5eJx=Zyn|*!^n;>wtFB04?W8>ixppQuPYmJZukN&v zol=LEL!;mcQ~_53CUg~I^&AI?iQHVCh)7EZbu}N(9e}u6DmV*MAFZ<6u69SeFw(7B zNJ4yU%a_bv3L!KCe|7d7&oNZxzPu(xyH`Dhq*;sBYH`m*Rf0qZZ26<}B=3Z8O%64Y zkBO$S_&bgtST^FXe-PoQ?Qs=c4VQDpCf36w+8bB=o%OvoKo-ot- z;{3|n);_T7qrV5ilFu25f^C70SzuAaA18|Ea0A2UJzK$AL_ZixiZ-PS%9xh%w_Yyv$E#|)z#Xj*tTR!|C*^xS74kaj<8%gphu22~1}z^D>E>En zVeZbn?gHRR-O;g^l;5Jpg9z3_PF7M&4|8J(h!8c6pY2tVgq(zay#+xbyv}e^)tgL} zWM#sh9%sZ;Dq!;-7caN(=O5-Lu$&7q!3w-7NBi>O>~79yw7gblQ+nJH-&l&c*F0Zi zce<)`sXh34MD={7rG^6$28Is?h4?~VQG@WsuT>ViH5r_{8M^_!=J#;YpR#OZq3T2e zQ0ZhF-&9!_1q^2q{; zpZQxP=d(9SpXojb!evBi&{WtkhB9!$XKrqQ6}72i_A=G_yZu0a=G#OQd}{W-_G0lm zI)2j3Fd^gQZJubb$#@~LN|APA>WwxCC>_6d%aD#nCnCyUg*F?__WAGuwqk#OKimff zo{sSnP4L<~RU{zSxmEUXsr|+7%~y8wCbSS7dX?U1+%Ze)Yr}tI0Ul%=9Jq|?BHX|1?n0+qwF zqLK!9IJneztKDjip8TjJd>=o3LRZ)@n(K?_^nHIZuH#iu{%bVFI~ZBl63@Tw0zF@cDu;b?b`eSx&)tBil1OA85FyhIh%$O7pQ+j~Tkm z)#Of(Vt{F0^o;MCH>y5BreSJ}t1rBIfp2%NDd2=(HkV*1rxMd&cCueE!Ri$JGJGhZ zxsODEu#UR7YdhD)Szhg#o=+aCd`C2l&kM^Qb4V}mGAS=?ruJmZX6>@}54*C`{U{YF z;N>qF#I1AK{z(^2VEr}TerptwE!1=@H#%tC+Jqbn7uTPd*U{UE@zS|<9)vcRThRpD z4i;NkT#rpOYxHl^)Xk=twd=N7V>ym4f7P6X5_ozDzU#>wplPh60Yw!5TuE&VcNOGO!O?>UovH2%}k>{k>!bM=I_wzeiCnW5b;p42Giyq1oa zOO1Q~U3!pX)ZgoBw`$@2Sd6wSqCrPU*RzVDh%rH=qtPEnDQ~+XsQLSz$^R4zy$!;l zw^?j~i)I61(hv@rlhD)Mon-9|&S+I-2Etm5gJO-I;o^U$IvMP*&q7KVUVJ}`%aII) zVe+RUVq#)S^|GEK$r`G;^n77lTwYH9VCU+WqnL%7uKbwSk%7eXTu)(HyUI#Sp($Cw zi?+cfZ)0H93PIvlXwz6NZ5Ck=a&yWiNfLKBaeo=i}mD7k@UvVTd+{o zcMtll;OV%hS{%rpgyNj+&1#%n6jaR#Te-yPy!QY*bSu)m;aqfYvOi~obtO{; z?M^2;Q4ZS~L-zd76B*$*w@24ATT~X0lSUTE*)%HFKkoK=+Hn*n)apN93;W^ivDBi( zq_En+8_*LN(`??7h<}jO1ebgIc7d$QVADSlVNl#-<;Uj~DddU~$1Q)hZGYeroLVE9 zMD91p_ZysFa=OFcq++>j$x$pPj-7&39%> z1eltKD+D$f=43}&Ojn`j_Mhf_gXMB_h3_dH(=AUgW`S(mM+JDNVU zV2yKyQ>1_Jmu}f<73fq68?qV-9&@>Ecs+{fYcmZ z?KduO7d3W()#`BG>uxo6e)vN?r?vi6x#<_&$ZJQ)PKh|>Wu!QQmELKD>S?zAc~GeClT;n5x*)!klhbJ;F^2)a984nG8u z`aBOSZI@M?-eke#+E_l9(#wnoH+`J*3*fH}g8d+3QD>inW~G~sWSTW9qzY$iR578F zjA~0O$*lE7P`x}DRg_;`jnV0ddaAgvy&eC#Sq-coUT3pTw%6yjWBdCJBii=mm>s{& zhJFq7!)l7#c;7v(OM{>Bv<4D+f83l7wDKs2j&3gOz6E9=H%5rd?x?zur%6l&4Ovnb1_q;!UM@ODLqirA52B`CyqL$Jb^5 z=ckhK1`js|?K-aI*elEFO65)r42;Jt`mha`Tl7)PIwa4H`;`u(6mc2UQea(>#=%Z} zV=&bhID(%A8Uf$FQM!Zm^88m1^WhJQ@Qp~;n_n5Jz&zrXoNbObUMU=q2zv4f+#D-X zl`Cotust;JNYC_Y@`j>SFQ+|!_aap=t1cu)R|lGjqIw!Hy`1TfX8^|#dLKhluw23| zcGv98>Ooe^BDmeDiq@^Mycdh{T|F_(0opc2N;#MSN5c;#U^gRsvRJv)K0iA*!(loPo19l^jdd1}MTcx`zC^tod22dUqEx>VGj{y3bPDS= zfMaX>uMI9KX(%`>y)|6AMiB#>ucH(fPPe`_$FFj}*;u{7TJU&2OMZ{{5#|3Ll@((g zoALhMFQ+nD2V!`CaJey|qNBt2t4@^YmPo6Jii!$nCaZ(StB@dagdjD^xzT2j1ARuz zM59Q9Q|_jpyZsqCc{nWHlf>)pj4;h*ow%dBo0Qhz=6vrG^h`&3P#+`ax4K4jcF| zQ?Wijp8E%LBy4-~I}q776-d@|b(K=tUCHaTsk~p|WehYb&2pE|NRxW}0|NBG-_B4E z6`Vh;_Po2!KuKI`4>UO49Imlj3z3?ywTIQk&$}H65RG=Q<8tm1vgoW9qgNzOCJYu? zj~y0>PSaL5Xb@Z()4|gsIWepK;4~+2jvl)IxX}HS^xfzA2A6BGf_qvzx@?)`caMkB zyz|P_HHu&_JQd51*4O3uPLjqROKr5TQc}Nl*gq_;_n%;SPUN^zSu|6nH*;>u z?KIGH>g4&3`70luPenm>RM{QBRadHHZ*)C;h}c(!9n1h2U7EA#6z0Ri!yV=F^71e1 z1wp2@`G>VNV%vivUcINBt_Un$aN4x_*bx@}G_p)Bic~?7jnUzmaoN<`ASd$d{kOH@&X5Zioy<>t`cY5S{f2U71 zsw{$EiiZfpMj7_#18P61XqZ?R82eWy{>^P_GxV;Lox>9ERjYopL!r53^d9(r8HjCM}_ zS-}S8ftz}_vsZOG_eQJcE&b3=ubW(kGDdgkFj^Nm4 zL*D%S`~=(GzmbW{t1SYkHjEl2tjj?>seRo0pKMs*6I9aQUw=hlp_)D{vEUA`=;Nvs z=)RR~4W8Ud6L5Qmi)#=EnZ730i-Xjg(D0^0)X_ErCE)5MBUJ93l8BWPLKWNR zE6r8+f4;T&`wO##)%7(p`qU}v$#1%J`pIZ){zLEHn*qLqM?*Z(w<)am^RLYF^fbdw z1?t>4VoJ6Vr!RL{F&)UFwNqMcJc{@nOGP;jSQC1y;TSdBjYQb1HS zYrb3#UF?)_l3eRG^!&80X)^IS7fPN*qG>nCGNC1&K527%iJZN$v^%xN?QxBItWi=P z&zGJO=CJ2wyyvBJ-JjqnnB#eSB>9Tg$mvGXo>D_c(Y5`DiFt=Ts9U{HI+0D>RM2=JCD>}N&PPYQZ2fm% zDO37$m#y^r@0qm>gpb|ToZ&1R&}NnMJH7niCb9HKo`^X& zilO4*bh*4JwiF>xaadbY(@>6 z`*@K$z^cqAnSZ%^UJOTXZ&W^0_?7WV=ONRR3YB*c?%*uJhnUXhq}-#1bA?DjmFDH% zqG1jUO4>-#W)QM~i=7>}j+1ys+_6$94yFW{biIz-9;eOu4+@FL-_Ck4Q{^hLn(H;7 zLd$ZO8-CprO+CJBUkvW-sSOj9?aI3mvt^rR$I;1_!y^q5Tq36E99crIc&uw zod01KNL!ofSCl0*io3uqbjjkEk`Vh_& zlJQ7s@P1zyO%`h-5EhTxcRvyetE*o;2(G>&!zW>So{ZsZ>DZ%hc+L1J8ceRNZhqyy z=wsH>`3ld_&AFsa8fZ*Kc{zzG`C-zI{@9sj)BT{hdL-t#91A>!4^queRHm>GJiUAt zA_<4d=St(mqV(rjXcGgeNgSpz$0T1&+O0O2Kb}~Lwoq5wR#`9T6opWN*2CoDeR4i% z?jwjCD|g{f#;EG?;4NC`qSaLkxkXUVom z95$K$!kNUW9U6i!*}A}jzO}``?PABPKUvWlUo;3_J8r&I2Ga>VxZ?DTi4+|y&-*Lm zHKq`fuVxdqE#K#HYoZE3jWrqniBI8mYr7`%)9c|r!=?>s>~vOmw05FMBfBy_@TR2U z82$Qm%P%jFekdg}t=QQ*iPhknqjn0%IL*g$T%S|Y{F+i0VnRZS)+y`irH=Yi?vpLr zR}Zz6sw=orNe&2yL#_4ipTQ>+NJb0B$yqofyvHhvY-==l_Lm;VQ(5%+m8%D$1JlzI z0`cef?oaWy<>w*PY;$ks?v8lklafL}b@kb&GHte~`+k*QOQwlqhjy)4ZQ>zX<(lrH)5AOPgeGU8!}i!K z0VRWYe-P7c5b0>VKv}Hv=lFLR7W7DQnL|9olGPZFSTezM!Tls$W302&8!v_EAij0L z5BkFMt3705NiFwwvEqSLfRB5C1hz@JLF&=v-Ivo(`=u{}W;3Hyd!Bei`ZdwQkBK||qJ zR1EVH(^caPokkur%AuvU&i=o3mfp|+>rh-ePZ6;9a<%!ET3D9FLAJ_qPviFf=D=+F z2PMUlC_nSxtoUeJW)58NJQjDE?0g!n-=C{5_{w%lUO2k7pC7Blc(|5!rto(8&bKMb z)UzFFf6M`DrZMPd_8vW%HYzFNyFr4D%NknBjY|TXOXgPJ)s~x$%O1nfE9B{$3e_K! z@Y@99nQ8dXj-<5l++fc|ZT zH?6ljfAUVH$SOoEkZx(BXofQDm*>vDGPPx|sZJ-7qZW}Aq4Aj211R#_uf1>Q;Tw%Q zIyy4I&;cNN&-Z&Nmo%(^5Hm^Y2^PQsJU7Dp(=T{H*&nBzrUhXM`;IuJ>DbizmWQE|2Fcd19 zVCQM#;VsVvPc=rwU3l8JH&)TCJx;Y+;2vK9-Rfm^3(8v=H8Ll)fywgOAMDySCk-Un zo}RhFHy2PD{paLoIOxs+pvko7c0R-{)EXypJ8ufynUp1Bc~dHZCbyZ}ya|e@qD$9e zw;1@Y4x!u=LA%wUt_xaGF){giN6R5D*2XuFBV{j(EojCq^)-wO0V?L%yK8i~*lPA% zpx@$h4z0;X`o~+ihx;3r%NV`F!VYi@?d)=D1@rmkB)ZwUijqMhwEQ|Kofb#R3~FpQ z;YX}<8OjNoe`ca?X(2DMjJ-d49v*jv(f`@~HNJ`wYnOR~nmy_vag=71u|Ll%n#gB1 zR*w&L`w}pV4%M1VMz>nFgzidjH4?mS2Kffzk9XRzF8&J?sO-(1kXsT2g zVHs>WquZAIiSNaOA+62M1d|+*E`S#4QxrcufSE-kGqsH`z&R=7JF_-Pe-dYVcBEhk z&?5M-a6`^(lo zL#$>9_yzl!dFd7|f4Vk}x}}13U)i>#-h*-gdw7f<<7Fgp9dD_T$IjrQ8Sd z90EC^vyWUVhw`ebi~XCZK*Ry)dghNAg3`$rfiO<#>PRg$G3@8J{UqFTvsvO82I4gP z6sV{dZr%w7^4R`?PNI!<mW$Dhp>bGY{g3U90=8sNr6c_FS6>+#HFCq(FXr4cidH97x1Mz@gj zy`Vy0ou8lQsd7BuRX_Cn=jshj;&j(r4rBLy6U&u!IYt?i8jp9r-@)>x^ z2+wRZ%cRAa=DD8kX=~N~gBL?*FNGlQE!jBPbv@4TH?wSKsw@{VT&$W##Y9D|RM)dK zryEB*jC-P}dQZD2CsmWfKenXs*dKz)z`OXiXLu^m`suC>>1Xi!Eq9e7jyANXw+pKMOVKX16O3x9fIGlv~V9R}My1uB)j zDiWjQ`XCI$z`NWlEayqT_yYiLX*Zb@LKM2VtY(QgKCTKHmILp=ccFFBcH-BU-#Gkd zV~QEDBH+Y$UvPO)JgPJgzy|9)TIp`}eAK5H>q{FLMcz5md{(kCj+Baj13ni4>v)PF z^j&mDem(lL2YlPywRHK!<_2MaR9shv`lxac;~jrPgD=onh<6u+2yS2QG~H4DTq#^5 zJNv<9?fEB&k~3?<`Ogp5UhC82wZ6D_iCl*Bn+2*R#RTTZdY>Z>93;t0IB)QuJU?VPaZC1h|=@Y7uU^PUT1f5W*_)BWF? zwCyp6^0Sg3WMum{4R}Xdxj$`xo)1IEblij_V$7e(&%(HvC?wy%|J)JuJfqEjA$if2 zr0XOZ7lYu<6C@yYIplwe)RZ1YDQ^8JB?aG4=pwX%nJF0FtVD0agj2cKg_p;XkhR#a zuI%|eLX^)~OFjM{Iq%U9+DuDeA;i13@BPQV0@rMz#+I6!No)|K!l|F(Z}m>`WSvd* z9uJdT25N7-hcfP>fqdqzW|B(Q52$T(Shi&IILBdssli4;lEi$eMY?Ghm|Iypy1JGD z65cLJ>ES;pc!ODPJcwM94m={mk+y&zr= zCmvRwgSFnT5=<~$tj)*CF1e)1hlo$(+L~%^_8-wLZ;GE{NSnF;G!Jhv>7~ZoxASj@ z-b7Ek&AXYbs}-u1hOIU~+-oxEUMjTQ@a+tIXee(tMvzI&FVw?3FuolROu2^2a@|(` zN7SO|`k9_BLpU0X2%C^WGB7-$8nFC{w|~wvPC?;GuYUZI!>R&PxxhUvBZKjSY;(XU z%-CSBE+Qz>3+LmX~(wR0ZnYvPUub zvVhNe0A5|?D>=`s&k#)qvt<`-J$?ik9qv!PH<*Ma%*+te zA)fw^;n#nJ?uT?JmPNq#bN3@Q`R1fhk4s7V3YZn4VP)zbO96z!?9}LIWBzx*-7`Z^ zX=_+Qm^vnqPRN)MuhY#Tm8dfqyMf4Rdtot1G6x?xj9zN7jnAb&ADncii1(k|ZbFvb zYbtIgav1WljUQ`mxIR|*%Kr+Zi_iU(ko9$ECIUO}2wM9Q21)%6pP^i!k{B}lp7zZf zX^)BsBc?>01G2FaU0s)OVnKIqiAahfJPxOrmViR=8q%h|+q!nXW8vJZh##UHHA+K& zL9sExCFu7flB&Al4|S^`Vi@}Vb+KFlY=P@`4UcVs_UX!(1y@A>`ZKllN~mZ6Nw!fx z<Q*wkk|l9q275 z@_90={L|#jCX4s*nnuT4v@F^K-}Hyon1qgwR-oke)At)++I2EmruDfISJ5<$3Yh!9 z$a5n;O7&!ENo^?Pr~bp|bCJ+U=_PPUIB#`X^;qa#a>G}9aXN3{j0N*8fSC|3l^gZP z?Oo*-UJ^rI0itEQ+cl^I7|d#G7c|a;gV)EhdTAssO!e<@wQw31Y|^K#>$Y-jJhsOe zKx-z{iy3J8&4=U;_{8*dh+!KZQVZYmn}+>k?nW{0fS{)HFF|bsp2hCNPuIw+ z{dqLd85o-sk-)?EX4|br4psbS{LXw92Hitd(EU7Df8YUnU_=xw$dl$FGl<*o-@h|d z3FmEUO@ilj@)~oiz9nff^Dcik0!O;X&FQet3liVZjw@w3`{@||3Az^h(M&OvHQLyu zcNC*y*o40TQy|Y|lI!JeuK}t5?%Qw;xiG_pTi6y~WM~@g7ukz(0q6a_DHFaDI(8?2 zj;NB&_ba6So{y5`73>?0FJ8TRA7?UEMzdKN+Qvf;2i{!CPWyK38QZz%ad2AJ@8P__ zxGvp`>TvQQ_JaoB(3i+7)BPHt0Ll5ZxIOEq%2$USrpq4=VC}44yxU|AHFu=U}sJLHzM8hhFx$CRg+p2iVKq{)Yc(0RsPWSVfYh zNd8Bv6h6>#En(G??fLL1Rkm*+Sx#+L#UDiqUen*-UFh0W8TNi>$k-s95B(9(SutGk zpoP&%EK=;Yd`;G*_G6oLXLGK;dYiqOFiKNrJ>fGYyabZdH8*r`4A^QdC0~h=A$up` z1Bc7yvXj~+%1ir~8)KvFPjaOM!fC@3vZdCJP%*V+b_{)D zwOhMQFIdLfrdt>s#ca5!%7jND!sEp{Y})#vy9gqj_FP3WX#<@BBb3FSmsRc#Mm!Q_msS9#@s*a7$Kv6YCWni7=oJ`OPChL32LMV7Gk)=nVy{<_I#h zj)7Ei+uOg2A3hbJqz>S=BH_yaJmr7?-ZQwTrx6w7HDW46DR2GIag)FH5`xX6`J~8N zr9IoHNG{t33GeV!G^<|<+_?K(W&Gl%4-`svYIEa2i z7(G%+u!nc0ZpO^KDmnseXHWx9f5*~sGP#m~L0=>xOlzi+%Y2@bTJ$XgRc$Uh|yOM(?%2AQ}H9no6-*n1I`YVwx!%dQU|Av!35h*SUt>HY-C& zp&qbNjAt_0n^G~9vYEkDy0@Ff;gclBmZ!xFWXQe_9p2u%{{W+8p@5u;_$rvgbtUah z;dXwofNjR_1@yPGXbjJ}h}YL!%is6!OiI-1983WyvYX}(b8|(e`sv`sVOfR~#~3c| z?ZvZ4v&b7knI1A;%2aB3^Qo81T@YLS=b(=_IIs{%C9)3NSHZv8b2zBdO6C8ot{UH-u=oxBXWH~IjDLKvD zL!+XuHEKCtz53IB{S@1zZ6=%B$ts_K?%_DLr4c-&|C*=|rkv^^uu+|5#-&H~X|AHP zqa%;%V5%I&;ZEYh_H^=3WMLlS6spe~MCYPHjY@RY5*=j*ca;-OcqQRCnpM&+?-bC= z05{u0gXT;`iZ6uRF8g|Pfn(H^xdjDHTcio_?7flnD<{;41=_dtPqo(?LC$r1=kwKY z1ogznY9B2`9*e(ky@&j0;Ik3O+qe?%8S>Epc`RPdQ@%|6K47iH8#SK;4!28%_rJ z7TJ9V(FK#uCyR^la5$RlHooP+1Nwt3-W#-?p!qC&F)Mr<-h`O*nxw3Jw`OX`xRa#Fe{ zuW%V`6l)Vt(}-bd%}VaQs+1X1I!?-*h|$H*Q3)YokUUGJz*9mR{|OO|?dp@udavv3 ze7W2k*Ep>fsQ=XhgN)}o9LiJwgA9=bniG6$OE-Kn4aF&o(bQ%4QvGP*1C35!{xnTAc6_=pUawTz> zn_0(hTg}J^quh|lZY+@Di^5woNu`M zWJW=lUQv4U-*09|3h%8x!hnSQp0`i{o@`IAi3&G4+nu*Xd%$k42_&ThE`s#cwP` zpONm&LSWoH^DQ(qa=GjNOAaijt$hKb2_J(m{J_CA4K%4w>3@9P{remVgFuO;5N|f$ za7~pxHYR3q;6b~#jck5s7{kijz)w(3s{a2aF7{0gua`kpl~XWf1|E|CPhqqY#WGy2Cxxp6^!EeU}lu7 zC!kK?Iom&Sm)sc9x+@NN6Akmu25e+>d)y2;iWs$DcT_ehA@0sc*{|G(UG^#`Thudw zHt&Z4=R&^YP|HHbVbQH~qoaca)Zv#&T$+&~tOxCbCEx!&!gtoysBk;#=Rl(uj7#>X zD(3*W2ycq4{Q)KBfhXu>^kVUNTCv7u8$F}bCE$uG!%7}+TOICs$(VSl6A4v?EcFS%PUb=4k{A1F6LRyt^AmxAv+yX)nN^w{rM z_NbVc%^^(sA4iEA#agv)+jRK2DKcMZQleKwpLn_a5w;g@I<(bovxH}mjCip%xuEoc z$3eBYHg%gwQ&v_Myv1UTL2DD#10427i6Paq#~Lw^+!xJ?`X7mZn^VF&<=Xn41J0@# zdX~48V{`{d**`8JSKgk7!nkjxnRjDl-!8-*VVjiX1o}Ldwv%XLcr5{mnlP_ehjwEeZ zUuwtOeH)wJXp!IM^SI{5BG(Bb=j$>6-!QZ}UUhicLl8l^U?aQ1q#0oJ{)-3l5jRX9 zXfP^+a*PIcy#^5e^!^l&B@61k4PDnQ8k-^#`TE{YC2t?K!z#Xm(N3SvQQnjA;Veko#_Z-Mf8YMoMSr>btfs; z`&b@OjsE<|L{vt%_!fTX6URve<=gQDIJ`);E%bVjA3Aap6Hi%~PxHsT$Mjo3XbCXF zQ3gbZQbI-tT`b#=`tZm7FValLY~GoT|M2l`EgH{nbZ{x6?ZND56_YjL+8>u9-MKVC zK=e$yyy`VT9)b&w(IpFh%RHsAA_*DGdlaO)W8^n zjQ=ksY*4x@_ftVsnkPor{cHKGd4W_fgRkoZ3BbxXFfarRSWfs-h6b0>o4FY7B!$N7 z?E;gb47kVj58s(I2_DxQkhob`yt%aNPT>Ev?Eq~EPWOWQ)Ru_dEu37}z}Io=@b-}h zyRbrXy5Pnbh&HV>eaBDIfiSZ_Vg}sqPdf>Vybp;`Dd(-f0$OXZG z!pWNN1<5*Be8LgV?x&V^wG*(m0>D~r86tjTZA$3-ys6PJSZSL|Pe0+TJfU6A6JT#2PE|8A4vU`T7hMy}HA+aLyNxtDS`|$7( zj<9V1?-ip;_q*;=14Rz1`5={PxU1DpC)W=fY~D+$QYeVkjBDQ6eGkm?HI_3_CLQ-B zBpZSVY^?#Q5&tj^wdp(^z>z=j>BkX_*jyc3$pj@r(Kf}t?_KvQpOsq9U~s#h^2x+D zh*yf1mj(q{_4*gOo|SN}NkjoWI|Sbib$&kcS}gEdyHp?P(w55%VhV2Q5!K z*4EZA6?UeS)@8W#gVUFt>amobmvA5sVCVo9K9OY{t#Jf`0>09pmc+P+y92M!E)*Mh zm+;+@O~ZvDE+)S1x*k3G*4Ga0x}T0o;$!b_X+B?a|CzwC+`_@dWnVV^)NPsotgRQ# z4P@Pbd9ar(bLoG`nL4W7Vopk z!+gbWv-gsX{=k)6x<14G`+r53A*lKw4<5ETXk;x^$iR`|CtI(t5j1wb)7I=*BNje7 zk(xOqAwv$EW)MF70o5P7mZ#64O~Xdt>@xe07T~IR(Wm5=pRa0je``j@drJJSTgb<- z&s=Zrdf;#426>9$9bK`u5OV5(X0rCr0EOH%i8C|ZpPZE8m4twwr^`#2_%-BcGV4s- z8%G@eh+kNx66Yx$i7EC^Gs&=2C{neb81zT{-6q!S7u3uy{za(kPt#g1mub<@_763w zNuz-{$Y9)Zr7z)>0^HtdP7SS3KF19gezZUA3BGy7x-O*!hm&$m++z)7gA*k~BH8wv zj~#aNiEwqAl1|sc5zc!V?#MG1#BYX}AX~uor=3vZTshtNWWE3KuJB)jyRzNaV||Yc zu%nZ<%ufQ2e$A&$fAaA>{evlu^cyM>EPrltc>+#*u>uEy6K%q(J9_6Iu(02BL4(sg zvkcmp0d0#OOk}!|@M-+V8U2E<&lo0$p$@=E@AkmvF~m#g-^v@Az0T`jO!W@+MGkoZ zSqYOVZC4BDi(`M!xOrU32V`af`U)T~)-GvYFll>q^fViBi`K=94JVjqUj}udy48{R z&cuC_y?VCk&TlLun_@ybH zR`^uo(1iY6`n0yi?xi<4?^J5#K`0|vl8?31)Mvm9!E%OI3Z1}n1>uS>6;G!0Hf9rgT+tm#2uNFrl-PkL4Mp4LB-efXr}82%SJiLf*dOza zZhkCV*LJtL(7D6h)C+`oV+|{h>~HB;M0S0B{5ZQ}Ejf#jr+hHWznnT2?qaK*e_^te zAWe}xtb%=;^kPBbDS|Fh;d~T=s>$p9wrL+0c=kGpg##KX{%>931lbzngO&MHBp+mD z(wMMK2J@ne$HpbAS=V2uU<~8CXbg4XSqnjkVe4M?F#G}%f9I4(>e9GnF#qyk! zGCiL)1(9));ILMB*|RykYSU2(r zOAO(V>=-3$W!LcgmudzNVu_HeTCMlxXbtKF<+2B-(l7{_^XThjC#nHzsMK5L<(j#m zq@!$`#-(tmgZ2Y&*2BZ2HP&gR>*< zPpKKzTq*ob2VTo}>u)z*{J|%`&IXXIF4&L<4qv5dh9IDH8LU7he_6OZwFq*PbK@Zj z@b~u`uSVe)xRcM5GXT{vD2cO4vX3Bn_*ZLlo|-M*OX@mvc5(TO5u|G7*Mq1hvdvCg zBlM>qtnnMNi`@EMTwEAP9h0(#l)g2Z0fm?wS7Ir}oD_4?Je-`503@n@y-UV}_P-fN z3b3x@G2-!9B*ABvUVB4gZ2BX8!FdR_ao)$9?tc6clbG$jOI#*q_t)odjDK2x-}y_> zH;h!7-%$9;_YQDZW=XpGE4>EA(ojt{Gut2O=UQ5?Iz7-P=w8eg4UQ>=7k?+fQNaGk zQDz5@@`(RCYpt3ZV$JHO!n;XTAZI|BlbgFLxH{&LLsp+7=-{xwq20S00A<Wt z7fxY8IhZ;{?mDANaozAs3|*~}*aDm^9N~mKgTX*gv5tU$EX>H4l24<&N+7-@FPup; zt!s%oHaew2ryg3|K3Po^LeNObia#%Q=jxRye&Re<%!v;sLW$^?Op9B@Um%Jx-I(yl zVQ&#)!pp!d+N|8Oi19M!FeT=)BFod>(7;P-d>c-3UOfHg$p!JZr=-Y@lSD}>tP!H; zmq#nD&GNikJ-<71 zv5Wd>9)$TtTN6de_i~;^(%>;8&LdUX_fq!?YX%*ef~a2TgqpkPt2o-KF{!@zo0zQZHs)z>#yS|kpPH767tR|k@X}G zd_wsb*xTtNEnxUSADh>%b3jXR+z?f%yIU)5>UJ;v)buQnTC%AP(1ZG&y>)8kRZNb1 zB|E(-@hAzJ3MSUw+d8l;qVOuVyH1xN4SJob01Yfrz9$eC)hk;1H;r93h|f z{9R|NfdMc|dd;Ken*_SUVqPE?egNfcz;ROuWC$QgM?a`&X_3{1LOPt$CaA%4(>;=E z&iEgTxKRIJ7I8(*F~9xcBAr@o*7K?XQh$Tk`_A9d=24d`SXvs6m|R%ePv+jaBD%Df zn9*-Wu-*nFRTD-Fs*(fAxV2hA&-v1=mR$ozTA!Xyxk(!lN>lH!<=Ym3;YXY z=|$r2a&m17@2dJnQ-_?COEByXMNm|KS%1&rPzAE zm*dr%_|b!n4Jy==OxhU@7a|_f7s<_ za5+^w4m@Dgm24)R0$wLweJc@~csMqY)^aHnir3x2dA2{Xwk1`$7I@&`^}yC!;y6lM z@LkAKcJPH(Z5bh-)6>rFzXaTNr=&Sh9XpyZX4d%AQ_Y?^C*Cnpd1j&_jWvTx?+Vjc zwV?wc!gxC$2Hn4>!X_6G76Jz}$%|$Oz7Ndc!$4_<>_njw{a|ow5EyXd4A~N;vZPD z&2pn!%AFM{GqYd_=}l~OTFg)Iy>yi~g#_W>1XRg8CErP0hH^e1$;G_=8PG=EGgC-m z??cu6d8%;B>}*YnG97g-((U2CRITE#oQxhoXM`Fo7t?&{3lHu)n0tkcty+`G^XBE|4mNALE#}yoA}NqCGEh$TINI>MK9AsE`QnBWd03SI4P67 z5u`Izz}MTG=xHVdW8z_BY01ZI{AYeiso?!3c!+|Fc4w-w6`|6tTnp}gAbf5<8F+5= z8xida;=Li9)_)bj(@gs7zG6fKGc{4f}_rT0$6IN8%n|<4`RA(iF#7anmRUq188yN+=_h zVAdwW&=$Y#{w=!2^eo{H7r!^V@w%C)=1=pq8h0XPsa_rsk&5)VkuVU`!hXXJ;FXzr z)V8+i*X6l&Up*xY;x*-}2QX#Y?{Px#to*>Rxh6JfS5gKT?ai5Lmd7SosYFM6blYta zC{RCm>}f9>)Ie0;YQ7=SO+1Er5Y(e+V+SntsAHvO&pSKqCy??=$GvG0N|jQ#?taM z)f1RtXCm1h41C|CAbP2yd;w1AM?>GUkzOJ!N;i#~zEc!uveSxCph@?K89!mxp7z<} zL#A?+c}>Rm4hdkZv*!(@l+Gl~y7S?o1qI2i_iDWw5KeppyN&NUF?9Q%!0O{uLD*X7xQEWdQW91?ywmcy9s$^~MjgK+ zzM`Qz?HpH#Tbd>)M8zJQ?$i(Z8L{$O%U*uR5V1*CKy~{`64E?LB(7T=9%Z$*sQY?0 z-yL>y`9912s+wcTj zfU#e8FCY*qIXsLY!k!b)v^;Jh(fQ+|GVsLj@Z|Lx$L6K-9u_&TH->sX+UilI`K0h3 zInrhG{WZqMV7gP%5x1BmKp5xMr_0YdppDf8eO^=9@E~xjV>(*kQRcIDF2VWrH35oD z7*Gy`@2>4dL{g!WhFQAE{Zae^2z$K9<{bMgD}J;xN#3G{)mC%D;rudyM4tW!@&niO zbp(ZgSvYjI3Cqbt!s7Dg*&DP1&xOEKj=gV1&H5GEUFr%bC)=T<_aH(;k)k}(ZQBf> z`t7JBTi1mfu*{YNNz%noqRW3H%?%5{jYCEY5bw6H8X6>*BYhkm8Tsl83OIt7iwN#l zYYEO^W2q9(oDC(f18RjT%rT9nv&*RBl1rl1?e_Ah*CAY#ulaWdix0xlZuy`Q2G1D7@Wlsj>t=V1hviU~ zmdNxkPcPIO@v5U9;mzt_7+C4ru-D%D(E`K2mfXh*kC@N{IKcX=|G`2GckF9ys0Nn0 zqcu@RN3E&27Pfd(QGET(=@qlg#+!zWXeP2huHa_`%Ln5`Qqlh^n+W@@SrWhB@W8#N zTW%y{h_C>Zg7@O$`K`Oa-yM5*O!}hUac`s;TP8$-p{(?~cfBC>1XvwGvosy|-NNLb zZ6e7*IRV{-@Y-*!aE>zMcN&{T$~YvIq!}dPFly!f_|n|Xc5S^4A@v4 zs#!CYAb4FX_=GR=E$0?;u@yx4IOQ(U1GeFJ;J}B?shh;2kb`eFc`tqi_Q^KOnztkT z@4>y2d*j(Ow_B96RsQ)4^2qRHis6ba&RKp`=^`dE!}_nMHBGR60&qT~GmlGqow+{d*h*QyF znPo2mRPnU*tjk(%Fo|Us@i$BX|mI8$sxWzji3*%sCtsUwYK+%{0@Y54lx3 zEEen$%-U0``|N;P8hz?Va|sa=^1x;;5in$5*t&YlRM)=cU~>?oqvgZG+3SCO9%SVaol&|yRBtHAU71%;sw2{i+rL zouv{y<~$nT2p*vAfJ#7HGU_y|mwgFlqn;@>kc@yD+>%}$wqvupU)q4((9@eQt*7fx z#7wVU&zi?7bQ_%Iy-=tB?8une?T~WbUi;Rrjc>&2&OBcbe3kt=F9d zRR?7|)jdKS$Lk+>_WtN1Hwhm_rrzKjOMsP!B?r8b7!TxKQzg~QASn0Y@+HOZ2eOXJ zz2L={ik>Y!bagL$HR3C34^A7xdrLnJH}OH+>K6&s`@Rzwatwj(IbHvS`#`@oem)Ta zc+VUNc?5`(ykInYVgf&w<>y94+ox;Xff{13 z+PFFrk?JMJ*!EfMKWkj}+!*Jab_}@ya_GT#10%eaS>rT;IPM9zAoSEKoBef>XOjfm znYkN3CcM|u62T<_E}kHqry6Ji3KOlzwF=wrz~TdMcFNg=&lGTV+BrAkb$U5`U9r@Y zFOIs&du3L_#R!F~!zo1O4+}^_q6Q3~-HXcLQ4SO74Ju2vM#vu)DG^cJJ2f&UPX1hF zlW6HHc#)N@^BzoVa;3{Aa+{4VCn@jxZ~qHg3X7|hNa1N3^>BYF$I-yf_}z>2Y`b5i zk3chSN_L8^#G6)FM@M90Gh}A6^@eEAW=pCJERxEoE&~Y$2Dl&$^{c{6Yv*c|ID{uI z601+TJ~*`62q{_WXaz)N-AmZ53WU%WRy^*f(UnqH1c-`AE?vO?tf$E!we-Xe#Ha>~ zsxZ(m8zz*OQ~SYdG2S*N;)l%e?{qmaW8L~XCjTUv9YFy=S)8Qi?(|Y+1+Q{kdDbxr zkq*)E8S^lq*AlTLRh(aXo`sQcqC<~=_I@$of~SCLcy49}j~r&=9HWV zovsbZMTdT{zy5Jg{JP{BmM-1H+cPdW!P&?9zE+(uYRzA@{zNO7Gr$IYB_W>N@AVa= zdi`pky6#P$8tg>kNWXD7Z%I_CWOa{3UoSCZT9QSrjx!mZ&+8YSU z$TK`8<-{YUqT~E?(NYDB0{O~qV|w*6N?*U9BCrzj0w#V{&m2-4ROW24k z=u70O2eGs69+xL6{E?g9`}GS;<6tB@>Miyy$qrN| za(T8kSA(n~f2o~2nHx8F!^qchlX2v;0Z=OVT$Z&2>DH)UZ33~_B)3V z>}8q$wsNz6o2TMv`5tUP@S%89Lm%lYAuSzdmS}|FK>gboeoktn@m0W5YQ3Yry*qym z)+a-U78!m0tm9q+e0;;R`6=LeokeUYWR}y=(b4(+Lyrzjcx{!~|8v;LBR2aw?a%Tg zheuS+jnT@LOSg^~J>`=VQ?CVal)P#ih>v=Ca>O5A(+R;>(({j-85XzGC2h=Rk+o)` zgZj)NOSjf;HfFo7DP)aU8_>PBHD$UeyW1G3u#74t>v0KjL{#zGSa&m?ph#mV zruV}Yu>~q6@RcE9&6?A;=U^3G5D2Z{;guE5z19?jQAXnw9imF| zfBO2$fU4T2Yg)RIP)d}P?hp_q1*8#4rKP*1OCk}W@gQrwVp?|I-SBbyisZ59$%t_r%>!FpdQ>?g6DDY5-NwG9)RZ5)GXLDp@mqaqsBr8eRouqHAh;N&w8usApeeUi{cEohtI!+N z3*kfZvs1j-w&V}dVo?JKH=mP{KnW8HT%BNg*GJLbB(O)-IL!(4_4fl79^Gf8NB zB7R4f290lS+_<61EWEv}k#!(^iU-hug^bdibVX`Fz~*hbS}Fl-)vd?wYcRgsX$PuA zmDD8kJ;#Z!*TaG{n2p|Ab@NP39g=^4M9H1bJz4sV|AH~r3|f3&8kfFlbd#%usA*X@#A)zl7@uY#!p7VU_g7>#u07E!lO5~#`4=|Qx~ijBGs>= z%eB9}77AAuB;3|n$*{YjZSVc+A};C{Gbai425CpaKGtA<@zuO1&zVFPaI$l>uW9tD zw9lGVhV1~=EU zu=Iil**!8Ioe%WU>5>pSqweV`vU&b)q)pz@l5ECEMHTUA4(Ww^@|jj;58hNeasR4t z8f}4&@%z9o&bH*8_pECH?^a#L zZZh6pxgq}T>yVcz?PN|wGkn>Ms)s~wX}r6_1WswWt0BvEILLrb)9|oxzm@fwo0eG5E=+!Hf)vf(+1orxrim3E{~_?f2QBlg zxhh~f+_CP-YUBb_C1ms1I5?R-W$o4UzgR#BN2)A!F!6_T$a#T|;?-&cSM-l5msTeB?*taA zI3@Ghq@JHo3vhhf*;Vh#gFC>9ww50{L!vh0o^3n%B;dI*d5etCg-V5+>+e+TahfU4 zq=oZt%&Ek4Xv-BP3pP_vOK8n*%YLPv-F~Tt1*&w)NK5x*7FL69vYRHS+<|gi#ts99$%P&AtVraR3z}yE7$dxkA z&gCoTUaLo}4n-<9PfnVA@cd7-iP7W++EFPe8U6x-+}-j~;IIW5-~1La1HzVNciv&e z?Q^OCD3y~Vd+{wTq7-*#p)b3DEN0`6vKbSxf}}60{@E@~#>J;jy6<*ZS)}-evgC<8 zeSA`uJAi)lI3NI}M;#mUCnA9L*+KDwF)jk$D3W}%VL=qG`Z*KRsFW)96*3fVkzin9 zelx|3Hg-d$rw^ed@HmS8?m~18mr^G4Lg-d4MSF?lWeI#qJ&6JlzmlTycL5pF$OQ7;*2t ze>T4}Y~22ktlF50)fNHa*olN)k9hr$@2}q7{QB`nBANiEi}$(@z$^U9Vf#fvp!yXs z<{sbs-s0nvOZR4lhM85L@m-2zVgBFIQ0=#G4_C#t|Bi;v@CDTyvMJ5|)1i}YB)!GI zMR|)f;ny~2Uq60hU1~bvDOf>sj(qsUDYjHH>Qr+q{C_mZdc4|CDN<4+RbcgW>4RpC zYX89yObf;5PWSA%15~j<9#Z_89wv(8D}DCt9UI<*vgachoO`vlpw^@F5Gy51{&7&y z9@3OtTm5;Dd;jIl>0hK?A+e3>{Zb}PDCC^CwVr+H(I+bq_`{hZZJunr59SLz$uRJvik^yze~pr!GkV+t zHM9Yb{k*wao zOpSL)au0I5vrb@wvoZ4MyA;eyY&|cl1X;pA66F(2fpS;qLvbyRU*A8nUXZ|le?E=y z_lf3>57hOO;n_9Ank_0+@)_2eO+3nJ2j~A2 zJ#1R1v$UPwU!7PTp6lq;pF5E}#4=E>xt+aIVA0<)9%0dE0L5@`T zT)Y`M+VAap#tI`_3jSF`2A4g#X#45bf0qq^keVRf2y)&xu8I98(TE-B!%*tFsDXqX z;7v3m+b{@cCKuX4uLN|B4PW!P{m_d0cCq&ga`ox+lWcNnsrN}MEZ>I08WoZCFY5i6 zB`-WzJ#Exh>mu)5Xg}NXFiC8uHnP<3SBdC%w=W@)#c{1cm}DDECFr~!tJvp7%h{MZ zwLJ*wrvl!d(1jZNdEwxlRhHK1bIQ6lS#ECM=GJ6$cXcB6kC_2yW?L)~hJ9LnG>6U2JV%aRq2Ugg;6l9E?sTP!E{s;NO!@8^#xWJ#D!Xu& z%OHtOtLQcbXb=kOsgh2{!TMkInxgd^XpgpQ9;@mnrlDC`_pQ=7GdFjlA!BV~lJt?i z#IQd53VvIr!*q%EE8`QAxc#&%u`)Kl4jOvv_g;<#FSFTBh>$@|;Iw<^+44zi1Wxj< zU8&Ibn`*Vr;+OS>My-yQhPm084{V?bKh2xmt$m@yKv6@2&f6*|xAXovkd|!fO2cD3 z!9g{}D7IH>TEsaQBVhR!7rKPAKXNfl^*E#Tp)&#&UrFk#&`xcG0%yPpU|3>uatv;6 zZUNg7V%=hc=D`A8Uaw8FBberfi~!O094w$DCFR?*J~{pcBsqE4%0r2h57&ackmd3? z?rS-3U=Su#PyQetHa4r-T*At*!9&tP0mkK%nMJ)OGZv6D!!VvUiSsgGD>JBN#>Qd8 zN>dG&302B)oP9E58_5yHyL2mGcMYHZISS}Yy}17HM{I%C3z&J3D*8x+8AdhVQyEroHk>4%_U~ zOst?xG)Pbn*wY2h%)CgR`Ql(?LHUs)zmsdhwa!4^Wl86e5awY5AFbXSPf{)eku)1> z-H$N|3HhHNEVPenw>=#f5t*A=qYpyEykB7sNSPS0nZjUol5BnVeK6NvZT@NQ5y{cH z4874}!wB_qGfv&}FCsr;BiCgGYSoM@9i6sSJfKruuIA2KziE%q*#g)%`8`*L1QIuwqc!$37<+JD$=SJd+4wl# zol|SLa+SisDT$An2_tAcA?#8!6T{*1rQft`S6Ny0I3v)5JP#V4DJZJ^NgzNPxVseg z8e{>h&rp{1ku!5~ais)Ef-<}7>V#g39odHR)dUqGG-q?OYZpjlK+wvc(fph-uHE#`=2Q>{r!XFZq8J}!*8T?Ag@)2v_qQ~EJaqLmnG?ATNsg{4AV z+0dz!M8yJ}5{BZ)h`3}XVGd6zk*i4AVtfB*^&x1)Tlpt8j()a;?k$qKl^Os*R318< zSYK?tVC`*sj-T4MU~|b91E1U4a;bh>7rW*PYVu7UPoKkjfr!ca#F?H-XN1_>8E z^ch@+pEEDp$+@{51`3A9ml^l>DXs^i`B}_+3`Ihh>nECip2oRE<5$at^B+hKR*c0F z&iA!U`)^tgJaf3HETbCLO(iWpQ%Qgp6BTIx=PEx7djJ0Vy2BnQm}|)#f`<9*Y^>gA zTpXOMkkIp5cAa1G8)DYf1tBsiwP5=5%aS%pe5f(#71(BtFFvzhcorgkOdNANiY$Ww zYE!9K?+bL}_;J|vtBWPB`*#K9_4A>l~oywUoB9RzPMe&df4JBd4#BA}7@A>B~rr~BG2CER76(DY!tnOgD_CFjBW0|HTnDA=ppVws#o z92w3^olHoXe!j0*4{tfl13j`Cw)fEx^>pO4=%y>af3h~RL7yz-OFGae{z0v9D(e0F z;4wEI41kcEUdTSrr>wm^{C05sDQ;*0FB;Htn#9*8+}@7mX|hDpOBp@uG~4;uH7DtN zV5XJTzt~f#$G_q*$e}p_shxUWpIwO}H4a=*ITF_Kh(%p5qgB~>$j7s<&=zR!Po$`( zg}qRS?V~ON&0`88DGBxdH{J|9r4NJ}4oDZ;>vT&ttfr2rDH3BxF+D_78=gD=au|Od zY~Yw(9ZpWFfq&pcbKEC8%6~A0fSu@MU@u|-RbUYpC_{wr6hjNSn(A59_m8N z7gMg@_La_xM_ zekZdaeLjPR0o)nWonB@xHBQ~)RJ=%qFcTt3d&h(8D%mhD0|fIs`)I1g!Kag;dhWaX z%xXOCP++WK4}R$vxx$&h>C#tmRBOcKi4u|f#!J0U9rW*8kThqBth8ii_29mF$iJ%e zG|y^cM;sb(-};cmxc|*|YVeT!=bQ2;k-tB|h8TNM6y?1kr|N8<>5``N#-oZ*m6vD6|HB$E*PvkO8UZR3JAVhe|6CKohE@R$h$tjd=t_xi&W=R#+x1*Xx+za(+J#GnP`@QNGI+ z44|HFjMILQ{EEQx)MKLY&8!3TaAud5@P_1@ec)O<-na4)bsGQ786dr+1kxTDPy=FM z`uV0q`#1xf60nJgbd&diGDUob@O%@z=#emcmZcDT;h=Dn1A`B~J3UawJvA)ARqJ<( zJrRu(YIOsxYDACmw_djm?ZMozkq^N@rT=!X{KE8GDKvES9YsXQqFmRw!P_lNnx2-H z;7^qOrVkYyRBk!D1={HB{DCy)Qx^B}Nf{Py)lG!s}me{r)n8^Z@*xee6ox zQBqD$YysVmVoJa9gQ9Ex$}S0FZa-##@kEVQBe{ZTIY9*$jWEC=lLKYG+s{6msl4>U$2^3~nO*43Vy}g~_CZvX_P4ut??P^v zy*zGh?=tPXmnTsf;Q*SLkW%DFo6nVEEcfw}OsoVM(on##I|dlpoV_AHver$KXFiy|}Ux1%!()0Lw{e1xZl$>f~!F(n6j_MGD(^OxQ9W zswK-z$S>nklNY&BW2rXX-KnDyUR#pyx!=ACkvjH7KPRNz4zb1Ma<%g}5AY@N1bxsB zLG9HagJu*S5RU9R4sKL&pM$s8AWj-IVdE_+@0AtRj<`TMj!i%y3$#KQHejr(c^V`! zDGB_>vmiW=ex*%0MM&jYgJWQRI!`}q5~5=)OTns!!u@6)EexMJ=w-UM(z9WS^(ORJ zx2y7%U}^9m4h)P0qX5}7eaCq5;>QJ%npYp)*)kl)1n}ZHs%5*=O?zQyO%$Vcd)&xY>kQg^M&#=to7Yp-HkIu#hPysjR6Gp=}40XBZPJ6keQh+59E=xJ*F>_ zcz+)#?6-g&vtS)2BSD#NVK(3nO204=o;x9XFZ>66!+;uIcR5ldZ)ulZ9N%{+4|F_rt!N>l7Z#w4>~T)S(=MPF(^7Qv*= zC&A92ycUDG54uhFH%q`yXDNwyj^eT&9}Xo~>JXhHW=~!}&vn_s;A&=1`Rng9G;)L# z6htyQsO|guGz2>j)C}s~QTFSAk52S8+mO<2YkX@KY#}ac2gFiL^Qu8 z+jbn!p_otP&3OXF4u7ASJo1LcP@??_FIyT~9oVQM4`;Y6m5^PW)M{*-4Ng#ttn@Ma z+YcPNei1(g>ls*CwcI{^`Xt{UR^1*<pv6mCPH79+hm%4o`C@OI@q(?PXeY z7DGceSIK|9Sv~CIz2`!Oc$BKwn}cGHLJ8k?~cu!?B&Q3ZmqzIop1kIBO@Fg!))~t!y{@!_xT2DE?^F#IuWUl(p z+K%?7MW8f6%gd{-9Ql0G*Vk8iw{@6Rw;1OF6NiOr<(FQlc5CkMr_vC0T2p=b;-~AR zV=I>rXlBzxYz19}v<=Yv8b8Ad9x4lCOnQ2*_w9^;o6La+>$4)~C8#3Ak}c|NhGRRn zv#ok@*-QN5H1&Mzj)hrS@r!N~NT-Q4IR0G6I@+HX?^rc_uA1o!YxJp5BdF3IEZpA* zT_jeG>`I#MxySx-8{=8+;ro5*TI_$eQ3heS@_D%rv;8^2GEG7lU*=A&NfeaCqV=maJRhu#pS+7YmpC9PoZG=S$pc%*4X;Na zRRC1P`jD-8puVwc6&zxnc9~JD75WgL9;kJmkT0c?6MLi_R zAa1zZDh$KIFLTw2bZ9eCx@D8$wy3|hWrC;!%1seTLMxaC4ap(66t`d9uZ`D!hA%`u zL3#P7LctQ|=hXfDzAy6f!aX6|v?4AR^n|pxOE5ffHxA&seMkzg3f`;MDJs5QyV4<- z_Dw6hnfYRN(vSI6Q3t?gstGh!S6^FimG71l2LQCAy>qlP?DI_7WA*#fE2rn`Ll)CJ z9tJPe>)Fdia5pbWmvBwi`v+`(ORQq3!{ z>YQvR4=!nQiPbd@QPNl4B;q}IvmM!AF)!k}wA=V7Uw@BL;NEu4*nHTOU9zALO@nuo zt~tG*=L?}Zwa1F2e^aB8R5)QFc`kyn=zz+Lf7W7?BnFf*SKqFXv8aBoLYIF`*IIh# z-6;VLv73Q8Nf%Bg>WM#al=;B#1kZ#J_2b+C2Cz~if%Kf`xbuTCCE6T-X>5Fafr3t6 z)3yxgP5p!hY!6tYU3vqp`_97hCm$P-gw1GPUykGN*K=a0N?tiyG+`yCk2Wq)p)`aD2T9s;DGwUXiQ(}(3I-AF9ry1;*nba(Y! z)b_SkaAS7xsZ<~qh1s%3&F;=l>(TyJY)ni5C$*k(tKKue>l) z#>Ber^85}+sU_};6#jYAUT;8K>daF2ZKLQ=SX0gfr#4fk-$;0qLCl-sG7d!t(QwG!o54c3=30)&#zbxy>*gZv^h^9z_0g=FTA92KZMLb{BR++Avz-1_vg z9;wUs&+0M~bNKIoCoa9>0}%7<{Jdq-#X}isDDe&N#6+DI8#kr>phk0~K=bochiLv7 z_xQM1=Nu$=6#&*gg6>2XNaT2e+UM1)Q>j=B))vs?vI6}vId|OM`#3)V4DAI1BtTK3 zOe*dn0gSL(2&_*#9ee^S@^iqEJ+jv)(t03nG8?;&%*F*W2{h5GV ztZ#1C(Pr9ND_!%5b!GdQh{~ySjDwnmfT@pUFZ@p-2?Dx*vYH~}vVn!O@EaZx{e@U; zNS6Bh9yY1|-=aCqo3T?&94ShF;VYe-9!rRcfdIPIF}i3-IRUm3%wxN6(4IO!g2jLv zZ2RA{fP-$P1qe9aL>48>eT_f0%imuZ`MZS{u;N>ypb)VjSb&HS>i?ARfGeiMQ3?GY zWe5MhD>FYavXO)mJMaj+@O+N>6VCoU-k)V?jb@SkXvQAv;>Z75Tc;l_t3W;D^BmRM z82jJ1K*9_;tg9G~Segq@=|1L{HiAbpt8FY&QsKwo-gq^LC&os)7}c@{Yjewp)h#Z- zobk#PTGG_Vf##Na&htpO)aw$ zFRq2*_fu-c$o|*FNkNL0+?pKTf6q@EdjaP|32|v8oLR!glZn4;>Gw@);(|v}jpyEO zKM?CJ3|vG-M2ApO^0Rh64gI3N;$3;W(00k4Ht!0UR!9%V z9$fT2weS7EcGeRS0g-?DOq+r5z56KI`F}e;r|SxmJ&hqMSVU3ku_FI-s_D-q z2%C?)RTTmQAo2WSm7rreTRWfr2^#`~Kyo()6VST3BhQQWQG{E#Dj(_3?3{qD8;!~d zl*W9;=tg8mDZI(Op%%2_lqXMu0O7ccC_SHf#%JDPvb#Jgcj&giX?`CN0Az`1L*wUV z@BQMlUO(6Gq>8z942GFIOGHp|hrNC4AMFMFf)IG2z+(0d9T-tXo!_dHX@T~MI`r%# zH=I8M1;8;h^CQ*i)3hL|;jBrC*XF}P9VgD{nS$Nq=fOb>c(lTn3BWF#Zp$HF`aT2gY3R7CAY#nohoYjN%M)R{{FLd*pOeq_BDe?Nd3)H zKUz(=U7e~JL5_KMH_VZI;{kL#%a1aazX&WbZsi8X* zYA0WNvpZ&E0`#Y5zi{RUn`_jd+$!N?2$-caE~2!iy`c>6rWvxSL)k#Vc+ zF3cXLlpm_9s&*xGQ(O=^27{~M;Q)@v_EcWS1Z!CB;FNc*c+^^`g?kAL3oD;81?CiB z_=IKHxhpmE`a{x=)Iwk!WhhQUSVx+9@YE)dz+IbWtys;0ihB`RF7fQzGla~H;5hXx zxDtlc1%hW}v@}@)cGtl@f|-&hnSE`+I-HQUC6-D4sUAi{?widHjt;G$LjYG?wpZu# z{I@eIJ=Tl_4_lo2&VvSmdB>cZJ%vWh{7#I%q^=@2OqPB!IxKdMHaibb>lRXv4t-;* z(hEePG^V@atu=T(E*3;rgTIpwFy|{!PW0?#8QFAUhL@Fa@3-Rc z{3dC;%HyJ9TW~19tD8_m>w`6wkctOIfW)ahGilQB-jMZ$cf4DP$rfXq4PUpSAXc0Gqg;7HsXCn#HPP5PuGAcr+<}<^F?(YM@7Y)2j?k00! zjje5&hv8K$R!9m6XmQ?lZ!POcLZB39Rt$33hbXW{MMzP-31P#Q%-G+c=4#~7e_hDr z*89UZ4{QoqOIjEQ_<2o0)7kCv|cTmSqy*@*yHjrNXD%pb@!WnwE> z{`;#y3CQ@a+#Jb{`F9u-ZnVB)Vn#%KeY(TQ)!95ZrbZeXXNeKtLU6AY z##2(z`FrfwOzb0-?Rck z>p*Wc4n&#RG>@rfFa@k+Vh|Ojp7uK|8Uq~h4{^g1>2dIFrdqIH8wUDu2xa2?`35Ia z5j=)*XEMYO98tJ~RsfG8Chpgh!|9VA*hjN-bMtEo&$SWJOP+uD@S*2g!`@SibQy2( zSf@c>x>ag|3hHu!Ft1Ut4cnGQksNJ>)G~UzlHD(uk=1_lCsl3Q$F7liEbHhITES{c zjJB^l10teox9xF9fT{pavh+wjj3EE{<_-=H;Bt-yL?s#6csF1_nuFwnowK@}y+5rJ z2IdiT8)FY#1v6lH8}_aBG%eQt1lWhNU|0{R4&4ugC%|X+{riVxhz~Nx9@0z!dm6#d zL9jamrI7BG@mt9x@TSqkS_#s7)HsDomYK`~3&cil)Y5o+Ato8dX;IUv663W4j-uuSOrO>EBY+eZW zA#0GAos z0$YI@UV#aue6V-PH_wonnZoY59wrFck3~86^cye!yQZeSfX%;w3=JSW00TZJlQ^@d z#LjjRsyHB4sL*8$1~i&!%Kyao;-yP>Kynb_Fs1_vjej-SLL9*PcaWa=y{vTeM}`YU zGuWc;WQ<0-=|36!d+AB?3~w1_hU$aGV+vN zT?MSZw21tAp}orgRV%@|O$I7pUdI{f^+Y@cde0fuH=qFc3{Az6&Uah=(${kZ!9uGC zlvt*V;0+nyb+GT;)LPiqaU=Eb`>9U`@o4CM&K1U)5Dcr5#{2uu61yX&V2_EXVC~YC zi4ae{LVHu%E`$5+J6*AUm3Z^II~j)ikT6M;Jp&kJ4&uQ*Cw9s#omXn8VSzy&AgVkd zqy0{7`w-Fqw52|J%U|YVhBx}6uh`H$9z8q$?FQ}^?<%}A%u8l;IDdDlO(a3zm(}?} zfyN~hAhYc;?Hdjrmh6wY&!3&-?R$q?wX*&BMgQVDOyaV0imK>CJE+xG2}M|2$DD5j z;9E)oe`+3+fWG2H4qdJkd8*)LW{*W*3&h*hl_H%6J z>~yl4>$-oQzW*W;G%zr-BV?Ld5m@Oii&hvDMxjc8k)d29RUjmY7Fx8Vq%RD(`ucHI zG~oZaw&RPEv3SbXYg5qh{zlTKrKbZRP!IlWYPt=`A{733ak33Pao`p3>c5tzj3!^M zxHR!F!vrY=^Xe8B!+vEKiCuX=@$rShEkE!h_5?F=Z7t|P_X1zAs+&N?zlQjf39+-D z6GR_*HyPvKMvd&{MGw*YUi^KCzdtEWf;)JYDGu%QmIAD}`@8OIqD81|(Uyj7|3$DG wVN~h{P12wKC@3f=C!D3;+VBr7q+~`%>1q&|mgdRIho7J*%Bo&3mN5zXe={vd)&Kwi diff --git a/test/image/baselines/autorange-tozero-rangemode.png b/test/image/baselines/autorange-tozero-rangemode.png index ebc57f4d8d2cb67299417e0bda71bd7cec55e028..138d26a311bacea1e68e0251f83ae8f411723028 100644 GIT binary patch literal 29415 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 diff --git a/test/image/baselines/candlestick_double-y-axis.png b/test/image/baselines/candlestick_double-y-axis.png index 077f3b8fab026a7aacc8263ac32a3d42f5f7da30..34d4f43bab1122ba620e77231ac090a6704d68cf 100644 GIT binary patch literal 88020 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Ⓢ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

rD$4J?E?^ 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

Uv$KpvaVrsDBos>PeX!Z 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 z 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 P_$Mu{Aofw@#ryvQ^xjuV literal 88620 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 z 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

+TD;+s6_P7 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


aiQcIg% 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

  • H1>@)IGgw8oWZH?+w%(3 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 aAtKl&DH*#zb{z+w5U47tE9T0Z-~K--pG9u~ literal 55597 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%0Ay{*P~8*TOHxyxJXa8DeO$#8_^$V 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 E4`9TjMF0Q* diff --git a/test/image/baselines/multicategory_series.png b/test/image/baselines/multicategory_series.png index dfbe24abe2e48856be19bb53f9289121bfe43fc3..7e4b0c8edf018f907e9b4a1aecdf787fb72dccf0 100644 GIT binary patch literal 41355 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 literal 42312 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 Lzv`xi+tL34Gj|k8 diff --git a/test/image/baselines/range_slider_legend_left.png b/test/image/baselines/range_slider_legend_left.png index 9eb5c4457ffd2345f27338313d592066e3c9b6e7..d35f8c99b28b075d36da056d3c28d059b4adfc49 100644 GIT binary patch literal 49580 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 literal 50502 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�s!3u?*$0a5 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 N*vWR^R=PDH?mw-ZlZF5Q literal 22452 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 oE~NYapGWS@dLV-hRBmdKI;Vst0N9VPHvj+t diff --git a/test/image/baselines/zerolinelayer_above.png b/test/image/baselines/zerolinelayer_above.png index 10fca3a7e8c5959f799a9e4683535ed0b598e78c..6e4490680da95a0aa45c24c1a80aeb9dfb1099d4 100644 GIT binary patch literal 27481 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 YS(26%!{b;@;1`&ZoVsk$O|yXi1IQOe)&Kwi literal 27127 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 diff --git a/test/image/baselines/zerolinelayer_below.png b/test/image/baselines/zerolinelayer_below.png index d011848fa65507b61e6fb17db0bca7a307cd30d6..9e43516c1837d28c0778bafbbf075f59f6beb937 100644 GIT binary patch literal 27697 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 KS>1&dxBbNn1<~`^UPJ{QmkVLXiE{ zsu@C%zy8gtwCQ&{5eg%;qL?8OGA9B)k9g^iRSeX7|Ndi<1)9TtbJ$SvhzEZM*1Mm` z6AO+}^k-|Y{#_xWt_x=9<@yF@ux$oz?$93J;_4$16#(K-B30Zhg zE|H*fT|*f-A3ZINm65xTsH4Pfp(S+iVyY3tJB(i|$yCgeaVt+0Cy3|+4TzeE7|Yq> zVFp12f(-hap5!YTPgbI9FtUu89fqm-Jf41%hqHg~VmfynzXb({r4auEp=i#~NQp4# zqnPrA`x8*{!4c6$yrE6S9xWLcF}F!!9cA?2<8>I52uOul1RQsM5uvshKsL7?WU2`J z?dcQ3yQM9>cyNYnAZy#?IC}B(eUOXTybu+GYBS1GCv(;aTfPWo2csAB7I~7 z-Ov0L3ne0rGTse0uCw2qz$h@CGXTqAvQ30v{*8SjzlDN%jP^xAcmJ2^#*#=kxNhZo zrQc)40PEGODy#l;j?w9uw(!b}4nKTv!JdwgSZ-!8vo}UbqAkL@9&odBD-1WZhs0{z z+>2G03Pj%`j+{fe*5A~AbsnL44Mr_$Vr3q<2lKN75i`iMv4!cK60D}TS$HSD5r=(M zJ8{*kk*;bcjqc+fzK1Z}<@fv7t1qLgNf2CWja4Ym7Pp>K?2`!0wh0p}nHA}U>I)7(1U)u&Y-pDII$y2t zZx%`J7=C@(qn*oPvvnT%C}OZ@Z%38_27saIsiG#V)hwNG2*Q=fcF}65zEXj zBKqm?%?2oaS0r&3)^n(KiV5QJr5vwur=kIGPZB1G-RDZ&>Ckt0;m&od?~@L_@iTMk zp}EP~RL4~XjBE!9IHkCzQiXT<((d|@`F(jBy&AllL)31}!UBKEtg?W8UGG~;;72AD zM3WukEk=!JJp%u=K{mFCzf;BaswBjEAo(__jUq2wMw0C{8ygZfA!bhaDK=2h*QS(- zM+i35DtDJ#Qz+Gtyw~lKROMqDKMPNUb-u(Uo_p?TBNIybL+HWivtMOe?9X>m-buti73Upl|JG_QlcbP1%e$ zB!T1MdAvMwaKy#3T-^NYr@Mk_F35i+R(~Ud9%qV+pXgk*)S(PirFdt*D>oj+IX;)& zN_Q3$*u>H?lg^>tNN&IVWWQYxv!sCbA7qaj%$)u&I0vSm{%gH z=<~}s7o70qFw35~_Z5lTOgrWeO|Cty9)I(*JEr()l61WC)5u_P92d`{`_pm~@Wh~m z(vh6W=?$2U$Y$$Th3s@m>>~un0{+bIoJP&)Ve9?iJMd5vho-m8 z8zo+Xh)uKT8&$KS2nLtJB2iG`359sp1%%5vLY!iR)z9CYUkzX>p(AdXRNF9YoKr!F z-bLT$@q108yGLi!b4$Eu6y{epED-Wb+LQkGfa|scs@+WFxzuIngrSVGch=fp3%0-B z&ATOU#lS$_Td5eXB4Y>kk?=~qDZ@L~^GaSFhBZd$soa1-GY(0FsC0^(-gx`ne6M|+ zcNZ3~xw)x<|E_dM-!!fs#*?tpxzZo0rujkF&Cu?GN%@8tso=h?i7PWV{1q|tRXtKo zZ!DWe!A@N0T6Vjl)ds?_kV)W=G9uhx{HYMSiuYj+neJa&o8M9XE&nVm?88@+28EO@ zCbvY~<6rOWC~$>!zm;ViH@®u^$Vu{$WiH7FrWc@LW$rmA7Oa&G)xuf1==kb7M( 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 literal 27334 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 AV*mgE From e31670a55ccb16a7df535726e71d73cd73de12c1 Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Tue, 9 Jun 2026 15:01:54 -0400 Subject: [PATCH 121/241] remove now-redundant argument from Plots.graphJson call Co-authored-by: Mojtaba Samimi <33888540+archmoj@users.noreply.github.com> --- src/plots/plots.js | 2 +- test/jasmine/tests/plots_test.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/plots/plots.js b/src/plots/plots.js index 62a4eb82101..196e665724a 100644 --- a/src/plots/plots.js +++ b/src/plots/plots.js @@ -139,7 +139,7 @@ plots.sendDataToCloud = function(gd) { name: 'data' }); - hiddenformInput.node().value = plots.graphJson(gd, false); + hiddenformInput.node().value = plots.graphJson(gd); hiddenform.node().submit(); hiddenformDiv.remove(); diff --git a/test/jasmine/tests/plots_test.js b/test/jasmine/tests/plots_test.js index dca03e00302..c7111a9d9ef 100644 --- a/test/jasmine/tests/plots_test.js +++ b/test/jasmine/tests/plots_test.js @@ -578,7 +578,7 @@ describe('Test Plots', function() { }; Plotly.newPlot(gd, mock).then(function() { - var str = Plots.graphJson(gd, false); + var str = Plots.graphJson(gd); var obj = JSON.parse(str); expect(obj.data).toEqual(mock.data); @@ -612,7 +612,7 @@ describe('Test Plots', function() { }; Plotly.newPlot(gd, [trace]).then(function() { - var str = Plots.graphJson(gd, false); + var str = Plots.graphJson(gd); var obj = JSON.parse(str); expect(obj.data[0].x).toEqual([1, 2, 3]); From 17ee326292a82f7ddb13ea77c8a4149eaa497ba4 Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Tue, 9 Jun 2026 15:10:26 -0400 Subject: [PATCH 122/241] add explicit defaults for graphJson function --- src/plots/plots.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/plots/plots.js b/src/plots/plots.js index 196e665724a..2378020e5de 100644 --- a/src/plots/plots.js +++ b/src/plots/plots.js @@ -1971,13 +1971,13 @@ plots.didMarginChange = function(margin0, margin1) { * get saved. * * @param gd The graphDiv - * @param {Boolean} dataonly If true, don't return layout. - * @param {String} output If you specify 'object', the result will not be stringified - * @param {Boolean} useDefaults If truthy, use _fullLayout and _fullData - * @param {Boolean} includeConfig If truthy, include _context + * @param {Boolean} [dataonly=false] If true, don't return layout. + * @param {String} [output='json'] If set to 'object', return result as a JS Object, otherwise return as a JSON string + * @param {Boolean} [useDefaults=false] If truthy, use _fullLayout and _fullData (after supplyDefaults step) + * @param {Boolean} [includeConfig=false] If truthy, include _context * @returns {Object|String} */ -plots.graphJson = function(gd, dataonly, output, useDefaults, includeConfig) { +plots.graphJson = function(gd, dataonly = false, output = 'json', useDefaults = false, includeConfig = false) { // if the defaults aren't supplied yet, we need to do that... if((useDefaults && dataonly && !gd._fullData) || (useDefaults && !dataonly && !gd._fullLayout)) { From 1c903d275abcc3e3c9a46653591333b210e0652b Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Tue, 9 Jun 2026 15:14:57 -0400 Subject: [PATCH 123/241] clean up draftlogs --- draftlogs/7623_change.md | 1 - draftlogs/7829_change.md | 1 + draftlogs/7829_remove.md | 1 + 3 files changed, 2 insertions(+), 1 deletion(-) delete mode 100644 draftlogs/7623_change.md create mode 100644 draftlogs/7829_change.md create mode 100644 draftlogs/7829_remove.md diff --git a/draftlogs/7623_change.md b/draftlogs/7623_change.md deleted file mode 100644 index 44d984988e2..00000000000 --- a/draftlogs/7623_change.md +++ /dev/null @@ -1 +0,0 @@ -- Remove all `*src` attributes, as well as `layout.hidesources` attribute, from the schema. Change signature of `plots.graphJson()` function to remove `mode` argument [[#7623](https://github.com/plotly/plotly.js/pull/7623)] diff --git a/draftlogs/7829_change.md b/draftlogs/7829_change.md new file mode 100644 index 00000000000..4f33397d561 --- /dev/null +++ b/draftlogs/7829_change.md @@ -0,0 +1 @@ +- Change signature of `plots.graphJson()` function to remove `mode` argument [[#7829](https://github.com/plotly/plotly.js/pull/7829)] diff --git a/draftlogs/7829_remove.md b/draftlogs/7829_remove.md new file mode 100644 index 00000000000..1ae3e694a5b --- /dev/null +++ b/draftlogs/7829_remove.md @@ -0,0 +1 @@ +- Remove all `*src` attributes, as well as `layout.hidesources` attribute, from the schema [[#7829](https://github.com/plotly/plotly.js/pull/7829)] From 10997dd056a4382add805333876e77ee993f8255 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Tue, 9 Jun 2026 16:30:38 -0600 Subject: [PATCH 124/241] Add more checks to handle bad input --- src/components/color/index.js | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/components/color/index.js b/src/components/color/index.js index a9c6ea27508..2a9d7a77786 100644 --- a/src/components/color/index.js +++ b/src/components/color/index.js @@ -3,9 +3,10 @@ const isNumeric = require('fast-isnumeric'); const { isTypedArray } = require('../../lib/array'); const { background, defaultLine, defaults, lightLine } = require('./attributes'); -// Safe wrapper: falls back to black instead of throwing on invalid input. -// This matches the tinycolor2 behavior. +// Safe wrapper: falls back to black instead of throwing on invalid input, +// and trims surrounding whitespace from string inputs. const color = (cstr) => { + if (typeof cstr === 'string') cstr = cstr.trim(); try { return _color(cstr); } catch (e) { @@ -28,7 +29,8 @@ const addOpacity = (cstr, op) => { // combine two colors into one apparent color // if back has transparency or is missing, // background is assumed behind it -const combine = (front, back = background) => { +const combine = (front, back) => { + back ||= background; const fc = color(front).rgb().object(); fc.alpha ??= 1; if (fc.alpha === 1) return color(front).rgb().string(); @@ -181,17 +183,17 @@ const cleanOne = (val) => { return 'rgb(' + rgbStr + ')'; }; -const equals = (cstr1, cstr2) => cstr1 && cstr2 && color(cstr1).rgb().string() === color(cstr2).rgb().string(); +const equals = (cstr1, cstr2) => !!(cstr1 && cstr2 && color(cstr1).rgb().string() === color(cstr2).rgb().string()); const isValid = (cstr) => { + if (typeof cstr !== 'string') return false; try { - return cstr && !!_color(cstr); + return !!_color(cstr.trim()); } catch { return false; } }; -// RGB-space brightening equivalent to tinycolor's brighten(). // Adds a fixed amount to each RGB channel (unlike lighten which works in HSL space). const brighten = (cstr, amount) => { amount = amount === 0 ? 0 : amount || 10; From f2a4dd7e33e8f63681044ba839b2c487f3cf9e1b Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Tue, 9 Jun 2026 16:31:15 -0600 Subject: [PATCH 125/241] Update tests to better catch bad input --- test/jasmine/tests/lib_test.js | 4 ++-- test/jasmine/tests/range_slider_test.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/test/jasmine/tests/lib_test.js b/test/jasmine/tests/lib_test.js index 72e93a54e6c..fe1f6b71f0c 100644 --- a/test/jasmine/tests/lib_test.js +++ b/test/jasmine/tests/lib_test.js @@ -1149,7 +1149,7 @@ describe('Test lib.js:', function () { fontWithDefault: { family: '', size: 'a million', - color: 'invalid', + color: 42, weight: 'BIG', style: 'Nice', variant: false, @@ -1558,7 +1558,7 @@ describe('Test lib.js:', function () { it("should work for valType 'color' where", function () { var shouldPass = ['red', '#d3d3d3', 'rgba(0,255,255,0.1)']; - var shouldFail = ['invalid', {}, [], 'rgq(233,122,332,1)', null, undefined]; + var shouldFail = [1, {}, [], 'rgq(233,122,332,1)', null, undefined]; assert(shouldPass, shouldFail, { valType: 'color' diff --git a/test/jasmine/tests/range_slider_test.js b/test/jasmine/tests/range_slider_test.js index 4407763831a..fed44189d9a 100644 --- a/test/jasmine/tests/range_slider_test.js +++ b/test/jasmine/tests/range_slider_test.js @@ -759,8 +759,8 @@ describe('Rangeslider handleDefaults function', function() { var layoutIn = { xaxis: { rangeslider: { visible: 'invalid', thickness: 'invalid', - bgcolor: 'invalid', - bordercolor: 'invalid', + bgcolor: 42, + bordercolor: 42, borderwidth: 'superfat' }}}; var layoutOut = { xaxis: {} }; From 36065d31cea048811f4d5f64b5cce11910d6f370 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Tue, 9 Jun 2026 16:38:45 -0600 Subject: [PATCH 126/241] Update descriptions --- src/components/colorscale/attributes.js | 2 +- src/lib/coerce.js | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/components/colorscale/attributes.js b/src/components/colorscale/attributes.js index 97213e5e839..cd41e6ecbe1 100644 --- a/src/components/colorscale/attributes.js +++ b/src/components/colorscale/attributes.js @@ -188,7 +188,7 @@ module.exports = function colorScaleAttrs(context, opts) { 'Sets the colorscale.' + effectDesc, 'The colorscale must be an array containing', 'arrays mapping a normalized value to an', - 'rgb, rgba, hex, hsl, or named color string.', + 'rgb, rgba, hex, hsl, hsla, hwb, or named color string.', 'At minimum, a mapping for the lowest (0) and highest (1)', 'values are required. For example,', "`[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`.", diff --git a/src/lib/coerce.js b/src/lib/coerce.js index 6dd5d903f60..9b702271893 100644 --- a/src/lib/coerce.js +++ b/src/lib/coerce.js @@ -160,10 +160,12 @@ exports.valObjectMeta = { description: [ 'A string describing color.', 'Supported formats:', - "- hex (e.g. '#d3d3d3', '#d3d3d3aa)", + "- hex (e.g. '#d3d3d3', '#d3d3d3aa')", "- rgb (e.g. 'rgb(255, 0, 0)', 'rgb(255 0 0)')", "- rgba (e.g. 'rgba(255, 0, 0, 0.5)', 'rgba(255 0 0 / 0.5)')", - '- hsl (e.g. \'hsl(0, 100%, 50%)\')', + "- hsl (e.g. 'hsl(0, 100%, 50%)')", + "- hsla (e.g. 'hsla(0, 100%, 50%, 0.5)')", + "- hwb (e.g. 'hwb(0, 0%, 0%)')", '- named colors (full list: http://www.w3.org/TR/css3-color/#svg-color)' ].join(' '), requiredOpts: [], From 93a8217371ac78d8f3c5cce2aa83f78225f5c4b8 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Tue, 9 Jun 2026 16:39:00 -0600 Subject: [PATCH 127/241] Add draftlog --- draftlogs/7536_change.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 draftlogs/7536_change.md diff --git a/draftlogs/7536_change.md b/draftlogs/7536_change.md new file mode 100644 index 00000000000..23e80bd74e5 --- /dev/null +++ b/draftlogs/7536_change.md @@ -0,0 +1 @@ +- Switch color processing library from [TinyColor](https://github.com/bgrins/TinyColor) to [color](https://github.com/Qix-/color) [[#7536](https://github.com/plotly/plotly.js/pull/7536)] From 6acbf59167895c123dd797caf6467432b37337af Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Tue, 9 Jun 2026 16:45:15 -0600 Subject: [PATCH 128/241] Update schema and types --- src/types/generated/schema.d.ts | 70 ++++++++++---------- test/plot-schema.json | 110 ++++++++++++++++---------------- 2 files changed, 90 insertions(+), 90 deletions(-) diff --git a/src/types/generated/schema.d.ts b/src/types/generated/schema.d.ts index 1e05da351d0..b9627516977 100644 --- a/src/types/generated/schema.d.ts +++ b/src/types/generated/schema.d.ts @@ -598,7 +598,7 @@ export namespace _internal { /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ coloraxis?: string; /** - * Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. * Setting this also sets: autocolorscale = false */ colorscale?: ColorScale; @@ -658,7 +658,7 @@ export namespace _internal { coloraxis?: string; colorbar?: ColorBar; /** - * Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. * Setting this also sets: autocolorscale = false */ colorscale?: ColorScale; @@ -881,7 +881,7 @@ export interface BarData { coloraxis?: string; colorbar?: ColorBar; /** - * Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. * Setting this also sets: autocolorscale = false */ colorscale?: ColorScale; @@ -1137,7 +1137,7 @@ export interface BarpolarData { coloraxis?: string; colorbar?: ColorBar; /** - * Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. * Setting this also sets: autocolorscale = false */ colorscale?: ColorScale; @@ -2292,7 +2292,7 @@ export interface ChoroplethData { coloraxis?: string; colorbar?: ColorBar; /** - * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. * Setting this also sets: autocolorscale = false */ colorscale?: ColorScale; @@ -2445,7 +2445,7 @@ export interface ChoroplethmapData { coloraxis?: string; colorbar?: ColorBar; /** - * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. * Setting this also sets: autocolorscale = false */ colorscale?: ColorScale; @@ -2593,7 +2593,7 @@ export interface ChoroplethmapboxData { coloraxis?: string; colorbar?: ColorBar; /** - * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. * Setting this also sets: autocolorscale = false */ colorscale?: ColorScale; @@ -2761,7 +2761,7 @@ export interface ConeData { coloraxis?: string; colorbar?: ColorBar; /** - * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. * Setting this also sets: autocolorscale = false */ colorscale?: ColorScale; @@ -2916,7 +2916,7 @@ export interface ContourData { coloraxis?: string; colorbar?: ColorBar; /** - * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. * Setting this also sets: autocolorscale = false */ colorscale?: ColorScale; @@ -3259,7 +3259,7 @@ export interface ContourcarpetData { coloraxis?: string; colorbar?: ColorBar; /** - * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. * Setting this also sets: autocolorscale = false */ colorscale?: ColorScale; @@ -3472,7 +3472,7 @@ export interface DensitymapData { coloraxis?: string; colorbar?: ColorBar; /** - * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. * Setting this also sets: autocolorscale = false */ colorscale?: ColorScale; @@ -3598,7 +3598,7 @@ export interface DensitymapboxData { coloraxis?: string; colorbar?: ColorBar; /** - * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. * Setting this also sets: autocolorscale = false */ colorscale?: ColorScale; @@ -3835,7 +3835,7 @@ export interface FunnelData { coloraxis?: string; colorbar?: ColorBar; /** - * Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. * Setting this also sets: autocolorscale = false */ colorscale?: ColorScale; @@ -4121,7 +4121,7 @@ export interface HeatmapData { coloraxis?: string; colorbar?: ColorBar; /** - * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. * Setting this also sets: autocolorscale = false */ colorscale?: ColorScale; @@ -4526,7 +4526,7 @@ export interface HistogramData { coloraxis?: string; colorbar?: ColorBar; /** - * Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. * Setting this also sets: autocolorscale = false */ colorscale?: ColorScale; @@ -4709,7 +4709,7 @@ export interface Histogram2dData { coloraxis?: string; colorbar?: ColorBar; /** - * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. * Setting this also sets: autocolorscale = false */ colorscale?: ColorScale; @@ -4924,7 +4924,7 @@ export interface Histogram2dcontourData { coloraxis?: string; colorbar?: ColorBar; /** - * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. * Setting this also sets: autocolorscale = false */ colorscale?: ColorScale; @@ -5272,7 +5272,7 @@ export interface IcicleData { /** Sets the color of each sector of this trace. If not specified, the default trace color set is used to pick the sector colors. */ colors?: Datum[] | Datum[][] | TypedArray; /** - * Sets the colorscale. Has an effect only if colors is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Sets the colorscale. Has an effect only if colors is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. * Setting this also sets: autocolorscale = false */ colorscale?: ColorScale; @@ -5856,7 +5856,7 @@ export interface IsosurfaceData { coloraxis?: string; colorbar?: ColorBar; /** - * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. * Setting this also sets: autocolorscale = false */ colorscale?: ColorScale; @@ -6132,7 +6132,7 @@ export interface Mesh3dData { coloraxis?: string; colorbar?: ColorBar; /** - * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. * Setting this also sets: autocolorscale = false */ colorscale?: ColorScale; @@ -6609,7 +6609,7 @@ export interface ParcatsData { coloraxis?: string; colorbar?: ColorBar; /** - * Sets the colorscale. Has an effect only if in `line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `line.cmin` and `line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Sets the colorscale. Has an effect only if in `line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `line.cmin` and `line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. * Setting this also sets: autocolorscale = false */ colorscale?: ColorScale; @@ -6752,7 +6752,7 @@ export interface ParcoordsData { coloraxis?: string; colorbar?: ColorBar; /** - * Sets the colorscale. Has an effect only if in `line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `line.cmin` and `line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Sets the colorscale. Has an effect only if in `line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `line.cmin` and `line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. * @default [[0,"#440154"],[0.06274509803921569,"#48186a"],[0.12549019607843137,"#472d7b"],[0.18823529411764706,"#424086"],[0.25098039215686274,"#3b528b"],[0.3137254901960784,"#33638d"],[0.3764705882352941,"#2c728e"],[0.4392156862745098,"#26828e"],[0.5019607843137255,"#21918c"],[0.5647058823529412,"#1fa088"],[0.6274509803921569,"#28ae80"],[0.6901960784313725,"#3fbc73"],[0.7529411764705882,"#5ec962"],[0.8156862745098039,"#84d44b"],[0.8784313725490196,"#addc30"],[0.9411764705882353,"#d8e219"],[1,"#fde725"]] * Setting this also sets: autocolorscale = false */ @@ -7014,7 +7014,7 @@ export interface SankeyData { */ cmin?: number; /** - * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. * @default [[0,"white"],[1,"black"]] * Setting this also sets: autocolorscale = false */ @@ -7655,7 +7655,7 @@ export interface Scatter3dData { coloraxis?: string; colorbar?: ColorBar; /** - * Sets the colorscale. Has an effect only if in `line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `line.cmin` and `line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Sets the colorscale. Has an effect only if in `line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `line.cmin` and `line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. * Setting this also sets: autocolorscale = false */ colorscale?: ColorScale; @@ -7710,7 +7710,7 @@ export interface Scatter3dData { coloraxis?: string; colorbar?: ColorBar; /** - * Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. * Setting this also sets: autocolorscale = false */ colorscale?: ColorScale; @@ -7742,7 +7742,7 @@ export interface Scatter3dData { /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ coloraxis?: string; /** - * Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. * Setting this also sets: autocolorscale = false */ colorscale?: ColorScale; @@ -8287,7 +8287,7 @@ export interface ScattergeoData { coloraxis?: string; colorbar?: ColorBar; /** - * Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. * Setting this also sets: autocolorscale = false */ colorscale?: ColorScale; @@ -8856,7 +8856,7 @@ export interface ScattermapData { coloraxis?: string; colorbar?: ColorBar; /** - * Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. * Setting this also sets: autocolorscale = false */ colorscale?: ColorScale; @@ -9116,7 +9116,7 @@ export interface ScattermapboxData { coloraxis?: string; colorbar?: ColorBar; /** - * Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. * Setting this also sets: autocolorscale = false */ colorscale?: ColorScale; @@ -10202,7 +10202,7 @@ export interface StreamtubeData { coloraxis?: string; colorbar?: ColorBar; /** - * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. * Setting this also sets: autocolorscale = false */ colorscale?: ColorScale; @@ -10446,7 +10446,7 @@ export interface SunburstData { /** Sets the color of each sector of this trace. If not specified, the default trace color set is used to pick the sector colors. */ colors?: Datum[] | Datum[][] | TypedArray; /** - * Sets the colorscale. Has an effect only if colors is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Sets the colorscale. Has an effect only if colors is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. * Setting this also sets: autocolorscale = false */ colorscale?: ColorScale; @@ -10548,7 +10548,7 @@ export interface SurfaceData { coloraxis?: string; colorbar?: ColorBar; /** - * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. * Setting this also sets: autocolorscale = false */ colorscale?: ColorScale; @@ -11111,7 +11111,7 @@ export interface TreemapData { /** Sets the color of each sector of this trace. If not specified, the default trace color set is used to pick the sector colors. */ colors?: Datum[] | Datum[][] | TypedArray; /** - * Sets the colorscale. Has an effect only if colors is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Sets the colorscale. Has an effect only if colors is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. * Setting this also sets: autocolorscale = false */ colorscale?: ColorScale; @@ -11600,7 +11600,7 @@ export interface VolumeData { coloraxis?: string; colorbar?: ColorBar; /** - * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. * Setting this also sets: autocolorscale = false */ colorscale?: ColorScale; @@ -12120,7 +12120,7 @@ export interface ColorAxis { cmin?: number; colorbar?: ColorBar; /** - * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. * Setting this also sets: autocolorscale = false */ colorscale?: ColorScale; diff --git a/test/plot-schema.json b/test/plot-schema.json index 9152fb2f517..e5d87d334be 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -433,7 +433,7 @@ "requiredOpts": [] }, "color": { - "description": "A string describing color. Supported formats: - hex (e.g. '#d3d3d3', '#d3d3d3aa) - rgb (e.g. 'rgb(255, 0, 0)', 'rgb(255 0 0)') - rgba (e.g. 'rgba(255, 0, 0, 0.5)', 'rgba(255 0 0 / 0.5)') - hsl (e.g. 'hsl(0, 100%, 50%)') - named colors (full list: http://www.w3.org/TR/css3-color/#svg-color)", + "description": "A string describing color. Supported formats: - hex (e.g. '#d3d3d3', '#d3d3d3aa') - rgb (e.g. 'rgb(255, 0, 0)', 'rgb(255 0 0)') - rgba (e.g. 'rgba(255, 0, 0, 0.5)', 'rgba(255 0 0 / 0.5)') - hsl (e.g. 'hsl(0, 100%, 50%)') - hsla (e.g. 'hsla(0, 100%, 50%, 0.5)') - hwb (e.g. 'hwb(0, 0%, 0%)') - named colors (full list: http://www.w3.org/TR/css3-color/#svg-color)", "otherOpts": [ "dflt", "arrayOk" @@ -1813,7 +1813,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -17839,7 +17839,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -17912,7 +17912,7 @@ "valType": "subplotid" }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -19883,7 +19883,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -19951,7 +19951,7 @@ "valType": "subplotid" }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -24927,7 +24927,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -26208,7 +26208,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -27479,7 +27479,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -28789,7 +28789,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -30128,7 +30128,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -31945,7 +31945,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -33153,7 +33153,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -34362,7 +34362,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -36245,7 +36245,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -36313,7 +36313,7 @@ "valType": "subplotid" }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -38856,7 +38856,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -41210,7 +41210,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -41283,7 +41283,7 @@ "valType": "subplotid" }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -42655,7 +42655,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -44153,7 +44153,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -46531,7 +46531,7 @@ "valType": "data_array" }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if colors is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if colors is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -49854,7 +49854,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -51368,7 +51368,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -53969,7 +53969,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `line.cmin` and `line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `line.cmin` and `line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -55240,7 +55240,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `line.cmin` and `line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `line.cmin` and `line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": [ [ 0, @@ -57527,7 +57527,7 @@ "valType": "number" }, "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": [ [ 0, @@ -59987,7 +59987,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -60089,7 +60089,7 @@ "valType": "subplotid" }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -62637,7 +62637,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `line.cmin` and `line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `line.cmin` and `line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -63347,7 +63347,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -63415,7 +63415,7 @@ "valType": "subplotid" }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -65174,7 +65174,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -65275,7 +65275,7 @@ "valType": "subplotid" }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -67481,7 +67481,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -67582,7 +67582,7 @@ "valType": "subplotid" }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -69903,7 +69903,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -69971,7 +69971,7 @@ "valType": "subplotid" }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -72225,7 +72225,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -73762,7 +73762,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -75282,7 +75282,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -75383,7 +75383,7 @@ "valType": "subplotid" }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -77562,7 +77562,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -77630,7 +77630,7 @@ "valType": "subplotid" }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -79766,7 +79766,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -79867,7 +79867,7 @@ "valType": "subplotid" }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -82085,7 +82085,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -82186,7 +82186,7 @@ "valType": "subplotid" }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -84335,7 +84335,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -84403,7 +84403,7 @@ "valType": "subplotid" }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -85838,7 +85838,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -87894,7 +87894,7 @@ "valType": "data_array" }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if colors is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if colors is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -89158,7 +89158,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -92482,7 +92482,7 @@ "valType": "data_array" }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if colors is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if colors is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -95497,7 +95497,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { From 58c2017ae341195be3e53785dc38514e3633f068 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Tue, 9 Jun 2026 16:48:56 -0600 Subject: [PATCH 129/241] Add new mock and baseline --- test/image/baselines/color_syntax_formats.png | Bin 0 -> 25829 bytes test/image/mocks/color_syntax_formats.json | 71 ++++++++++++++++++ 2 files changed, 71 insertions(+) create mode 100644 test/image/baselines/color_syntax_formats.png create mode 100644 test/image/mocks/color_syntax_formats.json diff --git a/test/image/baselines/color_syntax_formats.png b/test/image/baselines/color_syntax_formats.png new file mode 100644 index 0000000000000000000000000000000000000000..f8dca16afe85ec21ca9f945ce605548dde55805d GIT binary patch literal 25829 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 Date: Tue, 9 Jun 2026 17:01:46 -0600 Subject: [PATCH 130/241] Update baseline image --- test/image/baselines/color_syntax_formats.png | Bin 25829 -> 25891 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/test/image/baselines/color_syntax_formats.png b/test/image/baselines/color_syntax_formats.png index f8dca16afe85ec21ca9f945ce605548dde55805d..557e514182d7ed85cb174886f6112459de972ebc 100644 GIT binary patch literal 25891 zcmZsDbyQUE_ce?l2r8(Ag<#R4q>_UuDy?)Y(y4Svsvs($AT1>wLw8#s-9v}c-8Izj zT*QyxcdhpymTSECK7G#F`|R_0%gNk5Msk(}4-fCy{d>0`;^Co6@$m3hh!4XrgQ~lO zczEP^_iu|T*yGRiA1PIo->Y66ENVCuc#AmHo59LkkhAI1Qi#NBDcO_$N11f#Lzi^l z9ljz@{2*rhI(_H`&Jk@{W~L8g#d}+td45*1>jODWLR)<~>o=pcFji~bPMEw-#|-&( zJFKeH;OEi0VCsNtLqe5KZtHmS_ydPZiR{T1F8u6VM}Jr(!Y3d{SJtD^c<_&(%J`^( z=QOIgS9mC5Iyd;EAWlbCN4_xjE4uY6JcvAm#&fSAAhzGjeng5-uub~@)Suse5|b~8 z>n9m99=!Qd){W|psGA!fN$l-&Cl21kCtzknSE?KFlUy3ocKh_F4Z8ON&}?6~mHwX= zNTl6%FTrO~1D`Uj9{y`JX39r|Yeui0&K z##}c(5pf@_f8X1nq8nP3z9SA#(M1tVkV5NnH=rl4xUee}`||;R81K2092)STh-o_* zCw$)FD!MXU`P+R1cu^9i@D`b8^2ab#VzLX;cmH-RMTsuV;PQ~qSYeCte;vV(f(C?R zetP1eb_sua@2?O#1Xki3_t{*+gGQI`yOqDZ4THUMNR;dEdf^jf!;FN}C>!6YtiZc@ zuo!fy@IBShc*}zp7Ff{21ldUc*i@(P{Ot-k@hd!h3r0_O@eOJ^hJ&@GdmjluI%|O&9+iv2CwNXuzJN=(bouW?ZfFWZV*A(|#=E^zGJl5=Jp{jz?y}(_{g)#~t(?Fo zAW?;dcz-vl{4%l<$Sf1mK{u}bG(}eA&*Y6nL5sUSOhUJyNlwaWLHPZ>GK|21=aco} zzf+E;Q;lB2x3H8h6~}W=BQ4#VI2U0Hgz=8M07tW}+}P@QhjMk+tb8Tq=sLpi z=@E-^y2f~j?F7sC+H7yHmeZ`B7p+U->TGW(H%r(8PuTW7t1f!(ctQAiVYsSH zeeCRf`Br12@Rn(>L6mcvW{Ius4@%{aDYB9rxkrchcIWp@yD}eRv!2{7==<%uw-u!x z6!Rp2K{j8j%(45T*LfX`T3)tH1b=9dMbfUq#JLCqv$3ySyw<176ViH+vnd2}k#~mt{+K)_OI!Rv%x9yl5o$qz$9ar)S*eo7zYa-ccHU?&Oz6m5Sn4WA)E+5}-GOv%MA-HhSxWuCDSzVKqCr z>5O5$yxU^5&#U}s=hGAimK7?@izn&%jysYWni3s9Z|JCywQwr=-PD#SYnM}uBVX$_h$?!{KmPRxX7QQf{-7b|~ ziJWhV^`d!Ni9ffKu6C|RseotfD_1N~?F}@JHxx9{W{ir69z2^c8m4`6W z;k*fEt2F{zA5lJ~hv0#`lMk=xhR{dA(_8 z2g*ujGrt{Q`+iEc5Ks0?Dr$UhcfDd!P|qyMCq>fT7iYCO8r*B!YewCaVuhQuD6Q=A ziE`cTmJ#06rGB4k#y4OeTeJ1~EqivsfTM|7I*;t~SVK;vkW*Ns)B2oQ4gPwVhW=EY zO{eB~kKJmAa!JNkLAU-nzEf%yF3x-=BF62E98TM+TzOk_B^hR=i&f@>78N^VwZ>A` zQaf#3MrCOp;(Dz_q=dE-XUVP-j`8OkcQB_ui1joorN}hdbnoLS=hrGQ*IXZH&JKAt zTxArzg%?{MVgK8k-lTx*mnc_}u@_2@u!TR$Kd58EIhyRYW7OmhJ#9zK_Su}5#(fD@ zX{GDlLHA|~23->H6o%8wKiOba6V}5$hJv*mYjg!4e!(7@Fs zI9#PfOF{9D#cz#P<>XP8;VhpgxNx(Q>o(DBbD$OISMm{i(W2T-`>DC*vCzpyk?A*%lS+)N14ggyi}W}lJzyeONX>%6|3HV)Z#4_Td7!l zB+oZZj2h2$PhKjG<3x-(m6m8C%0#a{r)RrES$i^GlH~KC>z*^8)vRrr^Nr(c5@nAyIb>}V~l(Eza;Co*$q0|$v*|-SY3Q(968yGx29g`qcbXY9k*6H zwP(k|EqL=ZMJ)sanvM}BI=W6eC)gISI1Cz7LbJuP%(PsSDmHolY;I zFV9tB)jwxm7&B?I{gCLSR+0$GE~Oy-jIYI1p;p{f#?loA!qA%0k9WBO!a9OJXgS^2 zZgJ`z6=ESb!KQ_VE7IPyj58`dxonKp;ws0H56`;7sp=2}86T0zAmQ)C#ok&Yu-wcW?8m~x{6l%r5^@IxPUhtV!SJk&3U;Er|LH=iZ&C#ZEz zF5xj$Y6}nT=#gk>H0I4tdr0D`Ku`4+W2LfXqd`lrXReZz z%nrX+C2fLBSywwrdlc+`yT8GWjkcMl=nv&7h}98tUrwfbnDb66vQ1W`pPOrr@LLa- z@R2tyW7>#pwlZsef}eNJ&eiVP?X6)ykud$#yeqe+(|OFpVq_cB&e&rfV`tKOQr@=s zFK;+tp0(b%GVb$3hrY?0wNu-5=V8Zp9TOZ|@ApGlDwFHJRSIiidDsdv=gL;Ti{5&* zy-NMe>MezV%0W9223~+LaN!*xn<$-`J2W*wFBS4AETT=h+A-q%d51vedk@RAJuc0z zd+>7HXqm}U#yZIyZPdvM;W6uJ&wVF4%@h!TRdgI(IsX=OL?)N!_QTANU6CXFJ8OJJ z8mv@SIVmJP0e%i!f-Lj)tYaA#9jVH8lD987uRJJOA8_h-eB@j<-w`{c^d-GY!F?=P z+hsCH*uI*}8S8%p6WdXrgcX^-#fwqw_@P~6lS-o&`T5Lq&F!@shNvqBi>qpN?6r;@ zlg^B?c~`SOtJFv7>4Ylu7QdDjEyJ>ysQR$`Z#TK_2BfHL+owExYoL3%1l8_~J`C~O znV|<1?i!?q-R@YnDX$`S#y0-urJlGmY#1TM1^6t#V+gpcB`C` zLF}4SSX`CeN7D%%X2LqPfbdWG{kFaS=exI3*NnxTet-AYi~MfkTF0E09d=z-IKeq= zvF&X0$dk!(Y<-H0x7Qp+^w7i6>GtF&I0}L`B>9ZS)TvL=2eqA~(2R>G zEmJ5ErkJo-HF32O4aJ&HdkA4Rv0gjD`NV9#s?DyfpOmm2f@_ zt#o&+$P~-WbVkKM0}0E*=Js-vwB3a+<5Y|kbwYBc2YUlQ^J{Ec*3x86Q-tWPv`fjkbGIPbz8Ais;2>N?KfFxP{Lp zq7z@gf20f!cw9|m#~mS0OPo8WA}M9fa8!?$+wlFC68eetXrOY>M<)4Pfk*{$JI-c* z(md(;WBrO^7Z#<2`EtuuX=`%@Z*gHAMUpKXX;U&t=$w@lCru#&D^q9wyq@S`%XX-h zFch~Qpkkz|&$+^7?!B7n1J>dcSc}1s=1T;vC*_(GQN?;6BUvPHZ`4FTrnf3Dq}q6s z9JSd~Cgjyp?e{^8rlL-1YQ#m~!%s-}Twj_{ts}9192msQ__~#bcqK2ZoLy-sO|V<4 zm@v?MF&L1o~wOc{6;2Hc&78R?~SkA(X{|<9dbW13qWK?0bx#mNymJm%QR{Zu=ki>+o4NfjD zOL1W!T~okr97Pz5s~t>LGcl&@igexGTzpIMBrBvu{)KRTQd)4Q3$5R+zg$35j{XOm zf}_r-+bl_(Sz^}T3`m|85V6q>yF2fr!a9aaT^89{X|rwM=?p>jeJ`%#To!UXN8Tu>u1lK*C6ZKVN2Mw=yCO2m_tWDMZ0YWMm>7+ z&5pm=Vny+>FkglYF&~3_UCpfoH<>Gft}||QJaiu+%__Y_axcIy&`y{zFh!Y4%fVSF zLshEZMEOg)ofNI@N9FrmH6*WXq^R|i)ATL#wC#+VO*kflo`ub}Z&mgNZ>PQel`DMH zp`vzbx0pY1prZKHD|4~nkc`jkw;Zau#Z%gxG8|To#MQVa222`Er(c9FF&ialRXo2n zoa!pCRi0hnO2e1I9(e*yrvb+3*I7SivttZmcfD6G6m8HW7|0;7T&Z|5PuKPDkxpc*S| zGl3VPTTv7UZ}FKPEJ)so*s?#E7(vQLM|7Enq*IUS{(<6u@VE(lUo|#f2VVV;+ChM8 zqnF#^|458Yj`wvJPA-f+jI#O(aVLSeOp9^1th#9)V z$Plgt_`YN{>K$K zTmtfd;n01){q6$wfdS|049<1J@1oFuL=<@v8dwL^`8}@#E(Kv4$d%x+Oy8rk2+Q!9 z5giT$+ z9RJrWqc&aLU1Iy3qf)E?R9CB& zIwSv4MdYtP!Y^^2Z>#>7QOgu}bF=d~QA{ny=RFiSTG&;3V3!PEhN=EleWk2K!** z#;PK6{##XIg%9Wn)By7oU!v&#E=2w?lEddvXAFy>g%78qzwCDr{|NcQVS@WS|N7fa z{(#_ijG1{m#t~K!n0*$q3R*=J+o^u5_a7nRl<m*qE+eE(l|IY6Q_{`Pu+wA||#3#4~oZh*VU(wh18+d$b1Mt6T ztmiRIQqoU5N5f`1E>d+_Lo(DW7C2pnPh^|+m+(2UR4C_uwEGYQkESF`E<3B8DS~D5R%}|OU5)_!t7%NnlccTjgIX-2xv;uDqv(E1fdE%;{#zSnd2KE>aW?dl|n#paGvFdd^Eoh&q>Ac#}!x|Xrf-@4>7Zrhw+aW0tb;WNZH373pvA)^B;ZN%c zvZ>|%w1wyc;V>Y4Z&J%Oe5|*ln)%3mIu*x}bN7NnT$*XZD7Bx^S_tU|kI8eG+1@vl zEWaJ{`eW~s8Ke*6&_gr|(fvhM2J#{bO~7J}(EPr633ca$(Ri5t*u(?v)RpHHB-=9g51KE>(fGAIIJ<_3&GbNlmvU z`t<|HV;*GN_~~Z4X1GOpk2iGEf!`!X_e2{HQxEM#gh$DYEVeOHu}`F~WALHbn}}0uFk1 ztksp`mH&#OO3VsRzsr=!5@7L0k9#;jk^W_au&6A}8J7uzDV4y{oygSYD(p`6CnB;i zjg}dGpicG)yrBpEty1Q}{*SV3XM6JD^S!_fKDH=b^gP~ujIZwzneaw5!b~STQm*cI ze@Vn9+uZ7gkapsJ7tDYYvvRk(MODxZ0VQ9o5;a6 zF5oal3M%dg(C5Rc3db^)(A*~r>rYq0gqiqZIaos0vbik=`lO9{Sg&{52ml?KhfsJl zYgM;6C@7q^R>LTc;iI%@hvQ_w;fPAU96nc=p>Nx*N3E^wj7th*b-48OepB5{OYmUU zgQ&*F8~p++H`m2jWDO_8g9w5$)XbfZc3;-xw_b^1T26|jOx?p7^GQl4^l%fL?CfAh zs~1_uvtaO6TO~Pc@RRh<+C0b;emWhE%FQ?H?I9D{9tt8h)V6F*8&fri(1USCm}UK- zN*Gebe`;BNyd&d`!~y|^^rxaMo-<8QysW`TclFjI`OHfN)p zz+%Ev88&|bwN&tml)AVkfm+M{OQh4>O{b~kME{(kZjA=FLF+bYb1J3r=AJhazzB&)`UC4P7~6 zS+q@k6^aMLycb93mAcc`;GmTwzHU;PRlhE)2%HdKp-h*iw%AsUQ zKtqX>pV=C2Oi^h`s8Pjt-)pdDmepzfVO|_9tw&*PT$QVss^qPT>Q#Dl!*)gmSl)S! z2sN_Q)gO*A@zlla;$|Js2n%|mLb%VRMiuoW<})`9?ym8bu?AW{3lHL+_?-{DXdSY1xjBY9)dsS$1Pr=%;jY_@US=h;`3YpC#hEfWt#f!}A0U`qy{^Ggw&Gtx z_bAGF?YeV(Y~F3$_sLjB)jzQ>u@u@w$M5FY>4H)j$+Nkb)s$kh;2`ev_CxOGp36XG zTdrqH3on*$&6yyyKEfr>$sA#hef!OS*&%}iG8qC(KQEUB8wput*U--eMHXL^aZjOt zlgm8>*q?Vtqhs}2mP-BTWM@Vc(^F|dcaL?*#B}8;PrI&4f4w>WDInyBnf9|El)O)e z&}|Wvxw*dF}L$VTAv(5JTbk7@UGS; zRCF#7<`xqME7LC)Nd~j8fz=2P5}Cm2)!5y=S08RHpr~$>)tS>IY=VHl^Av_DWnhI9 zn1&Q~8p8SP>>``rrE57EdC}NjV{?~Nhg6G6a2~-ofjJ=-x6ZTz?56Q8iS-6$H_UKP zlwq=)_LuxA`S%#r$D?qj`}>5v^JcG(_Ueb5_4QxYO&wA%Fp{U`7MmR%zIhe`wwBWj zYTjr{lBdiB-C&#mDK7FRA`pfA zbpm>3z^Oq3r8Q`@yDee2(r4Agvm>4@p)BX^QFO!LYS{e~2RZj*X2zdPe}?ipy7HVw z=>z>#*R5GT#Q!2Rd_LH$-p%nS3!Kk0J$)Ig@luE7G_d!)`t>2)lKy4nz;Kg3{y2%` zcgdgOhtblwLsZfW@lOWlxl;Q@onE8Fh#BDA3m{PHfwO83X%VMThq4H87)1rDzn1el zwM=kVFH-9Ne)M06yT1sTB#fs`2g}Q5;R)NtAJn~lMOMSoiq{;z9$^Ua6@gTr`5sF~ zsZL^qZCEe%+t8O6vs0-VSpDRcmbRGh;&Fmf`*lzI=Pmcv`#bE1xDVBA+`sb zp)I1GrSpn~SFe_$WGu{NCL!G1(u{`RI%##H<(tdKFCsf%_d`U*&j-H2{}@N`+hl+K zd?{7EAf3j#Su`P3b>3dJsZ-NVQ?*2L_8gD#M;;SwJ@4T2<%e4i?rscnBWAbvLNEM* z)$eIhNRD%NXR8-t&NR^%hu2oxWJ`P}r*VtJ)xEDzT%LiL*P1K2EkQab)=#)+sw35a z#Lb`~Y}8lVVKgvZ>i0LuqnMUCu4Xet+JB{ZXI`dLi!Z+qbh= zbqk+hCm=)3y0i6=!>B&q7@@gCB5dP(;p!I)!6#p<;LEcCvcg&F=0!gUTaS3P4t(M= z@SUC?4c0bK;hQC4lp}|oNO-;8`XprFCEOatwT9ktH9pmD;xp}P#z;oov`Ux`@Q`h& z$EIucVzphJ1%AK2T(8dI1Zm1H2>uOm#@b)feM@c~A?r2G@ex{WmtTW8FJwyT+AIzG z{3nuZBtYqP7>|(V$|VWWw*N(#5yFIry;;YvEhzuBYGty`ELhX_8CRKP5Nj5Y??S&O z!Wv*9t01iX)yg;cd^mCy2Sm75z{OvSDXHm}(;g-rDS?^6(gYHu6oD=^EC(p+XC4}| zD#OxA5VT-4idxICoqLdgGZMsmJ`v+3#r285E7wTgq&FX*FMJrX6wbU=XVGG<%%YxiKzdekk-M%lF>C>!oO z`b?)ArnXzNK7q6c61QF(`9bzq#?C=%+$hKq7D=kFffw}*-{OT^XTT6-Y!O5Ap4iaG zL{+-mFxJQP=lhF`cyjnLLBfpl@6K?ULgp3WuZ!Y|dV)Vqb!J!yIj!X)iGRX02uRU_ zlF+wI0g+$4CdCU<4iGF1*H-CVU;nfbtvdLeQR z%~f(LB-Ey2&KNe}a4Bw5gkaFruZc?q`6_Yf@X<`rFYpO3PjjX_-z&W*jsMwhvAgG+o-pFo%*!&dlguxIq^&2KMZ@*z z*_@iCa?M49K8bRb=YE2w5tno14 z8_nAWAxN&kd}*7L5yaKGSx>5q^^O%gdCZxlmR!Cv){>THewB(N*H+AZ>gR{c(sg*b zyLk^{#pmv&STWyIaxM;$ns%dXPZ9Zu|Jg3yVyZawfW;n;Z9bdWlXjU?k{59bIDyA;rk7!Z4qS17OZ}v82bIP4}5|8mR z-echRL8|~~^NpV~_YVmni0Usrb|40nSp&PyR?M2iy|6J_Yk8=O5p;fdreew=e8} zZ-IouzD_4gMVGLA7iR+I{*G?1?6+7%2Nsd_Iey4dF0eg*Au@y2yX{h zH!uYQ*}gOaJ@`cD9|5|~cId*5>kfFM=r${Z9mJGQ_kM?s$`tFwX-nEm`5#`tYPV`31P5p)ft0*Jq-x4j4+hhhR3+wvsBQskGgo_O0k!aVQRb{6kcOnh)G}- z&`uN0G3I+9N=O4kgaGkwhN$N{2wn3-=Q<>9-ucjq42Zuw{a99bGmh!>Cmc$KVYx>|fFEYCe2zkTb@v*ZC$fQ11AqcvWy#JBfvabR3(w6w8&;10K?seW}8J2ah zVK9ie@$9oveY-_R@QuTuh029YvVb;CClQG=NGgD3%C2KCsc#o?UMPeunH&C*5Y7Z^ z^uw!2D5Qn2Mn#CwI=p8JiYDF$xv7xW7_SRc`W}2;j}Cz` zS)KtdDq{y$lAl5r;$uEG+7P*u8^-ju%ME;fw7o7{vt|(Z+GG^;nhQ|hbA>QxE|0y? zxGOWJcfcg0Oe!bAaS?!AH)2)vgG@Tp&9vxnz_q9ZvujFi{dLweK70e2-$f94(w7|l z6hu>jI6)`OBf;z15a(zJk>tY*#=sj$3Z5Ti&+tJU`Q*1s2;8Ro!g$Tja#(?PQ!Vkw zD+Jk=?azx|U7#Bqu0F|En<{YKFCPLB?NsfGa^6{x0Oe+s<5JpBuRu_hr|m2k!KGjS z)PYjY0`RVR2>`hSvXgU!WbULCgj$y=4`^MqI7$mIMIwyP!kpwJ5{woMC~8-*sI*^? z_dIrPiYb!Y{%vt~sVC_wYF{A+^J|k+q?KuY)wR9apJBZ~Ezh{IqwJm|9IZIhAj8vd zfAo0;6j_Z|EpB9bJJSZbm;_NSo#|A&Z=T<+&NAq+|PW06szM ziPt}Ni^-+AO4PJdd2*FCZ33C@wa>&UN1+~Ds5hyhVmNzbq|`)G^iHVpr4HG(e7-Z6 z>7iVZwI*ufLCI}m@c0}VP%h&WKVo@&MfzXx@YtwtmMwtdS{Hp)do|t z)7L7sAm{=MHa;`Bw`-T|$ZQ?otsMc}yNeq^CkhwWZvHlA^oU*v;yLi47J#~U?_fz|8gz&%PW_yX8#2ryOVemVo zOqQgQf{xm2zhW5#&t?b=8)L^DPyyFnu7`X4gt`0SXR@YZB9|vNZDw;Z+{0K?Dj`(g zdA9udrezzUMs2J$Frwi>ckOdR)M8V1ishuIZOeEnfu+FHsBV=e`I&cAY;+1}6Lr(9 zSIIP>!F$uQfjIJPy*dpgO_fB_^*+)lGRlq!jXS?jGhXYQv0XZSCAft(Lq97|;Wk$Z zbMPmx&M!!Az~H|0AJ9g?o(YPuw$7oF`SOzRV+xs}g#(Iq51L=es;#GnHbcl~6T!<0 zth8o5LMpet!?3F@V?Qwuwf0l^itO44j|0r%wb;R+o{VA1X=G)9hf2EI_>!JhS)@axBhlsy&`>OacXAp>^Bzop zvbi2rJIzi}=CsbP$lLMu&6Er~VmyoAHgO-uJ(9!1h`NEl>!-P7O--V?ortF*>TFrQ zQ0i+d2~t}jm)r{n{@2<7)o=D?I>@8^#c}?hxk0N41-ql42SU^m(oX9SJz#w1=iWrW zEulagtGa`j1bcM+iJ#Ee+@}Q)mxh;1tOIJOUV)<9f zZ}nsHG#{L!ylvc{QJcDhtBmI4EZO+|HgD1&W!{hZQg+WiDQRwmpSRz-&9WNJ)o`Sv znCC~abLg7U47dK-0MO5Ijhgi-cq-fk6I@&LfCQhQmi!SlYLi*6bVsCN7u)HYQY89_ z0;lE*;Np6NE(FSLre>^EZwJp@Y&$hMy&^TuxUzKGbB_jsgMAex0^N$Jx?)Nw=UY4N zvcr5>lSGQ+1NE(KqLdm^rr3#bj#|@dFZhX83E0uEE+VRgZnx(1e`2JQgw|0SY;1)f z?3Jpx_G`9aFdwkdjq8%}1vVyGfZ;y3jxrg}4ODweUb%K85rU)})vuH&J@A|lgy`dScSJ6uqpAIYS3zoTI&`Iig$8*c5VW%dEQB_v z5nw6Sz7WyIDQZ;^U+m}P{{s1}l*C;BxtaG$_?(x?QSdtX(OXnu=)gbc=Q|<7kd{oP zr2fw6Mn^Xz41wAANe<-mawuyh6cQF72rm2z0m(y1x6*k<$m}PpUaCFvdyVnM6YW?~oZ;RQIXJJ+Z!4SdM-NQzcjaX;V^0Hp%G zu6sMPp6AT3&3BFn|4*be1G45^ZI?~Gh$X})*?z5RT1s4oyh*r0QMP zx8nl!I$2%(MM~)!Mu2$ok(dUFO87IdC=QLnX3wK%bY2jV<^THTr5+{hYznYhBXRqG zA{|vwLz+UYGd=Q{2=y4UfYMJWR+5#YbXTL~&i?rM=D^5$-bQfwHBC8e=3_CFwgjJs zPdD50Od*Z&3qr|PbR$3=X>M#>y7KYo)tXqMrl;j;`*1B@PfUaB@)O~p@%Ag+Z)p^Ti zy16tum$x1rIt+9rHrH3V+8RIH?wtVvB*H7FpWM!UT4C0kpWxb6(+zvpuFfl0*RjS_ z^iA%P>u|kn`SXQ)1!TCGSTgZcB}}%I{IeROG}SzV?)E!ZMa4WPm+wSvIl4{}1xE?* zJy=>DqYYqCC$DMR{QBMim;>zGdt2Ly4_^A8j*H-)BH~zQAMdDghCSDhH6|kC%K_uX z)9E<_Wllt439?ahy{xBRFn)}<_ShrBvX;sG{)-@Tkjvj3<=uiDXg1`4n({$sY`Lsp zjn1hqHXj`ckhPtL7}@Llc32BWF*V3$wx@&Nc4h*5mf?ayNi@N&!S2t^1=p&NZG$tM zf$+*|FS^e74b|#h;SSd9RT1MTPP1LJ@sAD)va?|weXhPA?2T7 zWabPQ|E-p4x}+6gX20|6Ok(1+$ZRT1$f!Z7vCz`%jGVQ zrtSx@V$=(K?ZhNcBI(6-+#8nk%nz6E7MEO{m^%X7+;VGgHN#a^=ge&TX~vBFI!VX^ zs3wcyc$bmt1Gb3f9*uq*(E^5&(IEBTn+Z~(zw`4Nm1i9xcA5P_t(|*H=Ej!`&lg1P z-VyDueYno;0sG-&ZLY+SY6yp1c@m#@i!kxzO=TGq)Y+PH3u^Q$p)nqSKEQa}g%A|3k%y{^Imi!RYe&_RQlVT9Wun zDEITE3mlw3@Fw(oy{B7%X0)|?Vb(u(_0EIi`xbh{8{LUroyoRcbx!oO(Q#0m~?Q{~;Op1jO$k zYy>d@l=qy&yQKJsG(~=XsSFUm^odyAf$HdISmkn)hy@@#-JbjF1&wO4Nv9!n1{y>9 z?c4eTI}xpoQ4e)fuE3;CVQv5|{Skx?>Omx1e@O0oCpYpo%h&4GyyB!-Oxo`=hYr+1 z%A*qi_=^>it0PzrPefaOYHeh23?XL0k^HRi9nHLp8@-AE8?0I;fYV+O?&m1Ero1^~ zFMnk8*Rx`f=|kmFdF3`{JxAM?5q^$SJaf2ovf$mxz!S|JK`By2jKK~FH49RN2XnXL zdu9Fr^kugUwi!((a{7g>WGtm=`d%Wq2VH4ZqVbInfgimJRJ=c)39-!c<=J$Zxu((TOqp-aS ziOw0QN_tmO4$Qa4CIom`VbDBm>}K<>sNZHO{wY((dck4j1d{F7DA^|i=rh>!?wHAk z1Nf#Pi&UHg7`4x_F5hBbSp1U$vhoz{^8M+7>B2H zd~c&#WClzMlZ`oqyMr!Un3A8@94fRp)br~dS0)~dY%jbp>4frwyj}nbH`*L$4;{Zz z$zC$UsSZL0L@<$#nF_|ua|Q_}X*+5LRf7Ou7hzaZOCa-<(0TQal->m(_<;rupn)u& zEr=X~r=0G1o}!n!<`Wx4n3NvMWuO-9Uo0!Ms(=)+AoUq-=HZ-rZ*1lV`t$Y>vINRx zx{zWF-{f6j7V68Q6sl&W9Gm@LQki;RzDL2z8USOukzdy!OP;Ytzn7kX$cXPY+5@N~e4HfIM)-hQ|8%KHhU@rV0^s$R<5r z?Q_lmKv5>JKs|_tBOGW8rbqHtE34KBQBd{njH3~ATZ$q}0YW15z1WFw4-%ISZJIX6{vbAWelJ92@KJe-B><^0L(&dN0Ab6xp(uot zi=i`v@Wd9lDtdovjjhLYsNYjtuUYD>szTDP(96)CTuMZ3}xQ){DX? z+@lFW7OI{1|B^~&7HS3Nv$z;35;@S`s7(VAPzD^CZL=s*QM9sI%c5=x0L_;6G1w{X zk&aVL@|mgpAC>i(jVo|T>xGT6Zd!UC_rMG>J|sdyQ#_P)))WCZO9EcO<8PkW1nG0~ znbAXQ7Oq?2(h>X}6!u2qYe?CY-GDR%I_#K_Hy76u$4$43tVNhKdIljXZ|I zVL#s?4W@X_{IqqN=z@Lp$V9QLqF)b0FuDlYU=k24Y1W~HftR*c^Kvj@Il4jjF*8e8qW_0h8*x}o`YFOJKc&y!jv-rwL{OzGn& z-Z52nybD2{C1fHI|M);OCbBGUhorK!(^2VK+>n@2lt11Ygcw|AkWPBVUn(PUw6C3> zqq4PU5R@Jr2&LGT7THtaxH@I;Kv+ER7P4UK{lzwA!R$|$al94-f+Z`hlA4t%Xhq43 zWA&j=-cobe;(ylHFZ1vg9uO8XG4jMktEx2|H{Jq;SMx<}rf0lLw9MQ&=^33w$Ij{+ zOX^hAE>H9pWROl!ju?4+KQ9gF%+Ma}mVdDIB&!0KvMqWQ zH4uFz87VoxNAc*KJ1ena=nMAzR!vIo-qcVfOkTUAblI9r@+iqbj|wKS{fAW8k5yly z%{1-I7*+8GR^uwmuP=`Trf5-n8uh1BpPo#$Ce%oglEiPnYsS*-2*rkZs*|~s3E^SD z6uc<>PSU~A@Yy7P5h4k``RT3iP?+dMoje($|A=zNNd5kFWS+2MuUefG@S28g*6bCY zU<_l`t1)_q)1TIS196bF z9`t^-#WJn-MnaiFEQpXxlC zGe;85lR1jXkXH1=zD_~%$}>SchP~=ssVwU@4Vb zk4${#B8)2z_wX=g`z0ro?B5e7T$7(x%AZbpK2Lw+6}46-*q#o(wwbIT+lk+z{XSx} z!q%N$Drqy_U6}kHW|u?~pFotO#h6IIT1l0{lDk`h|5J*6r353Z`!Sag-E%Hn?0PBr zI`_q|;ncKq^0lraYQ_>1w{^8I$>peZEf)J$<(`4F_ZujfZ#;Mu8-2%4OfGtKG^5_? zj@iSfv8(wc9^59$@pxMAgEeIAuH8GDPoV*dfU5&n2w#MqQE;^u4d#21q$*CRLLz8W zO+c7JNtnAx!qPPXDzGvLp%Tar)h4Lh0+qA8KzCgYRSh$-PVy#HFN zluU6lSKEg01LVx);*LXlP0sB%@k{OK#TD0H&%q#qQl^KiM-L4wNH%}1B~i$A$ld1% z+7K-)y>fFQpnG3>^pYEM@+DC84RB}ve1pD6V0ic-aE}8efB0c4)dLoaP6`E=4!FVx zcR&67@45&&@(1wh>*MDe*8bH1Fq*<|UoW^i?u($|o`e+&cMlM}vvtKJ4*!J_=*J-V zrmDKJHGdVkpuk;_YGSaW;sab;K|Z^V*4ur1X$bS~tloZTe~FdB*XXS9jrZ03NfHPWY9G`1I|MwG>k)+(Di9ZmTAlsZ z?ms2F+kcv$_aA@=6n_qR(fuG1pCCoTZCODH7_w~3kADP2`|6&T@YoekZ}I=t_RFck zW4S~b2VJHUA($WpvBAC~|6f-&5m4qAD-rcy83)v+Xu)Xby+V#3Fg#RDXb>n%gqSkm7*syUe4(P4)LFG@T}N!urSd zIKzMUM7W`e;W4pm#N3GR{-*`LBa&7efr0WB?0%y8_i7y~=7@bxpKQv%!Uje;_#BGH zz8DH_Vkn~@?~e^17BK-&6Rt=Q0vKlt0k9fSCTa4CGQ74kT@>**-XTWzkEIPoKaB@? zroueL#>|`@Bj(i;cRygpgOoiJIIW)AKol}l3uvv#Q%zG>gmm<8|9s`jD#$vred!*xMyTx_nY zAeGh&Q_5h@r({tIK^4-qj(iAUQ^e`4P=m787o=M1^X zc6(NBsvNt4?v}YCgZovJyIU`gEwo)vX0(9R^p>{n7Z1WSeqOuM$=QPv!gPw(jo+Wt z$|BM;f5_(t+^KcIpzXjZ+X4VmgrfXS$0atkAy#hw&TO}@}mM&lzlvUiARYZHN7xpIQM_+bmPo9Z- zRkEX5_;TZ?iibCQNe8swbNWpsKPdAw2@hJ=^@sXbrve_0;#eNF)=RMz>Y8TKn#XdM zwUSj+6BIKZ^mAT#>%Yj#oMINhFt2x6JT3UySsr5{(j{5?`MvMiSzSF@#~ul;SV%aV z0_QuwNAxiY0r*!)DXz{B*=(ZDnP$4rLSh>M30nZLHLDJ=CjX__*A2rfOUzEiMZGN`^(2%Gj!60z0T{ ziQ`TV**`v#<{d_o+GMn9i$H!TmoMVPIjZKQ0JEKp&`Yz!|5M`92j-cn>hAP)puvr) zhc19hl~?yCIdUff23U32(l>CZmA^J<3AwH32ctO%Q`aC#-wWd8Szr{`-W9ptw*o9n|^FI}8e=T4zs)g9z zis^gNzYNJGP*k3q{1v;npXgXY&K;T#sR3JQV08ayBGlb;8)YiPsi;H$z54lIk=?&L ziavsO3Zh%s{|+)=KMmY(&7Z@!h^aUi&kaIDO4Kiq=p5TS-GbB+ z{#iKpqhPqWDr1xW^DZ!*MZlCb1PYGt-{Zr08y^RD@g}4g8u0lO|K|oIewdMzoHbYa z|Cx0HWc;VEQtpQl1Z-$$u%~E5D|i5(_l>I?+K_MwdV*m)_Rnz;BUX+0usi+!f)dLe zK_&(r3a{#AXa2b+YJVM4P&KpkL(){gc>d0u8(Isp5n~-sTh9>uS3c-|3o>JDA3r2S z9awZXv?_`))6cB{?{Fylfr0=k##n*%`xz@cc;a8(;Uy?#I@cW&`|IFMxmDDs>u;bV z56<)S{BsdQ>TYhGe3WPY=S^~AKNy64l}FHlnYTc#5V_02@_Xu>HYE7h;e42N$V-&{ zZxNjC12{o%3t`{xkDMPhatCSw;a&aeK(&86>=qO#p7VEK7(Dtv(;kPYjeV&c_87pDs!q*qt?*H3492nC{wv2LegP4v--D3rPdpKY5WRGmE+VIuWH0)Dmnj>$BJ1FG zEca{R$8o145I*)Suc;xAaeF4h0wReOfaGfr{8|6592#ZK69+42bi5uENCpUWDz=#} z_D@yL;H^mR3M8J3DJ<+-FOtu@UZ_N3Ts*Ji* z^wL$KY{RK)_#%s9P-7Rf$Pw5F_ox^p2EI&Z6RvzqwwoWw2mMkPq;}6YwI@Beyc}+f zP1+woga7333O`zl)w#mU%hpXop}Y)|qfgQY9D4I}wDU!-#O9``Nh=2jC2Y`SST6yI zR0kJcrGc2^OrpwzdPGnL8OFvN9m(?5?fDAHKo*rRbtI{NW1DSRij?x#`y~siuIGE| zQYNM*SWD+1y@dP2XWO@K+Yr{=_`j~MJRHjPf6okRkQzmzXxhG!qG(acnG}_ED$9v% zDYOVDm6Bz&sgqLbr06u(L~&9PIpVab5ONfgrA09$QAFW)KQqkhcm8p?-s@eS<@0>@ z`<~XLZe0($tvAQoU32a%Gzt&dp1E%F3suL)nI?pbjcdy=vE3c7d3jagPLxkKa>}sd zntNw#^42{jG>PA%vg$vBL>2=?}C1@D3d~!g)E_%ofEKK*9^NE}Im@t(1Koz9i zf>Myn_0Fn(lx%egp}sDE_1d%d2W1p5oC4jdP{@{k1rJfImdPfNas}fJ=@JX&7%|I6 z;*|}$5UYE$Ur~1zt>A@?4(RkXY#s(MK7;R#W$F?+#0Z{|7dYd{e8_8m+d7mB_|{&r zSaO!>19V+GYCO!9q-QehplKA!{@Dz%tIc-6IVxAvbr8|ck!3h!!q)qQ*3e>ZIal&3 z-cx8SJJSd~Xa$KSe@`N%$5I8&gKCUFSGs9S8+70<&*#I8XDR_z%SA4hp*ZSjjO7^l zh&g7&kPyWfnL}H^X7Mq@&}f@sp`#I2raeM-P6rh_a@a|@&1|Zk_(|3tdJO^yW!MV4 z#QXE85f|YLroqgm>~C3 z(Xx?0HnR)LuVG#u=gvQ+hVmPnotPHIhM&w~9DO!`qi2uxQX16Gyp3|cJEbeoykhzM z_t%u5DB?=QtI+a|5|0IQg9*@<8I;BzZO(I+W&rjkEJU6r8Oi%>EM@SijDfn-63bph zT7?bOf6WzbDt9s63?vBs#IV;#S4^XJOB%OHj~a*>1iF*+5`G-7voSrshnRIYB|d4; z;z&chrp;YF9~6Ou#)#j+uvKig%in!=_^PkK`$o~VPGW(E7J#EeL^G~*@z5&qjK`nK|v8SmrRE>aqMf3v5r29O0kY1For>vbYsN zf3PP~?f{7%gHHVO;Mh1qIh6%P(pzLXUi!Cb1sjG=3`v7zI+=YUrH)Uim1m(n^G;>( z5UnJqN!p9WXo2*lugGjW`Jp66fZm9EZS*e5K$wR}1b=^uL;iuB9!u!M()Jxn&uv^E z9#`J}NISx>Q$HWkupTheJu&-cT}^!NbK`0$`%K+lH}eZ8-8VGeT$q(+UoCw5FYm-r zq1Nc8p!oeye`7u~`ek6}y2dZP(WS4BBn{k>f`d+IAm0ScM#=7HvMqf?-b1@sw`cM< z@6_KgTXdOW77-rI@%*#c#)VbbhCo_MwlXg(#c6rsj=Ucg>iYM3>@ys^%`%JUD`!;Q zeeinZMT`2GYDae%jIg~Dw&C8R#>UQ?b#-4dy8^cai1I{oB=Wew))|SYVxQEtfA2ry z`6Df$cvHyVuFtYLeZAj;PMxp!v&~27_Ur8NH{;{uPprSD=|PGbD6M$JlG@caNAA`A zPXZ0XH*feJRdU1j@|Fu*EAF8COa5(8eD3TAAz>3v{ko%MU{`ac@}{u_^}m=98%zoI zx3UzI7LZfegu`XJx7BO0NN3y1`x-$u6Cs;w_X!ZP1;8Y=8KTx4@uoy>$EG%{3RN4D zGr;X}dM3sf^0kNv2g{aCBzj~Ll)#$_BOQjt9y55cBl9*0RsNNDvJgT@k-F3v@?@!u z7g3gkAOw!4wE1oPFS}#g|!AF%Xu*2uqxI$x$xIfIsG<)gkGc ze>0A6VnigBeR_y7R1}oKET}JaI7ua_xCI!njNx~GagK&(JdS_wuofKc=yz5bLv!VY z5eGdwE;(VC6Wl}mN9%+&F5)B0To;1<#`%0oJH8jM% z=Rl`8pa;qgnL>q@qB5N!9YEu8Fas&KuP(BZ(~ZOoNuF){d$H(97O2rRFi74kD7Wi+ z+pHw2mmMk3^BtL&!+JBsJ&QFR&dKT`(*y!pta>BPySC4&Va{@@a!O@2Ed~8@(MBioJu%+V>%Wh?MSTwW?a$M4V ziX9JKwAxZgc{t2VoI_G|Wg9Bk)WQuXRf+tACUzla;Y41KJbI9t=~_k2j7uU)4l2#S z*2VsJZko`HXl!UAoH#7N_?qw+E<>N-Fl5f69ntHr=2_x3K_(y^8*|t|_*Io!I(7%H zot|vGWaw~Jt2B&S3wqy(j;3;w?-hGsaxJ=a+p{Tn^m0y|cE)%J9p|!4ODG z9AS&bO=zpW&HEoIY7=HQQY8i2JH`p{J|nZiV~6}V{~hxXNg+P;RZ>wA02JVkKBlV+ zfV~^Nv~{ikHp2VqSuJtaac~sqTErks-H?s6yXisnzq8>-(ohI6qUFy86VEB}2Z>uS zR~d3|B)ZMI*A=E`zP#@E@_Ng^UFZiX_PN;A*S#u@a1Q|Mp*w|0r+E=3R4pF%;d+<_N_Jd z+~LGy8kKEE0)`Ob$khYwR^JzDR-BbG-OIa-zx=I^i{Rr%U*7Kg&(4CDlLCD!&tKX@ zm-WAL=OxA+oSgOe{P{{{Ztjhqn1%eF7S$`ISN#7X(8IFCG1~bfv`Z{hVqgB-mMb*A z8}|&2Xv^)pvz$8vH$1jp;t{*V;*)E{-T77*7PjU3JvEFl7xq}MVd*!&kDBwse^bG` z)b2G|kFo?gwb$xr^tE38G;qN$_Z#r0V1{$3&)4;gP5;!H>?C+!Q&7>ErjzZg9k?ZS z$)(p?Wg$1KCkf^cT!@0Qor-Km%%*mwS2`~Fc{XJ~KuPuruvDR$@RxU~YYImM-%_BgGp3$3y zSl)Hu=f__xTLhz*G_grPg#y3=u%e9#(+7d>MDBl^6PZEx;im&$Si1DHVIX#`_V7Hk zZz$aA*R)B#YYR_EBl-6~;>(C*n@4@uj2 zsbQxD0dW3E7Q*{Exl*uoI!-2wgjQwo`yA>C!k56|mI3d(ujc+gtyO3}+J@BrZBUL> z%cyL0MKGy%eXXuV#82TjNYGB;>BF4-%S{#r{|va>D@^l-d-goTs)Cr@0`yvESf?02 zCtS$_TYINQkDLX&Y??HBszPetxT1odMWF2nSTjBLvvuYA0qsREM@*xMOB2aGu?}IeSjYEmJlbY84?R5uyDfjh z-z}<2N|@yuD7X4sCM}2muOq;s@ar)QRr@xP8^4*S;&d1+P19hkONAFx8lS zuXK4qjLSRK03W5-!nCzcuiht(vo>yphqV3nI$eJU;Ny<%(R_mO1OoI}!bVI=kNLnAJ$Ht%n&V zCMKY?8xsg>RFe7E4+;R$ap2)C2Bcv4J`Ed?e{y!8+-2IFK??_i2&;YQQk2->bMG*| zPU5A)gk0a|S1N|l5yy?2gbCU{EqOAmBFAEqRK zc4aj)5SK>KJVjFoPsWq;A4k|p@{T!U!(Z={4VboQ^L+9Nu{~w0!{_k7RfI%@#C1fm z8T+NjnveKHbX&*zQ0GPx@N~O#v*y=1<5$5}ISR`kKnU~0tg^lC?52I$g zkk#BWy_s~ViG2}d&e2%9rRoVqm4@hoU|KK6@uxr;Y^AG-O6n{U#g>g$pi=SiGg*(u zk83~TXX7=FdY>zX%Uionk#d{Ryo*wVuJvVIWS{bF}f1h z5*BW{ManqHReO^OPbJ}6Tw(lGYQW9%oAnzk?=3hh7FO{PU9kY6%de8I&R^|Amx=Dq zArWMf(MO4wEVqWeDriPSiK5{ZNs5V;qJ~FP{XQV2JuJ!aU;f19vRv!`^hzTPp{i%p z;_;4?*re;t&@XMQToGzFl}r4gocWWeAs3CrXAev;>7_o(=K4YeWEQ;_88zIhKZ>O} z9k&^)dG`{$iAeI4_;?k4bnbvolq9tiPQ3rGk0UiicWibH?L}U(f*c7ABe4*QWH!>Q rVSrAf4Gbhcn6Vl^buxnJCMnuQ$A&RavrWQqg|^1TYGt~yYuNt*v;f8D literal 25829 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 Date: Tue, 9 Jun 2026 17:10:13 -0600 Subject: [PATCH 131/241] Rename draftlog with correct suffix --- draftlogs/{7825_update.md => 7825_change.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename draftlogs/{7825_update.md => 7825_change.md} (100%) diff --git a/draftlogs/7825_update.md b/draftlogs/7825_change.md similarity index 100% rename from draftlogs/7825_update.md rename to draftlogs/7825_change.md From 96b3de7a7893ce17d2e7eab834d94e77846d2f59 Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Tue, 9 Jun 2026 16:33:49 -0400 Subject: [PATCH 132/241] remove remaining transforms code (dead) --- src/registry.js | 38 --- src/transforms/aggregate.js | 450 ------------------------------------ src/transforms/filter.js | 323 -------------------------- src/transforms/groupby.js | 269 --------------------- src/transforms/helpers.js | 16 -- src/transforms/sort.js | 154 ------------ 6 files changed, 1250 deletions(-) delete mode 100644 src/transforms/aggregate.js delete mode 100644 src/transforms/filter.js delete mode 100644 src/transforms/groupby.js delete mode 100644 src/transforms/helpers.js delete mode 100644 src/transforms/sort.js diff --git a/src/registry.js b/src/registry.js index 499abf2457b..fbd8e8aeed6 100644 --- a/src/registry.js +++ b/src/registry.js @@ -3,7 +3,6 @@ var Loggers = require('./lib/loggers'); var noop = require('./lib/noop'); var pushUnique = require('./lib/push_unique'); -var isPlainObject = require('./lib/is_plain_object'); var addStyleRule = require('./lib/dom').addStyleRule; var ExtendModule = require('./lib/extend'); @@ -48,13 +47,6 @@ exports.collectableSubplotTypes = null; * - format {object} : a `d3.locale` format specifier for this locale * any omitted keys we'll fall back on en-US. * - * A valid `moduleType: 'transform'` module has fields: - * - name {string} : transform name - * - transform {function} : default-level transform function - * - calcTransform {function} : calc-level transform function - * - attributes {object} : transform attributes declarations - * - supplyDefaults {function} : attributes default-supply function - * * A valid `moduleType: 'component'` module has fields: * - name {string} : the component name, used it with Register.getComponentMethod() * to employ component method. @@ -84,9 +76,6 @@ exports.register = function register(_modules) { case 'trace': registerTraceModule(newModule); break; - case 'transform': - registerTransformModule(newModule); - break; case 'component': registerComponentModule(newModule); break; @@ -294,33 +283,6 @@ function registerComponentModule(_module) { } } -function registerTransformModule(_module) { - if(typeof _module.name !== 'string') { - throw new Error('Transform module *name* must be a string.'); - } - - var prefix = 'Transform module ' + _module.name; - var hasTransform = typeof _module.transform === 'function'; - var hasCalcTransform = typeof _module.calcTransform === 'function'; - - if(!hasTransform && !hasCalcTransform) { - throw new Error(prefix + ' is missing a *transform* or *calcTransform* method.'); - } - if(hasTransform && hasCalcTransform) { - Loggers.log([ - prefix + ' has both a *transform* and *calcTransform* methods.', - 'Please note that all *transform* methods are executed', - 'before all *calcTransform* methods.' - ].join(' ')); - } - if(!isPlainObject(_module.attributes)) { - Loggers.log(prefix + ' registered without an *attributes* object.'); - } - if(typeof _module.supplyDefaults !== 'function') { - Loggers.log(prefix + ' registered without a *supplyDefaults* method.'); - } -} - function registerLocale(_module) { var locale = _module.name; var baseLocale = locale.split('-')[0]; diff --git a/src/transforms/aggregate.js b/src/transforms/aggregate.js deleted file mode 100644 index eed6a937978..00000000000 --- a/src/transforms/aggregate.js +++ /dev/null @@ -1,450 +0,0 @@ -'use strict'; - -var Axes = require('../plots/cartesian/axes'); -var Lib = require('../lib'); -var PlotSchema = require('../plot_api/plot_schema'); -var pointsAccessorFunction = require('./helpers').pointsAccessorFunction; -var BADNUM = require('../constants/numerical').BADNUM; - -exports.moduleType = 'transform'; - -exports.name = 'aggregate'; - -var attrs = exports.attributes = { - enabled: { - valType: 'boolean', - dflt: true, - editType: 'calc', - description: [ - 'Determines whether this aggregate transform is enabled or disabled.' - ].join(' ') - }, - groups: { - // TODO: groupby should support string or array grouping this way too - // currently groupby only allows a grouping array - valType: 'string', - strict: true, - noBlank: true, - arrayOk: true, - dflt: 'x', - editType: 'calc', - description: [ - 'Sets the grouping target to which the aggregation is applied.', - 'Data points with matching group values will be coalesced into', - 'one point, using the supplied aggregation functions to reduce data', - 'in other data arrays.', - 'If a string, `groups` is assumed to be a reference to a data array', - 'in the parent trace object.', - 'To aggregate by nested variables, use *.* to access them.', - 'For example, set `groups` to *marker.color* to aggregate', - 'about the marker color array.', - 'If an array, `groups` is itself the data array by which we aggregate.' - ].join(' ') - }, - aggregations: { - _isLinkedToArray: 'aggregation', - target: { - valType: 'string', - editType: 'calc', - description: [ - 'A reference to the data array in the parent trace to aggregate.', - 'To aggregate by nested variables, use *.* to access them.', - 'For example, set `groups` to *marker.color* to aggregate', - 'over the marker color array.', - 'The referenced array must already exist, unless `func` is *count*,', - 'and each array may only be referenced once.' - ].join(' ') - }, - func: { - valType: 'enumerated', - values: ['count', 'sum', 'avg', 'median', 'mode', 'rms', 'stddev', 'min', 'max', 'first', 'last', 'change', 'range'], - dflt: 'first', - editType: 'calc', - description: [ - 'Sets the aggregation function.', - 'All values from the linked `target`, corresponding to the same value', - 'in the `groups` array, are collected and reduced by this function.', - '*count* is simply the number of values in the `groups` array, so does', - 'not even require the linked array to exist. *first* (*last*) is just', - 'the first (last) linked value.', - 'Invalid values are ignored, so for example in *avg* they do not', - 'contribute to either the numerator or the denominator.', - 'Any data type (numeric, date, category) may be aggregated with any', - 'function, even though in certain cases it is unlikely to make sense,', - 'for example a sum of dates or average of categories.', - '*median* will return the average of the two central values if there is', - 'an even count. *mode* will return the first value to reach the maximum', - 'count, in case of a tie.', - '*change* will return the difference between the first and last linked values.', - '*range* will return the difference between the min and max linked values.' - ].join(' ') - }, - funcmode: { - valType: 'enumerated', - values: ['sample', 'population'], - dflt: 'sample', - editType: 'calc', - description: [ - '*stddev* supports two formula variants: *sample* (normalize by N-1)', - 'and *population* (normalize by N).' - ].join(' ') - }, - enabled: { - valType: 'boolean', - dflt: true, - editType: 'calc', - description: [ - 'Determines whether this aggregation function is enabled or disabled.' - ].join(' ') - }, - editType: 'calc' - }, - editType: 'calc' -}; - -var aggAttrs = attrs.aggregations; - -/** - * Supply transform attributes defaults - * - * @param {object} transformIn - * object linked to trace.transforms[i] with 'func' set to exports.name - * @param {object} traceOut - * the _fullData trace this transform applies to - * @param {object} layout - * the plot's (not-so-full) layout - * @param {object} traceIn - * the input data trace this transform applies to - * - * @return {object} transformOut - * copy of transformIn that contains attribute defaults - */ -exports.supplyDefaults = function(transformIn, traceOut) { - var transformOut = {}; - var i; - - function coerce(attr, dflt) { - return Lib.coerce(transformIn, transformOut, attrs, attr, dflt); - } - - var enabled = coerce('enabled'); - - if(!enabled) return transformOut; - - /* - * Normally _arrayAttrs is calculated during doCalc, but that comes later. - * Anyway this can change due to *count* aggregations (see below) so it's not - * necessarily the same set. - * - * For performance we turn it into an object of truthy values - * we'll use 1 for arrays we haven't aggregated yet, 0 for finished arrays, - * as distinct from undefined which means this array isn't present in the input - * missing arrays can still be aggregate outputs for *count* aggregations. - */ - var arrayAttrArray = PlotSchema.findArrayAttributes(traceOut); - var arrayAttrs = {}; - for(i = 0; i < arrayAttrArray.length; i++) arrayAttrs[arrayAttrArray[i]] = 1; - - var groups = coerce('groups'); - - if(!Array.isArray(groups)) { - if(!arrayAttrs[groups]) { - transformOut.enabled = false; - return transformOut; - } - arrayAttrs[groups] = 0; - } - - var aggregationsIn = transformIn.aggregations || []; - var aggregationsOut = transformOut.aggregations = new Array(aggregationsIn.length); - var aggregationOut; - - function coercei(attr, dflt) { - return Lib.coerce(aggregationsIn[i], aggregationOut, aggAttrs, attr, dflt); - } - - for(i = 0; i < aggregationsIn.length; i++) { - aggregationOut = {_index: i}; - var target = coercei('target'); - var func = coercei('func'); - var enabledi = coercei('enabled'); - - // add this aggregation to the output only if it's the first instance - // of a valid target attribute - or an unused target attribute with "count" - if(enabledi && target && (arrayAttrs[target] || (func === 'count' && arrayAttrs[target] === undefined))) { - if(func === 'stddev') coercei('funcmode'); - - arrayAttrs[target] = 0; - aggregationsOut[i] = aggregationOut; - } else aggregationsOut[i] = {enabled: false, _index: i}; - } - - // any array attributes we haven't yet covered, fill them with the default aggregation - for(i = 0; i < arrayAttrArray.length; i++) { - if(arrayAttrs[arrayAttrArray[i]]) { - aggregationsOut.push({ - target: arrayAttrArray[i], - func: aggAttrs.func.dflt, - enabled: true, - _index: -1 - }); - } - } - - return transformOut; -}; - - -exports.calcTransform = function(gd, trace, opts) { - if(!opts.enabled) return; - - var groups = opts.groups; - - var groupArray = Lib.getTargetArray(trace, {target: groups}); - if(!groupArray) return; - - var i, vi, groupIndex, newGrouping; - - var groupIndices = {}; - var indexToPoints = {}; - var groupings = []; - - var originalPointsAccessor = pointsAccessorFunction(trace.transforms, opts); - - var len = groupArray.length; - if(trace._length) len = Math.min(len, trace._length); - - for(i = 0; i < len; i++) { - vi = groupArray[i]; - groupIndex = groupIndices[vi]; - if(groupIndex === undefined) { - groupIndices[vi] = groupings.length; - newGrouping = [i]; - groupings.push(newGrouping); - indexToPoints[groupIndices[vi]] = originalPointsAccessor(i); - } else { - groupings[groupIndex].push(i); - indexToPoints[groupIndices[vi]] = (indexToPoints[groupIndices[vi]] || []).concat(originalPointsAccessor(i)); - } - } - - opts._indexToPoints = indexToPoints; - - var aggregations = opts.aggregations; - - for(i = 0; i < aggregations.length; i++) { - aggregateOneArray(gd, trace, groupings, aggregations[i]); - } - - if(typeof groups === 'string') { - aggregateOneArray(gd, trace, groupings, { - target: groups, - func: 'first', - enabled: true - }); - } - - trace._length = groupings.length; -}; - -function aggregateOneArray(gd, trace, groupings, aggregation) { - if(!aggregation.enabled) return; - - var attr = aggregation.target; - var targetNP = Lib.nestedProperty(trace, attr); - var arrayIn = targetNP.get(); - var conversions = Axes.getDataConversions(gd, trace, attr, arrayIn); - var func = getAggregateFunction(aggregation, conversions); - - var arrayOut = new Array(groupings.length); - for(var i = 0; i < groupings.length; i++) { - arrayOut[i] = func(arrayIn, groupings[i]); - } - targetNP.set(arrayOut); - - if(aggregation.func === 'count') { - // count does not depend on an input array, so it's likely not part of _arrayAttrs yet - // but after this transform it most definitely *is* an array attribute. - Lib.pushUnique(trace._arrayAttrs, attr); - } -} - -function getAggregateFunction(opts, conversions) { - var func = opts.func; - var d2c = conversions.d2c; - var c2d = conversions.c2d; - - switch(func) { - // count, first, and last don't depend on anything about the data - // point back to pure functions for performance - case 'count': - return count; - case 'first': - return first; - case 'last': - return last; - - case 'sum': - // This will produce output in all cases even though it's nonsensical - // for date or category data. - return function(array, indices) { - var total = 0; - for(var i = 0; i < indices.length; i++) { - var vi = d2c(array[indices[i]]); - if(vi !== BADNUM) total += vi; - } - return c2d(total); - }; - - case 'avg': - // Generally meaningless for category data but it still does something. - return function(array, indices) { - var total = 0; - var cnt = 0; - for(var i = 0; i < indices.length; i++) { - var vi = d2c(array[indices[i]]); - if(vi !== BADNUM) { - total += vi; - cnt++; - } - } - return cnt ? c2d(total / cnt) : BADNUM; - }; - - case 'min': - return function(array, indices) { - var out = Infinity; - for(var i = 0; i < indices.length; i++) { - var vi = d2c(array[indices[i]]); - if(vi !== BADNUM) out = Math.min(out, vi); - } - return (out === Infinity) ? BADNUM : c2d(out); - }; - - case 'max': - return function(array, indices) { - var out = -Infinity; - for(var i = 0; i < indices.length; i++) { - var vi = d2c(array[indices[i]]); - if(vi !== BADNUM) out = Math.max(out, vi); - } - return (out === -Infinity) ? BADNUM : c2d(out); - }; - - case 'range': - return function(array, indices) { - var min = Infinity; - var max = -Infinity; - for(var i = 0; i < indices.length; i++) { - var vi = d2c(array[indices[i]]); - if(vi !== BADNUM) { - min = Math.min(min, vi); - max = Math.max(max, vi); - } - } - return (max === -Infinity || min === Infinity) ? BADNUM : c2d(max - min); - }; - - case 'change': - return function(array, indices) { - var first = d2c(array[indices[0]]); - var last = d2c(array[indices[indices.length - 1]]); - return (first === BADNUM || last === BADNUM) ? BADNUM : c2d(last - first); - }; - - case 'median': - return function(array, indices) { - var sortCalc = []; - for(var i = 0; i < indices.length; i++) { - var vi = d2c(array[indices[i]]); - if(vi !== BADNUM) sortCalc.push(vi); - } - if(!sortCalc.length) return BADNUM; - sortCalc.sort(Lib.sorterAsc); - var mid = (sortCalc.length - 1) / 2; - return c2d((sortCalc[Math.floor(mid)] + sortCalc[Math.ceil(mid)]) / 2); - }; - - case 'mode': - return function(array, indices) { - var counts = {}; - var maxCnt = 0; - var out = BADNUM; - for(var i = 0; i < indices.length; i++) { - var vi = d2c(array[indices[i]]); - if(vi !== BADNUM) { - var counti = counts[vi] = (counts[vi] || 0) + 1; - if(counti > maxCnt) { - maxCnt = counti; - out = vi; - } - } - } - return maxCnt ? c2d(out) : BADNUM; - }; - - case 'rms': - return function(array, indices) { - var total = 0; - var cnt = 0; - for(var i = 0; i < indices.length; i++) { - var vi = d2c(array[indices[i]]); - if(vi !== BADNUM) { - total += vi * vi; - cnt++; - } - } - return cnt ? c2d(Math.sqrt(total / cnt)) : BADNUM; - }; - - case 'stddev': - return function(array, indices) { - // balance numerical stability with performance: - // so that we call d2c once per element but don't need to - // store them, reference all to the first element - var total = 0; - var total2 = 0; - var cnt = 1; - var v0 = BADNUM; - var i; - for(i = 0; i < indices.length && v0 === BADNUM; i++) { - v0 = d2c(array[indices[i]]); - } - if(v0 === BADNUM) return BADNUM; - - for(; i < indices.length; i++) { - var vi = d2c(array[indices[i]]); - if(vi !== BADNUM) { - var dv = vi - v0; - total += dv; - total2 += dv * dv; - cnt++; - } - } - - // This is population std dev, if we want sample std dev - // we would need (...) / (cnt - 1) - // Also note there's no c2d here - that means for dates the result - // is a number of milliseconds, and for categories it's a number - // of category differences, which is not generically meaningful but - // as in other cases we don't forbid it. - var norm = (opts.funcmode === 'sample') ? (cnt - 1) : cnt; - // this is debatable: should a count of 1 return sample stddev of - // 0 or undefined? - if(!norm) return 0; - return Math.sqrt((total2 - (total * total / cnt)) / norm); - }; - } -} - -function count(array, indices) { - return indices.length; -} - -function first(array, indices) { - return array[indices[0]]; -} - -function last(array, indices) { - return array[indices[indices.length - 1]]; -} diff --git a/src/transforms/filter.js b/src/transforms/filter.js deleted file mode 100644 index 6a05527db34..00000000000 --- a/src/transforms/filter.js +++ /dev/null @@ -1,323 +0,0 @@ -'use strict'; - -var Lib = require('../lib'); -var Registry = require('../registry'); -var Axes = require('../plots/cartesian/axes'); -var pointsAccessorFunction = require('./helpers').pointsAccessorFunction; - -var filterOps = require('../constants/filter_ops'); -var COMPARISON_OPS = filterOps.COMPARISON_OPS; -var INTERVAL_OPS = filterOps.INTERVAL_OPS; -var SET_OPS = filterOps.SET_OPS; - -exports.moduleType = 'transform'; - -exports.name = 'filter'; - -exports.attributes = { - enabled: { - valType: 'boolean', - dflt: true, - editType: 'calc', - description: [ - 'Determines whether this filter transform is enabled or disabled.' - ].join(' ') - }, - target: { - valType: 'string', - strict: true, - noBlank: true, - arrayOk: true, - dflt: 'x', - editType: 'calc', - description: [ - 'Sets the filter target by which the filter is applied.', - - 'If a string, `target` is assumed to be a reference to a data array', - 'in the parent trace object.', - 'To filter about nested variables, use *.* to access them.', - 'For example, set `target` to *marker.color* to filter', - 'about the marker color array.', - - 'If an array, `target` is then the data array by which the filter is applied.' - ].join(' ') - }, - operation: { - valType: 'enumerated', - values: [] - .concat(COMPARISON_OPS) - .concat(INTERVAL_OPS) - .concat(SET_OPS), - dflt: '=', - editType: 'calc', - description: [ - 'Sets the filter operation.', - - '*=* keeps items equal to `value`', - '*!=* keeps items not equal to `value`', - - '*<* keeps items less than `value`', - '*<=* keeps items less than or equal to `value`', - - '*>* keeps items greater than `value`', - '*>=* keeps items greater than or equal to `value`', - - '*[]* keeps items inside `value[0]` to `value[1]` including both bounds', - '*()* keeps items inside `value[0]` to `value[1]` excluding both bounds', - '*[)* keeps items inside `value[0]` to `value[1]` including `value[0]` but excluding `value[1]', - '*(]* keeps items inside `value[0]` to `value[1]` excluding `value[0]` but including `value[1]', - - '*][* keeps items outside `value[0]` to `value[1]` and equal to both bounds', - '*)(* keeps items outside `value[0]` to `value[1]`', - '*](* keeps items outside `value[0]` to `value[1]` and equal to `value[0]`', - '*)[* keeps items outside `value[0]` to `value[1]` and equal to `value[1]`', - - '*{}* keeps items present in a set of values', - '*}{* keeps items not present in a set of values' - ].join(' ') - }, - value: { - valType: 'any', - dflt: 0, - editType: 'calc', - description: [ - 'Sets the value or values by which to filter.', - - 'Values are expected to be in the same type as the data linked', - 'to `target`.', - - 'When `operation` is set to one of', - 'the comparison values (' + COMPARISON_OPS + ')', - '`value` is expected to be a number or a string.', - - 'When `operation` is set to one of the interval values', - '(' + INTERVAL_OPS + ')', - '`value` is expected to be 2-item array where the first item', - 'is the lower bound and the second item is the upper bound.', - - 'When `operation`, is set to one of the set values', - '(' + SET_OPS + ')', - '`value` is expected to be an array with as many items as', - 'the desired set elements.' - ].join(' ') - }, - preservegaps: { - valType: 'boolean', - dflt: false, - editType: 'calc', - description: [ - 'Determines whether or not gaps in data arrays produced by the filter operation', - 'are preserved.', - 'Setting this to *true* might be useful when plotting a line chart', - 'with `connectgaps` set to *false*.' - ].join(' ') - }, - editType: 'calc' -}; - -exports.supplyDefaults = function(transformIn) { - var transformOut = {}; - - function coerce(attr, dflt) { - return Lib.coerce(transformIn, transformOut, exports.attributes, attr, dflt); - } - - var enabled = coerce('enabled'); - - if(enabled) { - var target = coerce('target'); - - if(Lib.isArrayOrTypedArray(target) && target.length === 0) { - transformOut.enabled = false; - return transformOut; - } - - coerce('preservegaps'); - coerce('operation'); - coerce('value'); - - var handleCalendarDefaults = Registry.getComponentMethod('calendars', 'handleDefaults'); - handleCalendarDefaults(transformIn, transformOut, 'valuecalendar', null); - handleCalendarDefaults(transformIn, transformOut, 'targetcalendar', null); - } - - return transformOut; -}; - -exports.calcTransform = function(gd, trace, opts) { - if(!opts.enabled) return; - - var targetArray = Lib.getTargetArray(trace, opts); - if(!targetArray) return; - - var target = opts.target; - - var len = targetArray.length; - if(trace._length) len = Math.min(len, trace._length); - - var targetCalendar = opts.targetcalendar; - var arrayAttrs = trace._arrayAttrs; - var preservegaps = opts.preservegaps; - - // even if you provide targetcalendar, if target is a string and there - // is a calendar attribute matching target it will get used instead. - if(typeof target === 'string') { - var attrTargetCalendar = Lib.nestedProperty(trace, target + 'calendar').get(); - if(attrTargetCalendar) targetCalendar = attrTargetCalendar; - } - - var d2c = Axes.getDataToCoordFunc(gd, trace, target, targetArray); - var filterFunc = getFilterFunc(opts, d2c, targetCalendar); - var originalArrays = {}; - var indexToPoints = {}; - var index = 0; - - function forAllAttrs(fn, index) { - for(var j = 0; j < arrayAttrs.length; j++) { - var np = Lib.nestedProperty(trace, arrayAttrs[j]); - fn(np, index); - } - } - - var initFn; - var fillFn; - if(preservegaps) { - initFn = function(np) { - originalArrays[np.astr] = Lib.extendDeep([], np.get()); - np.set(new Array(len)); - }; - fillFn = function(np, index) { - var val = originalArrays[np.astr][index]; - np.get()[index] = val; - }; - } else { - initFn = function(np) { - originalArrays[np.astr] = Lib.extendDeep([], np.get()); - np.set([]); - }; - fillFn = function(np, index) { - var val = originalArrays[np.astr][index]; - np.get().push(val); - }; - } - - // copy all original array attribute values, and clear arrays in trace - forAllAttrs(initFn); - - var originalPointsAccessor = pointsAccessorFunction(trace.transforms, opts); - - // loop through filter array, fill trace arrays if passed - for(var i = 0; i < len; i++) { - var passed = filterFunc(targetArray[i]); - if(passed) { - forAllAttrs(fillFn, i); - indexToPoints[index++] = originalPointsAccessor(i); - } else if(preservegaps) index++; - } - - opts._indexToPoints = indexToPoints; - trace._length = index; -}; - -function getFilterFunc(opts, d2c, targetCalendar) { - var operation = opts.operation; - var value = opts.value; - var hasArrayValue = Lib.isArrayOrTypedArray(value); - - function isOperationIn(array) { - return array.indexOf(operation) !== -1; - } - - var d2cValue = function(v) { return d2c(v, 0, opts.valuecalendar); }; - var d2cTarget = function(v) { return d2c(v, 0, targetCalendar); }; - - var coercedValue; - - if(isOperationIn(COMPARISON_OPS)) { - coercedValue = hasArrayValue ? d2cValue(value[0]) : d2cValue(value); - } else if(isOperationIn(INTERVAL_OPS)) { - coercedValue = hasArrayValue ? - [d2cValue(value[0]), d2cValue(value[1])] : - [d2cValue(value), d2cValue(value)]; - } else if(isOperationIn(SET_OPS)) { - coercedValue = hasArrayValue ? value.map(d2cValue) : [d2cValue(value)]; - } - - switch(operation) { - case '=': - return function(v) { return d2cTarget(v) === coercedValue; }; - - case '!=': - return function(v) { return d2cTarget(v) !== coercedValue; }; - - case '<': - return function(v) { return d2cTarget(v) < coercedValue; }; - - case '<=': - return function(v) { return d2cTarget(v) <= coercedValue; }; - - case '>': - return function(v) { return d2cTarget(v) > coercedValue; }; - - case '>=': - return function(v) { return d2cTarget(v) >= coercedValue; }; - - case '[]': - return function(v) { - var cv = d2cTarget(v); - return cv >= coercedValue[0] && cv <= coercedValue[1]; - }; - - case '()': - return function(v) { - var cv = d2cTarget(v); - return cv > coercedValue[0] && cv < coercedValue[1]; - }; - - case '[)': - return function(v) { - var cv = d2cTarget(v); - return cv >= coercedValue[0] && cv < coercedValue[1]; - }; - - case '(]': - return function(v) { - var cv = d2cTarget(v); - return cv > coercedValue[0] && cv <= coercedValue[1]; - }; - - case '][': - return function(v) { - var cv = d2cTarget(v); - return cv <= coercedValue[0] || cv >= coercedValue[1]; - }; - - case ')(': - return function(v) { - var cv = d2cTarget(v); - return cv < coercedValue[0] || cv > coercedValue[1]; - }; - - case '](': - return function(v) { - var cv = d2cTarget(v); - return cv <= coercedValue[0] || cv > coercedValue[1]; - }; - - case ')[': - return function(v) { - var cv = d2cTarget(v); - return cv < coercedValue[0] || cv >= coercedValue[1]; - }; - - case '{}': - return function(v) { - return coercedValue.indexOf(d2cTarget(v)) !== -1; - }; - - case '}{': - return function(v) { - return coercedValue.indexOf(d2cTarget(v)) === -1; - }; - } -} diff --git a/src/transforms/groupby.js b/src/transforms/groupby.js deleted file mode 100644 index 4f89c70d695..00000000000 --- a/src/transforms/groupby.js +++ /dev/null @@ -1,269 +0,0 @@ -'use strict'; - -var Lib = require('../lib'); -var PlotSchema = require('../plot_api/plot_schema'); -var Plots = require('../plots/plots'); -var pointsAccessorFunction = require('./helpers').pointsAccessorFunction; - -exports.moduleType = 'transform'; - -exports.name = 'groupby'; - -exports.attributes = { - enabled: { - valType: 'boolean', - dflt: true, - editType: 'calc', - description: [ - 'Determines whether this group-by transform is enabled or disabled.' - ].join(' ') - }, - groups: { - valType: 'data_array', - dflt: [], - editType: 'calc', - description: [ - 'Sets the groups in which the trace data will be split.', - 'For example, with `x` set to *[1, 2, 3, 4]* and', - '`groups` set to *[\'a\', \'b\', \'a\', \'b\']*,', - 'the groupby transform with split in one trace', - 'with `x` [1, 3] and one trace with `x` [2, 4].' - ].join(' ') - }, - nameformat: { - valType: 'string', - editType: 'calc', - description: [ - 'Pattern by which grouped traces are named. If only one trace is present,', - 'defaults to the group name (`"%{group}"`), otherwise defaults to the group name', - 'with trace name (`"%{group} (%{trace})"`). Available escape sequences are `%{group}`, which', - 'inserts the group name, and `%{trace}`, which inserts the trace name. If grouping', - 'GDP data by country when more than one trace is present, for example, the', - 'default "%{group} (%{trace})" would return "Monaco (GDP per capita)".' - ].join(' ') - }, - styles: { - _isLinkedToArray: 'style', - target: { - valType: 'string', - editType: 'calc', - description: [ - 'The group value which receives these styles.' - ].join(' ') - }, - value: { - valType: 'any', - dflt: {}, - editType: 'calc', - description: [ - 'Sets each group styles.', - 'For example, with `groups` set to *[\'a\', \'b\', \'a\', \'b\']*', - 'and `styles` set to *[{target: \'a\', value: { marker: { color: \'red\' } }}]', - 'marker points in group *\'a\'* will be drawn in red.' - ].join(' '), - _compareAsJSON: true - }, - editType: 'calc' - }, - editType: 'calc' -}; - -/** - * Supply transform attributes defaults - * - * @param {object} transformIn - * object linked to trace.transforms[i] with 'type' set to exports.name - * @param {object} traceOut - * the _fullData trace this transform applies to - * @param {object} layout - * the plot's (not-so-full) layout - * @param {object} traceIn - * the input data trace this transform applies to - * - * @return {object} transformOut - * copy of transformIn that contains attribute defaults - */ -exports.supplyDefaults = function(transformIn, traceOut, layout) { - var i; - var transformOut = {}; - - function coerce(attr, dflt) { - return Lib.coerce(transformIn, transformOut, exports.attributes, attr, dflt); - } - - var enabled = coerce('enabled'); - - if(!enabled) return transformOut; - - coerce('groups'); - coerce('nameformat', layout._dataLength > 1 ? '%{group} (%{trace})' : '%{group}'); - - var styleIn = transformIn.styles; - var styleOut = transformOut.styles = []; - - if(styleIn) { - for(i = 0; i < styleIn.length; i++) { - var thisStyle = styleOut[i] = {}; - Lib.coerce(styleIn[i], styleOut[i], exports.attributes.styles, 'target'); - var value = Lib.coerce(styleIn[i], styleOut[i], exports.attributes.styles, 'value'); - - // so that you can edit value in place and have Plotly.react notice it, or - // rebuild it every time and have Plotly.react NOT think it changed: - // use _compareAsJSON to say we should diff the _JSON_value - if(Lib.isPlainObject(value)) thisStyle.value = Lib.extendDeep({}, value); - else if(value) delete thisStyle.value; - } - } - - return transformOut; -}; - - -/** - * Apply transform !!! - * - * @param {array} data - * array of transformed traces (is [fullTrace] upon first transform) - * - * @param {object} state - * state object which includes: - * - transform {object} full transform attributes - * - fullTrace {object} full trace object which is being transformed - * - fullData {array} full pre-transform(s) data array - * - layout {object} the plot's (not-so-full) layout - * - * @return {object} newData - * array of transformed traces - */ -exports.transform = function(data, state) { - var newTraces, i, j; - var newData = []; - - for(i = 0; i < data.length; i++) { - newTraces = transformOne(data[i], state); - - for(j = 0; j < newTraces.length; j++) { - newData.push(newTraces[j]); - } - } - - return newData; -}; - -function transformOne(trace, state) { - var i, j, k, attr, srcArray, groupName, newTrace, transforms, arrayLookup; - var groupNameObj; - - var opts = state.transform; - var transformIndex = state.transformIndex; - var groups = trace.transforms[transformIndex].groups; - var originalPointsAccessor = pointsAccessorFunction(trace.transforms, opts); - - if(!(Lib.isArrayOrTypedArray(groups)) || groups.length === 0) { - return [trace]; - } - - var groupNames = Lib.filterUnique(groups); - var newData = new Array(groupNames.length); - var len = groups.length; - - var arrayAttrs = PlotSchema.findArrayAttributes(trace); - - var styles = opts.styles || []; - var styleLookup = {}; - for(i = 0; i < styles.length; i++) { - styleLookup[styles[i].target] = styles[i].value; - } - - if(opts.styles) { - groupNameObj = Lib.keyedContainer(opts, 'styles', 'target', 'value.name'); - } - - // An index to map group name --> expanded trace index - var indexLookup = {}; - var indexCnts = {}; - - for(i = 0; i < groupNames.length; i++) { - groupName = groupNames[i]; - indexLookup[groupName] = i; - indexCnts[groupName] = 0; - - // Start with a deep extend that just copies array references. - newTrace = newData[i] = Lib.extendDeepNoArrays({}, trace); - newTrace._group = groupName; - newTrace.transforms[transformIndex]._indexToPoints = {}; - - var suppliedName = null; - if(groupNameObj) { - suppliedName = groupNameObj.get(groupName); - } - - if(suppliedName || suppliedName === '') { - newTrace.name = suppliedName; - } else { - newTrace.name = Lib.templateString(opts.nameformat, { - trace: trace.name, - group: groupName - }); - } - - // In order for groups to apply correctly to other transform data (e.g. - // a filter transform), we have to break the connection and clone the - // transforms so that each group writes grouped values into a different - // destination. This function does not break the array reference - // connection between the split transforms it creates. That's handled in - // initialize, which creates a new empty array for each arrayAttr. - transforms = newTrace.transforms; - newTrace.transforms = []; - for(j = 0; j < transforms.length; j++) { - newTrace.transforms[j] = Lib.extendDeepNoArrays({}, transforms[j]); - } - - // Initialize empty arrays for the arrayAttrs, to be split in the next step - for(j = 0; j < arrayAttrs.length; j++) { - Lib.nestedProperty(newTrace, arrayAttrs[j]).set([]); - } - } - - // For each array attribute including those nested inside this and other - // transforms (small note that we technically only need to do this for - // transforms that have not yet been applied): - for(k = 0; k < arrayAttrs.length; k++) { - attr = arrayAttrs[k]; - - // Cache all the arrays to which we'll push: - for(j = 0, arrayLookup = []; j < groupNames.length; j++) { - arrayLookup[j] = Lib.nestedProperty(newData[j], attr).get(); - } - - // Get the input data: - srcArray = Lib.nestedProperty(trace, attr).get(); - - // Send each data point to the appropriate expanded trace: - for(j = 0; j < len; j++) { - // Map group data --> trace index --> array and push data onto it - arrayLookup[indexLookup[groups[j]]].push(srcArray[j]); - } - } - - for(j = 0; j < len; j++) { - newTrace = newData[indexLookup[groups[j]]]; - - var indexToPoints = newTrace.transforms[transformIndex]._indexToPoints; - indexToPoints[indexCnts[groups[j]]] = originalPointsAccessor(j); - indexCnts[groups[j]]++; - } - - for(i = 0; i < groupNames.length; i++) { - groupName = groupNames[i]; - newTrace = newData[i]; - - Plots.clearExpandedTraceDefaultColors(newTrace); - - // there's no need to coerce styleLookup[groupName] here - // as another round of supplyDefaults is done on the transformed traces - newTrace = Lib.extendDeepNoArrays(newTrace, styleLookup[groupName] || {}); - } - - return newData; -} diff --git a/src/transforms/helpers.js b/src/transforms/helpers.js deleted file mode 100644 index 539889b962c..00000000000 --- a/src/transforms/helpers.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -exports.pointsAccessorFunction = function(transforms, opts) { - var tr; - var prevIndexToPoints; - for(var i = 0; i < transforms.length; i++) { - tr = transforms[i]; - if(tr === opts) break; - if(!tr._indexToPoints || tr.enabled === false) continue; - prevIndexToPoints = tr._indexToPoints; - } - var originalPointsAccessor = prevIndexToPoints ? - function(i) {return prevIndexToPoints[i];} : - function(i) {return [i];}; - return originalPointsAccessor; -}; diff --git a/src/transforms/sort.js b/src/transforms/sort.js deleted file mode 100644 index 083d3432328..00000000000 --- a/src/transforms/sort.js +++ /dev/null @@ -1,154 +0,0 @@ -'use strict'; - -var Lib = require('../lib'); -var Axes = require('../plots/cartesian/axes'); -var pointsAccessorFunction = require('./helpers').pointsAccessorFunction; - -var BADNUM = require('../constants/numerical').BADNUM; - -exports.moduleType = 'transform'; - -exports.name = 'sort'; - -exports.attributes = { - enabled: { - valType: 'boolean', - dflt: true, - editType: 'calc', - description: [ - 'Determines whether this sort transform is enabled or disabled.' - ].join(' ') - }, - target: { - valType: 'string', - strict: true, - noBlank: true, - arrayOk: true, - dflt: 'x', - editType: 'calc', - description: [ - 'Sets the target by which the sort transform is applied.', - - 'If a string, *target* is assumed to be a reference to a data array', - 'in the parent trace object.', - 'To sort about nested variables, use *.* to access them.', - 'For example, set `target` to *marker.size* to sort', - 'about the marker size array.', - - 'If an array, *target* is then the data array by which', - 'the sort transform is applied.' - ].join(' ') - }, - order: { - valType: 'enumerated', - values: ['ascending', 'descending'], - dflt: 'ascending', - editType: 'calc', - description: [ - 'Sets the sort transform order.' - ].join(' ') - }, - editType: 'calc' -}; - -exports.supplyDefaults = function(transformIn) { - var transformOut = {}; - - function coerce(attr, dflt) { - return Lib.coerce(transformIn, transformOut, exports.attributes, attr, dflt); - } - - var enabled = coerce('enabled'); - - if(enabled) { - coerce('target'); - coerce('order'); - } - - return transformOut; -}; - -exports.calcTransform = function(gd, trace, opts) { - if(!opts.enabled) return; - - var targetArray = Lib.getTargetArray(trace, opts); - if(!targetArray) return; - - var target = opts.target; - - var len = targetArray.length; - if(trace._length) len = Math.min(len, trace._length); - - var arrayAttrs = trace._arrayAttrs; - var d2c = Axes.getDataToCoordFunc(gd, trace, target, targetArray); - var indices = getIndices(opts, targetArray, d2c, len); - var originalPointsAccessor = pointsAccessorFunction(trace.transforms, opts); - var indexToPoints = {}; - var i, j; - - for(i = 0; i < arrayAttrs.length; i++) { - var np = Lib.nestedProperty(trace, arrayAttrs[i]); - var arrayOld = np.get(); - var arrayNew = new Array(len); - - for(j = 0; j < len; j++) { - arrayNew[j] = arrayOld[indices[j]]; - } - - np.set(arrayNew); - } - - for(j = 0; j < len; j++) { - indexToPoints[j] = originalPointsAccessor(indices[j]); - } - - opts._indexToPoints = indexToPoints; - trace._length = len; -}; - -function getIndices(opts, targetArray, d2c, len) { - var sortedArray = new Array(len); - var indices = new Array(len); - var i; - - for(i = 0; i < len; i++) { - sortedArray[i] = {v: targetArray[i], i: i}; - } - - sortedArray.sort(getSortFunc(opts, d2c)); - - for(i = 0; i < len; i++) { - indices[i] = sortedArray[i].i; - } - - return indices; -} - -function getSortFunc(opts, d2c) { - switch(opts.order) { - case 'ascending': - return function(a, b) { - var ac = d2c(a.v); - var bc = d2c(b.v); - if(ac === BADNUM) { - return 1; - } - if(bc === BADNUM) { - return -1; - } - return ac - bc; - }; - case 'descending': - return function(a, b) { - var ac = d2c(a.v); - var bc = d2c(b.v); - if(ac === BADNUM) { - return 1; - } - if(bc === BADNUM) { - return -1; - } - return bc - ac; - }; - } -} From ee14249ba77b53a034b570959a9fa461b89eef22 Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Tue, 9 Jun 2026 16:53:51 -0400 Subject: [PATCH 133/241] remove dead transforms code, part 2 --- src/plots/plots.js | 131 ++------------------------------------------- 1 file changed, 3 insertions(+), 128 deletions(-) diff --git a/src/plots/plots.js b/src/plots/plots.js index 2378020e5de..d68f85a6263 100644 --- a/src/plots/plots.js +++ b/src/plots/plots.js @@ -183,9 +183,6 @@ var extraFormatKeys = [ * gd._fullLayout._basePlotModules * is a list of all the plot modules required to draw the plot. * - * gd._fullLayout._transformModules - * is a list of all the transform modules invoked. - * */ plots.supplyDefaults = function(gd, opts) { var skipUpdateCalc = opts && opts.skipUpdateCalc; @@ -437,17 +434,6 @@ plots.supplyDefaultsUpdateCalc = function(oldCalcdata, newFullData) { var newTrace = newFullData[i]; var cd0 = (oldCalcdata[i] || [])[0]; if(cd0 && cd0.trace) { - var oldTrace = cd0.trace; - if(oldTrace._hasCalcTransform) { - var arrayAttrs = oldTrace._arrayAttrs; - var j, astr, oldArrayVal; - - for(j = 0; j < arrayAttrs.length; j++) { - astr = arrayAttrs[j]; - oldArrayVal = Lib.nestedProperty(oldTrace, astr).get().slice(); - Lib.nestedProperty(newTrace, astr).set(oldArrayVal); - } - } cd0.trace = newTrace; } } @@ -908,51 +894,6 @@ function findMainSubplot(ax, fullLayout) { return mainSubplotID || nextBestMainSubplotID; } -// This function clears any trace attributes with valType: color and -// no set dflt filed in the plot schema. This is needed because groupby (which -// is the only transform for which this currently applies) supplies parent -// trace defaults, then expanded trace defaults. The result is that `null` -// colors are default-supplied and inherited as a color instead of a null. -// The result is that expanded trace default colors have no effect, with -// the final result that groups are indistinguishable. This function clears -// those colors so that individual groupby groups get unique colors. -plots.clearExpandedTraceDefaultColors = function(trace) { - var colorAttrs, path, i; - - // This uses weird closure state in order to satisfy the linter rule - // that we can't create functions in a loop. - function locateColorAttrs(attr, attrName, attrs, level) { - path[level] = attrName; - path.length = level + 1; - if(attr.valType === 'color' && attr.dflt === undefined) { - colorAttrs.push(path.join('.')); - } - } - - path = []; - - // Get the cached colorAttrs: - colorAttrs = trace._module._colorAttrs; - - // Or else compute and cache the colorAttrs on the module: - if(!colorAttrs) { - trace._module._colorAttrs = colorAttrs = []; - PlotSchema.crawl( - trace._module.attributes, - locateColorAttrs - ); - } - - for(i = 0; i < colorAttrs.length; i++) { - var origprop = Lib.nestedProperty(trace, '_input.' + colorAttrs[i]); - - if(!origprop.get()) { - Lib.nestedProperty(trace, colorAttrs[i]).set(null); - } - } -}; - - plots.supplyDataDefaults = function(dataIn, dataOut, layout, fullLayout) { var modules = fullLayout._modules; var visibleModules = fullLayout._visibleModules; @@ -962,8 +903,6 @@ plots.supplyDataDefaults = function(dataIn, dataOut, layout, fullLayout) { var i, fullTrace, trace; - fullLayout._transformModules = []; - function pushModule(fullTrace) { dataOut.push(fullTrace); @@ -1488,16 +1427,6 @@ plots.supplyLayoutModuleDefaults = function(layoutIn, layoutOut, fullData, trans } } - // transform module layout defaults - var transformModules = layoutOut._transformModules; - for(i = 0; i < transformModules.length; i++) { - _module = transformModules[i]; - - if(_module.supplyLayoutDefaults) { - _module.supplyLayoutDefaults(layoutIn, layoutOut, fullData, transitionData); - } - } - for(component in componentsRegistry) { _module = componentsRegistry[component]; @@ -2303,7 +2232,7 @@ plots.extendObjectWithContainers = function(dest, src, containerPaths) { return dest; }; -plots.dataArrayContainers = ['transforms', 'dimensions']; +plots.dataArrayContainers = ['dimensions']; plots.layoutArrayContainers = Registry.layoutArrayContainers; /* @@ -2746,7 +2675,7 @@ plots.doCalcdata = function(gd, traces) { var fullData = gd._fullData; var fullLayout = gd._fullLayout; - var trace, _module, i, j; + var trace, _module, i; // XXX: Is this correct? Needs a closer look so that *some* traces can be recomputed without // *all* needing doCalcdata: @@ -2810,39 +2739,6 @@ plots.doCalcdata = function(gd, traces) { } } - var hasCalcTransform = false; - - function transformCalci(i) { - trace = fullData[i]; - _module = trace._module; - - if(trace.visible === true && trace.transforms) { - // we need one round of trace module calc before - // the calc transform to 'fill in' the categories list - // used for example in the data-to-coordinate method - if(_module && _module.calc) { - var cdi = _module.calc(gd, trace); - - // must clear scene 'batches', so that 2nd - // _module.calc call starts from scratch - if(cdi[0] && cdi[0].t && cdi[0].t._scene) { - delete cdi[0].t._scene.dirty; - } - } - - for(j = 0; j < trace.transforms.length; j++) { - var transform = trace.transforms[j]; - - _module = transformsRegistry[transform.type]; - if(_module && _module.calcTransform) { - trace._hasCalcTransform = true; - hasCalcTransform = true; - _module.calcTransform(gd, trace, transform); - } - } - } - } - function calci(i, isContainer) { trace = fullData[i]; _module = trace._module; @@ -2852,19 +2748,6 @@ plots.doCalcdata = function(gd, traces) { var cd = []; if(trace.visible === true && trace._length !== 0) { - // clear existing ref in case it got relinked - delete trace._indexToPoints; - // keep ref of index-to-points map object of the *last* enabled transform, - // this index-to-points map object is required to determine the calcdata indices - // that correspond to input indices (e.g. from 'selectedpoints') - var transforms = trace.transforms || []; - for(j = transforms.length - 1; j >= 0; j--) { - if(transforms[j].enabled) { - trace._indexToPoints = transforms[j]._indexToPoints; - break; - } - } - if(_module && _module.calc) { cd = _module.calc(gd, trace); } @@ -2889,15 +2772,7 @@ plots.doCalcdata = function(gd, traces) { setupAxisCategories(axList, fullData, fullLayout); - // 'transform' loop - must calc container traces first - // so that if their dependent traces can get transform properly - for(i = 0; i < fullData.length; i++) calci(i, true); - for(i = 0; i < fullData.length; i++) transformCalci(i); - - // clear stuff that should recomputed in 'regular' loop - if(hasCalcTransform) setupAxisCategories(axList, fullData, fullLayout); - - // 'regular' loop - make sure container traces (eg carpet) calc before + // make sure container traces (eg carpet) calc before // contained traces (eg contourcarpet) for(i = 0; i < fullData.length; i++) calci(i, true); for(i = 0; i < fullData.length; i++) calci(i, false); From aeb8c800fa9eaf8ada36f9c57f442ac355d8893e Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Tue, 9 Jun 2026 17:04:29 -0400 Subject: [PATCH 134/241] remove dead transforms code, part 3 --- src/components/fx/helpers.js | 12 +------- src/lib/index.js | 46 ++---------------------------- src/plot_api/plot_api.js | 8 +++--- src/traces/histogram/event_data.js | 12 +------- 4 files changed, 8 insertions(+), 70 deletions(-) diff --git a/src/components/fx/helpers.js b/src/components/fx/helpers.js index 57c901313a8..d3d2530bccb 100644 --- a/src/components/fx/helpers.js +++ b/src/components/fx/helpers.js @@ -122,17 +122,7 @@ exports.makeEventData = function (pt, trace, cd) { pointNumber: pointNumber }; - if (trace._indexToPoints) { - var pointIndices = trace._indexToPoints[pointNumber]; - - if (pointIndices.length === 1) { - out.pointIndex = pointIndices[0]; - } else { - out.pointIndices = pointIndices; - } - } else { - out.pointIndex = pointNumber; - } + out.pointIndex = pointNumber; if (trace._module.eventData) { out = trace._module.eventData(out, pt, trace, cd, pointNumber); diff --git a/src/lib/index.js b/src/lib/index.js index 8124c9ec9a5..2fc750e4b8d 100644 --- a/src/lib/index.js +++ b/src/lib/index.js @@ -585,39 +585,17 @@ lib.extractOption = function (calcPt, trace, calcKey, traceKey) { if (!Array.isArray(traceVal)) return traceVal; }; -function makePtIndex2PtNumber(indexToPoints) { - var ptIndex2ptNumber = {}; - for (var k in indexToPoints) { - var pts = indexToPoints[k]; - for (var j = 0; j < pts.length; j++) { - ptIndex2ptNumber[pts[j]] = +k; - } - } - return ptIndex2ptNumber; -} - /** Tag selected calcdata items - * - * N.B. note that point 'index' corresponds to input data array index - * whereas 'number' is its post-transform version. * * @param {array} calcTrace * @param {object} trace * - selectedpoints {array} - * - _indexToPoints {object} * @param {ptNumber2cdIndex} ptNumber2cdIndex (optional) * optional map object for trace types that do not have 1-to-1 point number to * calcdata item index correspondence (e.g. histogram) */ lib.tagSelected = function (calcTrace, trace, ptNumber2cdIndex) { var selectedpoints = trace.selectedpoints; - var indexToPoints = trace._indexToPoints; - var ptIndex2ptNumber; - - // make pt index-to-number map object, which takes care of transformed traces - if (indexToPoints) { - ptIndex2ptNumber = makePtIndex2PtNumber(indexToPoints); - } function isCdIndexValid(v) { return v !== undefined && v < calcTrace.length; @@ -630,7 +608,7 @@ lib.tagSelected = function (calcTrace, trace, ptNumber2cdIndex) { lib.isIndex(ptIndex) || (lib.isArrayOrTypedArray(ptIndex) && lib.isIndex(ptIndex[0]) && lib.isIndex(ptIndex[1])) ) { - var ptNumber = ptIndex2ptNumber ? ptIndex2ptNumber[ptIndex] : ptIndex; + var ptNumber = ptIndex; var cdIndex = ptNumber2cdIndex ? ptNumber2cdIndex[ptNumber] : ptNumber; if (isCdIndexValid(cdIndex)) { @@ -641,27 +619,7 @@ lib.tagSelected = function (calcTrace, trace, ptNumber2cdIndex) { }; lib.selIndices2selPoints = function (trace) { - var selectedpoints = trace.selectedpoints; - var indexToPoints = trace._indexToPoints; - - if (indexToPoints) { - var ptIndex2ptNumber = makePtIndex2PtNumber(indexToPoints); - var out = []; - - for (var i = 0; i < selectedpoints.length; i++) { - var ptIndex = selectedpoints[i]; - if (lib.isIndex(ptIndex)) { - var ptNumber = ptIndex2ptNumber[ptIndex]; - if (lib.isIndex(ptNumber)) { - out.push(ptNumber); - } - } - } - - return out; - } else { - return selectedpoints; - } + return trace.selectedpoints; }; /** Returns target as set by 'target' transform attribute diff --git a/src/plot_api/plot_api.js b/src/plot_api/plot_api.js index c3cb8ad424c..61b50ca1004 100644 --- a/src/plot_api/plot_api.js +++ b/src/plot_api/plot_api.js @@ -2630,9 +2630,9 @@ function react(gd, data, layout, config) { applyUIRevisions(gd.data, gd.layout, oldFullData, oldFullLayout); - // "true" skips updating calcdata and remapping arrays from calcTransforms, - // which supplyDefaults usually does at the end, but we may need to NOT do - // if the diff (which we haven't determined yet) says we'll recalc + // "true" skips updating calcdata, which supplyDefaults usually does at + // the end, but we may need to NOT do if the diff (which we haven't + // determined yet) says we'll recalc Plots.supplyDefaults(gd, { skipUpdateCalc: true }); var newFullData = gd._fullData; @@ -2667,7 +2667,7 @@ function react(gd, data, layout, config) { if (emptyCategories) emptyCategories(); } } - // otherwise do the calcdata updates and calcTransform array remaps that we skipped earlier + // otherwise do the calcdata updates that we skipped earlier } else { Plots.supplyDefaultsUpdateCalc(gd.calcdata, newFullData); } diff --git a/src/traces/histogram/event_data.js b/src/traces/histogram/event_data.js index db61fccc7db..fa77384d38e 100644 --- a/src/traces/histogram/event_data.js +++ b/src/traces/histogram/event_data.js @@ -22,17 +22,7 @@ module.exports = function eventData(out, pt, trace, cd, pointNumber) { delete out.pointNumber; delete out.pointIndex; - var pointIndices; - if(trace._indexToPoints) { - pointIndices = []; - for(var i = 0; i < pts.length; i++) { - pointIndices = pointIndices.concat(trace._indexToPoints[pts[i]]); - } - } else { - pointIndices = pts; - } - - out.pointIndices = pointIndices; + out.pointIndices = pts; } return out; From 6281778e34c479cca8e3122f19159f3075aab3e6 Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Wed, 10 Jun 2026 13:28:14 -0400 Subject: [PATCH 135/241] remove all references to _fullInput --- src/components/legend/draw.js | 4 +--- src/components/legend/handle_click.js | 16 ++++++---------- src/components/selections/select.js | 21 +++++---------------- src/plot_api/plot_api.js | 21 ++++++++++----------- src/plot_api/template_api.js | 2 +- src/plots/cartesian/type_defaults.js | 2 -- src/plots/plots.js | 15 ++++----------- src/traces/parcoords/plot.js | 4 ++-- src/traces/table/data_preparation_helper.js | 2 +- src/types/core/data.internal.d.ts | 10 +--------- 10 files changed, 31 insertions(+), 66 deletions(-) diff --git a/src/components/legend/draw.js b/src/components/legend/draw.js index cf6439f0cf8..707f2a77364 100644 --- a/src/components/legend/draw.js +++ b/src/components/legend/draw.js @@ -111,7 +111,6 @@ function drawOne(gd, opts) { var shapeLegend = { _isShape: true, - _fullInput: shape, index: shape._index, name: shape.name || shape.label.text || ('shape ' + shape._index), legend: shape.legend, @@ -599,12 +598,11 @@ function drawTexts(g, gd, legendObj) { this.text(ensureLength(newName, maxNameLength)) .call(textLayout, g, gd, legendObj); - var fullInput = legendItem.trace._fullInput || {}; var update = {}; update.name = newName; - if(fullInput._isShape) { + if(legendItem.trace._isShape) { return Registry.call('_guiRelayout', gd, 'shapes[' + trace.index + '].name', update.name); } else { return Registry.call('_guiRestyle', gd, update, trace.index); diff --git a/src/components/legend/handle_click.js b/src/components/legend/handle_click.js index be8d7c533b3..6170f03bf8b 100644 --- a/src/components/legend/handle_click.js +++ b/src/components/legend/handle_click.js @@ -50,7 +50,7 @@ exports.handleItemClick = function handleItemClick(g, gd, legendObj, mode) { var fullTrace = legendItem.trace; if (fullTrace._isShape) { - fullTrace = fullTrace._fullInput; + fullTrace = fullLayout.shapes[fullTrace.index]; } var legendgroup = fullTrace.legendgroup; @@ -92,15 +92,14 @@ exports.handleItemClick = function handleItemClick(g, gd, legendObj, mode) { function setVisibility(fullTrace, visibility) { if (legendItem.groupTitle && !toggleGroup) return; - var fullInput = fullTrace._fullInput || fullTrace; - var isShape = fullInput._isShape; - var index = fullInput.index; - if (index === undefined) index = fullInput._index; + var isShape = fullTrace._isShape; + var index = fullTrace.index; + if (index === undefined) index = fullTrace._index; // false -> false (not possible since will not be visible in legend) // true -> legendonly // legendonly -> true - var nextVisibility = fullInput.visible === false ? false : visibility; + var nextVisibility = fullTrace.visible === false ? false : visibility; if (isShape) { insertShapesUpdate(index, nextVisibility); @@ -111,10 +110,7 @@ exports.handleItemClick = function handleItemClick(g, gd, legendObj, mode) { var thisLegend = fullTrace.legend; - var fullInput = fullTrace._fullInput; - var isShape = fullInput && fullInput._isShape; - - if (!isShape && Registry.traceIs(fullTrace, 'pie-like')) { + if (!fullTrace._isShape && Registry.traceIs(fullTrace, 'pie-like')) { var thisLabel = legendItem.label; var thisLabelIndex = hiddenSlices.indexOf(thisLabel); diff --git a/src/components/selections/select.js b/src/components/selections/select.js index e44734665ad..01648f46da3 100644 --- a/src/components/selections/select.js +++ b/src/components/selections/select.js @@ -940,41 +940,33 @@ function isOnlyOnePointSelected(searchTraces) { function updateSelectedState(gd, searchTraces, eventData) { var i; + var trace; // before anything else, update preGUI if necessary for(i = 0; i < searchTraces.length; i++) { - var fullInputTrace = searchTraces[i].cd[0].trace._fullInput; - var tracePreGUI = gd._fullLayout._tracePreGUI[fullInputTrace.uid] || {}; + trace = searchTraces[i].cd[0].trace; + var tracePreGUI = gd._fullLayout._tracePreGUI[trace.uid] || {}; if(tracePreGUI.selectedpoints === undefined) { - tracePreGUI.selectedpoints = fullInputTrace._input.selectedpoints || null; + tracePreGUI.selectedpoints = trace._input.selectedpoints || null; } } - var trace; if(eventData) { var pts = eventData.points || []; for(i = 0; i < searchTraces.length; i++) { trace = searchTraces[i].cd[0].trace; - trace._input.selectedpoints = trace._fullInput.selectedpoints = []; - if(trace._fullInput !== trace) trace.selectedpoints = []; + trace._input.selectedpoints = trace.selectedpoints = []; } for(var k = 0; k < pts.length; k++) { var pt = pts[k]; var data = pt.data; - var fullData = pt.fullData; var pointIndex = pt.pointIndex; var pointIndices = pt.pointIndices; if(pointIndices) { [].push.apply(data.selectedpoints, pointIndices); - if(trace._fullInput !== trace) { - [].push.apply(fullData.selectedpoints, pointIndices); - } } else { data.selectedpoints.push(pointIndex); - if(trace._fullInput !== trace) { - fullData.selectedpoints.push(pointIndex); - } } } } else { @@ -982,9 +974,6 @@ function updateSelectedState(gd, searchTraces, eventData) { trace = searchTraces[i].cd[0].trace; delete trace.selectedpoints; delete trace._input.selectedpoints; - if(trace._fullInput !== trace) { - delete trace._fullInput.selectedpoints; - } } } diff --git a/src/plot_api/plot_api.js b/src/plot_api/plot_api.js index 61b50ca1004..645c28e50bb 100644 --- a/src/plot_api/plot_api.js +++ b/src/plot_api/plot_api.js @@ -1438,7 +1438,7 @@ function _restyle(gd, aobj, traces) { extraparam = layoutNP(gd.layout, attr.replace('LAYOUT', '')); } else { var tracei = traces[i]; - var preGUI = fullLayout._tracePreGUI[getFullTrace(tracei)._fullInput.uid]; + var preGUI = fullLayout._tracePreGUI[getFullTrace(tracei).uid]; extraparam = makeNP(preGUI, guiEditFlag)(data[tracei], attr); } @@ -1510,7 +1510,7 @@ function _restyle(gd, aobj, traces) { for (i = 0; i < traces.length; i++) { cont = data[traces[i]]; contFull = getFullTrace(traces[i]); - var preGUI = fullLayout._tracePreGUI[contFull._fullInput.uid]; + var preGUI = fullLayout._tracePreGUI[contFull.uid]; param = makeNP(preGUI, guiEditFlag)(cont, ai); oldVal = param.get(); newVal = Array.isArray(vi) ? vi[i % vi.length] : vi; @@ -2392,7 +2392,7 @@ function getNewRev(revAttr, container) { function getFullTraceIndexFromUid(uid, fullData) { for (var i = 0; i < fullData.length; i++) { - if (fullData[i]._fullInput.uid === uid) return i; + if (fullData[i].uid === uid) return i; } return -1; } @@ -2499,7 +2499,7 @@ function applyUIRevisions(data, layout, oldFullData, oldFullLayout) { for (var uid in allTracePreGUI) { var tracePreGUI = allTracePreGUI[uid]; var newTrace = null; - var fullInput; + var fullTrace; for (key in tracePreGUI) { // wait until we know we have preGUI values to look for traces // but if we don't find both, stop looking at this uid @@ -2511,10 +2511,9 @@ function applyUIRevisions(data, layout, oldFullData, oldFullLayout) { delete allTracePreGUI[uid]; break; } - var fullTrace = oldFullData[fulli]; - fullInput = fullTrace._fullInput; + fullTrace = oldFullData[fulli]; - var newTracei = getTraceIndexFromUid(uid, data, fullInput.index); + var newTracei = getTraceIndexFromUid(uid, data, fullTrace.index); if (newTracei < 0) { // No match in new data delete allTracePreGUI[uid]; @@ -2529,7 +2528,7 @@ function applyUIRevisions(data, layout, oldFullData, oldFullLayout) { oldRev = nestedProperty(oldFullLayout, match.attr).get(); newRev = oldRev && getNewRev(match.attr, layout); } else { - oldRev = fullInput.uirevision; + oldRev = fullTrace.uirevision; // inheritance for trace.uirevision is simple, just layout.uirevision newRev = newTrace.uirevision; if (newRev === undefined) newRev = layout.uirevision; @@ -2541,7 +2540,7 @@ function applyUIRevisions(data, layout, oldFullData, oldFullLayout) { newNP = nestedProperty(newTrace, key); newVal = newNP.get(); if (valsMatch(newVal, preGUIVal)) { - newNP.set(undefinedToNull(nestedProperty(fullInput, key).get())); + newNP.set(undefinedToNull(nestedProperty(fullTrace, key).get())); continue; } } @@ -2783,11 +2782,11 @@ function diffData(gd, oldFullData, newFullData, immutable, transition, newDataRe for (i = 0; i < oldFullData.length; i++) { if (newFullData[i]) { - trace = newFullData[i]._fullInput; + trace = newFullData[i]; if (seenUIDs[trace.uid]) continue; seenUIDs[trace.uid] = 1; - getDiffFlags(oldFullData[i]._fullInput, trace, [], diffOpts); + getDiffFlags(oldFullData[i], trace, [], diffOpts); } } diff --git a/src/plot_api/template_api.js b/src/plot_api/template_api.js index cb80162222c..d5234108e18 100644 --- a/src/plot_api/template_api.js +++ b/src/plot_api/template_api.js @@ -342,7 +342,7 @@ exports.validateTemplate = function(figureIn, template) { var fullTrace = fullData[i]; traceType = fullTrace.type; typeCount[traceType] = (typeCount[traceType] || 0) + 1; - if(!fullTrace._fullInput._template) { + if(!fullTrace._template) { // this takes care of the case of traceType in the data but not // the template errorList.push({ diff --git a/src/plots/cartesian/type_defaults.js b/src/plots/cartesian/type_defaults.js index 1d1b0e03217..71a3cd83040 100644 --- a/src/plots/cartesian/type_defaults.js +++ b/src/plots/cartesian/type_defaults.js @@ -118,11 +118,9 @@ function getBoxPosLetter(trace) { function isBoxWithoutPositionCoords(trace, axLetter) { var posLetter = getBoxPosLetter(trace); var isBox = traceIs(trace, 'box-violin'); - var isCandlestick = traceIs(trace._fullInput || {}, 'candlestick'); return ( isBox && - !isCandlestick && axLetter === posLetter && trace[posLetter] === undefined && trace[posLetter + '0'] === undefined diff --git a/src/plots/plots.js b/src/plots/plots.js index d68f85a6263..98e6f7a83af 100644 --- a/src/plots/plots.js +++ b/src/plots/plots.js @@ -409,7 +409,7 @@ plots.supplyDefaults = function(gd, opts) { var uid; for(uid in tracePreGUI) uids[uid] = 'old'; for(i = 0; i < newFullData.length; i++) { - uid = newFullData[i]._fullInput.uid; + uid = newFullData[i].uid; if(!uids[uid]) tracePreGUI[uid] = {}; uids[uid] = 'new'; } @@ -447,14 +447,8 @@ plots.supplyDefaultsUpdateCalc = function(oldCalcdata, newFullData) { */ function getTraceUids(oldFullData, newData) { var len = newData.length; - var oldFullInput = []; - var i, prevFullInput; - for(i = 0; i < oldFullData.length; i++) { - var thisFullInput = oldFullData[i]._fullInput; - if(thisFullInput !== prevFullInput) oldFullInput.push(thisFullInput); - prevFullInput = thisFullInput; - } - var oldLen = oldFullInput.length; + var i; + var oldLen = oldFullData.length; var out = new Array(len); var seenUids = {}; @@ -475,7 +469,7 @@ function getTraceUids(oldFullData, newData) { if(typeof newUid === 'number') newUid = String(newUid); if(tryUid(newUid, i)) continue; - if(i < oldLen && tryUid(oldFullInput[i].uid, i)) continue; + if(i < oldLen && tryUid(oldFullData[i].uid, i)) continue; setUid(Lib.randstr(seenUids), i); } @@ -940,7 +934,6 @@ plots.supplyDataDefaults = function(dataIn, dataOut, layout, fullLayout) { fullTrace.index = i; fullTrace._input = trace; - fullTrace._fullInput = fullTrace; pushModule(fullTrace); diff --git a/src/traces/parcoords/plot.js b/src/traces/parcoords/plot.js index f2d2a0b0832..2857d918d64 100644 --- a/src/traces/parcoords/plot.js +++ b/src/traces/parcoords/plot.js @@ -57,7 +57,7 @@ var exports = module.exports = function plot(gd, cdModule) { // because it's an array of variable dimensionality. So store the whole // thing at once manually. var aStr = 'dimensions[' + initialDimIndex + '].constraintrange'; - var preGUI = fullLayout._tracePreGUI[gd._fullData[fullIndices[i]]._fullInput.uid]; + var preGUI = fullLayout._tracePreGUI[gd._fullData[fullIndices[i]].uid]; if(preGUI[aStr] === undefined) { var initialVal = dim.constraintrange; preGUI[aStr] = initialVal || null; @@ -116,7 +116,7 @@ var exports = module.exports = function plot(gd, cdModule) { // case to just store the order itself. // Registry.call('_storeDirectGUIEdit', // gd.data[inputIndices[i]], - // fullLayout._tracePreGUI[gd._fullData[fullIndices[i]]._fullInput.uid], + // fullLayout._tracePreGUI[gd._fullData[fullIndices[i]].uid], // {dimensions: currentDims[i]} // ); diff --git a/src/traces/table/data_preparation_helper.js b/src/traces/table/data_preparation_helper.js index fb737366dd3..84035df22fe 100644 --- a/src/traces/table/data_preparation_helper.js +++ b/src/traces/table/data_preparation_helper.js @@ -38,7 +38,7 @@ module.exports = function calc(gd, trace) { var rowBlocks = makeRowBlock(anchorToRowBlock, headerRowBlocks); var uniqueKeys = {}; - var columnOrder = trace._fullInput.columnorder; + var columnOrder = trace.columnorder; if(isArrayOrTypedArray(columnOrder)) columnOrder = Array.from(columnOrder); columnOrder = columnOrder.concat(slicer(cellsValues.map(function(d, i) {return i;}))); diff --git a/src/types/core/data.internal.d.ts b/src/types/core/data.internal.d.ts index 60d70d751ae..10e9036c72f 100644 --- a/src/types/core/data.internal.d.ts +++ b/src/types/core/data.internal.d.ts @@ -37,18 +37,10 @@ export interface CalcData { * internal helpers should use `FullData` rather than this directly. */ interface FullDataInternals { - /** Names of attributes whose values were arrays (used by transform machinery). */ + /** Names of attributes whose values are data arrays (used for hover/event data). */ _arrayAttrs?: string[]; - /** Trace index after array attribute expansion. */ - _expandedIndex?: number; /** Cached extremes (per axis) for autorange computation. */ _extremes?: Record; - /** Snapshot of the trace before transforms were applied. */ - _fullInput?: Data; - /** True when the trace has a transform that affects `calcdata`. */ - _hasCalcTransform?: boolean; - /** Map from `_expandedIndex` back to original point indices. */ - _indexToPoints?: { [key: number]: number[] }; /** Original user-supplied trace object (pre-defaults). */ _input?: Data; /** Length of the trace's data arrays (after coercion). */ From 21d37d82a961075d335940b0ce0c0df78cf4333c Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Wed, 10 Jun 2026 13:33:02 -0400 Subject: [PATCH 136/241] update tests to remove _fullInput references --- test/jasmine/tests/finance_test.js | 4 ++-- test/jasmine/tests/plot_api_react_test.js | 4 ++-- test/jasmine/tests/plots_test.js | 4 ---- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/test/jasmine/tests/finance_test.js b/test/jasmine/tests/finance_test.js index ac158cf4c96..302a88e70a9 100644 --- a/test/jasmine/tests/finance_test.js +++ b/test/jasmine/tests/finance_test.js @@ -74,8 +74,8 @@ describe('finance charts defaults:', function () { assertDataLength(trace0, out._fullData[0], 5); assertDataLength(trace1, out._fullData[1], 4); - expect(out._fullData[0]._fullInput.x).toBeUndefined(); - expect(out._fullData[1]._fullInput.x).toBeDefined(); + expect(out._fullData[0].x).toBeUndefined(); + expect(out._fullData[1].x).toBeDefined(); }); it('should set visible to *false* when a component (other than x) is missing', function () { diff --git a/test/jasmine/tests/plot_api_react_test.js b/test/jasmine/tests/plot_api_react_test.js index 40c8e0a3f53..9dc48bc682d 100644 --- a/test/jasmine/tests/plot_api_react_test.js +++ b/test/jasmine/tests/plot_api_react_test.js @@ -626,7 +626,7 @@ describe('@noCIdep Plotly.react', function() { function fullJson() { var out = JSON.parse(Plotly.Plots.graphJson({ - data: gd._fullData.map(function(trace) { return trace._fullInput; }), + data: gd._fullData.map(function(trace) { return trace; }), layout: gd._fullLayout })); @@ -978,7 +978,7 @@ describe('Plotly.react and uirevision attributes', function() { var trace = gd.data[i]; var fullTrace = gd._fullData.filter(function(ft) { return ft.index === i; - })[0]._fullInput; + })[0]; for(var key in traceKeys) { var val = traceKeys[key]; diff --git a/test/jasmine/tests/plots_test.js b/test/jasmine/tests/plots_test.js index c7111a9d9ef..2adc7d26bd5 100644 --- a/test/jasmine/tests/plots_test.js +++ b/test/jasmine/tests/plots_test.js @@ -65,7 +65,6 @@ describe('Test Plots', function() { type: 'contour', _empties: [1, 2, 3] }]; - oldFullData.forEach(function(trace) { trace._fullInput = trace; }); var oldFullLayout = { _plots: { xy: { plot: {} } }, @@ -133,9 +132,6 @@ describe('Test Plots', function() { expect(gd._fullData[0]._input).toBe(trace0); expect(gd._fullData[1]._input).toBe(trace1); - - expect(gd._fullData[0]._fullInput).toBe(gd._fullData[0]); - expect(gd._fullData[1]._fullInput).toBe(gd._fullData[1]); }); function testSanitizeMarginsHasBeenCalledOnlyOnce(gd) { From b6562d6509b8ff799b6bc33557b8ec4865edf996 Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Wed, 10 Jun 2026 13:38:32 -0400 Subject: [PATCH 137/241] remove reference to transforms in trace.contours.operation docstring --- src/traces/contour/attributes.js | 2 +- src/types/generated/schema.d.ts | 6 +++--- test/plot-schema.json | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/traces/contour/attributes.js b/src/traces/contour/attributes.js index e28bab378a6..252d38cd978 100644 --- a/src/traces/contour/attributes.js +++ b/src/traces/contour/attributes.js @@ -206,7 +206,7 @@ module.exports = extendFlat( '*][*, *)(*, *](*, *)[* keep regions outside `value[0]` to value[1]`', 'Open vs. closed intervals make no difference to constraint display, but', - 'all versions are allowed for consistency with filter transforms.' + 'all versions are allowed.' ].join(' ') }, value: { diff --git a/src/types/generated/schema.d.ts b/src/types/generated/schema.d.ts index 00bb93a5f8c..d8a20e31113 100644 --- a/src/types/generated/schema.d.ts +++ b/src/types/generated/schema.d.ts @@ -2941,7 +2941,7 @@ export interface ContourData { /** Sets the contour label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. */ labelformat?: string; /** - * Sets the constraint operation. *=* keeps regions equal to `value` *<* and *<=* keep regions less than `value` *>* and *>=* keep regions greater than `value` *[]*, *()*, *[)*, and *(]* keep regions inside `value[0]` to `value[1]` *][*, *)(*, *](*, *)[* keep regions outside `value[0]` to value[1]` Open vs. closed intervals make no difference to constraint display, but all versions are allowed for consistency with filter transforms. + * Sets the constraint operation. *=* keeps regions equal to `value` *<* and *<=* keep regions less than `value` *>* and *>=* keep regions greater than `value` *[]*, *()*, *[)*, and *(]* keep regions inside `value[0]` to `value[1]` *][*, *)(*, *](*, *)[* keep regions outside `value[0]` to value[1]` Open vs. closed intervals make no difference to constraint display, but all versions are allowed. * @default '=' */ operation?: '=' | '<' | '>=' | '>' | '<=' | '[]' | '()' | '[)' | '(]' | '][' | ')(' | '](' | ')['; @@ -3282,7 +3282,7 @@ export interface ContourcarpetData { /** Sets the contour label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. */ labelformat?: string; /** - * Sets the constraint operation. *=* keeps regions equal to `value` *<* and *<=* keep regions less than `value` *>* and *>=* keep regions greater than `value` *[]*, *()*, *[)*, and *(]* keep regions inside `value[0]` to `value[1]` *][*, *)(*, *](*, *)[* keep regions outside `value[0]` to value[1]` Open vs. closed intervals make no difference to constraint display, but all versions are allowed for consistency with filter transforms. + * Sets the constraint operation. *=* keeps regions equal to `value` *<* and *<=* keep regions less than `value` *>* and *>=* keep regions greater than `value` *[]*, *()*, *[)*, and *(]* keep regions inside `value[0]` to `value[1]` *][*, *)(*, *](*, *)[* keep regions outside `value[0]` to value[1]` Open vs. closed intervals make no difference to constraint display, but all versions are allowed. * @default '=' */ operation?: '=' | '<' | '>=' | '>' | '<=' | '[]' | '()' | '[)' | '(]' | '][' | ')(' | '](' | ')['; @@ -4947,7 +4947,7 @@ export interface Histogram2dcontourData { /** Sets the contour label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. */ labelformat?: string; /** - * Sets the constraint operation. *=* keeps regions equal to `value` *<* and *<=* keep regions less than `value` *>* and *>=* keep regions greater than `value` *[]*, *()*, *[)*, and *(]* keep regions inside `value[0]` to `value[1]` *][*, *)(*, *](*, *)[* keep regions outside `value[0]` to value[1]` Open vs. closed intervals make no difference to constraint display, but all versions are allowed for consistency with filter transforms. + * Sets the constraint operation. *=* keeps regions equal to `value` *<* and *<=* keep regions less than `value` *>* and *>=* keep regions greater than `value` *[]*, *()*, *[)*, and *(]* keep regions inside `value[0]` to `value[1]` *][*, *)(*, *](*, *)[* keep regions outside `value[0]` to value[1]` Open vs. closed intervals make no difference to constraint display, but all versions are allowed. * @default '=' */ operation?: '=' | '<' | '>=' | '>' | '<=' | '[]' | '()' | '[)' | '(]' | '][' | ')(' | '](' | ')['; diff --git a/test/plot-schema.json b/test/plot-schema.json index 749fdb23592..4effd2f0c3c 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -28588,7 +28588,7 @@ "valType": "string" }, "operation": { - "description": "Sets the constraint operation. *=* keeps regions equal to `value` *<* and *<=* keep regions less than `value` *>* and *>=* keep regions greater than `value` *[]*, *()*, *[)*, and *(]* keep regions inside `value[0]` to `value[1]` *][*, *)(*, *](*, *)[* keep regions outside `value[0]` to value[1]` Open vs. closed intervals make no difference to constraint display, but all versions are allowed for consistency with filter transforms.", + "description": "Sets the constraint operation. *=* keeps regions equal to `value` *<* and *<=* keep regions less than `value` *>* and *>=* keep regions greater than `value` *[]*, *()*, *[)*, and *(]* keep regions inside `value[0]` to `value[1]` *][*, *)(*, *](*, *)[* keep regions outside `value[0]` to value[1]` Open vs. closed intervals make no difference to constraint display, but all versions are allowed.", "dflt": "=", "editType": "calc", "valType": "enumerated", @@ -30264,7 +30264,7 @@ "valType": "string" }, "operation": { - "description": "Sets the constraint operation. *=* keeps regions equal to `value` *<* and *<=* keep regions less than `value` *>* and *>=* keep regions greater than `value` *[]*, *()*, *[)*, and *(]* keep regions inside `value[0]` to `value[1]` *][*, *)(*, *](*, *)[* keep regions outside `value[0]` to value[1]` Open vs. closed intervals make no difference to constraint display, but all versions are allowed for consistency with filter transforms.", + "description": "Sets the constraint operation. *=* keeps regions equal to `value` *<* and *<=* keep regions less than `value` *>* and *>=* keep regions greater than `value` *[]*, *()*, *[)*, and *(]* keep regions inside `value[0]` to `value[1]` *][*, *)(*, *](*, *)[* keep regions outside `value[0]` to value[1]` Open vs. closed intervals make no difference to constraint display, but all versions are allowed.", "dflt": "=", "editType": "calc", "valType": "enumerated", @@ -41148,7 +41148,7 @@ "valType": "string" }, "operation": { - "description": "Sets the constraint operation. *=* keeps regions equal to `value` *<* and *<=* keep regions less than `value` *>* and *>=* keep regions greater than `value` *[]*, *()*, *[)*, and *(]* keep regions inside `value[0]` to `value[1]` *][*, *)(*, *](*, *)[* keep regions outside `value[0]` to value[1]` Open vs. closed intervals make no difference to constraint display, but all versions are allowed for consistency with filter transforms.", + "description": "Sets the constraint operation. *=* keeps regions equal to `value` *<* and *<=* keep regions less than `value` *>* and *>=* keep regions greater than `value` *[]*, *()*, *[)*, and *(]* keep regions inside `value[0]` to `value[1]` *][*, *)(*, *](*, *)[* keep regions outside `value[0]` to value[1]` Open vs. closed intervals make no difference to constraint display, but all versions are allowed.", "dflt": "=", "editType": "calc", "valType": "enumerated", From 08ef2f925910154f14d8ba9aeba466d7c3e3be08 Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Wed, 10 Jun 2026 14:18:02 -0400 Subject: [PATCH 138/241] remove remaining transforms reference from lib test --- test/jasmine/tests/lib_test.js | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/test/jasmine/tests/lib_test.js b/test/jasmine/tests/lib_test.js index fe1f6b71f0c..d4fabed33c8 100644 --- a/test/jasmine/tests/lib_test.js +++ b/test/jasmine/tests/lib_test.js @@ -3364,12 +3364,6 @@ describe('Queue', function () { expect(gd.undoQueue.queue[0].undo.args[0][1]['title.text']).toEqual(null); expect(gd.undoQueue.queue[0].redo.args[0][1]['title.text']).toEqual('A title'); - return Plotly.restyle(gd, 'transforms[0]', { type: 'filter' }); - }) - .then(function () { - expect(gd.undoQueue.queue[1].undo.args[0][1]).toEqual({ 'transforms[0]': null }); - expect(gd.undoQueue.queue[1].redo.args[0][1]).toEqual({ 'transforms[0]': { type: 'filter' } }); - return Plotly.relayout(gd, 'updatemenus[0]', { buttons: [] }); }) .then(function () { @@ -3381,12 +3375,6 @@ describe('Queue', function () { .then(function () { expect(gd.undoQueue.queue[1].undo.args[0][1]).toEqual({ 'updatemenus[0]': { buttons: [] } }); expect(gd.undoQueue.queue[1].redo.args[0][1]).toEqual({ 'updatemenus[0]': null }); - - return Plotly.restyle(gd, 'transforms[0]', null); - }) - .then(function () { - expect(gd.undoQueue.queue[1].undo.args[0][1]).toEqual({ 'transforms[0]': [{ type: 'filter' }] }); - expect(gd.undoQueue.queue[1].redo.args[0][1]).toEqual({ 'transforms[0]': null }); }) .then(done, done.fail); }); From cd001e471335af82fde2126f2d3b72d131b5becc Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Wed, 10 Jun 2026 14:43:54 -0400 Subject: [PATCH 139/241] remove unneeded lib function --- src/lib/index.js | 4 ---- src/traces/scattergl/plot.js | 2 +- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/src/lib/index.js b/src/lib/index.js index 2fc750e4b8d..9d051c1115f 100644 --- a/src/lib/index.js +++ b/src/lib/index.js @@ -618,10 +618,6 @@ lib.tagSelected = function (calcTrace, trace, ptNumber2cdIndex) { } }; -lib.selIndices2selPoints = function (trace) { - return trace.selectedpoints; -}; - /** Returns target as set by 'target' transform attribute * * @param {object} trace : full trace object diff --git a/src/traces/scattergl/plot.js b/src/traces/scattergl/plot.js index bcc0af6d149..04e089e7b94 100644 --- a/src/traces/scattergl/plot.js +++ b/src/traces/scattergl/plot.js @@ -277,7 +277,7 @@ var exports = module.exports = function plot(gd, subplot, cdata) { // regenerate scene batch, if traces number changed during selection if(trace.selectedpoints) { - var selPts = scene.selectBatch[index] = Lib.selIndices2selPoints(trace); + var selPts = scene.selectBatch[index] = trace.selectedpoints; var selDict = {}; for(j = 0; j < selPts.length; j++) { From 5f9b34cf456e65c5a3fce06c8a832787168449b2 Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Wed, 10 Jun 2026 20:02:48 -0400 Subject: [PATCH 140/241] remove references to transforms in comments, and some additional unneeded code --- src/lib/index.js | 4 ++-- src/plot_api/plot_api.js | 20 ++++---------------- src/plot_api/plot_schema.js | 2 +- src/plot_api/template_api.js | 2 -- src/plots/get_data.js | 2 +- src/plots/plots.js | 2 +- src/traces/cone/defaults.js | 2 +- src/traces/contour/constraint_mapping.js | 8 ++++---- src/traces/icicle/defaults.js | 2 +- src/traces/indicator/defaults.js | 2 +- src/traces/isosurface/defaults.js | 2 +- src/traces/mesh3d/defaults.js | 4 +--- src/traces/sankey/defaults.js | 3 +-- src/traces/scatter/stack_defaults.js | 4 ---- src/traces/streamtube/defaults.js | 4 +--- src/traces/sunburst/defaults.js | 2 +- src/traces/surface/defaults.js | 3 +-- src/traces/table/defaults.js | 2 +- src/traces/treemap/defaults.js | 2 +- 19 files changed, 24 insertions(+), 48 deletions(-) diff --git a/src/lib/index.js b/src/lib/index.js index 9d051c1115f..7d5506d9503 100644 --- a/src/lib/index.js +++ b/src/lib/index.js @@ -910,8 +910,8 @@ lib.expandObjectPaths = function (data) { data[prop] = data[prop] || []; if (match[3] === '.') { - // This is the case where theere are subsequent properties into which - // we must recurse, e.g. transforms[0].value + // This is the case where there are subsequent properties into which + // we must recurse, e.g. annotations[0].text trailingPath = match[4]; dest = data[prop][idx] = data[prop][idx] || {}; diff --git a/src/plot_api/plot_api.js b/src/plot_api/plot_api.js index 645c28e50bb..0c0125c403b 100644 --- a/src/plot_api/plot_api.js +++ b/src/plot_api/plot_api.js @@ -1408,16 +1408,6 @@ function _restyle(gd, aobj, traces) { return 'LAYOUT' + axName + '.range'; } - function getFullTrace(traceIndex) { - // usually fullData maps 1:1 onto data, but with groupby transforms - // the fullData index can be greater. Take the *first* matching trace. - for (var j = traceIndex; j < fullData.length; j++) { - if (fullData[j]._input === data[traceIndex]) return fullData[j]; - } - // should never get here - and if we *do* it should cause an error - // later on undefined fullTrace is passed to nestedProperty. - } - // for attrs that interact (like scales & autoscales), save the // old vals before making the change // val=undefined will not set a value, just record what the value was. @@ -1438,7 +1428,7 @@ function _restyle(gd, aobj, traces) { extraparam = layoutNP(gd.layout, attr.replace('LAYOUT', '')); } else { var tracei = traces[i]; - var preGUI = fullLayout._tracePreGUI[getFullTrace(tracei).uid]; + var preGUI = fullLayout._tracePreGUI[fullData[tracei].uid]; extraparam = makeNP(preGUI, guiEditFlag)(data[tracei], attr); } @@ -1509,7 +1499,7 @@ function _restyle(gd, aobj, traces) { undoit[ai] = a0(); for (i = 0; i < traces.length; i++) { cont = data[traces[i]]; - contFull = getFullTrace(traces[i]); + contFull = fullData[traces[i]]; var preGUI = fullLayout._tracePreGUI[contFull.uid]; param = makeNP(preGUI, guiEditFlag)(cont, ai); oldVal = param.get(); @@ -2343,8 +2333,7 @@ var layoutUIControlPatterns = [ // or with no `attr` we use `trace.uirevision` var traceUIControlPatterns = [ { pattern: /^selectedpoints$/, attr: 'selectionrevision' }, - // "visible" includes trace.transforms[i].styles[j].value.visible - { pattern: /(^|value\.)visible$/, attr: 'legend.uirevision' }, + { pattern: /^visible$/, attr: 'legend.uirevision' }, { pattern: /^dimensions\[\d+\]\.constraintrange/ }, { pattern: /^node\.(x|y|groups)/ }, // for Sankey nodes { pattern: /^level$/ }, // for Sunburst, Treemap and Icicle traces @@ -2354,8 +2343,7 @@ var traceUIControlPatterns = [ // reasonable or should these be `editrevision`? // Also applies to axis titles up in the layout section - // "name" also includes transform.styles - { pattern: /(^|value\.)name$/ }, + { pattern: /^name$/ }, // including nested colorbar attributes (ie marker.colorbar) { pattern: /colorbar\.title\.text$/ }, { pattern: /colorbar\.(x|y)$/, attr: 'editrevision' } diff --git a/src/plot_api/plot_schema.js b/src/plot_api/plot_schema.js index f7aa6b7a9aa..ba0c7a490a1 100644 --- a/src/plot_api/plot_schema.js +++ b/src/plot_api/plot_schema.js @@ -218,7 +218,7 @@ exports.findArrayAttributes = function(trace) { * @param {object} trace * full trace object that contains a reference to `_module.attributes` * @param {object} parts - * an array of parts, like ['transforms', 1, 'value'] + * an array of parts, like ['dimensions', 1, 'values'] * typically from nestedProperty(...).parts * * @return {object|false} diff --git a/src/plot_api/template_api.js b/src/plot_api/template_api.js index d5234108e18..e6bbad4ded6 100644 --- a/src/plot_api/template_api.js +++ b/src/plot_api/template_api.js @@ -49,8 +49,6 @@ exports.makeTemplate = function(figure) { data.forEach(function(trace) { // TODO: What if no style info is extracted for this trace. We may // not want an empty object as the null value. - // TODO: allow transforms to contribute to templates? - // as it stands they are ignored, which may be for the best... var traceTemplate = {}; walkStyleKeys(trace, traceTemplate, getTraceInfo.bind(null, trace)); diff --git a/src/plots/get_data.js b/src/plots/get_data.js index 7c0dcc2b31a..c32f9d897f9 100644 --- a/src/plots/get_data.js +++ b/src/plots/get_data.js @@ -65,7 +65,7 @@ exports.getModuleCalcData = function(calcdata, arg1, arg2) { var filterByZ = (trace.zorder !== undefined); // N.B. // - 'legendonly' traces do not make it past here - // - skip over 'visible' traces that got trimmed completely during calc transforms + // - skip over 'visible' traces with no data points if(trace.visible !== true || trace._length === 0) continue; // group calcdata trace not by 'module' (as the name of this function diff --git a/src/plots/plots.js b/src/plots/plots.js index 98e6f7a83af..6d4c6c7c9ab 100644 --- a/src/plots/plots.js +++ b/src/plots/plots.js @@ -2232,7 +2232,7 @@ plots.layoutArrayContainers = Registry.layoutArrayContainers; * Extend a trace definition. This method: * * 1. directly transfers any array references - * 2. manually recurses into container arrays like transforms + * 2. manually recurses into container arrays like dimensions * * The result is the original object reference with the new contents merged in. */ diff --git a/src/traces/cone/defaults.js b/src/traces/cone/defaults.js index 459be0f43f9..53e25e8ea97 100644 --- a/src/traces/cone/defaults.js +++ b/src/traces/cone/defaults.js @@ -63,6 +63,6 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout coerce('yhoverformat'); coerce('zhoverformat'); - // disable 1D transforms (for now) + // Ensure _length is defined traceOut._length = null; }; diff --git a/src/traces/contour/constraint_mapping.js b/src/traces/contour/constraint_mapping.js index ba1560ccb7d..93c99258a65 100644 --- a/src/traces/contour/constraint_mapping.js +++ b/src/traces/contour/constraint_mapping.js @@ -3,8 +3,9 @@ var filterOps = require('../../constants/filter_ops'); var isNumeric = require('fast-isnumeric'); -// This syntax conforms to the existing filter transform syntax, but we don't care -// about open vs. closed intervals for simply drawing contours constraints: +// This syntax uses the comparison and interval operations defined in +// src/constants/filter_ops.js, but we don't care about open vs. closed intervals +// for the purpose of drawing contours constraints module.exports = { '[]': makeRangeSettings('[]'), '][': makeRangeSettings(']['), @@ -13,8 +14,7 @@ module.exports = { '=': makeInequalitySettings('=') }; -// This does not in any way shape or form support calendars. It's adapted from -// transforms/filter.js. +// This does not in any way shape or form support calendars function coerceValue(operation, value) { var hasArrayValue = Array.isArray(value); diff --git a/src/traces/icicle/defaults.js b/src/traces/icicle/defaults.js index 4c4ad48332a..7827ef71495 100644 --- a/src/traces/icicle/defaults.js +++ b/src/traces/icicle/defaults.js @@ -95,6 +95,6 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout handleDomainDefaults(traceOut, layout, coerce); - // do not support transforms for now + // Ensure _length is defined traceOut._length = null; }; diff --git a/src/traces/indicator/defaults.js b/src/traces/indicator/defaults.js index 3da64f53514..98b47cb79ac 100644 --- a/src/traces/indicator/defaults.js +++ b/src/traces/indicator/defaults.js @@ -146,7 +146,7 @@ function supplyDefaults(traceIn, traceOut, defaultColor, layout) { traceOut._isAngular = traceOut._isBullet = false; } - // disable 1D transforms + // Ensure _length is defined traceOut._length = null; } diff --git a/src/traces/isosurface/defaults.js b/src/traces/isosurface/defaults.js index c0553d80897..13fb01c5b11 100644 --- a/src/traces/isosurface/defaults.js +++ b/src/traces/isosurface/defaults.js @@ -100,7 +100,7 @@ function supplyIsoDefaults(traceIn, traceOut, defaultColor, layout, coerce) { colorscaleDefaults(traceIn, traceOut, layout, coerce, {prefix: '', cLetter: 'c'}); - // disable 1D transforms (for now) + // Ensure _length is defined traceOut._length = null; } diff --git a/src/traces/mesh3d/defaults.js b/src/traces/mesh3d/defaults.js index 26cf1b475b3..57bfccea924 100644 --- a/src/traces/mesh3d/defaults.js +++ b/src/traces/mesh3d/defaults.js @@ -92,8 +92,6 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout coerce('yhoverformat'); coerce('zhoverformat'); - // disable 1D transforms - // x/y/z should match lengths, and i/j/k should match as well, but - // the two sets have different lengths so transforms wouldn't work. + // Ensure _length is defined traceOut._length = null; }; diff --git a/src/traces/sankey/defaults.js b/src/traces/sankey/defaults.js index d9ca15fea65..82d78efb1bb 100644 --- a/src/traces/sankey/defaults.js +++ b/src/traces/sankey/defaults.js @@ -108,8 +108,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout Lib.coerceFont(coerce, 'textfont', layout.font, { autoShadowDflt: true }); - // disable 1D transforms - arrays here are 1D but their lengths/meanings - // don't match, between nodes and links + // Ensure _length is defined traceOut._length = null; }; diff --git a/src/traces/scatter/stack_defaults.js b/src/traces/scatter/stack_defaults.js index 91c02c9c7d5..4f20b708662 100644 --- a/src/traces/scatter/stack_defaults.js +++ b/src/traces/scatter/stack_defaults.js @@ -33,10 +33,6 @@ module.exports = function handleStackDefaults(traceIn, traceOut, layout, coerce) }; firstTrace = true; } - // TODO: how is this going to work with groupby transforms? - // in principle it should be OK I guess, as long as explicit group styles - // don't override explicit base-trace styles? - var dflts = { orientation: (traceOut.x && !traceOut.y) ? 'h' : 'v' }; diff --git a/src/traces/streamtube/defaults.js b/src/traces/streamtube/defaults.js index f49de256e21..43d42456793 100644 --- a/src/traces/streamtube/defaults.js +++ b/src/traces/streamtube/defaults.js @@ -65,8 +65,6 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout coerce('yhoverformat'); coerce('zhoverformat'); - // disable 1D transforms (for now) - // x/y/z and u/v/w have matching lengths, - // but they don't have to match with starts.(x|y|z) + // Ensure _length is defined traceOut._length = null; }; diff --git a/src/traces/sunburst/defaults.js b/src/traces/sunburst/defaults.js index 2439c817df6..828519633a6 100644 --- a/src/traces/sunburst/defaults.js +++ b/src/traces/sunburst/defaults.js @@ -72,6 +72,6 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout handleDomainDefaults(traceOut, layout, coerce); - // do not support transforms for now + // Ensure _length is defined traceOut._length = null; }; diff --git a/src/traces/surface/defaults.js b/src/traces/surface/defaults.js index 9da3b2e3d26..d86ba81d5e6 100644 --- a/src/traces/surface/defaults.js +++ b/src/traces/surface/defaults.js @@ -125,8 +125,7 @@ function supplyDefaults(traceIn, traceOut, defaultColor, layout) { opacityscaleDefaults(traceIn, traceOut, layout, coerce); - // disable 1D transforms - currently surface does NOT support column data like heatmap does - // you can use mesh3d for this use case, but not surface + // Ensure _length is defined traceOut._length = null; } diff --git a/src/traces/table/defaults.js b/src/traces/table/defaults.js index 45bfb8d74bb..bae59413204 100644 --- a/src/traces/table/defaults.js +++ b/src/traces/table/defaults.js @@ -50,6 +50,6 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout coerce('cells.fill.color'); Lib.coerceFont(coerce, 'cells.font', layout.font); - // disable 1D transforms + // Ensure _length is defined traceOut._length = null; }; diff --git a/src/traces/treemap/defaults.js b/src/traces/treemap/defaults.js index b877b34bedd..e6c71547fa5 100644 --- a/src/traces/treemap/defaults.js +++ b/src/traces/treemap/defaults.js @@ -108,6 +108,6 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout handleDomainDefaults(traceOut, layout, coerce); - // do not support transforms for now + // Ensure _length is defined traceOut._length = null; }; From ce0443cab8b566f525b9105745b50e917332e35d Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Wed, 10 Jun 2026 20:09:27 -0400 Subject: [PATCH 141/241] add draftlog --- draftlogs/7834_remove.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 draftlogs/7834_remove.md diff --git a/draftlogs/7834_remove.md b/draftlogs/7834_remove.md new file mode 100644 index 00000000000..e548a273cf9 --- /dev/null +++ b/draftlogs/7834_remove.md @@ -0,0 +1 @@ +- Remove internal `trace._fullInput` property and other dead code related to the removed `transforms` feature. No user-facing changes expected [[#7834](https://github.com/plotly/plotly.js/pull/7834)] \ No newline at end of file From b1dd513dfb38a6eacd7506570954f174e863ad3f Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Thu, 11 Jun 2026 14:49:47 -0400 Subject: [PATCH 142/241] collapse parcoords fullIndices and inputIndices into a single traceIndices map --- src/traces/parcoords/plot.js | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/src/traces/parcoords/plot.js b/src/traces/parcoords/plot.js index 2857d918d64..5a025df2e9a 100644 --- a/src/traces/parcoords/plot.js +++ b/src/traces/parcoords/plot.js @@ -32,17 +32,15 @@ var exports = module.exports = function plot(gd, cdModule) { var currentDims = {}; var initialDims = {}; - var fullIndices = {}; - var inputIndices = {}; + var traceIndices = {}; var size = fullLayout._size; cdModule.forEach(function(d, i) { var trace = d[0].trace; - fullIndices[i] = trace.index; - var iIn = inputIndices[i] = trace.index; - currentDims[i] = gd.data[iIn].dimensions; - initialDims[i] = gd.data[iIn].dimensions.slice(); + var ind = traceIndices[i] = trace.index; + currentDims[i] = gd.data[ind].dimensions; + initialDims[i] = gd.data[ind].dimensions.slice(); }); var filterChanged = function(i, initialDimIndex, newRanges) { @@ -57,13 +55,13 @@ var exports = module.exports = function plot(gd, cdModule) { // because it's an array of variable dimensionality. So store the whole // thing at once manually. var aStr = 'dimensions[' + initialDimIndex + '].constraintrange'; - var preGUI = fullLayout._tracePreGUI[gd._fullData[fullIndices[i]].uid]; + var preGUI = fullLayout._tracePreGUI[gd._fullData[traceIndices[i]].uid]; if(preGUI[aStr] === undefined) { var initialVal = dim.constraintrange; preGUI[aStr] = initialVal || null; } - var fullDimension = gd._fullData[fullIndices[i]].dimensions[initialDimIndex]; + var fullDimension = gd._fullData[traceIndices[i]].dimensions[initialDimIndex]; if(!newConstraints.length) { delete dim.constraintrange; @@ -79,7 +77,7 @@ var exports = module.exports = function plot(gd, cdModule) { var restyleData = {}; restyleData[aStr] = newConstraints; - gd.emit('plotly_restyle', [restyleData, [inputIndices[i]]]); + gd.emit('plotly_restyle', [restyleData, [traceIndices[i]]]); }; var hover = function(eventData) { @@ -115,12 +113,12 @@ var exports = module.exports = function plot(gd, cdModule) { // persist column order we may have to do something special for this // case to just store the order itself. // Registry.call('_storeDirectGUIEdit', - // gd.data[inputIndices[i]], - // fullLayout._tracePreGUI[gd._fullData[fullIndices[i]].uid], + // gd.data[traceIndices[i]], + // fullLayout._tracePreGUI[gd._fullData[traceIndices[i]].uid], // {dimensions: currentDims[i]} // ); - gd.emit('plotly_restyle', [{dimensions: [currentDims[i]]}, [inputIndices[i]]]); + gd.emit('plotly_restyle', [{dimensions: [currentDims[i]]}, [traceIndices[i]]]); }; parcoords( From e940e77f5bacf8c109f3632b2cbdaa2cd64a9dc1 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Thu, 11 Jun 2026 16:57:35 -0600 Subject: [PATCH 143/241] Remove debug image --- test/image/baselines/test_mock.png | Bin 10022 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 test/image/baselines/test_mock.png diff --git a/test/image/baselines/test_mock.png b/test/image/baselines/test_mock.png deleted file mode 100644 index 4ff605913d99f5e42beacf4c2d8ce093479a55e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10022 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 Date: Thu, 11 Jun 2026 17:02:53 -0600 Subject: [PATCH 144/241] Add warning on invalid color string --- src/components/color/index.js | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/components/color/index.js b/src/components/color/index.js index 2a9d7a77786..cda373e3617 100644 --- a/src/components/color/index.js +++ b/src/components/color/index.js @@ -1,5 +1,6 @@ const _color = require('color').default; const isNumeric = require('fast-isnumeric'); +const Lib = require('../../lib'); const { isTypedArray } = require('../../lib/array'); const { background, defaultLine, defaults, lightLine } = require('./attributes'); @@ -10,6 +11,7 @@ const color = (cstr) => { try { return _color(cstr); } catch (e) { + Lib.warn(`Invalid color specifier: "${cstr}". Defaulting to "#000"`); return _color('#000'); } }; @@ -52,7 +54,7 @@ const combine = (front, back) => { b: bcflat.b * (1 - fc.alpha) + fc.b * fc.alpha }; - return color(fcflat).string(); + return color(fcflat).rgb().string(); }; /* @@ -86,14 +88,9 @@ const contrast = (cstr, lightAmount, darkAmount) => { let c = color(cstr); if (c.alpha() !== 1) c = color(combine(cstr, background)); - - // TODO: Should the API change such that lightAmount/darkAmount are passed in as decimal instead of percent number? - let newColor; - if (c.isDark()) { - newColor = color(lightAmount ? c.lighten(lightAmount / 100) : background); - } else { - newColor = color(darkAmount ? c.darken(darkAmount / 100) : defaultLine); - } + const newColor = c.isDark() + ? color(lightAmount ? c.lighten(lightAmount / 100) : background) + : color(darkAmount ? c.darken(darkAmount / 100) : defaultLine); return newColor.rgb().string(); }; From a62992d8459b567ea5724200800c5e2b599e189e Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Thu, 11 Jun 2026 17:03:08 -0600 Subject: [PATCH 145/241] Small refactor --- src/traces/sankey/render.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/traces/sankey/render.js b/src/traces/sankey/render.js index f5de2e050a2..ab00a51223e 100644 --- a/src/traces/sankey/render.js +++ b/src/traces/sankey/render.js @@ -937,9 +937,7 @@ module.exports = function(gd, svg, calcData, layout, callbacks) { .style('stroke-opacity', d => salientEnough(d) ? Color.opacity(d.linkLineColor) : d.alpha) .style('fill', d => d.rgb) .style('fill-opacity', d => d.alpha) - .style('stroke-width', function(d) { - return salientEnough(d) ? d.linkLineWidth : 1; - }) + .style('stroke-width', d => salientEnough(d) ? d.linkLineWidth : 1) .attr('d', linkPath()); sankeyLink From 0d6cbd12b4d8f71a901198b59568a16a00536ed7 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Thu, 11 Jun 2026 17:03:45 -0600 Subject: [PATCH 146/241] Update color syntax mock and image --- test/image/baselines/color_syntax_formats.png | Bin 25891 -> 48728 bytes test/image/mocks/color_syntax_formats.json | 116 ++++++++++++------ 2 files changed, 80 insertions(+), 36 deletions(-) diff --git a/test/image/baselines/color_syntax_formats.png b/test/image/baselines/color_syntax_formats.png index 557e514182d7ed85cb174886f6112459de972ebc..e78032e78f073a02828a0c50a4a1dde3dc540c60 100644 GIT binary patch literal 48728 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 ZPRrwgcju7lD11YwepE*_L&d`Pe*x)#*x3L8 literal 25891 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 diff --git a/test/image/mocks/color_syntax_formats.json b/test/image/mocks/color_syntax_formats.json index 3e99300985a..edac508998c 100644 --- a/test/image/mocks/color_syntax_formats.json +++ b/test/image/mocks/color_syntax_formats.json @@ -2,64 +2,108 @@ "data": [ { "type": "bar", - "name": "hex 6 + hex 8 alpha", - "x": ["A", "B", "C"], - "y": [3, 5, 4], - "marker": { - "color": ["#d62728", "#1f77b4cc", "#2ca02c80"], - "line": { "color": "#000000", "width": 1 } - } + "name": "'#d62728' (hex 6)", + "x": [0], + "y": [3], + "marker": { "color": "#d62728" } }, { "type": "bar", - "name": "hex short 3 + 4", - "x": ["A", "B", "C"], - "y": [2, 4, 3], - "marker": { - "color": ["#f00", "#0f08", "#00fc"] - } + "name": "'#1f77b4cc' (hex 8 alpha)", + "x": [1], + "y": [3], + "marker": { "color": "#1f77b4cc" } }, { "type": "bar", - "name": "rgb space + slash alpha", - "x": ["A", "B", "C"], - "y": [4, 3, 5], - "marker": { - "color": ["rgb(255 165 0)", "rgba(128 0 128 / 0.6)", "rgb(34 139 34)"] - } + "name": "'#f00' (hex 3 short)", + "x": [2], + "y": [3], + "marker": { "color": "#f00" } }, { "type": "bar", - "name": "hsl / hsla", - "x": ["A", "B", "C"], - "y": [3, 4, 2], - "marker": { - "color": [ - "hsl(210, 80%, 50%)", - "hsla(0, 90%, 55%, 0.7)", - "hsl(120deg 60% 40%)" - ] - } + "name": "'#0f08' (hex 4 short alpha)", + "x": [3], + "y": [3], + "marker": { "color": "#0f08" } + }, + { + "type": "bar", + "name": "'rgb(255 165 0)' (space)", + "x": [5], + "y": [3], + "marker": { "color": "rgb(255 165 0)" } + }, + { + "type": "bar", + "name": "'rgba(128 0 128 / 0.6)' (slash alpha)", + "x": [6], + "y": [3], + "marker": { "color": "rgba(128 0 128 / 0.6)" } + }, + { + "type": "bar", + "name": "'hsl(210, 80%, 50%)'", + "x": [8], + "y": [3], + "marker": { "color": "hsl(210, 80%, 50%)" } + }, + { + "type": "bar", + "name": "'hsla(0, 90%, 55%, 0.7)'", + "x": [9], + "y": [3], + "marker": { "color": "hsla(0, 90%, 55%, 0.7)" } + }, + { + "type": "bar", + "name": "'hsl(120deg 60% 40%)' (modern)", + "x": [10], + "y": [3], + "marker": { "color": "hsl(120deg 60% 40%)" } }, { "type": "bar", - "name": "hwb + named + transparent border", - "x": ["A", "B", "C"], - "y": [2, 3, 4], + "name": "'hwb(200, 10%, 20%)'", + "x": [12], + "y": [3], + "marker": { "color": "hwb(200, 10%, 20%)" } + }, + { + "type": "bar", + "name": "'rebeccapurple' (named)", + "x": [13], + "y": [3], + "marker": { "color": "rebeccapurple" } + }, + { + "type": "bar", + "name": "'transparent'", + "x": [14], + "y": [3], "marker": { - "color": ["hwb(200, 10%, 20%)", "rebeccapurple", "transparent"], - "line": { "color": " #444 ", "width": 2 } + "color": "transparent", + "line": { "color": " #444 ", "width": 1 } } } ], "layout": { "title": { "text": "Modern color syntax formats" }, "barmode": "group", - "width": 700, + "bargap": 0.1, + "width": 900, "height": 500, "paper_bgcolor": "rgb(250 250 250)", "plot_bgcolor": "hsl(0, 0%, 98%)", - "xaxis": { "gridcolor": "rgba(0 0 0 / 0.08)" }, + "xaxis": { + "tickmode": "array", + "tickvals": [1.5, 5.5, 9, 13], + "ticktext": ["hex", "rgb", "hsl", "other"], + "gridcolor": "rgba(0 0 0 / 0.08)", + "showgrid": false, + "range": [-1, 15] + }, "yaxis": { "gridcolor": "#00000014" }, "legend": { "bgcolor": "#ffffffcc", From 0b31a8beb0645f1f2adaad07c908ea8bde830444 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Thu, 11 Jun 2026 17:27:28 -0600 Subject: [PATCH 147/241] Remove unused attribute in mock --- test/image/mocks/color_syntax_formats.json | 1 - 1 file changed, 1 deletion(-) diff --git a/test/image/mocks/color_syntax_formats.json b/test/image/mocks/color_syntax_formats.json index edac508998c..000da14f3a6 100644 --- a/test/image/mocks/color_syntax_formats.json +++ b/test/image/mocks/color_syntax_formats.json @@ -100,7 +100,6 @@ "tickmode": "array", "tickvals": [1.5, 5.5, 9, 13], "ticktext": ["hex", "rgb", "hsl", "other"], - "gridcolor": "rgba(0 0 0 / 0.08)", "showgrid": false, "range": [-1, 15] }, From ff128745e2ec9a43c6d0b3a8d5c78db912b83344 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Thu, 11 Jun 2026 17:27:43 -0600 Subject: [PATCH 148/241] Fix circular dependency --- src/components/color/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/color/index.js b/src/components/color/index.js index cda373e3617..34cfc4170be 100644 --- a/src/components/color/index.js +++ b/src/components/color/index.js @@ -1,7 +1,7 @@ const _color = require('color').default; const isNumeric = require('fast-isnumeric'); -const Lib = require('../../lib'); const { isTypedArray } = require('../../lib/array'); +const { warn } = require('../../lib/loggers'); const { background, defaultLine, defaults, lightLine } = require('./attributes'); // Safe wrapper: falls back to black instead of throwing on invalid input, @@ -11,7 +11,7 @@ const color = (cstr) => { try { return _color(cstr); } catch (e) { - Lib.warn(`Invalid color specifier: "${cstr}". Defaulting to "#000"`); + warn(`Invalid color specifier: "${cstr}". Defaulting to "#000"`); return _color('#000'); } }; From 87a1c728759cdc2e210561b66c0e0e7b3773f643 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Mon, 15 Jun 2026 08:16:00 -0600 Subject: [PATCH 149/241] Add function descriptions --- src/components/color/index.js | 133 +++++++++++++++++++++++++++++----- 1 file changed, 115 insertions(+), 18 deletions(-) diff --git a/src/components/color/index.js b/src/components/color/index.js index 34cfc4170be..37b13b8a214 100644 --- a/src/components/color/index.js +++ b/src/components/color/index.js @@ -1,11 +1,18 @@ +'use strict' + const _color = require('color').default; const isNumeric = require('fast-isnumeric'); const { isTypedArray } = require('../../lib/array'); const { warn } = require('../../lib/loggers'); const { background, defaultLine, defaults, lightLine } = require('./attributes'); -// Safe wrapper: falls back to black instead of throwing on invalid input, -// and trims surrounding whitespace from string inputs. +/** + * Safe wrapper around the `color` library: trims string input and falls back + * to black (with a warning) instead of throwing on invalid input. + * + * @param {*} cstr - color specifier + * @return {Color} color object + */ const color = (cstr) => { if (typeof cstr === 'string') cstr = cstr.trim(); try { @@ -16,21 +23,45 @@ const color = (cstr) => { } }; +/** + * Convert any color specifier to a normalized `rgb(r, g, b)` string. + * + * @param {*} cstr - color specifier + * @return {String} + */ const rgb = (cstr) => { const { r, g, b } = color(cstr).rgb().object(); return `rgb(${Math.round(r)}, ${Math.round(g)}, ${Math.round(b)})`; }; +/** + * Return the alpha channel of a color (0 if falsy). + * + * @param {*} cstr - color specifier + * @return {Number} + */ const opacity = (cstr) => (cstr ? color(cstr).alpha() : 0); +/** + * Build an `rgba(...)` string from a color and an explicit opacity value. + * + * @param {*} cstr - color specifier + * @param {Number} op - opacity in [0, 1] + * @return {String} + */ const addOpacity = (cstr, op) => { const c = color(cstr).rgb().object(); return `rgba(${Math.round(c.r)}, ${Math.round(c.g)}, ${Math.round(c.b)}, ${op})`; }; -// combine two colors into one apparent color -// if back has transparency or is missing, -// background is assumed behind it +/** + * Combine two colors into one apparent color by compositing `front` over `back`. + * If `back` is missing or transparent, the module `background` is assumed behind it. + * + * @param {*} front - foreground color specifier + * @param {*} back - background color specifier + * @return {String} resulting `rgb(...)` string + */ const combine = (front, back) => { back ||= background; const fc = color(front).rgb().object(); @@ -57,11 +88,14 @@ const combine = (front, back) => { return color(fcflat).rgb().string(); }; -/* - * Linearly interpolate between two colors at a normalized interpolation position (0 to 1). +/** + * Linearly interpolate between two colors at a normalized position (0 to 1). + * Ignores alpha; result is `factor * first + (1 - factor) * second`. * - * Ignores alpha channel values. - * The resulting color is computed as: factor * first + (1 - factor) * second. + * @param {*} first - color specifier + * @param {*} second - color specifier + * @param {Number} factor - interpolation position in [0, 1] + * @return {String} resulting `rgb(...)` string */ const interpolate = (first, second, factor) => { const fc = color(first).rgb().object(); @@ -76,13 +110,15 @@ const interpolate = (first, second, factor) => { return color(ic).rgb().string(); }; -/* - * Create a color that contrasts with cstr. - * - * If cstr is a dark color, we lighten it; if it's light, we darken. +/** + * Create a color that contrasts with `cstr`: dark colors are lightened, + * light colors are darkened. Without `lightAmount` / `darkAmount` the + * result goes all the way to the background or defaultLine. * - * If lightAmount / darkAmount are used, we adjust by these percentages, - * otherwise we go all the way to white or black. + * @param {*} cstr - color specifier + * @param {Number} [lightAmount] - lighten percentage when cstr is dark + * @param {Number} [darkAmount] - darken percentage when cstr is light + * @return {String} resulting `rgb(...)` string */ const contrast = (cstr, lightAmount, darkAmount) => { let c = color(cstr); @@ -95,18 +131,35 @@ const contrast = (cstr, lightAmount, darkAmount) => { return newColor.rgb().string(); }; +/** + * Apply `stroke` and `stroke-opacity` styles to a D3 selection. + * + * @param {Selection} s - D3 selection + * @param {*} cstr - color specifier + */ const stroke = (s, cstr) => { const c = color(cstr); s.style({ stroke: rgb(cstr), 'stroke-opacity': c.alpha() }); }; +/** + * Apply `fill` and `fill-opacity` styles to a D3 selection. + * + * @param {Selection} s - D3 selection + * @param {*} cstr - color specifier + */ const fill = (s, cstr) => { const c = color(cstr); s.style({ fill: rgb(cstr), 'fill-opacity': c.alpha() }); }; -// search container for colors with the deprecated rgb(fractions) format -// and convert them to rgb(0-255 values) +/** + * Recursively search a container for colors using the deprecated `rgb(fractions)` + * format and convert them in place to `rgb(0-255)` values. Handles `*color` keys, + * `*colorscale` arrays, and nested arrays/objects. + * + * @param {Object} container + */ const clean = (container) => { if (!container || typeof container !== 'object') return; @@ -140,6 +193,14 @@ const clean = (container) => { } }; +/** + * Convert a single deprecated `rgb(fractions)` / `rgba(fractions, alpha)` string + * into `rgb(0-255)` / `rgba(0-255, alpha)`. Returns `val` unchanged if it + * doesn't match that legacy form. + * + * @param {*} val + * @return {*} + */ const cleanOne = (val) => { if (isNumeric(val) || typeof val !== 'string') return val; @@ -180,8 +241,21 @@ const cleanOne = (val) => { return 'rgb(' + rgbStr + ')'; }; +/** + * Test whether two color specifiers resolve to the same `rgb(...)` string. + * + * @param {*} cstr1 - color specifier + * @param {*} cstr2 - color specifier + * @return {Boolean} + */ const equals = (cstr1, cstr2) => !!(cstr1 && cstr2 && color(cstr1).rgb().string() === color(cstr2).rgb().string()); +/** + * Test whether a string is a valid color specifier (does not throw). + * + * @param {*} cstr + * @return {Boolean} + */ const isValid = (cstr) => { if (typeof cstr !== 'string') return false; try { @@ -191,7 +265,14 @@ const isValid = (cstr) => { } }; -// Adds a fixed amount to each RGB channel (unlike lighten which works in HSL space). +/** + * Brighten a color by adding a fixed amount to each RGB channel. + * Unlike `lighten`, this works in RGB space, not HSL. + * + * @param {*} cstr - color specifier + * @param {Number} [amount=10] - percent in [-100, 100] + * @return {String} resulting `rgb(...)` string + */ const brighten = (cstr, amount) => { amount = amount === 0 ? 0 : amount || 10; const c = color(cstr).rgb().object(); @@ -205,12 +286,28 @@ const brighten = (cstr, amount) => { .string(); }; +/** + * Mix two colors by `weight` percent (0 = all `cstr1`, 100 = all `cstr2`). + * + * @param {*} cstr1 - color specifier + * @param {*} cstr2 - color specifier + * @param {Number} weight - percent in [0, 100] + * @return {String} resulting `rgb(...)` string + */ const mix = (cstr1, cstr2, weight) => color(cstr1) .mix(color(cstr2), weight / 100) .rgb() .string(); +/** + * Pick the color from `colorList` with the highest contrast ratio against + * `baseColor`. Defaults to choosing between black and white. + * + * @param {*} baseColor - color specifier to contrast against + * @param {Array} [colorList=['#000', '#fff']] - candidate color specifiers + * @return {String} resulting `rgb(...)` string + */ const mostReadable = (baseColor, colorList = ['#000', '#fff']) => { let bestColor; let bestContrast = -Infinity; From c2bcab919bc9b7259bfecb1e20e9d5683f758752 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Mon, 15 Jun 2026 08:51:28 -0600 Subject: [PATCH 150/241] Remove support for rgb fractional specifiers --- src/components/color/index.js | 91 --------------- src/plot_api/helpers.js | 7 -- test/image/mocks/colorscale_opacity.json | 2 +- test/jasmine/tests/color_test.js | 141 ----------------------- 4 files changed, 1 insertion(+), 240 deletions(-) diff --git a/src/components/color/index.js b/src/components/color/index.js index 37b13b8a214..8d5396ff5cf 100644 --- a/src/components/color/index.js +++ b/src/components/color/index.js @@ -1,8 +1,6 @@ 'use strict' const _color = require('color').default; -const isNumeric = require('fast-isnumeric'); -const { isTypedArray } = require('../../lib/array'); const { warn } = require('../../lib/loggers'); const { background, defaultLine, defaults, lightLine } = require('./attributes'); @@ -153,94 +151,6 @@ const fill = (s, cstr) => { s.style({ fill: rgb(cstr), 'fill-opacity': c.alpha() }); }; -/** - * Recursively search a container for colors using the deprecated `rgb(fractions)` - * format and convert them in place to `rgb(0-255)` values. Handles `*color` keys, - * `*colorscale` arrays, and nested arrays/objects. - * - * @param {Object} container - */ -const clean = (container) => { - if (!container || typeof container !== 'object') return; - - var keys = Object.keys(container); - var i, j, key, val; - - for (i = 0; i < keys.length; i++) { - key = keys[i]; - val = container[key]; - - if (key.slice(-5) === 'color') { - // only sanitize keys that end in "color" or "colorscale" - - if (Array.isArray(val)) { - for (j = 0; j < val.length; j++) val[j] = cleanOne(val[j]); - } else container[key] = cleanOne(val); - } else if (key.slice(-10) === 'colorscale' && Array.isArray(val)) { - // colorscales have the format [[0, color1], [frac, color2], ... [1, colorN]] - - for (j = 0; j < val.length; j++) { - if (Array.isArray(val[j])) val[j][1] = cleanOne(val[j][1]); - } - } else if (Array.isArray(val)) { - // recurse into arrays of objects, and plain objects - - var el0 = val[0]; - if (!Array.isArray(el0) && el0 && typeof el0 === 'object') { - for (j = 0; j < val.length; j++) clean(val[j]); - } - } else if (val && typeof val === 'object' && !isTypedArray(val)) clean(val); - } -}; - -/** - * Convert a single deprecated `rgb(fractions)` / `rgba(fractions, alpha)` string - * into `rgb(0-255)` / `rgba(0-255, alpha)`. Returns `val` unchanged if it - * doesn't match that legacy form. - * - * @param {*} val - * @return {*} - */ -const cleanOne = (val) => { - if (isNumeric(val) || typeof val !== 'string') return val; - - var valTrim = val.trim(); - if (valTrim.slice(0, 3) !== 'rgb') return val; - - var match = valTrim.match(/^rgba?\s*\(([^()]*)\)$/); - if (!match) return val; - - var parts = match[1].trim().split(/\s*[\s,]\s*/); - var rgba = valTrim.charAt(3) === 'a' && parts.length === 4; - if (!rgba && parts.length !== 3) return val; - - for (var i = 0; i < parts.length; i++) { - if (!parts[i].length) return val; - parts[i] = Number(parts[i]); - - if (!(parts[i] >= 0)) { - // all parts must be non-negative numbers - - return val; - } - - if (i === 3) { - // alpha>1 gets clipped to 1 - - if (parts[i] > 1) parts[i] = 1; - } else if (parts[i] >= 1) { - // r, g, b must be < 1 (ie 1 itself is not allowed) - - return val; - } - } - - var rgbStr = Math.round(parts[0] * 255) + ', ' + Math.round(parts[1] * 255) + ', ' + Math.round(parts[2] * 255); - - if (rgba) return 'rgba(' + rgbStr + ', ' + parts[3] + ')'; - return 'rgb(' + rgbStr + ')'; -}; - /** * Test whether two color specifiers resolve to the same `rgb(...)` string. * @@ -327,7 +237,6 @@ module.exports = { addOpacity, background, brighten, - clean, color, combine, contrast, diff --git a/src/plot_api/helpers.js b/src/plot_api/helpers.js index 68f5220e4bd..9df6bd99a53 100644 --- a/src/plot_api/helpers.js +++ b/src/plot_api/helpers.js @@ -6,7 +6,6 @@ var Registry = require('../registry'); var Lib = require('../lib'); var Plots = require('../plots/plots'); var AxisIds = require('../plots/cartesian/axis_ids'); -var Color = require('../components/color'); var cleanId = AxisIds.cleanId; var getFromTrace = AxisIds.getFromTrace; @@ -140,9 +139,6 @@ exports.cleanLayout = function (layout) { */ if (layout.dragmode === 'rotate') layout.dragmode = 'orbit'; - // sanitize rgb(fractions) and rgba(fractions) because they're not valid css - Color.clean(layout); - // clean the layout container in layout.template if (layout.template && layout.template.layout) { exports.cleanLayout(layout.template.layout); @@ -278,9 +274,6 @@ exports.cleanData = function (data) { if (emptyContainer(trace, 'marker')) delete trace.marker; } - // sanitize rgb(fractions) and rgba(fractions) because they're not valid css - Color.clean(trace); - // remove obsolete autobin(x|y) attributes, but only if true // if false, this needs to happen in Histogram.calc because it // can be a one-time autobin so we need to know the results before diff --git a/test/image/mocks/colorscale_opacity.json b/test/image/mocks/colorscale_opacity.json index 66076ff0681..5df28f8a383 100644 --- a/test/image/mocks/colorscale_opacity.json +++ b/test/image/mocks/colorscale_opacity.json @@ -99,7 +99,7 @@ "mode": "markers", "marker": { "size": 40, - "colorscale": [[0, "rgb(255,0.0,0.0)"], [1, "rgba(0.0,0.0,255,0.5)"]], + "colorscale": [[0, "rgb(255,0,0)"], [1, "rgba(0,0,255,0.5)"]], "color": [0, 1, 2, 3], "cmin": 0, "cmax": 3 diff --git a/test/jasmine/tests/color_test.js b/test/jasmine/tests/color_test.js index 43911d10233..1cdde2e1a81 100644 --- a/test/jasmine/tests/color_test.js +++ b/test/jasmine/tests/color_test.js @@ -4,147 +4,6 @@ var Color = require('../../../src/components/color'); describe('Test color:', function() { 'use strict'; - describe('clean', function() { - it('should turn rgb and rgba fractions into 0-255 values', function() { - var container = { - rgbcolor: 'rgb(0.3, 0.6, 0.9)', - rgbacolor: 'rgba(0.2, 0.4, 0.6, 0.8)' - }; - var expectedContainer = { - rgbcolor: 'rgb(77, 153, 230)', - rgbacolor: 'rgba(51, 102, 153, 0.8)' - }; - - Color.clean(container); - expect(container).toEqual(expectedContainer); - }); - - it('should dive into objects, arrays, and colorscales', function() { - var container = { - color: ['rgb(0.3, 0.6, 0.9)', 'rgba(0.2, 0.4, 0.6, 0.8)'], - nest: { - acolor: 'rgb(0.1, 0.2, 0.3)', - astring: 'rgb(0.1, 0.2, 0.3)' - }, - objarray: [ - {color: 'rgb(0.1, 0.2, 0.3)'}, - {color: 'rgb(0.3, 0.6, 0.9)'} - ], - somecolorscale: [ - [0, 'rgb(0.1, 0.2, 0.3)'], - [1, 'rgb(0.3, 0.6, 0.9)'] - ] - }; - var expectedContainer = { - color: ['rgb(77, 153, 230)', 'rgba(51, 102, 153, 0.8)'], - nest: { - acolor: 'rgb(26, 51, 77)', - astring: 'rgb(0.1, 0.2, 0.3)' - }, - objarray: [ - {color: 'rgb(26, 51, 77)'}, - {color: 'rgb(77, 153, 230)'} - ], - somecolorscale: [ - [0, 'rgb(26, 51, 77)'], - [1, 'rgb(77, 153, 230)'] - ] - }; - - Color.clean(container); - expect(container).toEqual(expectedContainer); - }); - - it('should count 0 as a fraction but not 1, except in alpha', function() { - // a value of 1 here could be ambiguous (fraction vs integer) - // so we treat it as a real 1. - var container = { - fractioncolor: 'rgb(0, 0.4, 0.8)', - regularcolor: 'rgb(1, 0.5, 0.5)', - fractionrgbacolor: 'rgba(0, 0.4, 0.8, 1)' - }; - var expectedContainer = { - fractioncolor: 'rgb(0, 102, 204)', - regularcolor: 'rgb(1, 0.5, 0.5)', - fractionrgbacolor: 'rgba(0, 102, 204, 1)' - }; - - Color.clean(container); - expect(container).toEqual(expectedContainer); - }); - - it('should allow extra whitespace or space instead of commas', function() { - var container = { - rgbcolor: ' \t\r\n rgb \r\t\n ( 0.3\t\n,\t 0.6\n\n,\n 0.9\n\n)\r\t\n\t ', - rgb2color: 'rgb(0.3 0.6 0.9)', - rgbacolor: ' \t\r\n rgba \r\t\n ( 0.2\t\n,\t 0.4\n\n,\n 0.6\n\n , 0.8 )\r\t\n\t ' - }; - var expectedContainer = { - rgbcolor: 'rgb(77, 153, 230)', - rgb2color: 'rgb(77, 153, 230)', - rgbacolor: 'rgba(51, 102, 153, 0.8)' - }; - - Color.clean(container); - expect(container).toEqual(expectedContainer); - }); - - it('should not change if r, g, b >= 1 but clip alpha > 1', function() { - var container = { - rgbcolor: 'rgb(0.1, 1.0, 0.5)', - rgbacolor: 'rgba(0.1, 1.0, 0.5, 1234)', - rgba2color: 'rgba(0.1, 0.2, 0.5, 1234)' - }; - var expectedContainer = { - rgbcolor: 'rgb(0.1, 1.0, 0.5)', - rgbacolor: 'rgba(0.1, 1.0, 0.5, 1234)', - rgba2color: 'rgba(26, 51, 128, 1)' - }; - - Color.clean(container); - expect(container).toEqual(expectedContainer); - }); - - it('should not alter malformed strings or non-color keys', function() { - var container = { - color2: 'rgb(0.1, 0.1, 0.1)', - acolor: 'rgbb(0.1, 0.1, 0.1)', - bcolor: 'rgb(0.1, ,0.1)', - ccolor: 'rgb(0.1, 0.1, 0.1', - dcolor: 'rgb(0.1, 0.1, 0.1);' - }; - var expectedContainer = {}; - Object.keys(container).forEach(function(k) { expectedContainer[k] = container[k]; }); - - Color.clean(container); - expect(container).toEqual(expectedContainer); - }); - - it('should not barf on nulls', function() { - var container1 = null; - var expectedContainer1 = null; - - Color.clean(container1); - expect(container1).toEqual(expectedContainer1); - - var container2 = { - anull: null, - anundefined: undefined, - color: null, - anarray: [null, {color: 'rgb(0.1, 0.1, 0.1)'}] - }; - var expectedContainer2 = { - anull: null, - anundefined: undefined, - color: null, - anarray: [null, {color: 'rgb(0.1, 0.1, 0.1)'}] - }; - - Color.clean(container2); - expect(container2).toEqual(expectedContainer2); - }); - }); - describe('fill', function() { it('should call style with both fill and fill-opacity', function() { var mockElement = { From e48b8cfc5785f626af11c21912c4e08a420a9b50 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Mon, 15 Jun 2026 13:52:35 -0600 Subject: [PATCH 151/241] Switch to different method for lightening/darkening colors --- src/components/color/index.js | 24 ++++++++++++++++++++---- src/traces/pie/calc.js | 6 +++--- src/traces/sankey/defaults.js | 14 ++++++++------ 3 files changed, 31 insertions(+), 13 deletions(-) diff --git a/src/components/color/index.js b/src/components/color/index.js index 8d5396ff5cf..5f804674b70 100644 --- a/src/components/color/index.js +++ b/src/components/color/index.js @@ -108,6 +108,20 @@ const interpolate = (first, second, factor) => { return color(ic).rgb().string(); }; +/** + * Shift a color's HSL lightness additively by `delta` percentage points. + * Positive delta = lighter, negative = darker. Use this instead of the + * underlying library's `lighten`/`darken`, which scale L multiplicatively. + * + * @param {*} cstr - color specifier + * @param {Number} delta - lightness shift in HSL percentage points + * @return {Color} adjusted color object + */ +const adjustLightness = (cstr, delta) => { + const c = color(cstr); + return c.lightness(c.lightness() + delta); +}; + /** * Create a color that contrasts with `cstr`: dark colors are lightened, * light colors are darkened. Without `lightAmount` / `darkAmount` the @@ -123,8 +137,8 @@ const contrast = (cstr, lightAmount, darkAmount) => { if (c.alpha() !== 1) c = color(combine(cstr, background)); const newColor = c.isDark() - ? color(lightAmount ? c.lighten(lightAmount / 100) : background) - : color(darkAmount ? c.darken(darkAmount / 100) : defaultLine); + ? (lightAmount ? adjustLightness(c, lightAmount) : color(background)) + : (darkAmount ? adjustLightness(c, -darkAmount) : color(defaultLine)); return newColor.rgb().string(); }; @@ -177,11 +191,11 @@ const isValid = (cstr) => { /** * Brighten a color by adding a fixed amount to each RGB channel. - * Unlike `lighten`, this works in RGB space, not HSL. + * Unlike `lighten`, this works in RGB space, not HSL. Alpha is preserved. * * @param {*} cstr - color specifier * @param {Number} [amount=10] - percent in [-100, 100] - * @return {String} resulting `rgb(...)` string + * @return {String} resulting `rgb(...)` / `rgba(...)` string */ const brighten = (cstr, amount) => { amount = amount === 0 ? 0 : amount || 10; @@ -192,6 +206,7 @@ const brighten = (cstr, amount) => { g: Math.max(0, Math.min(255, c.g + adj)), b: Math.max(0, Math.min(255, c.b + adj)) }) + .alpha(c.alpha ?? 1) .rgb() .string(); }; @@ -235,6 +250,7 @@ const mostReadable = (baseColor, colorList = ['#000', '#fff']) => { module.exports = { addOpacity, + adjustLightness, background, brighten, color, diff --git a/src/traces/pie/calc.js b/src/traces/pie/calc.js index 2063b4ee273..e480bb1cb4f 100644 --- a/src/traces/pie/calc.js +++ b/src/traces/pie/calc.js @@ -90,7 +90,7 @@ function makePullColorFn(colorMap) { return function pullColor(color, id) { if(!color || !Color.isValid(color)) return false; - const newColor = Color.addOpacity(color, Color.opacity(color)); + const newColor = Color.color(color).rgb().string(); if(!colorMap[id]) colorMap[id] = newColor; return newColor; @@ -150,11 +150,11 @@ function generateExtendedColors(colorList, extendedColorWays) { colors = colorList.slice(); for(i = 0; i < colorList.length; i++) { - colors.push(Color.color(colorList[i]).lighten(0.2).hex()); + colors.push(Color.adjustLightness(colorList[i], 20).hex()); } for(i = 0; i < colorList.length; i++) { - colors.push(Color.color(colorList[i]).darken(0.2).hex()); + colors.push(Color.adjustLightness(colorList[i], -20).hex()); } extendedColorWays[colorString] = colors; } diff --git a/src/traces/sankey/defaults.js b/src/traces/sankey/defaults.js index 0fd28af2c2d..5fa8d9db555 100644 --- a/src/traces/sankey/defaults.js +++ b/src/traces/sankey/defaults.js @@ -74,12 +74,14 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout const c = Color.color(_linkColor); const alpha = c.alpha(); - return alpha <= 0.8 - ? c - .alpha(alpha + 0.2) - .rgb() - .string() - : (darkBG ? c.lighten(0.1) : c.darken(0.1)).rgb().string(); + if (alpha <= 0.8) { + return c + .alpha(alpha + 0.2) + .rgb() + .string(); + } else { + return darkBG ? Color.brighten(c, 10) : Color.adjustLightness(c, -10).rgb().string(); + } } coerceLink( From 57acc35a63610df0055c8e837e0d650203a26560 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Mon, 15 Jun 2026 13:52:51 -0600 Subject: [PATCH 152/241] Update .gitignore --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 5020b4b9c08..96cc0a9b7e2 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,9 @@ build/* dist/*.LICENSE.txt dist/*.css +# Ignore local dev mocks/baselines +test/image/**/dev_*.* + npm-debug.log* *.sublime* *~ From 4c920318fef743a0edd49e32592779a78e41545a Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Mon, 15 Jun 2026 14:07:08 -0600 Subject: [PATCH 153/241] Add tests for adjustLightness --- test/jasmine/tests/color_test.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/test/jasmine/tests/color_test.js b/test/jasmine/tests/color_test.js index 1cdde2e1a81..8b14baec113 100644 --- a/test/jasmine/tests/color_test.js +++ b/test/jasmine/tests/color_test.js @@ -30,6 +30,29 @@ describe('Test color:', function() { }); }); + describe('adjustLightness', () => { + it('lightens with a positive delta (additive in HSL L percentage points)', () => { + // black (L=0) + 50 → mid gray (L=50) + expect(Color.adjustLightness('#000', 50).hex()).toBe('#808080'); + }); + + it('darkens with a negative delta', () => { + // white (L=100) - 50 → mid gray (L=50) + expect(Color.adjustLightness('#fff', -50).hex()).toBe('#808080'); + }); + + it('shifts HSL lightness additively, not multiplicatively', () => { + // additive: L 50.2 + 20 = 70.2 → #B3B3B3 + // multiplicative would give L 50.2 * 1.2 = 60.2 → #9A9A9A + expect(Color.adjustLightness('#808080', 20).hex()).toBe('#B3B3B3'); + }); + + it('preserves hue and saturation on chromatic colors', () => { + // red (H=0, S=100, L=50) + 20 → HSL(0, 100, 70) → #FF6666 + expect(Color.adjustLightness('#ff0000', 20).hex()).toBe('#FF6666'); + }); + }); + describe('contrast', function() { it('should darken light colors', function() { var out = Color.contrast('#eee', 10, 20); From 48bff8052c5e64891a52a78df4d4b00bdb81fd43 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Mon, 15 Jun 2026 17:14:30 -0600 Subject: [PATCH 154/241] Update tests per color function changes --- test/jasmine/tests/color_test.js | 6 +++--- test/jasmine/tests/funnelarea_test.js | 4 ++-- test/jasmine/tests/icicle_test.js | 18 +++++++++--------- test/jasmine/tests/pie_test.js | 4 ++-- test/jasmine/tests/range_selector_test.js | 6 +++--- test/jasmine/tests/sunburst_test.js | 18 +++++++++--------- test/jasmine/tests/treemap_test.js | 18 +++++++++--------- 7 files changed, 37 insertions(+), 37 deletions(-) diff --git a/test/jasmine/tests/color_test.js b/test/jasmine/tests/color_test.js index 8b14baec113..28a2dc41bf6 100644 --- a/test/jasmine/tests/color_test.js +++ b/test/jasmine/tests/color_test.js @@ -57,19 +57,19 @@ describe('Test color:', function() { it('should darken light colors', function() { var out = Color.contrast('#eee', 10, 20); - expect(out).toEqual('rgb(190, 190, 190)'); + expect(out).toEqual('rgb(187, 187, 187)'); }); it('should darken light colors (2)', function() { var out = Color.contrast('#fdae61', 10, 20); - expect(out).toEqual('rgb(252, 139, 28)'); + expect(out).toEqual('rgb(245, 123, 3)'); }); it('should lighten dark colors', function() { var out = Color.contrast('#2b83ba', 10, 20); - expect(out).toEqual('rgb(47, 144, 205)'); + expect(out).toEqual('rgb(68, 157, 212)'); }); }); }); diff --git a/test/jasmine/tests/funnelarea_test.js b/test/jasmine/tests/funnelarea_test.js index b5b2cee688b..f2410308f57 100644 --- a/test/jasmine/tests/funnelarea_test.js +++ b/test/jasmine/tests/funnelarea_test.js @@ -264,7 +264,7 @@ describe('Funnelarea traces', function() { it('can use a separate funnelarea colorway and disable extended colors', function(done) { Plotly.newPlot(gd, [{type: 'funnelarea', values: [7, 6, 5, 4, 3, 2, 1]}], {colorway: ['#777', '#F00']}) - .then(_checkSliceColors(['119,119,119', '255,0,0', '143,143,143', '255,51,51', '95,95,95', '204,0,0', '119,119,119'])) + .then(_checkSliceColors(['119,119,119', '255,0,0', '170,170,170', '255,102,102', '68,68,68', '153,0,0', '119,119,119'])) .then(function() { return Plotly.relayout(gd, {extendfunnelareacolors: false}); }) @@ -276,7 +276,7 @@ describe('Funnelarea traces', function() { .then(function() { return Plotly.relayout(gd, {extendfunnelareacolors: null}); }) - .then(_checkSliceColors(['255,255,0', '0,255,0', '0,0,255', '255,255,51', '51,255,51', '51,51,255', '204,204,0'])) + .then(_checkSliceColors(['255,255,0', '0,255,0', '0,0,255', '255,255,102', '102,255,102', '102,102,255', '153,153,0'])) .then(done, done.fail); }); diff --git a/test/jasmine/tests/icicle_test.js b/test/jasmine/tests/icicle_test.js index 4f54f041dd9..e3e8cb9bbf4 100644 --- a/test/jasmine/tests/icicle_test.js +++ b/test/jasmine/tests/icicle_test.js @@ -403,15 +403,15 @@ describe('Test icicle calc:', function () { var cd = gd.calcdata[0]; expect(cd.length).toEqual(9); - expect(cd[0].color).toEqual('rgba(255, 192, 203, 1)'); - expect(cd[1].color).toEqual('rgba(119, 119, 119, 1)'); - expect(cd[2].color).toEqual('rgba(255, 0, 0, 1)'); - expect(cd[3].color).toEqual('rgba(255, 255, 0, 1)'); - expect(cd[4].color).toEqual('rgba(0, 255, 0, 1)'); - expect(cd[5].color).toEqual('rgba(0, 255, 255, 1)'); - expect(cd[6].color).toEqual('rgba(0, 0, 255, 1)'); - expect(cd[7].color).toEqual('rgba(255, 0, 255, 1)'); - expect(cd[8].color).toEqual('rgba(255, 255, 255, 1)'); + expect(cd[0].color).toEqual('rgb(255, 192, 203)'); + expect(cd[1].color).toEqual('rgb(119, 119, 119)'); + expect(cd[2].color).toEqual('rgb(255, 0, 0)'); + expect(cd[3].color).toEqual('rgb(255, 255, 0)'); + expect(cd[4].color).toEqual('rgb(0, 255, 0)'); + expect(cd[5].color).toEqual('rgb(0, 255, 255)'); + expect(cd[6].color).toEqual('rgb(0, 0, 255)'); + expect(cd[7].color).toEqual('rgb(255, 0, 255)'); + expect(cd[8].color).toEqual('rgb(255, 255, 255)'); }); it('should use *marker.colors* numbers with default colorscale', function () { diff --git a/test/jasmine/tests/pie_test.js b/test/jasmine/tests/pie_test.js index f5eb7f9ad8e..5aad071dc2e 100644 --- a/test/jasmine/tests/pie_test.js +++ b/test/jasmine/tests/pie_test.js @@ -288,7 +288,7 @@ describe('Pie traces', function() { it('can use a separate pie colorway and disable extended colors', function(done) { Plotly.newPlot(gd, [{type: 'pie', values: [7, 6, 5, 4, 3, 2, 1]}], {colorway: ['#777', '#F00']}) - .then(_checkSliceColors(['119,119,119', '255,0,0', '143,143,143', '255,51,51', '95,95,95', '204,0,0', '119,119,119'])) + .then(_checkSliceColors(['119,119,119', '255,0,0', '170,170,170', '255,102,102', '68,68,68', '153,0,0', '119,119,119'])) .then(function() { return Plotly.relayout(gd, {extendpiecolors: false}); }) @@ -300,7 +300,7 @@ describe('Pie traces', function() { .then(function() { return Plotly.relayout(gd, {extendpiecolors: null}); }) - .then(_checkSliceColors(['255,255,0', '0,255,0', '0,0,255', '255,255,51', '51,255,51', '51,51,255', '204,204,0'])) + .then(_checkSliceColors(['255,255,0', '0,255,0', '0,0,255', '255,255,102', '102,255,102', '102,102,255', '153,153,0'])) .then(done, done.fail); }); diff --git a/test/jasmine/tests/range_selector_test.js b/test/jasmine/tests/range_selector_test.js index 45e9c576643..7559e5a7949 100644 --- a/test/jasmine/tests/range_selector_test.js +++ b/test/jasmine/tests/range_selector_test.js @@ -540,11 +540,11 @@ describe('range selector interactions:', function() { it('should be able to change its style on `relayout`', function(done) { var prefix = 'xaxis.rangeselector.'; - checkButtonColor('rgb(238, 238, 238)', 'rgb(214, 214, 214)'); + checkButtonColor('rgb(238, 238, 238)', 'rgb(213, 213, 213)'); Plotly.relayout(gd, prefix + 'bgcolor', 'red') .then(function() { - checkButtonColor('rgb(255, 0, 0)', 'rgb(255, 64, 64)'); + checkButtonColor('rgb(255, 0, 0)', 'rgb(255, 128, 128)'); return Plotly.relayout(gd, prefix + 'activecolor', 'blue'); }).then(function() { @@ -578,7 +578,7 @@ describe('range selector interactions:', function() { var pos = getRectCenter(button.node()); var fillColor = Color.rgb(gd._fullLayout.xaxis.rangeselector.bgcolor); - var activeColor = 'rgb(214, 214, 214)'; + var activeColor = 'rgb(213, 213, 213)'; expect(button.node().style.fill).toEqual(fillColor); diff --git a/test/jasmine/tests/sunburst_test.js b/test/jasmine/tests/sunburst_test.js index 09ae8bf4ad6..3bc8492e039 100644 --- a/test/jasmine/tests/sunburst_test.js +++ b/test/jasmine/tests/sunburst_test.js @@ -415,15 +415,15 @@ describe('Test sunburst calc:', function () { var cd = gd.calcdata[0]; expect(cd.length).toEqual(9); - expect(cd[0].color).toEqual('rgba(255, 192, 203, 1)'); - expect(cd[1].color).toEqual('rgba(119, 119, 119, 1)'); - expect(cd[2].color).toEqual('rgba(255, 0, 0, 1)'); - expect(cd[3].color).toEqual('rgba(255, 255, 0, 1)'); - expect(cd[4].color).toEqual('rgba(0, 255, 0, 1)'); - expect(cd[5].color).toEqual('rgba(0, 255, 255, 1)'); - expect(cd[6].color).toEqual('rgba(0, 0, 255, 1)'); - expect(cd[7].color).toEqual('rgba(255, 0, 255, 1)'); - expect(cd[8].color).toEqual('rgba(255, 255, 255, 1)'); + expect(cd[0].color).toEqual('rgb(255, 192, 203)'); + expect(cd[1].color).toEqual('rgb(119, 119, 119)'); + expect(cd[2].color).toEqual('rgb(255, 0, 0)'); + expect(cd[3].color).toEqual('rgb(255, 255, 0)'); + expect(cd[4].color).toEqual('rgb(0, 255, 0)'); + expect(cd[5].color).toEqual('rgb(0, 255, 255)'); + expect(cd[6].color).toEqual('rgb(0, 0, 255)'); + expect(cd[7].color).toEqual('rgb(255, 0, 255)'); + expect(cd[8].color).toEqual('rgb(255, 255, 255)'); }); it('should use *marker.colors* numbers with default colorscale', function () { diff --git a/test/jasmine/tests/treemap_test.js b/test/jasmine/tests/treemap_test.js index bf427dc4eae..72ec8fa7675 100644 --- a/test/jasmine/tests/treemap_test.js +++ b/test/jasmine/tests/treemap_test.js @@ -496,15 +496,15 @@ describe('Test treemap calc:', function () { var cd = gd.calcdata[0]; expect(cd.length).toEqual(9); - expect(cd[0].color).toEqual('rgba(255, 192, 203, 1)'); - expect(cd[1].color).toEqual('rgba(119, 119, 119, 1)'); - expect(cd[2].color).toEqual('rgba(255, 0, 0, 1)'); - expect(cd[3].color).toEqual('rgba(255, 255, 0, 1)'); - expect(cd[4].color).toEqual('rgba(0, 255, 0, 1)'); - expect(cd[5].color).toEqual('rgba(0, 255, 255, 1)'); - expect(cd[6].color).toEqual('rgba(0, 0, 255, 1)'); - expect(cd[7].color).toEqual('rgba(255, 0, 255, 1)'); - expect(cd[8].color).toEqual('rgba(255, 255, 255, 1)'); + expect(cd[0].color).toEqual('rgb(255, 192, 203)'); + expect(cd[1].color).toEqual('rgb(119, 119, 119)'); + expect(cd[2].color).toEqual('rgb(255, 0, 0)'); + expect(cd[3].color).toEqual('rgb(255, 255, 0)'); + expect(cd[4].color).toEqual('rgb(0, 255, 0)'); + expect(cd[5].color).toEqual('rgb(0, 255, 255)'); + expect(cd[6].color).toEqual('rgb(0, 0, 255)'); + expect(cd[7].color).toEqual('rgb(255, 0, 255)'); + expect(cd[8].color).toEqual('rgb(255, 255, 255)'); }); it('should use *marker.colors* numbers with default colorscale', function () { From 2624b6d4ba2d44b5fcd8d1bb20b2633d855ecbe8 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Mon, 15 Jun 2026 17:27:05 -0600 Subject: [PATCH 155/241] Update baseline images per recent changes --- test/image/baselines/pie_style.png | Bin 37274 -> 37278 bytes ...nburst_branchvalues-total-almost-equal.png | Bin 158389 -> 158992 bytes test/image/baselines/treemap_textfit.png | Bin 310797 -> 311570 bytes test/image/baselines/uniformtext_pie_pull.png | Bin 82953 -> 83065 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/test/image/baselines/pie_style.png b/test/image/baselines/pie_style.png index 94bc87ff108a89c9bea9b327abaf496c79bba959..4287391dfb6affe2abae174ca6b363807e6cdac7 100644 GIT binary patch literal 37278 zcmZsDWmuI<_cv@Bl#rJ02I+1A0V$Dg5D+9KHr+^r(j6ipodTQg4(Zx-#|EVPe{;_9 zx!w=&2d+!TnOXf?Yu3z7n5weebM%+!aBy(X<=?!12L}g#2K;@>B*X_Z&ZZ-#HdkSgqH8L=b(Vws8C2rkHrI}F&jFeP-q@oO&)Bi zMk!8~1bjVuYHPtY_aP2Sn|45Nzcb_|wtQzXXSsBFyQR1A%XT5v92fZy@z+s5FXRnw z$}IThhi9{tzETpXsPI&jh(Ug%xW^^gw<6>XaR2;@jSXs%lt6^?!{W}~{WnLV0MScl zOt|?~KOX4cg|CuPL$k5+8`)-C(=@F7{HL{s?s-hH28mIa7Y4(H+KDKvP65c|L?jnHW2j=w1Yn3A9jH; zH$r$E=OYNkILYXXumA4!B*cwhbM0r7|7iVB$~_&>IOK^|HpLUmG+u(W|B2JnaRCEt#a^5Bw{Wp7Ia_ zo@xvQ(AOFh+n7df>rdnXdQ%nU-68$2|ecB8n2agdj0# zz?hbH3C{2TZsP>38JT+%{Y12_8u5n<)mQ{T$`dD_hwiUoS^@K361oeP|DAL$DJy~K z{T1rap#QH>M9IJ!lr8Us;uoMNZ31G!T!5iwSmK+Izx>pz0K~m5-bw#U`-!6?WO$r2 zJBc{ve^pG0*c1iWst$^?8}mf#X{R7HT`r(3ero8ed@$Zlk6=eX71*~wx^jA<^P&4ID zMh&~pUv`2dvYvbpcj)tre~AMIp<6i*fXxji{pW8IsL!4OIz(6(8_@VSh}tL_UiBe) ze_i%&@cNJCS5GVtmBwS>{KK+;`&&R2fncLlf`3Jz8q)%1+=kbr%l$PB%9DMu%Pi9p z|3|3i1-7KUITh7kR>TyatZAQNDa>99_y{Fpke@vu_hsoVUGsmsp&FwCG>lpK=KKHS z{0jgr&$PlC24KOHGO{V242<9`nD=**fBPH2z^|5E8Z7>kz~M=PMYaTtKdkUp22V_` zWB^0Wr!8;F|7TzsfFCyfciR6rz&~-l!w!&##m0I3)o9Zb5)eY4?S^9?|GSgFKcEb6 z%4LHFzW-?PJkc61O~k+lv`zUW+E^H%P3I6YGsoD>KR!SSR?s}gAMnOvpq%Q%@;pZk7b9% z>i-}S`AE5gW-z?GG%=W2wmfW;{sQl$;krp6M|BC4^wgMbMW+12@m-X^&|0)?9WcXyQ zV!IG$+5cQl;u5upn&^dJP-k5dU{ag{m)b!Po_fRmxKVe z{nsZ8o~9^_RiEd%{N*J}8D>jtqt#R)m?J zcEXt+*4*U2UI-7j%e+O+C=~ksk9U@WWNyy z!-6P8V_ZFlO+*wrHm3SoR+hO~n3@^{paL^=bQCK!-(@;z!96vpp+R?;0K+eucLI%JdV^w?z39Sn|e?t7g48ZjV!AWSYg3f{ZYI z!BY+gTPCSbXa{~zr9NO?2y>Cyui&v~^69@v!nj~$Ig< zt0v1@-On&uzlAQFnT$yB@bD)O^YinknOMSW1?f!iR4n6p8RB+l&b-dq4n(7X({JGG z127iU3}lq%8C3;oscbfQrHS}jrB%M5=xNsA3R`*45=hQVVFfT_W&W#H$f|}&%buf1 z>xFw$?JgVLq`3KGkkREsc)~SHWxm66K0N!jL~p(K%?6u|U)8_m2Kj#K*R)|>3RUV( zTPeRT#;vE`VlA|KiFHvbLfEGZ_u&zJqa5MF96kX_!n;;<*`(Ymwd#Or3(sYJHP}S= zB-O%dA*bv$;K@70@Oq;~indg*DACS#zB3x8$Mf0DzT*8BrCE|+OIQ`K2cjFO$v2ui zMmN;H45+GMn#S9zf>e>82POpG1-Pl|)gd;2NHQ3!^T8;2B+@=dKHjfx>j?4Bf*~cg zBEBj&Mo?8R8dFN~% z>*<;eDRVEfCCWK;W6G;qI-EXbbqc2~tJyi}PHehtvgLVPj+sf?7dkHG0v>+VlA|9Kx<^0OGvd)CFT(-2Zpk`xx?)>|c?kx&=NYM)*iDY8{L=E6# zZK%eG;dN8-=v&xjO}_J5vt=1%K8N%h89s9DNIi1i%Gt0$zs&dOe&UP?_GI6&yND~h z>L_iypzup5hd-r&o8AFsRqNNSD9#%&uz}YlL*;rF@M95y(AIwf$`|xZw1~QBsx{Z_ zS6`{5CmUCy%gl5aA9XG$NdIh6UAf)%T2t%Ec*}f3@Fqe(!{8a6W=rx6Obf8fETtRM z#=_eLwO+G81AIYlADEBlvi#XRnp%qTuqO{Z#jt;yj`sDb9xcRiZ>RuRmjvKdW26E) zrYk6Ys7FSZaRbk}=Q({hZ}$M`ahRdC-HIYJpT3H7xbLXbEKU7yKHzJ zf?_73p(sW@Sm1bdsx8ypmf7h~dV7i-%Qhbp9W@Y3B!IeX9p1b~tznQ*{ASjI_qioC z&#H92S;t(b{&ZW|u}e>GC6n&b&ursRZ>KdLhALD(bKq!cwqucFhrE+%bb@|-w%TS^ z?QfI?Z#_8F!=t30C=|lOcwl>Do*4UtjX=%h92i6zEP;Y}1tCTXHrt%GX~FWj$C_FH zajDYbskij$w5+aH-#5e)x(WMVv_z`OTC{0pqFmcc^f>Ja)tF6=4qkbtd zf9?+OEar=`2@;X?E7w-*BSZS&2s71xnA%Lf>=&tZi(nXmrrGMUozagdfO8y`KAlUn z#SwVOd8=vO4!RcKH<)EF`PwrTSiQXRqw81#y~dPk^9K?l0(Kat9Vp#=I85iR9e4i& zKl|9{--Lv#ShY}00>%9eTIS@w{^1eW0{#T!G8Hxdr5!c?W$_}6;~I@wd7T!yHhsu*}gf`!moN# z5BG+l=1{n?`{72!_~>Od7ODDnvE5yQ;C^S4js!@`_$vT-6d(BY+3Q5%+0i?-@=B%+ z4b;gp4Q^SZJud}#WtUnK?SIsN%K4Pq4K-XI(!$pCoFhZHEX_*+Q-Ee>0 zi9R~Ri)BJY766I}c%Q({Kk2w*JW9=SBQho>1WS7XQv&CK>L+7WA#LYV8Fef7f-v2k z8js=Pz5NrX(=G$VL{TgeuIJkKi8`tiJPs|=9v(vVlVvGX@KmotpN>@D)7X;c75wa6 zbX}(B_Vt?&Ta1o6-Lo=6pqq_)7`G0Eas(bKgb63Kbw$)G&4Yg1F$m${WXtc#>XW&- zxx+PL=zUf}60Jb?J-XDRB-{A}s*xh=HAvd#(9*nC+&9|Whq;}30ZgS@I5v0|2iwv8 zI<;K+oziv*Mo2`#*4@`v&$^t~)$foprhH1_ePFG!QfZKv_n?quq&WA@!l-Y=LHGgY z;O%EqKeo1mmh;r%*CBrSI!MhSgDpZehn0*BuzR-{_JeA_42ooli``2oElGGOT;r=!<+y_2J;S!ErBw(F4*) zYt{R$MbwstHvEV80S7^CaP-C`Z8P*q^oZ#%3d_o5t*m~g_zsrny`udbN=$+3pNRp9 z(cX#X-%pZrF`4O|X2BRHWhWb4E}Y>RM2JWc-a!Bv13@K8LCOD)z0(^cBO_B-T&#}I z&1|=`Wrz|$QykF?*p;7Hn9NFlMNAmk z3YVnZgco8?I!!iJ_c<85!oNh<-vEkvI-X zIKQ#ah1byA%%9^gq;YW$2qS@9{Jtp{n*D3+Ipwg@1*c0HmzLJgch|%@h3bnM|JV^Y zjEPCu{m@5_4|USy*790sQM@y-)vAwANXRKF8esJ}YQLlw>TAAC-abl+A@Qk~M5~

    )!HCQ=3u^M)D+}WT(ZXdZ0qZ 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 literal 37274 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 BNG$*W diff --git a/test/image/baselines/sunburst_branchvalues-total-almost-equal.png b/test/image/baselines/sunburst_branchvalues-total-almost-equal.png index bcddd9f64fe51d404a8a94455fc17002dd136c63..17ad71db731e65f9e6929e0d626e35f86b618b80 100644 GIT binary patch literal 158992 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/Ix~AnQV|oJ;YNE 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 Mu3T3yRJ95DKey$T+yDRo literal 158389 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

    9RtY#GTJqKP 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 z≫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 txL}#Jgc*Letg1YMc69wb!$wRs&@c6Q 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 J!^V1RZtr>>z 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

    P&+iB>ks|Yg_<3QEk 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%0A}MtZPYR+^uSB;^a2=SpA7p)K4CA??FKGqH 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

    1Trn#|zX(Qsy42y? z^6q}PyH@tlg@kT8b_!Q=#8J%Hg10-+hV~03771b`+vd-Wy^U4ugrRA+BXo&(g^ky` zYjh)^gO5gz5y?6T^t$}(uWij=IHJucvK4RKhOV{3J-YoYURhT0Gii$=T;YCMj>$_@ zIh8HIaT-s)U=Z~ryPtjApwl1S_an_>LEu*t-Nbb0awBCzrocm;fQo(Jc&R??#2^^R zN>(5N{r;3|k3|MPgKvzYEE6s4aKnJ;G=(@UqEcv~`jhQ4aJZxu4u^*UyU{VJao{dOG|%6NZ_T<-mflV|w=2LCu!t~|zWCl|26 zAMX#tv>LZ$$2y0gmw9%bbkH-Bng(M^Tw$k9d8ZYJqpk7mAH(R~6^aL6{*_2N6k0JT zojt@7+ehj(gBN8FXS|($(by*ZWt2`k~{{O~Ea8a)ecZHaNT zW5!>kgCE$M-YPaz*cSZRppC4%O!jT6iN_4!ZcnRD&lJShPWs^Kq@%GU-91Hn? zt5ttWd)|JNI);`gT=p9>s*fj3&VmL~av|JA5BhiLz4NXd*c~^CUPc4HD<#rjpkEdh zgZ8dD2;jbbkF`FST5cW>QN$*SIz z*pU6Eja||DA*SunB&pYd76tCYlKJAiz?UGrOvRSgcJ0dTd`|nz;%p$lD*!Bx=>LLY zLU1;I#(5bjp~_hpd$Q@;0@Y|0|7-RM@J-&6`Dkq#$2##owXWM0%k;G4GA{Ws?a`v#7gs8iokm{5ABM{LbNFK<#UT?&aKTtk~|>r}t)R z8^ZDJ4a&`#D!Ob)1_Z zQ8X66_d1XOtCwa=;|am>r4f3g>HKUj>fmb9eQlj-19*3Qt{BAQs8V+0zIquD~Xcd z{kFjy^TnSJiy{~ElTjA%ccZ|*`W!*(C%BCv3h!Vm;&qu9#5$0S2V=(5qxHC1ULzxM zkiQ)t?;W${u~>cC=cCqi!%zY%HMA^FgfnaiI;mLm&o!dN-rw!x2&4tD?^hn|&J9@A zNP@hFMu`02{2C`;s%P<>@!N;;&?6G5xz5ou&g#MS zKQ)C#_KqboF{L{F+sOR!qcbWXzY2wZl#Yh-U8HJyqIY?K2 zwU19na0t9cp@wA!TmxaG90pPmfD z3x3>lzQUGOrk;y*>k+G3(W7l9=1ZL=Qhp!YugJv)^KnUaRXfYn3iarjFw6zN@P7#w ztDsji(x03NJ3C=p)7Zrcve%UVn2gapqW9zM)RfWV4ix(lWdKx|4Duw}EB%k6mQp75 zjLP&d;})sGdU-fsN%@xaoxz1HJ%TYY3=qS3QlUD~=>QfR7bkRWyrBEs|p z2bf}#H#@TN-qdxgl}!n_*$CNn43ZNC@DW}$&D<#wb>R^+e_CS=*RGKk{!Lm~{j^cL z^V=fT$RKfgc`s`2LEMRrB8nj@McmGVt@>~auE=7VKF1cvgpfJW#mS2xnVW}4JhU!& z8eL2Edxio?td68Upuxn@bOML-bT?hgAAU)LiOKEl9gX1!(5SuHa03;4`pK?_kPGz0 z^V913Gmy_}_5|-{@WJmQiMk$lA3D}-L~!+#7=ZC|WdsORyFvT~O19?s!11)R$xnEXJlx}52;_vuS4{uS zgdz3d#UfPVdwYIe={0e@O)^_C-ti5Tl%bD54-AhVYT|X<760LIa(q8SHTH-Bat-eq zcyIi932eh{MHi?b{3eGk6}jYuhp}gSZCo?UiL@9ZtWQQ0ywjLc@WLT=hH+Xmy!g5w z02z*ss*GUA5QOV|%Ep0i=L?API8H_8H$89LQQO=)*dhV2Hr;~2j`7al-jGxcA+pGv zOblgZ@luxhpJXQ*DUGt|{CN1Z34+$fc$C|TfXMJnI)kwth8zr3-K?=W|LMO;o*H&C zGp$_-e)BIwqG!rm7-QDQH4FJ2ULTef7F_D=5ft4)Zd6mfW8N9D-ld#$7BrB2hENt? z`F%o}*z~wr^GXB`9Jikp8-K!sSg(%?qc<9Sn5R{mk&Pb3tNf2th6Ina`jrInMU{Jd z082{WL%h5%kgi{kU&T??#doJI6aAmjTJktiB(KAL zN@^Vu=HUH}^(g9QZhW}H6rA}g0<-dJ0lYyvU7|q&-S@Mq1|ods-646Gk}#Tde!oe7 z5=~Xz3OmS<`hB{6i07I2S z3ZDXVqF$vO!?T?;)}@$q%PSm2eitdh>1(z%nc|E*tSd_%T)h!PSKx`j{mCR1K=EBW7WdEcvrI7BDLN;}gYaHL2ve6$cvNT){sVbN zRTF`ib9e_A#wX&9f?rbVCNA4)e2xo2||tl+eUX%yNWSr*m!b>eKXyldZhRDNG`p;BELPN#Crx@^nz2B4d68OZDF zR24-qQi@9H%zMfcf@+>JR5nGn(Bx&1mR>sR)(JkqmKG6p#x;)TlOJ`>L9E(^XktZ>Ogzue+0QKK z@OA7R>c(jKp$SDvr!kGA0D91RFj*=T6F2ecI9UH#0Gp|*1Q)yQwvI%|2U|5Tp7mJC zrYJK{;tNf+4NQmC;$XnSoVgTmoOp>N91vZ#tmGq=b$>(j1dZb-x2Sy~J52gPxMLsGM>!uaHy>-UR)r=Pcz zJ;f_3juu)^D-Oz*w);l`{MS_R=(kl!OeW1Ru`LXkWPP4Mw=vgeYoJAZo&ApS+W&NX z^QLvO{h`p6KI~iShp!osSdKD7#6}pzBcD=v(4-%#7y zNVY1P_)WjK9%(hN3B1uwb>NC59?@<0t=q7o2Mz5f(q&^-l92P2l+pQ+l$UP65$Lw3 zwYv^rQNLxnlr-@c2>3R~5#TMtY*Y`F?JgPuStoC7ZtODs2r_naKOxbMn$5D%976_t zPgHK0`n*d;c9~2#1n6SOvKDMzp6jTB2Y**ChI$u{bd}^>R9UIf^!0s37##8)ZfsWRdU@}f8F^@L+!}u_e(E6~zYcu_c*4j~I?qOm(5`jb6`}*{k8jX( z-=_C#^jl?I>*xE{b!tBRGJ5#;kRMynpj_A?n>720rm*4<`V^DJ97s7N_eM>B&J#y% z9kcUsV6<)D615dc|7H@w{-tH)>69RjUgTiG#NJA6tnrSD9`0o=PTN zC2E&%rXI}7%#S973uybSJckE>BYy&jy@%?q->E8=g%wLYJE(qqh^~1I9qrHd2PNnH zT}XSKijVX>%XiF+SCX3EN~Pp<7i66a)p;AQIIJn5Vrn_L3!Z3t@ow?Rp`Lt5ZBPkK zVAybn1L+xr1>$w;>~DDPUfm;v7{z`oZf@zStRlmDJdL#+J9R?+cc%#yYM(f5RpW-1 zJyy|OhY*fba!^sDeo8XQ^=QXzYjV=N!_KGr@d^I+YZ)sz`h6}*%=pXbsovOkwRH`& zY?@To`+OQ%nta!bU8<&tnZ_l<`!hb{oxtxL!E1}9tqU8nvuC z^C5zuF&Ye%&ytSK&PyRcGj@jlZMK_U=P%!?KN|ri709JM$cC}Ma#zGKcAI{h(QMgF z6DH!2ZfJt@LO(=09Woz!^gyEOP+Ge(J;IbB_v6ov)8qa)Yu9WmCCSHZ(TyV%SmHRo zoBEc`?yIu;4NG${^y3^99+>1=zGB&FE? zZ=)jtlWJEsv0(bO!ye+_cA_^z4r3s+KX!+(zLh?@(Gmm)n&@R@pwI7b3sg`KWnUcaAH zasNYHa3*Ve&T%Dj0{?gwKAy-%Pf|zD^oQ;)-Z6F&bJ_tqOfX@OYfrjj7|bW_;g|$9 zGR@-49N?8fBoWKY%h5CAh;gS`Zi>Dz&%-jupBT32C(H?9TF0s<*qcNy8(B;AJ+{UE zJq}q|WV-lN1wwormx_5N91d)#6XF^l$MY*^3A0c@y4lk5^WxEJtKB=*W;=3_0*^~i zixw5he}w>Ug8wv|ng2yye{3U?zFwzD8C}tzYnP1D(N*T-UKdOp*PGwA?>Hp?v!mL~ z<3ov|U>ytR6u4ro@+X(F(1BRgs$$MSZr%CcYFi_@$4G%GRezWJk$_|A4(Y~c~>H%C%p%91t_ zJ`p?NT@GoGIFUseO?g2p7d(p}bUFqI0<6s8yd2%tP0AM?|2@^TA+Fbr{UMz7E`%FE z&2O#`WA(iuOM%e2t}Px?$$aQAu>~X4!dZsVn=4WeUDuMn`!vavT6Qn5%mBV8m@k9` zkdpmgP$65mMg#Jy3@(3|g4WlkYHeDXS%}G6`g-y~V35;HWZoc!O^6W#+6Gp4OR+lJ zX~!PUV4Y}jZe8Z~du%A99aCRI#J_RoL~bJc`iHLa$RLNr<^_w}4Q$UlhqYFA8vY&Q zxtfN7(w^nnIR||LQ4VpREK_+4m8GURz)@~=setO80CQ#JKzkS;uwlRZixA;=Ps=r; z9npNdi#1(vRrw!t7RR`ViAt;yB1v~BsByBA9`!P07*U z%xK`skPM~;n+Rq`q4xDE&}|Jdi5B_Pue(aSjC+AbK(xb$Z?Jzis0oiV5Nyi8a;!QaGjGE68b^C;>+4DSW*)1r`PRvnuT=TLblJ zlv&;quH?SqEc>HFc$E%JD+W&A0Z zZv&HlC9&YQ=a@q&3--dFu@yX-cbBatV!N?E66eb^C8y-Z6~OCTx!ZAPMis*2a#;7y zIsGU$(({}p1#JzING;HIElm)!13w*Yaa#TK*{e!1T;m}3=jP{6&Ha9zeKj7r1oK^I zMCMxW&)F8Iqjor5}#DgxFMkS9%GAaC3ExB;YE%SU=k!V@r^s7e7$Urg9~x=#{cF-|Pb;{;x$Kxf0F!4Wf2r%+5)EZ&`DRt+BicL4 z_|#l6upu)qZuAE0@asCnD|xjGJxLK2Tj?q}2`2054rqfAVJEZQ>ANna;NKlFAyN(! z1~TAx#a3NgntvbjuJ*YjbIpMUi;FXzaGp0RN|sG;M$`{)XNxuLlCf4A(NueX8}?ze zVqYub^3-MkQ@Zj74h zF^uZ%f~CoVmzuoV=-`0UkIJnO_^*2#pqK!q$)}64MA;wj3VN{#sk-d4(7qXxo$Q0g zPUOLTKc{XN>Fd5%tfQ78r*&mfD^Kr+Jg%i#p$^+P85g;fl#3ZQXOE~q_oY>rtM8@< zsBR;>x9E%aa@#ubvVQox`DML|`1^0cybjw7BX$f0!r(HwEIOmDyTN0Q?!3YZ6iZAH z!aMQmOeGi5>PN+2hyf{*nn2E%9WS1*Fheum;%;AyKj@o3e6aOp7R+IM8;Mfs$wp$` z`PqND?e6(jfBq7MEVytH=+n;Fv#8^E5fA^fFuWNZD?W=iM}0cC&veyx{+N(PxMW&nCOJcB zX$xxRw|l6QjaGQs4YBwrA&LU;_0*sKA+2=ccZcNZJjgg~R$9+@?2GFE*un6|&zNzI z2wU@O1(yyZ@9+nMzIIW2>;(@X0kvc90lpE_IYxb95b$7nY9$ocQr0i)rUpLky@Co0 z^fa$j94_OxyNXRV*dvDZnDeLe2RKOgE|r_(y6kX#Rn%RK{+7T*uE!+=i30SYHNlFC z;K$Q_@Pvf^C9~b*z5jcR2s*0MkDN}tBMPdvGTg!**wRF!mV3g3{srWMzua429Vd6! zHtkWGQ;NfiT%qAjz_Yo}P>i2H`MD4J30hCy*kgD-49#3_O~nUCE~La_D3At+GZ=?2 zU;LnVCvSjht`IyICGG?mfgipywkUPeBKG|uVg(%^3$kmOH z(@IG60Qm+vdQ+k)0q|V>d!6~Q&cK&*@n#mb(IyK&iE%k5maJCO&=Fo}>!=yrU3M{^ z7{7T&Lyj;ye0G0PqbQfzn<^%iz%LO4SUm2M?&NueXvn zQ@NVortc_ng40CzI|blK=9uFYnQ+@;?Ya58<{4TgdExl!o`d~SSdW% zO9vp);4REShN{TaElh`G)$ z8&37}R4zAY@5V3*VKjN{o>Gpq1pVRDW6BU5*%eG^yF^{zgak77jhIuwzs^^}gaaV; ze=N=aIe=<#wG*wF?>6nStt-gRZgz}<+WRz7f6g|TW#I=`Ehm$b*uD+bN=XI?%N4z4m&i$XwuDF(Tle&o04pQz zw2q>Ch-7`BBx9WbeD!Tp#IG z{Fvr*HnfgscnciUucEZ25cttC>2sH9rf868=K>cY!F>E4k=vk{e3~~#eMg6IoHtKR z9I-3y))Uf4gD3ir2G_!-_msWi%7KN8>C^B<7z|1Nbylga=Y5-@gpELD@L&?~#1Est zG1kde#hMip@LxrOLPi4rsEdXY_vS4wPc-PiJ`@nsoh@t9MQHfG8rYBi z6;-{3-}rJ-W^Qf8eoE@){mqWscDIQ^<;I9eD4aoR&gX@dD|QQh6GGBtLF^aXwzN-B zV>qA5jzhCS4(@G$r7jG)7hm8V2`u=cSMml<)*!}$lw9ks%uFPBJ`!T=zYnQVN_nAlLenDuNA`AYaYfaRzSKX5W{dXcoztA5T@} zH;@l5O2_1H^$AvCh&jk_CoP}0*Lb5Uz8fcv(H=sEMUvathTf1tk@QFJndC$b0AG^Ayk0sTFt zu+qh))*oYH7iJjBp4+Oh5|AIsC5*_gx~Mjh+|(;2*m;}6*5D37}Aq)aJ? z9Qk?Kv>;SfUFsh+XOTW~z@T`m0tW6{yqz5m65)5oqq&o1xs%LW4XudvmA)MM-|(eO zHKf&M%x3$nI|9WpMkCc?JF4rvi}dzG^Ap zX6yK(rj*XK(NMY_2)eYB_-($rPH>I1NhP5o^QJrOu-S?X_s_FxA-9~{ngC-Uv zv_lY?1$LKr9KI`yrq{PxSY-MQ{#(Ca@?PPJy)5B^7u_-p>?HexG>C%EXGjE{>>7D# z5&WLxlvn=iCIa55Y6#>TK={tgvrN_sP%jDp;pJ<);6NZQw`f}C=0Gs6VHzp8Cl#Jq zCv!Die?;=5#D5VJ2$ck{1q7Wweinjd#nAh7Y?JIX1=`mqQ@&S@&Ul+PQTsfh|8`+^ z`;EZqMeC?m7+9I{pS9OqI1)ZziYo$qELFLz1F^C&Rd9tS&>_8B>mK0tZ}9YkUJ0bL zKR79VZGR+;vHSIi>-0Mi3n_4*l$i_v%U|&;l=RB4=8%iKGS7vC|goh z>UMwu*L%ND7Pvol=w7UEeqMe?tJV8N8q3EQU+2L0r5^rW)8>|;FNrs8P7lF1-!~;o zixA@Ne2ZDumTGqIo-hJ!wZ%i{?BUy3yT!g&<*n+qjlS#waXyI9UtYcY0SNLX|t1I5ljN9G^3+rh6b1XN!+{3NL?rrPE-KqSC zCQz(HR-LMQP}I_*G7A)MD-4yKx65o8;=wPoL(mD{gmScZ{-*p?*M`7Run&9P2-M zJyMG3?n7cL6M#EL7@JTOrSa4Thk&`AfYFnlr2ShYb;Ql{c5UaARsvJ^6-Wu1kB?LF z-_RCxmIR9k$+poTYDM^InC-Ud4z`Kx?1?SsZJ;h{soDHxv^g8!6rZo^%zXs?jLxfZ z^M}#Nqm*f65i!Kk3s$?r8-}OsAb(&f(4z@H^6}6RA6y>Nhg}uFy7%f=V}2|$VLC)3 z5S?&6yEZweLAf(l{FGlJ!umsqDfXsB<`gWR`#kg|;byN*-seP@a3mUAwHf-7M_gtz z4B(4+daWZP|KcF%gyqzvk#`h}y7`BVP*CC4_4Da>K;lC-T296L3?QSa#{omDr#n*} zd;mj54p*mxg`qk;^B8*uEVx)%*J5l7>c`81mzu ziHoD3Byl_m3D@4Q{Kq6)k+y`I6%y+P2p$v+9@-EX{HjitrN{BzFgi-_FX=znu;Mt7 z?DRLr45+ZqP^!WjWS*SbM^x4#uw0ybYsPo)Hkb7P&4Qq{(3x5TlZ9(V|CycYDs(Ta z8vGfYwFsU^tjcS9*BeZMl5VZ5qfc;?_!VA(+ihka>>QA_F+H~rH3UxkcQ_t_&*4Q4 zQEYnP@p94mPALht(*9W`opAWy=IFXKGclL<75>O^5$SMQQZ(`jR=g7V;w0K8GOF}a ze1TT(?pRz^IJ8wm+bW0=>4rA#YQngqR?y!*?s^$y`jWaRmFAyMgzYt3pSd=>zKrUu z*FsO=`3KFN!F#pch^TEW`xXyqHqrNz&p&@JeYY%|ZC_Y4HsajvWxY!8Q6I~-H@9LPclxe!oXK=|wHqCR zvhd4{I35rLD!=2WmV3cRxTsLmT|!!gdOhA~98lb-3rwbvt^FWv~aN&iNMInRT~qhEPU{M$RD z2m6$6oI464{4)tB$TBYl~@|CN|N%%yOyw>n@phOJsd>nqvWbYKo|Ya#u! zD9ITkX1&48IMFGGt$I2&wbuh-f;m0*8zW@{t(ScK7(sBb+k9~djZrgUAO+rSXeaBf zc-lo15QYRgmiBWLDU{QkT*nq5V+c{ zA#>8(xYX69+1%~`JZp$x))C{Ie?R$1Z9~RLZ#Is9GhW|yR4?{@#o$}s!R=A;&PsaM zg-j3Pq80nVa-&qQDYS#UIP9(4Tksscq(_yq$Oi&iinud$jCG-O_O|dLV~p3@aSAPmZ#xK*ny(WZF-@-%9WZAktYd3gNbmt7kcSnewbiCMNGjL5JeYA#!ZWXlKfFePao6*-+T2q zkmdA~Rqk3OwXf5e-IrXTdHfmT0L1~~?eGar*!XPGIDy;>3nPSN>nH~+ z?C*zRq)#IHIeC&6EpTC#@%%^l7wVn!eH2C|Q>P{^0JZkKk|R*~8&aK1SvFyvncK!J&C^m}z z<98Wh4Rp6OE~!((p?HG(OAhhFAKbv#OlCTGy`d=4(1>WgQW$YcB4}h2)UU}MplvRMt@b|MUa^j^@E4W3{`eIsKj7>h-6_{>XpF(R}U=sZZ*cr7g zuJ^2eD4GqQFc)O^aG{VfU!k@>v6U%eqb5!oMK=5*mUxS2H9TGJ)`lgq+wO3MHubwp zM(JO@g^*{MY_6Cs5=@i;wbP6@Z)`SPJQq~r^*3qLy54zAw!_C`6laq18f5C^0(+WG zsvv|W*gr!Wlc_>BjFP5EL2Y@2!0`~T*YdGR_BBGiE+Ud*St?ScFf&=yrj-|4MYUrZ zY*jF8t=}Zf$!}SN$$0t`iIM{D&2l{sgWeAQT5`4Tz{6L?7QZt)xST6-xSU7v>h~0d zQY9?c#-K8(ojkge7Wb{<1S>TS+>FntEP7kh=MId4+^mU6enLNIl|Lk+0975ZMy|ND z$;7$v_@Qx~Kko=Q-`@)v`rYrvv3n`_QnUp4gn#t%K{A-?xv7^+9P%|T?Ej5V=RhY_ zrFFNyADV2#XuVh#)+UqFNjS!;fdaV=-u6BotGyEW2e7Mc=XzmE3E+COgVBoYaSV)* zKQ>gov))+Vppn27K*$%UEDQFn5y4(8FhBaKC#khW{axx5PgL|Cg=^!M$a3?p{Mt!s z6)%y35nErCLq+UUiK}<78!0g##so$iHgS<&VZIrZEHpFhDhShSR4QW>CRQqz(U4FS z#PJc)awo4R)!fU8K5@;P(aQZ}{v^R%RV`n@C(k%0cns&_tf>MTBN2Z~h0ztD+u^+KotJ^?_ ze?O2$ZM#-|+!_!7y3LU!)_&5cx^3Muw%>fqW8gc|?g~psp{iozS1Zg)l!<2Is_T*- zv{j*eDs97ly4E)92|a0WpX)s)Z*?QT{|61SrF0orF`x^|KKB_xTqHgRE6<+?4STU*4}E@3q-parSZ0_z}RxXR(| zKHM-Ef{4pEmy`4u(ig}O6tVB!x#kXXoAoTEYu1woN=G)ualkPper~0D~zh=Rk&?g-@3aUV!-yQZ(o4whd)aQ?Jdf&G)aagWsv=C^5G<6 z_hSvujLsTS`mD5eOp8qxFZ-~&jqdk`F1Z9K!{OpAn))8_ zU6||JNeM*le3u)4Y78bPuo4EyhLHLb_k4Y=*g=2pWl!0}8SO$;Jr(*Hd4*S;Uat_V z>*)Z@ymSdhx+14Q0`y0n-J8}6o7-!Ict>jzA9(#EE=(&=GPVQx)1VdgV?zXkV(aJ${@28GER7|S1V{G2(i!Xc zi?>{YjV#L7L&%I`FJ@DNNtuDqEDpE}b8Z@w>I7`Vm`V`2o#nR;_ zGjCBr72()Wx1@A!gx8rs;|*d>f5u!H0aG0v)rnG~orkHX9dt5{pw}}(KdL1*EOS0v zEne++E5NO;86mn~$u~34tFAPazyq7sW#RDz2>dVTla~2GgFD{ZM+#~ja@;UJ#LxrT z*%IWy29=Xleg>;7NVH2mI{6lb^LvMTHhu#>^3-59?RBW8O)V+xj#+y?TN4q=_cCsx)Nxx(AK}GS5l4&ooxSM38E~rsF?doCLf{^9hZ|0(b0{W?<4PWcw%v$#yxv!Z&GXFg`WOEL;ce7#Q8?<1YKYAk5EnB z55G|4rl=VsVi3uF2!NO$<2YxU*srq4mhRa@Cvv37?$b`rV}3vLYAmeZ(ywrW;#xoa zW+Fg+PMiEfh5clvocoC^y8CEBDuYXHmq_I;lyns7RQEp&!18jfxZt|;hyl|D>+)_Z z?txgeLkjlJ0B{O|Ewx}eXI~8>rfc}&1eRiRcxbasGaje}11P-9cqNCbcA67sC*|sp zt-J9C+O48Fn^lmpVl*am?eUY-i#(zO#mVvQMeD{$vX!fXAeG-!8FDeE%T8qt#-j^L zdzWOaT&h*|A4w*o;XAyoQjJrx+g)7?I1fDNmaLfWE-KZ}^G^&$FAi+}^= z_PB68_V8UP-}}&aP;I75OJ}Qr&ftn`m@|I*Z*Q-9;Vw(KL_zl5#;_|h#w?7*e6yC4 zjqpjH>>%e=Cb1jN7*XOpOEH!a4b#Y=b_6n?VyC=$;2Q-Rhko$F3xfMImem)lp3n8C z`iW&dDp8t={w`zFLZe#F)a_917^v;`?y7c1A)6@Ln%R`M>GjU4CA^2UH-925Du0Jk zBnB||6z93dU0!-5$Yu|k$HT5;j_++hBt08n7~IO{%m3h3D9mouOJwfbmTfIa{IP5M z@Cd5+2i!3Y(CI{$KRYncK)wB7gyo{dGFdp2coZ*h<6bfawR=V2ic>iLtzuZbJcL%h zFgku>Xm!$T^4m37c%f`MU-K^XEJzwdlD1wIK-*-Xpy&9+7)v+B(~X#hzL?C z3L7yC8(hWEkI9j^)QQVgtrqcJ4zKD4$cci(BEutIpY(Tm1Pb>0PV&$c1FV;m{j~fV zbL*V`jLkbf{qEYTRW%&T`EP6nFEPDp)3vd-fzZb+vTnl)@TbU_qqU*^FzyAqoY8bCDZNUOA;e zV!XrTL+nh^dIZV~(IeJ+-TgLg*=-qVE;g`LSu}z&Ic(RU%Kk#9F3=b?;8#V5Xyttj zuKN&ZLo;H}x2c`@0wIFDAo&Ud0y%ns+Eq=O?lr^l=~y!d*qzgK0?hb#Wd3ur-*+=-@JPWx0IoxEr?;RH`Xb#@uu68DZdL4qI>AksCYba!q#r6r_Gy1ToPPRXH>?v68_?|j#}_|2a^Gy8d; zweGcE-aVRX_jiKVQUIqutc1oG~roLK4j7U+l!ol;3gqPwf&RgEZI3FiBpPqC9Q zberw5o{|o9rN=k-m3yq`owm1(;WNSDszJPFlc@&_$Hpj$k;mxAbhu3QCRqU735ihQqFb848MV)J_SC$($yD8)*cwLoVazJLuWvNPj-v1yJhd7(lXhHE z90~e4(?Tk&g$~h3-YQgffj=LgiA?C4xvfWl*vcVDGF(fLAijPWv(^X7hls`IVq{B& zr!mes6Ec4X%=M6CKOlyVYutTqa)lgRw>@eClj2F-HXlg@j&y;7t{2pVP7fL8Zw?So ziVRv&rQ_sAoNcIe16-$@GxjqQoJbbPzx;;ko^@Usd3jc{Ke!CfXBYZkt)Sn?kid_w zEsmymM0{PY{14TMD<9Zd%P{K&`kuyptXH{(7?%+Z(t!q(X!rEEvDuJrBnT#{{RA$`uHZJoub@X5i{M>`aF7e?$;$q_c$8(lnDL@sXU#OgfTX z{17*{OiHF>$9s;Yg6e~Z&=?A+GhS$SB6IUNym=thiu=Oo8fgo>4-oSAm(CRr%7=sh zg`S&6VI(9%FJO}5KdD*9~Evp=@DPXLeOO{sQezF0DO^^Y{HHJ=0$nC=J z#4)$UFp9q`t!#PWo$z<&V26_G1xgKqkLcJdFil3W=p$q>)UuObx6ucB_guB+(=ZTx zJ&kMqZc6Ec!@3J&*jF1*r5*)c!CQD3+eOO{_Z@x_OMBIg6_~O6U9n-@oh+&b&4vMY zZUFe{Lh=;>%tA1x%k8i1X8y3j_=4Y5?kl$1)WPx^g#twjCwqU2qekk=*qi*y zVlba{zv~^R_c^#+2X%dDe6b~VooZNjkLgXKmxr9{+rsb8V(cG#=pI}|SjSk?fiC>L z)JDaOVSFqKB%%1N#!$=`BjB&owAm@cZ2)jlqs%BNeo=O|uzmsC8Wzp7s?7Dek(_Iy z;_!zhuk(B+-ALiQ?ITaLkjf9PSUyqC@^q)*;VZxEaL+DEk8K^?EMK^V^;^P2deX@5 zKtb5ODgxWx;xo$b75HE`By0X-t1nf^(Pxa?D1NruOTa@_ zc;D(hm)Wxyhp>JAOG;5L#SF2}BMu_pnOW_(qP|W$eC^5?6mhHC+AHCg>ZoC)SD%j_An&V{6tNjNQHdyo%0j1N@vRVAeY~I0 zjn^EO2-=J89)>NOegXe5vIpB&;L@UP3G{lHi>~8@k`MNePb2lDL+^jB5Q8JLH1 zd(dF|i&6o3-_qpt>O|2f5O$7x-+6mh2@~Q`7WAbA1{g_StcMSi{4V{gB8$zU_kHkuXpHLI@(bwl z_D6gA&>G{WX2EW%s)Ncs;Sj5wb zI)lX~l_d~t(lz%J!_`@HH)6kgP3t3i_*K1{1bc{tCGrYWDg(gj1)Gp0e7x0!DI0}y zOh)e1>#G7U6$yuE@B{n^+3mxG-IopG<+2LiC~^)&@I$|cYBO;V{_B8auG z;qNQ!P1Cnb0A}IIuUE8e4m^+5v|V|O;`n(hUh7XX>-hmI?>QyVe&4-n8{+8 z&>0_oyA($fY#A8LNEGrmFABA?3bM|UHpqF_e2uPEN$@3--YR>MG9No8% zlKNRn{W+A0Gw+S@hBbkw3qUI`^LtLwcv5a)XFz`ZGSs_&)BU_M#`bo>m^0nOd2{)K z0INL<_(lKwCET1OhWv*_T53a-O$c78n^#5DUp{YmIlh^+#fp{3P02xl^qh5u zo`T1u!=oyU1!AqRV%||R9mu&FOJQvC)-Rj#6%soW_^fFIMH*z z^#PNS+A(QNQ;mST)y~_-anQa5W;C?`EQYlcwvUoaVd8{L3Y&;%2yH4&=BR~Fw3H`7 zDO0?ghGKJqg`$pxKMNa>7I>)+OusY@(49&|?3TC_K-;!Zt9T944!1oRZQgcXq_s`+ z*V}jM*l4;oR^FqNI&a{w3EAG9^ZiyCGKJVe0k7+LkSzqiXJ{h`@+NuLRvrdq+`pSk zSGEj$rly`6!iq!kBJUEb^huJ2+Z_+&9%l8fd59qI`c#6|csTFcuP&XvTRAm+`?Q!tsyJNb!rwdSxza!!30 zCV{_#xCTBj@)OOtKyzWFHGr?)-eDg=QB!OKGY|pUR&^xJ?lS z6^HCmPpktj8h?XF3Eh@o^Eu)%yJoz3{93^#diBqgf|~b#yFUAjAJUIJ9zHC(`F8Zg zHe5MwULu5i`~@Tv3D#bax)l2A-)6?gM)0;>b#Xr9*KD*W_LGr(Lbi`>CFU{Dibk{z z_efe7$UlWjx$=ay|4Q1{#qo3h2)0%&o6sGxQceUfN_SydeF|&TWVPje1ZhA zrC=J5uNs5;@&ARgscYz2w1!)jLk<;xsauSoF7Ks7xOs%HFWYs@(CkW>^&y> zb`L@CnhI*wFRAOq{Eo19dB-&Sw5u_nBe`To*z0{9>6be_ z-<>Y-*8@Io0&7h}yIm&3B9P}gIr$Ff>YTZImF-+Y7MbnT2{Dg|!v%aacE`zvp6Y@Y z=gb_(X7@JrhY*RxV_W#4tej%(AW@=n;PKYDo_EFZEtKc{e6VT2$k6s9$LY8?ntM6$ zeqfKW|DgB6b{w=dRqso6Y?u1u&g{y1Hv#pN1>ml&Vp{SpTV>dk;pJV2P-%bVGEMDqaL{y`v@$HYWWyEpn9w5*WLD%Z zh~bHEV97cVXiv?5$nXEKYY>Yg|CLv-0q#7F*l6;J^p>lumu(ZZSp4OrBz4-RrIBgmh^(Uyu{7m#nhDTK78S$Q32{H#Hj1WV)eFageW3Xw~AZL22Gkgz$ zgSPe+sJ{EJyItF)(w<=MA4pz6SJSU6e-U!h``mN)sf4^YJ9QTF`^QV6wQC4R`s7-v z+XWnC+>!o0zC3CtFrh21s6^N6x_zGk;PT+vXp<4JrSb-6LC;UF$_46BAn`f_5q0Y6vjX^g6+$Lxzy6T-{kaoGp(t{+g`vySy= zO%2^llu$4k|6b7UV)Ub*8DU$sx2{!Aq-?I!+grYv%vxwSwOuejzw;Sl6Y;mreSek_ z#UCr3`DabK-$yE+D?<~=esv_>SX2kSS2lUy@FNFRxfghGYIQ|PjWU%WmZ=09$1hzdJ_!%X4OeVsMxT?EV=V9E(}rvzsGiheLxfA4-LBMJh+IEypR?YSB8xx<8GL8tSy6O@kc-1}6be#o=VQu+Z@s5waiIH*?-$CupydXmj`2DIVFaKZYQxtO3oVL}l7fHx8CEwP0RZySIR(dJl zfrB<1Hz&fMLfm%UTbT6^FJ!a}jC!d)%=b4M(J>1K(nr9P6u?sf-Dcj!aY#mj&xbxf z!R_e9*OeEg{3&)W^xBv9wmKM?V;y)QUSI92d%oMO(tW|zXxe+b3xHojEDRJhia^t8 z61PY`pZ6a2y~dYyOCNTRUBV{48e7a`$g!ZF+3?WOyK4yF@U&Bq#V<-+$>07rz8bJh zrEE#O0TmFA`~J>_7uLg~4KGZP;e-1Z^?IMj$(JVk3>0DB zs=t|I)3<%w#<9&>$Nm@)WsnS-6zGJ482S)b>QaFCy)-%fsm$;QhD16$@*q-?gv=e# z!}jPAobf2aP%jNT(TpxOw2JO~%1Jns5gs?2?H}-Xa;)d{6c7eEBq6K|C2{>@<(A}N zVxh``#5j5YD?H^+ZI`<8BSQDUEQG%Z@^~TA= zRn|<0>hn&znaz_O8mE2YQ7fV83&Qj?;0j38FZ>5t9L1&6H3szKsA@B+bPY%sqz`4{ z%144V?N3Abu)P@f`j{A=@f1aI{DHg^`s*gVBUNi|yB0}j^21C%BIug_9-zP7uY&zM z=JA5WP=RmSc_~8Ub46+VZG7j@muP0)8|&mx9~c?=Pm$B};)sL>OK4-o`}QgD^!pqa zK1x1PW34Kk@g_9kYz)OIp*2Cc-jrv!Sk;ih>BMeR0Z1!z90@-lOZ#7~z)fpA5ep(Z zOlRMn2n0&xo_pp3^{Kgs7C}pW%4XwzgW=pxb3B;U_RlECkh{nENs*%in0L`V^xY^k zB$Lh8Z|UC$LKq!RmzJ>HCicc)_uqa{m7}gI1EvWft@2v6>YIK|t}+*@TCaW>$00dm zg6|;aAp=8m`e?skX}FqJiq8jhr&%*)%3hy#h7@W@l~x1*`C#wpmM``Gd*XY74Nz5R z@Id=HzU}{0_VjWgT092VgqgA2wOQay-7)ZOzAVds{N!Esr?{M0Xq*Qbo(`1TWRK1R z4!xSoPmXi}2kj};Wh*f&3mpuNh7LMb6`^vrm`)<`Z&2-$qB#9nuuV3PJ??)T(F_t*~ z$}cEA-2E!t@%$hnb(;AwhC33fN(aVx9}!?)MpUxKS>|w(Y^kZoJigtKr%4C>BB-%I z_o;vPRs62;a)|@Xo(9hCysehy6{nUYUnlE!{-j-%DG1}eqaySvk>rFKTCv=gsS}11 z{#@=RVS*v_Tt`Q;G-l+osD_U%4lk`@rXz_@Avpj;?`zR_Y4EjmPtl6AjJhc!eKo-H zrcqFsZx;X&2oQM>1R;ciB?I2Bja*a3E7J1!2sTB2g&!mF-@DhPA=I8Xv7=|_T1>ae zLrE$(P>$GCJ|<}|^0_K_HU&MXkNQS~C1nJ%9-=zHj@mZJat-$Exf)Bd>xDqCa<3|RD}-HPiax-lAjctExc|N zE;Q3vq!Sy)Mut?Dsx^Q09(f!s%GZr(?>oYJS%$|5tL%htO!ct%;7SaG3Dj78Obd$* z+Hw2Oa_4sUe)s6jUv%jbZYp(U6CGJ>Cy)~z2^=H>IQz%EPKy61LM&ZhEu@3z;uDwbfpce-TYB1)!b`^XlzEqcD`DKa-9@gG=dH_sP)sg_(h3PsQ}q=L*uycVk%8O+R?K;$d+nQ}@v za%uDg6+I*|yd@OTbDUC!GN+u-2ij|UID!ptkMg#OTt(=`Lss%akY8x4>j`&ol>NfM zk?#62QdP?&QIecI-ow^})CZaNyX3R2;@({VVAsAOxL>pKDOLP;6^FYPbjVsLVy%iZ zg4@~Rg8GG7He$j`i0rK?g{8+A8mCu#wj_ct=qf)~q(<>wlKQ0auazu_J{kPD0JZ}L z9xP1mUgOvpY`=XuEgZn@MAUE5YOY_gj1Rer8OOhla~;b)_fX;RYAn0e{Eh6IgXGw*$p!3h3(AV;3pRbo&Ey+ew?CQlU zz_DW$NA8XNV)z%x>FC)S1Dgvs+TnBjBY{7H*`je|r04UOtojWT;kG4o9UVNV{nDCI zN1?t+?uXzQ#67e!I+<@CO=s0GHymP>Ig6I93f&bA!TR#{eH_=U^dhmV%~@*&PNjZm zl|EJ1x5?B)+_R-1->c>QPgRaL=opW31I)imk3a}aN!r#}`B9?&%l;5A#z^%*MGdP( z2`M~(fWbWF6e5KLfVecjmC?>v_lM^&Gus#_phUhdlCEMDdK4JBzjvK6Mt=!8@`T*dEM zJFjASl~R@NU^!H$HUlAt+L?`|v}eBgK6{6m0W4~R~ZEj;v%>4qq~EM zXB}pj0cJta51K*m!15i)FzfXto{MaZt`#b1476$Iclc+YTOUgbX+Zgm% zb=Re=>XQT&to3@mUdN$riJYq2ie1yThVETZd^Qh@!N-gI?N#u;e1)hGlw!|`fcQ|S z^ez6>N=+7pPq>yI?J;)y`0)9uHrwDAT$=y@sJ!AVQMFWdApTPdAdo+@)8J0#-JM(E zlj_16mwQPA{8uXJ?Yte6Pj!3BbAQquLF-3`y;&PyVv-~^>_KwP6ENeo))8fSHRlI3@+k8Tlh`3c;L0EzUa> zDayR62ZK8)_VJC!{;UQ2cQzu29y%5HT=H9C@FBN8S~a6dt4#$$k!NYR_5Oj(&w#4* zK{7-F7R4nhlTBo{fDS|wqxf^H2B5eo1m5;*pIw60V%Vkxn2KOBMAshE?l65d@@)M#LjQ#!S#Nil z+6Ao@Mi%AFD~Tt6n&HnkES=7Fl<_lAbc~1rjJMXcOy)f%FN8v;u#5)x0h|1;arLkJ z{%bQWiYXj;kvR;_ktw~i8beY`rQhXm`q0Dpxe-p&e2TXaqJ&G&O-rF@8t@A(H3N{^ zeEUe6bxU(lW2Es)}!59CbA{XZ2#a`w~;O$hk0*uU^e@#Am2B^}zPzOx+Q zX|UKB;MFSm^|r>#)=FPe{6su{!gDlK^)uI?WFJ{3Q!;(asm8xAz6;OMs3v}x3#X&n zj!4xfkJ&apiYRBQX%z||>rX1H zmD06~TO{j7s{PvuT*29!dvJ>26*0g6czXtjq6q0t7?C#YN@dFM{BpuSHtKmOLVkWj z>QpBRL$QF`v(Q0ojlj2Wei<8x0CSJ&LQ7>2j0aFn)Ul3Z91ai@*3(fV-uRe=JZ zYFP&%O6Ty*GKH*4MMp%|z6t})fN-+Qog(NnEY|=g3SBWkmMs%^4zZP9Sj_T94Pwu% zUVDFipbrlk%HyQGFLMmxo$nm@^VyWg>khFdMVe30i|V5sA6a5=*e1lVfWW8$cMj$V zg^-h;qm#(~*<{O)>&afZi?5EZ%OAq0!-7Ck1QjTKf01UTHZ-MILq!`LS>-x!I5GAO z0(fNBq-p^v@W~hVD7X-utwJz_@RHi@q$j*7!ncX(hB~tcysgBS$~Ci0&NGJppSoM};Jmm$c>vjE4gG$ynRfo1q9Q z9-BAC0z0yh0kR{qmes^8Yk=_^=|gW_UY#iUNVA{XFs0v@E0Oi+&q8P)TN-t8%n zWRd=Wi6!%Phg7*TD<+nFGIeDje!$1-UnQ_V+mD97aP5y&6h&pbtQDMbSgsW4m$W?DAJ6tYq>++_|Ni-Hgog0gqm&KKOhaFDCBUJFrnN60KG7NPg{#UErCW%Yy{8ovuk(3F zHEKU9F{G5Mp6#-G5cT{e3v(G@#MioHp)*BzB>2RQ$zsqW{9mykd6iA5n+l)bPCHwv zfQ95ky@QFGS9cUo*F5Bb+F0;Jy2M4Cvg+@q3tZusTXICOAb1@*TbSZlk?Nd_V|a6@ ze7#_HdK8lqq;IBa5ifY+SCx||!R03T7K=xjCR&5Rr-&m-xByV=5TG}b&>ub#d|D$b zG+Q7#&$Sd;{Mdb-qj2}zJAbIR8ad=pY#dSwOs^TE{FtK0nRDiON(6`(WEf) zr$3HUyA!1%PH8>{lq|g#tH%$B?&u)7ne$-sjUFL(_wE^HV1eKo%gwPbjP;P2p)&lD zxb7@ntV&|DE%cLB1D@b_P0Xw*PFGSXmn-afB3!CVBnsM<|G>Zv+R*LU3~-mMhA#@J z7;*!cxhZT^#rpN*MeSeyiWd*UCDSWzDGEu$kf{=DUYMtqp=QBnu|~?PfoA(q z|K1Xc`?PgZ;%7rL^X?}aa~kov0FTad=L~Fj2Ivu;)>>B_p)OikPHBjG;2!qwxDo_N z^*>d%YpPgP4F0{C{WSc8S+DSc%M||CXTuA%p0MjC;$T=`+<7i=VkD@iigtyRec0q* zUBNL4G_AS*$MW7^=K6HZJ5r_}+_3oWEL|CzkMV1i*Ap@*Z%6h)e#9R3LOAc%ML>>Q zEyY6Dg!SLk!VmkD`(K>``Eah!rJR8t6l~feeb_;im*=5z8de4(Wc_#0bRf}S!FQ#_ zoXyrKn_N7-Y_~L}97rq=qFi(b$X{Wv`NI6yO6EUlPtnEtPacK#;=*g%1{|3GzsEy$ z<~LSFC>i611m&uSEIj}{XO)Jh8pfvMx$Oh$*I`vsv4YgK5dpc3B<6+Hk5zq$ZUTGOl}t4U zJ$6IzR2nvX_RbFx8YSvOO8o)W?aKPteE$1SN#Uy?PUVGfc?*`A`ym1QkqO~*sgOG# z&~DC+e7)b*!tfseM7@z?1bhMCs6u?^pFCcP_}1~E+j)Ck+m~kcRFU;Mf)C^rq&G+B zgFXdkg|yWnHzTpM!bV&lqH{-i?F_wq}Fv6LZ6d|`j*@5XCo+P1v z?cfoF)DPze6a1tr8@{URUZGL_&P{^5{#}BasHT+#lc0(Oi1bvV%tQ13bS{O1b&tVh z43&*RK%?&TB^!~)G$UX&hjZo&k{f}a&+t6qdv-*Lz?qBRQ%8Kj?RWE65YvX^Ma&*6DsaP}jxpnkH_NOzT_INH zOwPBZs*X5i(R@T|1;l6*@f8e+TG2&5Yr)^Lg-^9MBSF@@;s`_HzkiAwEqmynWUP+2 zJV%b$rb&~hJjqYe2^^u-Us)TvxPqgAPqhc@Z5^U`H?gw<;lBgJyO1i31p?rZbvoi{ zkeU)gUK_tt<(*@%ue7@hiErmT2yMOBQNB`&vJ%hh`8b#ak=%r$yQ^HI&cTCCx7VEB zKF`<+T&bL(hC`&^DW z%^k~&DqjMVGmOBqt1u`$6gf2HJ=Q6dkQ{gX<9ZbMYtJkLS2DgoNGSRGZ#vsw1u?-X&opYT;c19%mHR_ublsF1y0{-=%r+d~XCiw@@FLdF)Yi9Ua zf+1~0bs{L#G9x2=-+xzcQLOAya&1!KfY^I7#KDOZjAf|#O5>}TlGWby8u5(bu$^XJ z({2WHf8%(T{PM19GKzRXFi2|Lx~3#wG0v!wY`=lP{bntNpboIe?J1tw4lKxze;*hA z-$-|x8aQfn!$D}Ivz8?rzbmgN?9Es06{S+|fzW{YQSZQcrInzk3a{N`pbt{K(8-G# zPw?^HC!p=hV8A&fd&`RIZMAS!Lt$HTI!^}=6}jS`c#l8J8Dv~d?Mz%Y)`O7O0u!{U zUXtUm1Yq5b@i2(&xm33~BgQ+#>Yynp;NYfL9BnGRioZb38WxuX%aqBC&*k@goDpE( zShq4MfD2ibu@7kM{ARE8VRCi|Q-w&PyK=@S{C!vs#7Gb~$;lxI%L>W3pn)y|MRoU8 z1{A1J90xAuObX#5cOb1ABnk#HpN?$l;3dEF171=rFGCQ8?xcc2*L2r^5bi!jKUMMC ziUZZ!AcfNUAVp4X;V|lc>mI$HZ0yAs|0% z5l~L>zI&;5&8)cMx<(aD$c|YYOX&B}Eco%I;*IC?876^@^dhzDKK7z7WoZM?W>YJz zN5#FhBc@J~qR7JUz9%!0K>g64%`c)4RY2+MLHX(8-@L+x`^raFADvHS3K)$)I#r*O zD17yr^USE%sb@wD;;vr!e&|?v9cKeA_X<1zj~hbLYfFM|%n;Z;q@X*;-&9cd9%(`` zmGV%&+&2i5_I=(Ldwa1AVQ9X958%GnC9jFegA7O|0ppFSnq6ZKpbl^$uv9|oc!L{G zq^4|yS7Ti{8C@Y4_-?cpav2{DhT(}&4`4C{iv0@HC@Gx0lBPQN)axspyyu-f{1o9B z7G6PdFeYNk#i^#*o$w=O%Iu0VJ_~Z{-rTdphz-nbCCS*A=%d1)l$uS2$+5E!8C?xn z5R=HQ`Y3TVH9f^O*9+j2E*5b{Yq5o0%Lk2GNgpeNdbL#j%l9FDQ?L9+FN+#Ul-o%| zan}z5;jbqGrXAPe&67W?gyCJCC9-Fv@TH{BrqQ zhlQQ|-MW?O*S>8BjlGDV*Za)BaR598v_MsY;*>iXN6Qd5CII#w)=RRx#*yw^C*HgW zR69Rvi!tCuhKPYwD1=@w9~uuJwF@?1_OIo)=8e!}X)fD1wrU>wuTk@}pHC-h1ctU) z7dWi*B;8cCqGb7uqjzcQyL_7?&Azp}Wg zOb0EOMiwgkKG#*T;V;?!gyh_?L;Ym1DU;E3GQ`^77lEFwMkAN%H~U}&)~0zRr~UI* z@MUXDF$kVs`{NwA0NVp0)d3Nuus6bY6w*Lxb0#7ZmSHr-{H}2)lJ`Op%f%3zR}zgyr{y4ver5?z z@?OC*AaBifum>x@pU{_YW>H;i(~0V+VF;@QjPWDW3F^28$%1kw^J4I;!%?)05VCLs zyn#+Q+Yr6PhE`Z8(%10c-UA=@8-sBP85NA80HtG&Qmdm{S1HLWkG zO`qNkMyl$#giFeUz4OsjZq>AcDmS4nS1=Q!?>!U4n!HuLCqJTo8wyG8_PaLv@4Va2T8pOl#;Cg=uC ztTzhVC(@L*)E!qFy{YNCpCen6t4_s^H1B$A4>)RM=R3yNn{QLobEXi)A({1p={^WZ zYHb-x#RhFKqhL(AicUC~%{YOq0zVY)Ug%sy0*R(X=8QRvAlhI+3D0NB{kbkKJmFe7 zaZTq(mE^SUu5#1;L&RW!)!0spsR@*i_CQ2#!}t3CqyjE$r|v4eHlq`Yj0PJ*qD&o< zE)QHmVK8wmZ+49fp`8v7qO05Ej5Iz0-7{(~qtt)3f~q7M@Vyi@TjC+BPJGnLqPhQw zqd@$47|*Y*)DY?mMWci%OR=w*69(M4v8pZ7o3vwzN-v26!$1N^iMBE4(_@nqjgyG#>zw85S4AU-#bYsq?k0YkO-{Zop@ z>d3Tfvlj8>h+l-T>YC)caA3IoJ()1ns)^Hn z=+Q7w&hDV(J#o+lYD!tigJ8a5m7>FXL$Ge*Paj+e1+Qbr$R<08W~qiK{mVyJ%|W4z zx-gL}>b;j|IRh{#BOtjb1|-S63NnOL6;|6nqET`Nxl9{fvs*=*gWoygbD{!2m*h^$ zAo%WiVkzBuLB8*FVX>Ge0yjF-tw`->?W;ObvbKoYGhD?$&Jj#s=q!ifz@zZi;l>Ah z`w|v9u?)A)+Zg(42vBPj8;Lhw8YB2VBxU{k497>PAB<`w-tfq*ols<7<19A#ZN4*r zfEAO#YmE#CZlZ|#s0m++$h13RXhwO=n>*%WmT&i*M6gx5NW$?#Y=BUj^k@IVUsy5W z76;ahV2TbPvrts><0B553C1A|(e=l`!hAG!j?a?o(HMcsrJ6rix>wK|ZCIxBqBuB7 z9#U3=+mFsOMq`rSM5tUD0@feLBqU z3EQ^)GhBP{m7xzC)2H_ZQSkCxGvi{9cDu{iH*Z1U%#I<1ksU9?OQ)=-swMGS%t77W zpPdH(Fjes&lnfmbV3~T!{Ohg9<{9W0APS;7c!6fq9_|eBAI}#JQHo_PH9ogh!nGS= z4(%)J_9fl4(aZHwFI^|FD9nb2eI_!fkN9G?-%M*6I~XHeR5-p3 zi{&%GBmHu|JTDuC{o&pF|#DkmQe}q668e+d4HO8!x8YMUH#bnenOE z9#_b9F_;{&vexP~Z&3=?Z?c?skm6)eqer7?Ab?X-gD~@u3g8O3e^a0|$mbSJen+Jt z%5(fP`nLIUnf(}?^|=b=?8l3Lib7|>WZDSgEG&wGd%`CooP$4WOJAh3Wjq5jm}o)( zi>t3E&^qNls0}f6#k6?KtN4%4V|b7C&HN6sJA|-hN`#~tN>S0-Q~O0YNTCcrR;=Q4 zVzDQs(QbrjoH(W7FnY<+#w0;}%Wa4jX@|LG6}>t-g2jScG{wxMrZ1X3@3H9wp_igJ zG7`iJ1koKu{5~=t-y*gG0e*Q_N{VYh8}wPfjgn+NDGigmBV1T-Mk>6kjDR^-CrH?pJQd#*dnFWG?(d&9D zrVII3qV;AKVuV<$pFvgtDWY22UkOt1;&&+vl2rUZu=H53efdO&YOP{>&K8!(^Cx1) zVunV}h<3891Bcv+4nD$^jmgZe!UaSug5zXJVKO{hf;v9D95wJgG-qT#O?l8q5&Fg< z3mGfMB+OVRaoD=81PgW9cIkpo`56N|IpJXN@0_`SJC-ih=U)_nOPg)2Fgxa%$XoLk zK^_=+ZaKYs9Y!~@P}Azd>SEEtseVR0&T8z?FVQ>}(eD=tf}c7GiXVjU-coml@ZHod zD6_B;ixcDFS;O<-r^%`eZ|gbzX6q@qJR6YAhe53i#&-HJy{K(tdWl~uTM(~<+JHPH zqg$<=_xYP%rW+9HAw)LDPicdgMdU@gp2tlcSa)zW&fsFobMpZ!UkbFK3+ZS2>BbI; z(c_&$>=j{*ItNDW^%lhnl?ccMgC>L9S4&Qi&;)NERXnhJ;x8VMyt%C+aKpe!;=pi! zV`TF%*|o*}*rg!8w)1zm>zUi8b1L}{@mFUg!8+bAY6 zz)+cEsFmL+j3BD{HR7JU3saY1X&{@J$yTHPl^+KZz=3-0(t)icH0&{GMkJLqet5@z z1va4DR6IkKrYaWab9jXpOu>ta6(s8q zw1|_&1JDt|Z}(nfIpn^AzpsS->$u4m)J1x&ZG*UdpOeRLJ=WPCc^xsy$!Cg`h|oh8 zAjqbHD0prRi|s=3{~*bCO<#w0DXx#rb0dh`hjtU_4WZ(!lZy3TPPI3!t3N{K*kdW*UnT@YQZ=SI=|`fzf@ap7rp zovi<)=l8#!1F>qf2GyX!`G-9NS%)W@+R(DM5qTz)jO)b`p4kNXJ#bEcGtvM|=}O=G zsv4{*QJy!VDTgUMpDT8nMJU+#X^5N5GNW*eiwtq~vlBgnF`sJZa2z}j>L-B;UKVPDE^JLa%DmzFqt1T3K;1HjtzQ<=Cjq-QGb z$6>|t2pl`K@B07%n0czbeu}pd$g_fIV_&zdE|9eu$;ZYKu7)86p^b-+YDUN(@wIkUlKWY{wqG{-*7(@~jXRyrF5%+$PD{w7?dQ|BNMW;^X&2Dso{ViFmO#3nv zT2Cc@)ce2`YOLl!48%lLNYEJdY21`8?jYu68CC~5GSnS9n5qdumWXN*>r!d^_UNbu^uaKQY}%yCUjp%vR>F?alX>Fmz1yKL4n3|G zr2IsG&xA32)%nCVK8DH^A>ce32%zVP|Dx2g*mmXvS26{Plfz~&MlG zSl4D1Jw8Z{3`0kxTdhl0!K#;(;@h|nokVNd`V5~j%?S=Mq^qQG<4rqeq84S!`+i?A zImpS=;wA*MRS<6|Ykf9?+YR`yZ-Qfi1$h59j{!wM{;8+F_**XH*;f&!8lAa|C4Qo- zOmh@NwVlV{GU+xc612;SBf0q3qdeSQ6Z3V?fkJ# zh!QPId1(b4qz0mY@)^^nCpz`*NyGL@RqQ;?EIjLllnVcOnl^dIjdCvqsOqWG+x|Kc zv`{5Ew+h1SJeaKHe%b9EgY}+LnIrSzt&etH!G*kom-4q&fGHO(6P#S@a=0T>@zy%m zObJ0F>_#Un_>OZh_t4)-yxVp@i>Ff~h9HxiNX4K6m2Q{*XezUg#`3$CzGF*i)* zWtIW_5{k%avQ-V+)WtqAIOxnnK6?m`n1wKPA3%h#LyY#~PsapC`nPE93*2^8kmvF* zUpiok>M2Uv zXy-=ZG5-N!)kw*=1Zzp$c%XeIg-gPF%*x=mhvD)aE=Kj*4X`&{S-sQG1X{aR8<+CV zDu|9}0EkFXqn@`2@09ypR75go;7<&X!nduFK#U8yfpRh;wG|?Vv1Nku;X!w=x$*KW zg$Iy#{o3Mt;58lSI;I!YJx4P5@QD4K)^N&RWB0H06Quq^8QJn;j#qc_;ct7fXC}i6 zi0an>s)-y_2IZ!>8C|*J@Ao)8}$7j*m@QWpno3*?% z(I^+bub4htFp!*aPu4z2OO;5Xb#ArRAQ$c3@YedDZhE=Q6kn?Oe$$6LYtXZsW+@vi z^*vB-o;xW_m~{(ZbC$(&vVxDtJvPR0AiwYBQ|E$8S46DlRF* zZT`XuQx16Bwdu#eN#2b4P4&En8`(u9;VreZj`p|M-2yY$^;TyxZb#rj4TI20wZ;6VJc2P9@Q^XGE{O24#umvdMS?lgQ4i~i6J&)MFUH z>kii$c)@Ot?d9LsM{S};VcuwA7|i@vD|j;NNBHHrD()KlOR7K!$Q!>o{2!{$GODVu zYu8ee(k0CX>6Y#;Y3bUO(y4STI;4?MI;Fe2TS~f1y1N9<;{DD$zH`R@$3F&}wVr3r z`@XI@o3C-2D+i@$VMh}s<>rEkpBsiW*H@97U||pqe9^1q>%ClvbXNg1zj6hZgX59?lFi8cxuB`O|OoIfY^Fr z57Vb`ZJVof%$eZ#*j7D-+spkZlR!fU;!o$q##UeX^#HYfCK!J%GPW!ciV_4b{yPz_ zhaC;*w5}L*=8n^~4H`%7hfzUn#*s6ahXtvw{dZqGzmc3Xxnb>~>hvkvb7U)xvV1ud z%mearR#{#+DVmRTd?0;iTTxPw&&retLweX-YVlmHwrgRiPNk-G)GE!7N zRd``HDitEM|0?O7jsgp+nss(vB~85*9*1mnp1Lf-h~_4;D)*Y3mqD?P7n_+YaBr88foG+&Parga zpmO5Os#J}i!Kt7j<4>D7kfTyV zymYz&8@tu1Dss|1-N^{{idBQ581(c|syLaW_fxB~ifOE@)?QA&}FO0?= z9^7uDQ|3QmP|^y&>fYVVQn@GiD;dyAxc3F!&+(An0hj48Spz2n+(g*>noh17eEOHn zCAWVq)lw|oHU~gKqHOs$49V6-gCUk$Fy^++9ZbPfArU`fizG%oeUM-n_#Ghus@#VM za0VKisSrc6FF0LCYj`!ZC#<^GL{ZHjJ~g-~awpcp+rE1MM`;_2`vavzH>#a>KkEjw zu=$zadD8~gePi$DQZgfaZUhbuC>cD$nCuYJ85DXA0G*)IyI1!|dD9*AaZ@OumB3

    r6aeMVpR}87{x$cL&7T2UlVv)~ubA2;`Cm+`+q;-lUmM$Wf(%_RiD7?OA_!tbs|?U)qC|x!)*Qu4)#|7 ztN1v3J=Nd8Ay{rx%pf%?WMlNciYq3c)K84T(^!i3+2-llS;7#ZAi zm3(N!oN-!AhOQSe;y#Rwd|3%(aKW4_?yS0GoYQ0#e;;C^5adlRhk=)Biz=zo`t`D zFjs9?F4s?poJ@@DvCc#0<*7tb)omWPG|^@(lVv8Dea068Q^u1U#aMFTJkK*O6jRn8 z12WNOy6Wm2MG>{q@L&*ovcIQdeDwy>@{W)M>Bw3iPY*V4H9TzX-g9H>XfdiASzlIU zqUk63@GC_Kz>CZ>`%X^Q-yDOaR`3oK_Cqurb#?YBQb`C6g*4T$y|{S!AW*C@Cl8Ta z8vfJz+}z-8o(tu5e?}3NGQQPC*tXrrn1=0wrw&U8#Gp(nMgkB47rbEEp9vhtP&F2f z1DosP-7}A4EFDK&qHt zW!r{_Cv&9oUJVWQ+5K9O^Cw7Z_3Oa9@lOh1Q5LR`offjz@g-}V=mt^SjMNqLg=k8l z@|ZPG4Kag8>-mAF<9=&gV6N97j+*j5g=*ILYv`&PSw0IjvA8Z|H7x8buE zXIoGKXY121w!FBPKNP}k_BERVk{%m==8qsB4Bf+!k|1329G-W!J`Y6S-Qj$6}McL@z()$D;_foS6g8iKH^4N($uqoNOz4L3I258cN1$BtE0vY zmj@)+cAh|E!;f^oM#vevy6^UGo9PwwpY>J&Ap_QER;mgC%om7`aNc9tRr#M)nK!Qy zfBi8RhY`9duFQ3BEocV1Q)D@MkZx|4*>}G1FHNuO-cdUs=7Sg;>Xpsb3Rvy0*BBvpk62InuUx3s`% zKV!vg8_&nrqG=^vKK>o2z?y=i{KNkcN%E0PWrEC1J*M1FEqA^AA3%=D`tA=nDN-2_ z8wPeoN0Yp10xc98gboCkB&vi{JrVrrR|^qQ`M8`)cnhEUe!u4nXM-FPjm6A8Mh4VvA=kaYOzI;e^(QgFCfH=5G$Yy2SVv0UnHfwm zVmp77oTs$!&yvm8W~xI)r!bD6%p3t_jEc3|Khz}L0NSnqTvT}B=DrVsIG0@uzgKI; z*Jn;gK0~6!5L44fPZgb?lQ>pA?(kmALM>cQ%xaM!<4LFtBg&#rDB#};k`Tjdx9xi_ zWz;uN`X}t_1AJ2hy;$BWJ>2Wwg6QEM+H7dk`Ghb_9@C1bs4w#U@}0(Q_AkI)G!PM` z*!bq&K_oBZ4Q5(8U71+xWF+ket5a3yN#6$LvBa6IKz!Bf%hhpLVt%&f0snUS(nn#h z`Yh6S%q+iII5(60{jw%8hy^OLI{n=9@c+fzAK%=BW>lZZ6a zkK^Saoz81RMZjg`$@vdQY6hT=u;TiJYH-20G5VpX&$RJQTqf;LI5`ayZE+(){bzjB zncO@#j{#}ww};t=QP=kHxR;J|8;2cD*CuXjy{n4F4i2|;f*()W%b*u%KBan`nXh!m zYhKrvd1CRDdmA2huc$RXCzsbuQ_f>vKtp05Kw2gyY={i}dc<6X4;C;QhAI)+9mZcp zlR-exmhgL)MrO0J1b!)%s9M7Sm^iyFFp8fisWCc+JMffJiyz;+u9@>Go=lvpj*_m* zJ{gC*Cnw4av2?IV#tO;3e(Z4CpTaH@&?h9#UzOi}`<6zZlL3AQ9b=`aOk}s8Ln+5| z{nAav-f^>o8tzvf0uqomO8)kby|YPcQ%LupNTdn+=kAY;u8-y5gYdB(LU;2*#UaE* zIz1@b=49#yUx{BEnCPl!LhD~~^6EKC|NDxIQE?*+7ziO!`Exje>}n8x-)n55yaiC> zQ?(U8eOQ_d;c1J+7y`OL>xdr#D;S_5(E|4!tF!-@_uGM@d$`#$9~Av3pLu12Pc501 zCC*gXR}mp#KXaP6N;)%rJcWfaej=Fez1Q;NNnGeiNtJUx9U4pSu!1@TGLULpJD6% z&z7p=x!kr{v+RFnYjet&<8)Kn%Zbqwo%3rS+i8Q*rP8VqbQz%FML%ALev6A>_5)f&s@*H^g zquw6|?SxwSY5rh$GcIDn;FH#`bV<`$D!~kkPWV}iN-s-#qngxqr=DXw)qGH$Q#+^UM>1zv|IgLTeb1u<_(G~CbUz-4>tRqwG zXCB8g3hYviqBFOr2a`-E>o)GOB%hKrTG@v}$4LwJ z98ovoTtw=Q%_}79yM1mzr-&Whj^P8_p#Um>DeHI=olo%{8Iq^5nXNoU#AbHZH;%(| zo5U?=Hr6t~*}eHK_9sS<%%8n*G#~@XdBcIZYR>BkS2J&(mnPGfpp76pXDQc zeD-r&sFw@I0>HRvA7E>W<8?^gAc;Og?ZX=rXRHRE2a~0EcYIj&*Qp@lW;Qot0bu~F0iErKF48Xr ztAI!X*pI!0NkD#jAQ%;9S#X?3?Y8eru%vZO2t(mph{lZ3I0{Gl!Cfi=l0e3@BV9v! zQ8R9c|E&1fg)E+g1s9$OMvILJRZNe|e?hD=bVG^-9-B1M^uf$7@3*Avy^-+si(8>Q zm$I8SYg?U5zT}mLSI3D(;9XR(I--M2{H4v0r0ovOwFbN*4t=si@BJH^Sca?|TG+eR z5mn}O6K<7~$mDGpXq~nkzGV##R6E`ykZ;CDo`fDe(lb;~Lnbh5MGBb?7NA&jVvUol zUPNF-Stk&!>9c?GdFQaeoaZW6IE7m3)xUrNuRT@xa)Y`>_=#D~E_@sexynuG!zD;p zlLAgwN{#M|oE(+K6In5v=nuKkd=6cxy{{7ozQkY8R1f%U8+IIk<{A8`&{C0<7F}kW z$}oq(z%K-{EVM5m)u1oWx9zP*iy>j^Q26p?rb~MepQW7yFqXM;JMkn)yiI&1SGX`= zCa~PLRqP30Xy>uRQS*GxBuE-5AS7)LAi93x%Ty72i#w@PGxl+~1tZXB`sa)vBt}Tamm(MU_rx)mg8Es}||zBVF-lp_C7E)}~A+sU*YpqpR?y!HeGnNtwU zrK!&0_`oe*P>O7AE?1Xo3%syLnb1|Qii~;3K}{!UdNJ~!yPs}7UEud%zR=c%7qh!N zhXjro>3xx2#PL7{&&@A!0D|dBq*9A+)@mY>@Kc(^w(rpk0ns$YE zWyr#PyUT*BZSW4=zeobg4}FbBUCZ|)a1K22->QDOmivC1Ft_k|CYrn03FolaW1gxE z7{A|RK6T;DJi1t1XXgpy=UZrhu@pWzwD2gO5Flz)z<^_WEnc%sKgVzglKu3`7TDzvkwQ6n;gPMn+lF0YVgbL6B(3uTq4tRWGCr`A86MC@yO0 zN6~nHZ>5d%QB}l}0hC1{)10?Pl0F>pi1#(YVFV;@S4s7D%4u3@$Ov?4GW)}m6ZI=# z+q%3nX_OSnP#(Z+a$@(2gT-EEWx>#?4#eS%CIpl{?g=K{kC}93*Aeh+P16dZe?F#F z^t=y?ru=#5!$9hyieFE&|V6CJo_SB(?P*-@BY`04kq4e_cb}J`56bK z74Ni(R7L7nCzt|}94KWY^=YNM!CXHm{SAWf+)BY8cpxmj=~X#G@E;A-g&fw(Q5o?A zw-69ex@LFzd~^m0a2`yuxci3=mK23RdShavMbw@s==384jxGu>wk|QXHw`O(zWQ#}y zJDZoZ-qOQ>6^EutLb&43T5Q_kIbJ`dk$<`IbSOS?J@>-{4P#$a+Shsbvy+dAWab~u zkObzGQ}MGM|A-65t|1#xbzsB0pUOPWF!eGYemNGh?dmt*(=%BbMg!6^j4V25NZiix zZwQy`)N_01VXl4G&UxfNZ{&P~_K3N@$mhW7!V5bYRQ{Eboo3C<1UlGa@(XGPTEJpu zy~#otZsZlTS`%FK!nrd0biMn=0U^kDIh}7+7}S_Zo*qs(j$_GbE!cv2-%R6wX2(@0 z0pelVU&;c9{`dhkH&9r;t~b+LCRm+#xQ9u~aYhu&ZjOG)^2gpiiq(H?M%&>58O8ip_z#Iwt;oEVfdbq>`6d#8D`O%w#A>mZi5t7rrM$k>a3*jl0Ri}comp1v(bF9Ouv!msuZx& zsqc4#M*-j5_hCLmt)k=0icim`@gSN%(_`Tvi!CVp&UV`^D2+0SjFifWmfh>&#cp& z2#Dgme{x?%%$<43Dtj2j>xW@=l7j1wQKz@oSfOsV=U!D;Ul}0>2y<%KpPcC{cNPWV)5=5 z2x{#$%@6h0OKCR@w|o^1wi_g{Gp?$W3qDz^qey!}1fTz~ixGs$LUz1X;bfmBB`!zN zCU+Kzz|?Q#2VAH9L2)~ba9=>L7!JqT+6#qWjU%(PJP4%ZFXB=!932eQI5K;8A`Yg( zbLn)wgH$r%3=`HEa~>V)i5;H8FFG)u`%?fRLXK(fb7|QwsXsMG2r-{!1wBXk5-3IBmOw(gupD9Oi6fFs4LFVZ-gx7U6h@{S_5u3_E{50Q(iY19@ zwxj;Jk4Fn3FVs|mVKAxVdkEcb`t9N8%4dCu7$-H(cV}K(V9gfccwZ6R*1;Y8ijaNX zyz~C8c`+Z?$^8|lhG-TBembl{(0Q*<5I9)6DPCk|WTc{?8YhPJ!oH&f<6(FiHt9y8 zeHYz!*mnvaA!Ng?DD~!PA#?@>bi_!i_vgd4qS>I;2YVTxo z*q4c-Gi!p{l}IoT>{Djo%j*q4swjvpGBc9z19x!a|JT$(Zs?4c&V(90k}$lyczX>* zqQZTU`}50k$xQ5U7aJe48I-g{-G;Wae2%o#_X<#t{nWVIb)e#Ojb{KKwRk)XYOKV- zdRK>bTy#;lGAz#a_WEYb+ znDbH}&&@7b!%0GeB3`E6X=S~@i?+IFX$F$!}I)n(_iH2cn z(f9wVn&5Bx?TF(f!Pzr1_qgegQ%A#pcM-EF43ZoRs^*U_dqq0P$igjiOhXi2me%{B z_s2cuBz?U-0CpQs>!$rMPQP26QGzn6tSLnCq%WboXyvxs0po8{DDklcsoNO6x zxRq-UHk}g|Asp|6Y~{6Iy+4k(&aa*Vd`+HJHD=WRuTD4<2WACW+TZWslauL^!{1`? z6hcQK_Y+OPqS(}}ZG|C&RGmrwMrFb?@;CfkDiufrPe4N&?qKV%qv9>B@f~4V5x>b9 zoT^}QQdJSn$N^0 z%KqhEsCZA&Z#1PN-AWUg3teq;Um=pw40u0jxMm;Lgs)`*2q<<9({t+Da;OA?H1(Sv z!k>gp&Y%^2@3NR(scUcT+uKI)znb#JzSY&Y7$HMf-FE4YZzls;fv_kD@tW^Jmgt;? zVY(_*YXteQ2B~xA%jjIr2Ctvr{*S)`5YUYJ?yyZ6IXO70vv1hGH`w}EdbpxepOfMR z@gVxaED=axM@yr;ra$1Ial#MAlA-+jJ0HvEY>^F3z$E1pjAWF=7=Yk6Sq3S-I?7&7 zk8q1_Y|c|VEZ=UVq^B6*YKL(T{qL+map+-(-Y=KS3D!IoAcku$e@Jyvr766E97Vv3 znOBj&M{<~N?%OX}C7?GQ^z4%ub0_;H0k8ydP-})}p+v$Z1*P9{-ugHikE_;q@vd{q zT9q~c$#XU=$0(is%SWurWD^=R&_gIVne={cTCJ-4p9u&ojBu$Tb0HfOorLyq-M+;!Qll>2udV54FZ$wkWR0uj7SR)Wk5 z4JyXPRB3S?`M0#hCJwSagcar>JZ0F?>2S&?Z!-$1*+n3~0np^rbHlQ+CpjKN9JZa` zp7&R-V~V?gd*xT-3iXYXRofffIl{N~Vz~Yc6QQxS26rzSxSX#pzN*fu^u-?Jl>MHR z>#|k#iOVT2^o{F_xD;u})>*N!$m>r5pE0g9J~Y`!P&Mv8xG4C;W4Rxb&Dql#pmgQ=Z< zangkK@*F=9OBev6KPrAdBN!hWvg0C?D6OJy^GR!mUa)d!LW#Uq5hZcwYDWlE}eE_r)fd#C+ozqR)zX|(5z zuE0mn2GF7kgE88S^^jzDx5nKMzsvL@SQ!Agj7vky;{HF0f~wbi3CrJah=>lE!Oq~z zwD~0IF_cJeQ+P%#-N%*kMe9HZ0>vv1{v8ud0?l{NwV*P!CngQC-#PbFwa>Kcu(cH*eKsPh4E|r4WpjJ%6Qs={7VdP$gHH92DrGYSucRD!G}IdZF;cOyVXB~^ab168p7BC1 zs1ZGOgcI2f@SDznCH8s6oPqA;eV3jL@k=0wL#T%FB)$%RAW?w!X|^;gKV^phPS75& zk^cQ?vrbDmke^%~r=V#+%%8+6)c`pHsM*3=>F#*Nv?VzG{99IjxYLl4c_ElwVKp#5 zh?C%N)jNbKIZd5l&Yk1B3L`1!sX(R)G0Mk6@N82Y^naUGvV48A*K2T$R`G=ss&oah}Zke#b^`7x+Byan7iqQS%C z!ij}FY9g8=sq!2h(zxJm)XjTd*wfA>~v`u zk~^@2h_7lTK`{-YlWrv;8_(gD$ev3Q0xLe?2R*>gdXcf<9yNnHVvj){N!=E=Uu&jk z$t-272VH|WLr90x@GY&W8!OUd?IXhH`=?;%rIK}d%Q&IWVV>fbnRGf%+t{&xp!;LR%RO3W}x z4J>?ez+5+TwYE#SAN_)4a9(fm{q7GHl3{Cn^PreCU<62t&gg)zcq7`ED~}TFOn&lC zI?`Vf)QXe`QRI@3GwU6p)xITEuM_PAoT6WoBBP1Gt$k%%UM1aoAG454juO#qQ~vxD zp(wJ;%FEz>Z=8WsQUjNl{uoniMynn#vvdC2`;C0m59@{mO6e-nMxd%ztp4LtbQB-v zcPeRMBRJwc8z(Q^4lQ{kh{<0ss`==k{u`!&=8;oXgu@II>^#7S$SC)4S?0SWEX#a4 zG-hYFA!H&Wj=iVLMd&$^wsiHT1DV52a(gPeze7`Rh<^`SN_KrWDqy0@PDi4ObugEV z{~?NbH79v0w_A5>R+-djc?h#1c~SA{!Z;JCT)W8HANZd2POY4kQBqV2`JA-@y(w5% z+qA%5qmgh{MdS709z6L1{*QLD&sDqUhSn?u-yc8VR#~xQw>{oMbqA+k-ho1tIJh(um`YyiXw1OLpBHTJ8@Cd^AKk!I!UX`B|ujC zKr|lrL^AZW@_Y%sM$csb>N#*Tn)jV4=rEaBe9SPm7CS&;(2UQ9z;5|)p;)7!vdR`G zio(Cjl{(IRei^9+Bzu>EOztx#a`2e`O_{-Gd7WP0kmqHp!9Vb)r917qIygi+s&^0B z$93AftZ5c*CEte9iKNacw&ELLt(zQFyQK0_DUcuLHDqc#P#x@rc1kYitB5ZCk##;B zk4ac2BYOiE>n5X3-C(PC&1O-M4!y{;w(?CIx^p(i#&Y%Ktt~9fY~!?ZMtH%?F5eh2w~j)6f(O)gofAf`&Q}u(;j6Dsd4q+YR>W zYMxIU2ur|uuy5A4EaO%>yIt-nNfAa`8I~Ly_>)&wL z(HLmeZrdk}@g#*eY00;VH*gc;)p;y69ZM~x+z|b?(`yg>46fYA*GvD{cdk&j&$8|% zdDtjhcpHE~jOIuf6|6y9k}nirBb_UxdPS9I9Q5=d0NR$6nX$5zs17^4YQ7WA7FgGP zgM%Tqqzn~@LKS=NjrKpjw*D%3Y398%g`X7Y`$xQI^d2AN_tGt~?Cx9l!1}f&FQ^F( z&&I~V*m^Uo<5yE0>esc7bC|$VXAlJK=!X^MC`)j}eyLXqIX4}Xy#3>@QqO5y-mG7r zL6P|l7{;evXtutX0AuCj=E{Cugb~~jV1(Qd@xbZX1pT{f-L3~ek@4^YoZ^WgC8pKW z8b2gFBWv%mc>Rk281Hy=g$J>JbP_mg)wL4ex$*ZKNZgW#I!|&ietgBh^}ZmpF6R9` zssrK?D`~^zwq&IUAD*K<~hxXD=sTg7#ndt3NJ4FBT) zyU*_Wc5eOK!U&Z@q$%8C^?c>!&y&&SjjZ!+Iu1K2KOG5ySr-jHXkH?FdfG3bE5y`t z_;tLtRg7Ik|HGDu-*SBj;-_!jV|BkT{71mrK7|s2AE(urwtE;LnwH{*3#)$bgRGcW z3Yxk^1Fij4rFq>3VFior*wY#R;kK|%x@QYy3<&2N>$Fcz;D7f8qn=WpGnh6F>o9Jh zc>=V*oMxHy?iex;eHd+nJqifU2FDRo3L@y+Q%s;YC1AYXeM-`CBqYN9>a{~gl$gZ0 zTSr!b@ILNb4q#IGG$Ye#8lUP&|6}SR>yu%cVU2CRqdNu7ycB^U?SdmQ%c9|0FPw1N zQeW=s=O91)H*-QO;H2<`M(#;H>c$!#_utdWt^!yDcqNw=Xm=ZH@w`WGfgRGtb`L+N z>4jRJh95*E-*JMWmD~kt41>Y4DQI4~Jv?%lwehzE_P1ixlOKtOmrGm1@fE!;pMNnx z5Dcw}gET=vK9b@P9bG{7dJe}y(MgsfG2)p=<1%x{%;w;`N8FdC=Oi(0I5RkrprAU1 zVya*v-(c}QG}=+(#(@p{fO#`TQiA00RpP{rhh%pn6VI)o{!^vBo389p_}VVr5ZVio z9w4EZtiQH6qsyvFupN4hQ>J?bFI@WL3M#o^>J7T8)+B!S1)}v0%|xy}{;|O-uj9#_ z{uDfK+6(sID>PPSeBHd^QGVlrlZ}q40d_*=+ZLVedX*z~znirVFy|_)oV9E#me87h z+?+Dt5pznh=abzWmyXe@){OWrHe>}GfT`zf%0wv+RtK^2>8gD5ylxE<^H# z%6e)p@%#|ityzYHANeZZ8(Ukaz$e64S1l`YV6W*K0@{C!Zg?viK9T;CiKH5~Vva+b zD1i7|UGcLC^5S^pp&w!k(*w&_?$AyfgW5h{g*zRi= z`2Ryx{{}9mxnUn1BcBWBqhVq+PDGGE_%7V!HfVv9tOAPOtXg)q3Xdl_GXH^N5?FSH zx)xOIVdYetD(X>`K~o|xk}x`#f=3v)9&{UEI7HeZ`&&RZ>x+r#Ozy6HO-s>RPv}O( z`UXTPt*!h+*cZX5BSuu2KzUy3!y_b4g)3DHaE~nREL%F0oMAk=lBMt;El&xblrjO& z`6Xlm;!`xB8jP*jr*dvsD009nmm5CEA920ziZyFxrG;4AL#F7zvx0X^-V&s5zr0cc zLen6xTR>Ul#+1{jezFHFi0VS(`J6haWAk(8g}h-UgB?YhIAz)i z0Us05Wc=n|h3kbipK~|@6W{dpYxxn0`6DE$(IC$qeP0XkgnO_jmXC%`)?rXbq;nDG z0$JGk5z)ge#3Lo@L(G@kgMre&))fg?wOFpc$fV@>S{8-4Wy=Z`AOty}dA6Ma9jUlx zW91EX}4mSp%pLk^O+Jf@@AV?!RiJPkpgz8$E&Bo7Fr+hf0J8n zuitekJ3c0xcO1_`H6NpzXWGTR@lUwMr_IF75BP96xxC%=rt6SfZqiE!Tc84R%{{fCYWtG{{EPF_q%De+)~z2Fr^G82?o}K0Vuk{}y%JKfkULow7Ko zBY&nNUmardbP{91G~p-$YJD3p`W$Id72o9%iS@7eRiGN;JPajxJa2>;PgNo{pE?uv zXF${(hi+BtDb_MCB->j_8~4L|;u)&e9$M^VQ*PRU1F&fKc$y=*EE-u7-tOytRL(Zi zKqjAKqyM(x#vQfw>7(XZhR1N)14wgXB@MPTv)p!=smhXssHvLIBI&@X+nL27@XZ?$ z+%3Pw`*{_!hO>Dx>gZlVlTSoS2F~J`c^R6>lrpeEi1G3A55I#y!bG+#AL>2_a*s^Kquv7v<=fM27g!1{Lhf4&Pv8_ z%g7wnDN8(})I_#7s427l80+#B*$<{iUO)uu+lWrT|EQ->^q39u!SO-}zPZ4NMgV9X z`6V6Iw{ov4FJEEp8P9^tK)1(AKu8+LtW?fJ=ZrM@+LmUQU0nDLGiQT0Syiq8Tf6%k zJHs16{Me`rjnO`YVRFgLA-d3ql{jd+`7EaPq9&4|&4vVwdm!Y?ySb0K6B8(a&*Rb! z7w|o{zhC2#->l^c{wr4k8{S`JR3=88hvC`KD zYu&d)%7Td7@e22n(z9*e10vo4HaPSNiuv$19m!dp|8_d~n=c#KD@QWerdH)qp)$lp z7CwXdBVe0Z1XfE@ux?%b+fr!bLl&!%*!XO}T49yeuGcg$6ucvUvOw$aPpCB60E@vG zW&~?5fW}pW*lwzcBsVyd!6xEt$CEPS=DvB!#8ZbzI2v6ey2@Q+HK0kwh6`IqWxegq z9wGLep9Cbivf&+kf1I6|ReelQn3rJ)a(@4;sGN2#(L;u(KtM&-GM)YfswEbPoBsBn zkhuQ4kY!(Ae{k-3={<7$Y^u;GcBf0@W#>%I-FO*F_Y;VO>g5dw4H25U&s}cC=O# zChHQxt$?`zo}GYizcq}sPB|bOHhy+ab(FzFj5f||lhq%XK&0#3+&jTe%%Bf((J~;1 zeOQm@__eKzO=y3Je&oUXQOwBlVP1m;`;;D}0=df0A-U3l2Ou?+Yu-0jazP;bO%^p&#?FZ7 zR#fy2Gt1cpKjwA1=U~wQ52Z;bxeNu|*$EBH$ zD?ISJ+msEGxnyr^`&Lk`Mk_^NO||G{sl7vZ^p-DM>BG&q6#Q!OBsf>PQiNYp++2ahW->vdC~D6`axWV4He2^WQ7+aENj(LhnC z_V?WrjiT0#y#m3EbDhga{Fl&U|GfeUQ0+j?0!;`2TkWS#j@cH~zeai#dkoF%`c|7e z+gJB?798}OX^3T5NrH%H(XkT`#32z1!2-x^8R(CWQfOuRX%a`${x{J{x-QG_ntl7m zkShEQ7NCrZJz24eAgQ1d^Q?1snwO>toj)%LsTmf3*nS1#QOx)eNQD&VESprDCi*1~<-jv6hHmKB}-Zr4HWrH|%B_ z<>Dht?&Z*{^quT<%1vq$ky)IM;<4Tu|lE{4IerCCeiA38M{f$}oki>j+M zQxom1oyOk&vO?$A$45hz59vMt0+q6)s*6btGcZ{3y_FI#(W!||9%w{U@=PE%o{t>* z6&qrwK9{kb0o=2fM?DgW&%>He%4^TyUi`M=-%cCzDOr3}J>cG1lw{#m|v?QtfYEcsKQ9-Fm}RM9L6Pfhu<14)~lRg;ofSF%A`RS-5b|$ z6mCP^ST1IltciG7Rt+Fm#~O?uYJZs_=|M8*s*HTMZUmgUq?jzD=15OVBKmExp+}kQN#74#Ke}6$V@tZ)URR0vxb<2Xkw@Jn;Tna zJ4GQZz!kicktjVnHkomox|D=qdgJ z1JvW8VPD<#cZ@X}HQzxZC^Hr>>mJ=pAY$peHx}64^uN)-K$b_;OZwT-E|34W`862C zjf?8o3!4NiV=YQVB8gCG1VPV305X5{#nkvgj7>zRH(wG(ROlERQFQs8FGqkpYsoZ2 zkeYVUd~fP7l*H#fq?S_e+jRapVsLbaUd}N#uR(_6YtEF?cyIXu!$9zzg~su2T~C*n zewVI)qQ>nUY@YX6gCTa4rL7^2=l~29uc9?7Ccw(DUkZ+c$<7c%nA{I4aO1kk;01>1 zK|iBzM3HnR|0{*H`R}kGoH$>N%BEL*Dmnv}^|6#)%$@{btBI`j-$jVW>n2J;lK4cQ zilutGd-)_ZT8Zr6Knq;sgZoONx`tezD9Kf9sFogbK0OjyD~w^}>-%3GoYCpB;gl>u zfxv?CqQZDur?L3y00KY(T4yuA&aG3ZjRh&3FYA&niBXQL0(rv-dS+-^gIUp#HOpd{ zC8d{pN}!>2v20o%qmjW?PQywD+-#-$Pvo!>Vd zJkbWx`K1v0UHnI9=xzGUiwMmLVTr zS2=*J(5YRtx+nHvgjlYI4ASxH;H$>z@hU=Oy75R*^t?Fcj)crc)aF7X-mCJ^=E9nV zU17^bKR>;%R8BJ}3YcXIXlpVlw<37B(2{++y=vv(SxHrZY6SpF*vA^yYgs|@zt|DG zR5WOMDx~_uYnVNebgP|^pPgzxVc^VMkNPw(N z%X?Tye3(U~Y}!bugO|LfoHJ+tNa0Ig6=xYe)@ zR_(vmwI}=n;RNKUJf_@}8L}cW$EwKkoIZoI9GuHGFIQKwIz_X=&*6OE=j)|Qg4JNt zSrlNJC#nPlFn;2#t%kI=a3NuP@pAu)3U3zoH-0bXYIzF2km67M4Yr6$t>PCi2hi9i z3HY7~)6%$I;6p2&6iBsK?XY`;5??7m+3@Y-`!@eJ5CN%VQ0Ad6i&@OuG8*iB=C?F0 zFbf7lrLXS_1YeWX6~&-l6T#Z>VNjsn8K#_yC|!bQRyNfGVTBSFlBB%US3Y>NLor+0(Kb z)9bkn^@RQBQPoO)tfc%M)G5)4Y{3E((I;Xn%+bE3d)t>bC9RvtU(L|*omGldKw|ow z!)CzO=+6`| zET6QyjDJ=To$Iv^_(=Al5JM6a-W47)zjRdzt{&EEQ;hYl-+T?oe;E+c0o~YZCG&y5 zcvyVLwqEIVEc&=9?9N}0#Io3({dZXK=rE1nVQMS&aF{gyZ*;4I=?)|#W7mv%VV*Xu zmFTh>ip-w%Tc6G^W_`;%Ip>t=&#=$FYc1~3bY4+ncpaYu6XI*qVOc}Y*pr{ECuntQ zXd6tacHl36-le1oIE}t{->LbYnKGDNrs|gU@t%1}zaM1E`0Ab`x!!t(gLzFJ3i%yL z#M+(vS9vMl%hp6Fl%loM;B@maG^3v@`8kTvPa^aqe{Lpi#{EU1v#880{_a)z5sAqf zxvSjS*v(iweYZZ74<3A8`H$i9IuANbEpUNYQtoa4n&S!F-Tj!726g0`=7^6%#f|cT;1bYS_pi3&GI@^42R#0pTXJmn*Iq+U z{}WYE@1lGaw2ks_xuL395tvd-G9m{HwpRKHE;#U8yUpd5=;hN50 zY-b)V%7m&LhT>Pj3k+$7Iq}`Q!c#|*eai&s+>#jwVTDN;AiFPPFW4N4!deHO1T0JC z!2H@oq~9?PNKQCdge+tKx0Z-FQ|5xAP{UHsuFMxRQ@0feaJE!Lm(;>wU@Bq9A>S75)1| zEena4XetJ_S|t92U5s3=_7Zl)Dp6M$8_hSZv@m(Tg?I4ySYjDi)1gSZU)hTUP1f@U zOnPo(G^vSfEF6nE7KxqUMl75QfwS)C`DT<3e(SPF{n@7Gdh4Abv_4;3n>oVnWl~{% zk;DGS?zDA|rG6te@-L;$%?39jw9Cv#5w;~qtp-gr_A7s>`P^3)%alh4-4Cc7r1c-g zMx1$FAjR~tlgbPP>~YsO1h~J{lK@Z6!JzH*AkfKm|(m|Dov| zqvL$PuiqpS+jfJ-w%w$0+Sq7p>yFLFwrw`HoyJCk#?~|6=f8gM=GClO*ShX|&e`X) z&(5cItqFwekw+#Ryh!1)8BmoZ-EJMBeDp!4yuq5)qdJd}>!p8V==l6(l8MKjWR-;- z7xdD=JiOOm4W&6Xe+TbwbF16RV9I1WDv&ZB_Kj?23(nkfMXGrXS=ERxN6V5`e4OFL zhH|JM9c$vW=N)i`fe~Mv3)^0oHwSnuaRLyVMYYv~2Wo^rWi@aYnz@Wdcq>tCn=|+i z?1fO!6?pj!ZRrON{}s9X>ej2*9uwbk9(N+X)0}3oaZgVfjvgodv(K2_QLeJ0EHg=7 zX$Un?fP4|&kul9Gv<7^qM`v^Y?I`NsWZvBAqKanH1 zSO;EpIja4gulDQ|=hn14h3hLiQ!;HZ81kPo!NfXh8cdoHQoSDwIIJU-s!uNiHg+S5 ziQ65X@*e(7GkwRTaQ#Ok!qR!SC~#|PO@uwLye%Pub}M?TgZRy}D_yLB1kuWf%oOL; zqwcQtOI2rw-gxDf0|8-oNdxc~6R%f$1tY*E>eIad<-epn_2l4x-Zli1Ujdd5xG!4l zT{W>{X`20&hdJHC=vI-eE$ zu{9SoLPKk%eFH!q@#+5Nvt(Nv&dqLdLo_`v?Q>K2u88t6<@Y?L@%Q&>UGgMx=H*K& z`AED#=@7mCg4v8roY(bQjN5k3OIyBSsgjwx+?K_QK(+}Hk*M-lw#nrZyAkNfoBBx%!5On2`g8#QN+=rN%of;(aa**<6qO?GMzowLQMJ2EILhI)1TXEp9acGX6_8F&eEqB*U+x zyIEl?M{{-;e2EtRlaS_m1WRg)v9cRvD>Y{`XoV-LX!6#ve>bcb-Lt|ij-EYXGVov^ zDe{U#DxrAaz935?V{?_*q`_fIj1#p1gYYVaqpo$BB5mE*g86~+j5Wxx8@rFS`|_3W za;#J*6KzAnh=m6*StqDS=5v^0IvNVc`^9kQVW|NT0*mh;YfYK+aQg_enNyFiT;=XH z!KJ5IUo!Z%A$1O$AXFJOh;Jpm6Ca?~`sYK$E_rw_yiYB&$rcM|NrH4D&UZdEd(uwc zkjL(gHWO>{Q`Q7@iS(F#9Lw&pX!Lh5Sxjr`Q}#7d)lCXG4+VUYQW2Dgcrrv84+6uA`)lDoKwo@F>s!-`?gH$Np9 zbwT))T?+v1&*j^e?DKc1)DsvAi?k-4#m#`7*v*i}mK>UF3N)FG1 zI*if=XvdizZ;hI-UGbW;P?0z8-ElS&8179YFkc{<%)*nTf4bI8?Kxc4uUY#2HX$yQ zW!$e5Co{xxw%T!&0q;eVC7G1*;4RE^h$3l_{(qZaiPVdUGYRjL6`{# z7a#=i!;%U; zn(*wb%&vSG9LlK#LKxco5h6cpyDM~IJfT-?*7QU|gdoVrKE03e{>sAO!!QnLc!CKL zuGT*Gek3DfcMZ@P0tYo$?_jm*8W|^xg%YbIXA&^3({a+!8d|0Fw$4|1lcASq0suOy zyHxL-Y$|7_b6FZY>Dq-Sym#H&!+RhV{%@*539X*=* z-blZKF0_~kd2^2&43hXPxHiu}-%^u*BU-(yfF`=&Rm==iPWre1nftl+d833>v=N!O zP^r7BJ5lY&PyCr3lF1&2&~#^eOash*aMiqnY)IF80#mPIDAt%k&Iwau$I#3aj|(rk zvKc)u$3rX@%B~Zw9ehV1-4& z);Wkxc_a1SkoeL0P=t#QXPbh*jqJ6)rTu6dnS#(6P6l=(Vjuv803tzk4A7n1nBeoV z^88XP*+_h=5!${NaxY>wdj@LT9H+9CD)eKMno*3YKC0f@p?k^8p1T;LXSIAh9BV2| znkZ+w;(voxF?6)}C_TZ&(=k(G;qcU5{WWx_vC8v2pFxC-uXw4yH~cuy5;)rh?6)p+WD}lUme}d#bBX@ z8o^rIx>IA@1b)B-A0Fs^`;zag)j7NL?y-TxZtm*yWK8G}F~7=yc>0uFkG=)l!3=6r zC{)V*yQrR}Ngn8>OPL^Rt-ujZAm4Q2v&`q+={(z7iQW=)IMdH@07bqkg2215jygrC zGpX~nu98Ht%VIP?wpvNl=Qm33OR+aN@roS~Ta_5z$W;t{7=kdAy`<^X(!i~+AWd82eA=nUMEfv3uVWM*{e}2K<_Hk zjnEOtufH2@C9^lPPL*F_0m1A@Nxp>GF0I;wiB z<~}LFsv$SQt##r!zwt?d^^P~9JtJAROJ(`|_Gh58yKyknP*l{tV*}6-T#x8((fpn`x4=hwp#U<=74j)>IV9ns8uAwC?d*n2sgahZM8%=Q#xMt#393n^+V&@xq~$zCtF$Nkb|BHF8OTv(p+sq5Kjv_H zPtN0Uhi7ezinm~e9Z9GJf;r!}(stWU%a3JYD?N<`rrPS}XDlyFx~1EFvyYL47~hvB zZdiohHSV2$!10wRx==jfLLLsNEldd^BhQ=lVq}1fJ-Lj4Cj_vY=sl#!J6&<=vk9+y@ZoVA_$rQQnly%nE}}6(W82Ki@&|7ttr_gv9QI$ zTOk5;F0mLYx-1LgvEm~ZsN}~%Yh$ELPo%c+X;^>i7t|Yq( zs;O`b;k7`oKuC3}qKC?HqYUq1eYQK7XikIAskuoR;yyUDIFq&1gr%7W0P8$g!+M& zk*kV7=oYZxUJ*g}b4>#plhaAv;1?qsBt{!nQYh%NvGN{4r^+>SAC^BE{c~uN@ZNYj zmC|_P%qXYM5Ad}B-X;8|rq^6y{7!jmD0!l^6UI}&uV7^KWb6VuVIc)(`Pnus8h8!| zNkZ9!Z;fb8!#OZ5Dl2mHQxk^A6C?l1ojTB)ZJ||!Jfq|9?eZ$l_yUZgqk^l8F;qIT z#-R`Gf+x%lOyi%pASDcRv!ZAAiJ-osem^h_pJAzJYZ+SsRH9?-NJZCPxJ7Vqwus51 zSLG{&CD&+L`WvsIKtxVdVKb_~nLlePaoo-`i*LiX1aQ3^e|HtUyXIkl6Zp%dl=;c! zel~a8H@(hDwC0;?aa3T{eogjnzIQ4mnc&2-Fl`Dj)gGT(=Ll(5LlAn}vcFxk)Faw9 z)o-Cp(){NI2ua+|Xs2D!{vP&Y?aIKFH3rEF3VP(FlbYb?@N!-V`qjJ zjMcIU1}f#vE-D_3;X_Nq3gmY!v|Z9HzEahJqJF~~?*2u?Kn5Ak(q-9cw&x*M`-OAg zbt-w%Y04%2G&WS4vnWy#(>Aq`j(Vm(PKz4{u?aO=pwKZhg@>?YkT_7)sKf=(>x6c| zhP&m2Y@ZWL-AmYxmwi%ezc!Nico$@z|A6YOWlz9Iwl80_2ZjEtym~{FoVOzs!f6gG z-AHVb8thA4cL5byoH)?7pSY@Jx{@4!tQEkL_?b zGJ~aPdlp1K&4S<2SV+v518Z%B-Y?uAuoSPG&Hh~~``+Oa2rcs{DS7d4IfT$&HYDGy zg!am3r)wlAc1-Q0tV-&K4WWOBM2}IxgW&vu>JNz0&vUsVxrCGyH2nb46OpCdPZImXegBh} z!W&=BZER+Oxmgi)FuNWZ#rK(&o?lnhC0R6bvX^0E#YpldfY{vK z&=Q&=+_yUSOwIz-h$p1`aG&9bQJg@u&)$zAN#?{Z65JTY16Ul2nNu64oXAaKTGy0) z?^+0Di;zWm#I{K=@#8oSxNaWO+HS%*3@jDy3v-e(PrHIhz%3UN@Tx$Il-1eEy)l~f z+h^b183iBAsB-H6IBoq>%5%!LK@MBgtY$>R`v<*^2vkBmC!ce*YNZfg^@2h4$N9vmH*Taf-tph8{TcvKwFHIipn z;uZOMD|rG-Qi}kTexWac=tCSEAxJNs~gL=8g)2YyFv3sW4+!6 z?z9Bjr^*~<=zNXcLs0WTy%_)%2zR?WpR}rf@_#H(%F#QRO0 zBmXB#Q<+g|eEqRIlY#-S16w-Cb=&hkGY9X-hzmbmCo*&FSbszR4J&VDmL{y6!{>?) z#)7Dp$Vx;Ak5qykTx7|GrUDqBx#-vs29fYurx2v)rnwuWRGh85I7y%j5ps8F869rp z6<13-3bt^r`+L&Z_QGFsLl+ZeTb@IZl1Rs~ux|h?hK#NP$G5CrsPe)0dqMB#$ST7Z zT}6Yn4MmqCe$r4%vbdBiQF5i_@8YVey(uDuXq`Q59zS8NDgt<^<2T;k7`dJO?8*Ax z-Ojg}zZli$=6FEqmzn|V0w5NvhOGFl=HQ3i^M(!sW^m*REkV1(Uw*PkkE7}7I(ZV@ z$~K_q@-#9|rm%DU>bxL|ML(iB);6Tdh&?m9C~joY{N=qkZyB^=5k#3YF&EIvTY z&G2S&^9X&!fIE{AX}_Uk3IzFk2gcNxglz^Xgd(l+Lp}Lq4k4t#KHAyBEH%LzyXT@e z{ousmlp>29{RPa_gJ-SUzalUaaM)9+xTI{vD_0RHj!L#(i0I9GdSIg7{c3c zwIhr@*K-yn#V$q}h7LxP$bNN|38MW^duVgT+N=uOBSc)b9o=EtMB%2r$f(d|z|y^0Ls(Hio0wBmo_rH*v6aQn}d7BF^+gRa;%BNPjJF>>hyuy%%)mN#4Bkiy zPyAO2o1A)9d(f^`%J^JR71kwQo=cYs|0}d@dHh2vd~_GC-x+#%CEc5vKKMe!l*YgU zKw@Yv{}d54A^2>)^Ivh79k1)5M%OY^PbXzCzQe{L&VAs`Q{K|Mr~)mm`ei@9jO^M< z=Lw<_Qz0;FgI;x5Jc$D#=Fm|lk>Hp*XZXdPk3ghQ6(_w1zL||FG(@OybVcpGWeR!F z+~)%(Zm?@Fqq@hT5K-P-;WdiWR|^0h1uEeRVt|mPxEX-jwfWq~>13md)huXfD*!wKY~*t(Atz%nqx-n5Ekv}zcnG`IV*@3&HBUE(GC0J`8Um#`3DvZ zCS+*8mgUiebbq6!z)BzGEEhO`&G~>T*J&+ciTX3}3KP3a@-dHVp3XsxWim;W6EMKM zC4CZFljqSF{|=2w$@;YX(W3qH8YOpmPg(M2pg`Gk$AuQWv|$&2K17LAv56+L_f!rX z&P3cVb<^I@=(L3EuQU4>sUb_V>tN@r5=%bgB21t!@~@^98}k6q0S3Sx232G%Oi(im z8@=pPL#`ZD-|W+#>V#2s5Zw`;*(g^}Kb+uQ{76zR^JYmKB!|!jX?bB53u*dU!IS;i z06HA+TYNR!+Gn`m+t5Lo_h)`JNJuDl`W~|ly*Y}U!IAOSLCwqh9P}Z|F`__OL_JYY!@^8ZF4Re(N z8;p_>OF?W>17O7=G~=y?gKosnS!%V6QO9CkqOj$=U&`DVFlC#^3FD!9oUp-#)LTKTu-ykzvws@+BfemjD#4? z*{WJL;O##t;&g(R)hfQ2yWmf$zrsI>pfL!V20XnSt(cE-rv2VU_n*QO>m;ZO8k{(d zU$2!-qe!boN*U0Og+c3PG^<@qVmF~}p*EJDcCZX>Rd2BEsTQPgVbuOTdE$Nn@O&qT zd0{6J?lophcCi})_rY%L71wa)!`YDPs=Td0ux{DGk`6TGK{a)R6T+L$1F9x@h%aKs1Dm-}QORvpZgT10Hwe4#1 zLKoj%D+YnTCG`?eX7DuXMMn#->T6r{6n z3{PST&;Uy)HY64c%h?=v?o{^BGUHDW-)-j+nrCn1jJyC8hFKfcFA~Qg<4zzeAR#_U z2R&hMI^OG>P3_quvS^8LKpdi8K?F9eeKlJPF2C(=Cm#8t;4Ozy0!a!2_~Hv$DaDsfR&p?B zRWDo|KP!KExJ~sRw4&y`-eSo3TVo2X6|-QRlA#4k`K|6c$W}++bO1jKM?n7;zIyYP zC;Q7QoI(rYce4;f5p`=AVcjLY#p)&wauw_Vx8coDdeuWihkpH$B^sxC-}6Hn2jJf+ zE&F0mpUl&wc8>9ZR;OA!n$?=Cf&6&$@0e3WWVS3wwrHX|#TtHV)uUgsvsw0V0UJ_ieCxxnCcr;mptpTXmriOR>3+Al&-n%MVJlOFQrtf4DeWmU}s! zr>k=xTeZdDr~A`$p^q0oelVh<;J?|G)r!7c{A0I@b3c47neuap&4-*QuX#sx1zd>#jnYv$#6P1$T$A7d`P{qO%`3lp!#u&#zeyE#|CpE&gYbDF-Ue2R?lN-vnq!QzN$55Fq_4Mn#|{~FhHx7Y znx6nA8;gCMTP`n}wZw{G2@3x~i~ht~^i*QOv}JjC;&3coA{lB4^su%%X?E|Bm)&2U zr~44=W=Dn@0>=V=#HNKg*l?OYNFlB^2l<_|U7Oy`zB)$bFz$HDdDb5v5SFUI?JL z0aS=1`PpUN$vSH+DeLN~Ko)%LBlQY3-TYL==yDlimpTq?BZOk)zI}Dw`tYmfaZP_F z!=4grKJn+XA*!c1|T(s<#>+DSWJ1uXT`1 zMmX!ej^XO40}!CeJ1~stVeh|b;~w~l$wjGh-gCUI;LYxUNvXcZ!c~ZgHF428f)hlW z6{Xa?6Ftj+**DVJPt*jZ?Hj>_(_)qxnj$MSJai9<<{zyp%~sj4ZIXP021tHtW|I)CnW3Y2!6B>*CaBTOoKUa$r$OPHi(2YXitS(EOXNnDAjz@B6`LjsF>H6&#<#3Od7U)^9+#~IEX2tVD=%cbf)?-Eu+3e0J~l$P$voG_x&ITRj~{ow zrgHmsticg)36ANnEnaOH*Cti(onv8DznzB8yx#@ZF5_OecTKET*>*M-LqB|Mf{)b4 zT7Het+MJE|YQMf1_}%3NSbd_>?>iAHR`uv8U>2q@Is-&R(12UulMDwU$eY+-pP=tb z(}jaczWmzdyU!0{$J5OL8IMLjYZ~%%1BnbcYYuBB{*y{Z8511WlHu?M46|LZpEJHN zJS6gsa`%1zl8}Ynk>Yj&L3c3BE?H>h=km$-v-=6eIP94_tzuSkaeK|{FBy#;gbEv>jjkOVTY>WV`RxhofX#+{m zqENb*lRfgG4OH;UZwoapC`_a$1)WEzJPo~6;Qd)Ze`$W%MSJ}b_uu9_n@ZYUD#Lb? z8914`)F4QkJc;rLroXCDG3)6QozCyS@c$r%DQE+=^Zve{UterHckrYs8kuY^FLzY< zVuXVL>Jn)BbZ$fIOEig6F;{H#2T1UyQ*sFd4L_Xe#6`-hX+{e0Pn^s$`&|AVFModf zgcw^W@H=5cwlp1f=p|+yApVupew1j%d{gj`En%40q}!U$)T4;Bpf<Mn2*9FLm5B#1L`JWX7ytxG@gC9#EcX7f#>xpfKBLr5BkE; zn2h?;v2ZWM1y;zg`6sO{DY7z&V2`2ohLyT{Ecv892`jlvoXM) zH`&5X-P<@UVjZKos1)=BVY<1_JTe7cPYPt~bGN#D z;ELHO6jad+i|C8^DiEx+0$GF#18v)yewQ%R+}>0UQiq1eJ9$R0zP7@25%lfPpWvCm z;_cji0^jdm1laU5x-e${9%1rJ+ouQj`b(ep=T_j?-NU`NIQ~9>fv@6H*Xpx|NXznL zJ1gSiQm)@}K`WhwjTRHD?8ASZ+kSrOXI-H~RyVWeF*Eo`kiwG(csLsrp+tHE8_L`P$U^!Jw#;fqU%Y(r&) z{E-4;r6b%V`Hc;1eOvcq2j?3)DbA=j8%F(_vcc9foulgf2AP6spK43U` z3Ai_sA&W!#^kYXb94n$SZ||>7j+CmefbajskAa=`1q51G-~0#a)AKz$bzJR>&_xFx zny%)Qlg6nERk|xHW1d76)Rs@p{8(_``8-F%3H^Jj;bs7<-KCZzLkR=EZ2D&qbE0>M z{)zftZzq_Me&;W3Y2FTP$9B(qR9zo}JMTN$!gKIJaY;VZ4ZV)^@`Tol;KH#?Ly!)M z4bdte=rF$M2h&U}orZwfYzFThy6vpK&%Lkgg1yS*7I zp~+#voniWCIh*CM<!}m{X|P=u1HQ^_)Mn)zigvmvcu_AVTy>Crs=$FkT6(kyd6H5mnnPxazXe=iq zM#$t~#zo+{@Vp43Me(?R__E%gR_NH5jbseiq*KN$p566|8Pemg(M&%nMDQZCWfi&8 ze%Q3G2wQ@i#uErDd{%e)T7xnHc&1#5?!> z>vxs$pGV=Ex5y#Fo`j0xq}@;^lJ}aXsCh=cC7Yq!^CS{8qi$D)viOLS&M=TM?RfP) zGN7rp;APlpuTK#pYC;VHJTU(3)zFI;A=BF~Z&__?r|2v?;ELQq-g`*aR+rW=NuLFfF(JgUVqz^6Lg@1j+do9}$ ziI$r}yp_aWzYd6Bc{;$-J$Fe8aKky&@YB=A5;_E$z`;QUnS@X)NaEglPeX82khc;I zW3)$@9SC}Po>Vl{mS$CdTdMl#2bb@i-nlDoP2-o84ML>m-S3Gt%^YNU#NpsNzJa>p zk$ze0j5usog2iaFhwFEMvTgP7$Tkwksun9<=_$eR>Wk{MIIDU=RkRJD=4ueu6`89V z^bTjrqTP|_R02+jt@Kt>*{&=>WM$~JR8BLV`=Rfi)?na3+9li#njBT)Xe;V(N* zUA>|b+5aR7G(e5gnJ70v1gZhOHtOUtCb_cZwq+FzhiFtGENZ2r(LI#7h|B};e|-V( zz#G5+%9p{YBux9oLqm-J zrVERhxR@yMO(-Bj9`K`$NrgG zn-a38*m#4Ofn@IxV~Qbi8kV9Cc`Oj*o4<(ml)1#m73OCqn#|`HnrX-eODp7U4pq^J7THXuGW6QBT`mx~Vb|T4? zt$>-TQ!;kv!IG;*7bMr;)c~^0zjkVa-fS&{=TuZPZZnB9Xd?0Z^pjJ*p z5kkn8p6K|?a>04RnxV!siq24V_a3UHi16Rf3!p;Cpx$7=AOD7SzgS(Zj@a;!m&1Ro zaA9flL%M1g>K$%Ntgjgu4d}seQ=T)u)_lglF(MSf(X{JmMF7F@Llzwp++%L{CS{QH zPp)ML0#fC>Cbw<7vEV2Xq__<3EaUe!L+tc38y;apE>w=>!e}Y%1}R*^id1MWM4Dj| z=ppEd*}_B`3Qq)FyD%a{Pf-ylgy}sQWtp9ici%RXTyV(iV4#Mu9BpnGFZRDo81OP+87o}O-;Fk+4#66N7ZM^DWsk7%a+)hLQA z!2;)7_xpkO|HOh2k)KmCi8(I#W7Azk&6l)Tx(x_N~~hGh_ONKW!W~4GCRQBv9}9; zXs}-S!qxh@9{)X-xnqoI&n-O~%Q*&UvJHD|Abti(@V>TZM+E0)@BpUbt^A3vGB|Fu`_#4;xWN3KSaEbUp|m$Uv8pcgCd0bmu>yzceOOmhjA79%Wu5x=Rp`O_g8-1;y(OH_$$(O57RQr=hceO6-* zZ)}`KntOYE)ttxGvklNC45sYY@>t9Na@vaR%i1uYnvTB`v^FOPzMM=mq-jmacphB# zQzfD51Rm4|X4AcWOF3-kms77DlDb8iXTyip=MU0KHg-r4$&dWe19jEELR*XOniGr_Y)A z!Yuv)-WX_kiTae=hO2HoI_}i;z07lsai3Ck`9E$<+r7F?rJ&|Ez2Kcgv^Hl$3WG1i zEL(1X!))cX1RX6KvbVM*Oykst2SU{=>WRq~k>+DD=XBg3!H z>SA|Q1Dr){KdDR0|3T0giwCPNf;KkQK@hCIvGcGAgOUPEV+Oq);gBbkWA+oKXJ`Gb zK^}EZc$m@lGV9Rs73==;+Ly^xOhj0)%l z1NGN&JTfK-?)nANKiqz`SU;ud{()JVF>dR;dQdmidxKw__$5B{%v0Xn*LkH)P1)rG z4e@sq3;pgrRHQ^aB%|5XY5bw>RC>1|-CU|1F}}Rva?tt&PQqV#c)UO0TW*hK3(FIr zx*QcEcGBAh-_$utQ_mQcs!FE|L!@AFL(|hd?cXQaQ;dpI(=_k2c~4dQUIp<4_k$%M zyD)mkNj?1}zHba1dL-haZs!SUmjVp06^F*|{G1q-6wt$jE?EoavqDUWJUmyP$X74{ z3@7bgH&Ys7%YAoF-sWlvww9Q{U=9EedPRnyIDWwTk+=EpGV)g1il)ofAfvY96LFU< z?@3H{G?x?$l-zY&5`C^YtZVctQ$wnV#6p#lBb#E48KQm{UY)Qniiqlhp4Xl zWYvf=@ER1=k{#S!j&!9Dz(t^twi;vZc70$;94_89$-Hf2gAQ!{smf2?wgIN{@HGgD z?MPzcQfs%|$=&NGwavqxWseZSeAAU?xQKyxd+q2~9nRnPll6Pt&U2?*zP`!Y4pq?f zhFTw-e1Cqg)gL+B^E{GOsr3sRe`@(I{QDrY*`8k?02&%f74aTYR&p(Zfp%tw}q}N-LTf zx$ivn(3ZkClWMvYdQ1Mh!eqEaL>8#|^vY>Ug8GNgKOI?Q{m&bqKkk6~iJb(pw7a|d z&ERe-9T_zEur^$IBvBL91=Sxg=e{^kX*)1byE8Mk(8~J8&?$JYCy?p{ZC9}T>&ap{g8>}8GS(k(9 z3%zYZ6s-M!$yLDgUeYgSZ#M`rc7G96kV+Gs$tj0#d^D&3ge*DCXLPlk0_>`YPeIPHm<#+F>u36q&L zD|vC`iFj5e?uC4hGZWf1ty~uT8CDaX9PyP+1i5blw}U{NIgcaE8M&d~w<#C&vqMyPGaVby?HXHXxVCRPRlypaPVq*rrN zXis!D&Jxo5h#bj}noSoDQn3wJB_z1PlOK#iMC}|Jjv{+`sDIKrPgNC3b{SQ816yr6 zKO-9mj{}wab?H4-N47L-{V{t>PW6oq)V3~mJ`Z$Yb`n+7gn(mD0sLp|4T30(J$49N zMC*SNgzQ&UFH(4zD%%Suxn(u}(Tj5Hwyk(=ZdQ$98dv;h z5P&F}ephG@yrzFCJ5O!f)b34L?|#o&gp&BP~Cq^SrUKAjdX z%Z%i=kOumv=x@-0;}d~fjFuYxGA|Qd-}6bOOO{74D+hQo$=E z4mL#hC$P%rd#IyfjG@#!RGPtw>ngP*$JB;ibfgdUQwA>rl!Z4Rv+k1lRf})Jr@ITW$>aCX~a)F8FmzS9C#<7nMzlfRpm4IC?^G+&n3Sq$_H+ zoAAEjRVEn>YrXm7o;-ML+E;nx-+|(wv9VU+=G@UJmq;Mv>WL{+$kwxQ$Bh9Uc;lYR znPp=;0|Wb6Wu&iNXWf)vcim>NVyCX*V?J~`h`TjYV)cNEau!+~Jp~HTlwr`Zp5L#9 z{DX=^57&+=^f~VrxKLu@L33}qmGkbr$!w{ql3`Rea@fPiFM)vXP^)Qja~2 z3-p<$aM=y`wAJjjPbvcbTukmoBmYhFAtcGnX1Vd+k8K2yeO^(N{5s#1WfnC;_Z2tS zbr;U1UfptB7athh7Q;G8(cn^jdBL;D7enf;?7sRZ>Bipx)M~dcnoZ6Iyqh$XNpD@0 zAB{*kA_SIYkD=sC%0utv_)T2xM@3QZY}{CfUN7}*=rwfv8erLWr!xu1S7U%5@9669 za5WCL?4c3s3xjUTW6NYelZuI)h_}Oie};u%jRc=dEiUMc3D$P~8tJ`bugNyN1OaRs zoGnJEuYA{N35a+}DrZDqm;J5Z_r~BXd&VKa`|3%A&q}adl;yu8`u9(dv`$e`IF4@;NJ0N-9l7o zea!$cH$6lue|lv)iJ=2VN*&VStS`v=@M4iwxx3y#NEB#TUhy|}TPAaX5tG^jCJ4!(lwlK<1R0?qusSMq z%L2fJ(ivgD1or6ivl%*%-AiL-tU=X=7rkNNhx8u z-2p9E7K=3ko-epfa9JI~fYTvKTgEHT+0%#Gu)Cl^RJcuEp8r=|UAs2(|-dA-4y3xx@uEeH& zP!>o$XUD+|cE4wsoxYd|nzKIONdQ|QcSdV)HW)}FX>v{&EIMcDG7jdfQh&kAs}k==6?UX1WepJ>n=op`{AXhVcmF-<4@V*u4f;1$u{^|w*rXy9sy%vL z5cOeLt&CarYBs@Ygh&<|6lVaH6*;+F9W~l@m>Mmn^x5(sF&Q$JKWJzG>+=n!iiXsLYPru^~?#A;qA3m8J(stuSN3sF}yF1neyV(=S#?*$lEp)n0O)Lesg@U814ta+qj+VeP$N zq-iM+OqBJN&_j{3;N$7|DYq0hs}nkut>+BGHsMO7Bbsb_m1=X=(Sj3VY3hMkzhIw3 zUz=CN<&tdwHMXgrICcQ?3lW~Ov4vPIg`dr@)IZc;F$1tX^_tt-b#6aLjoMi=i{x_= zFqw(Aw4bxEj9V48kt9W}mzW#JkBq#G;cPiA7O?+u-rVd+{+;&-JlXY+E=ir6-SZ!< zPAaO**331AvAVmR`D|Et4)Bzk$gZb*kYp1(VA{$EBZ85H;blM~gX!~&!4&pu_SE54 zjt}p}OLu%rSTs&d#Klih?d6+oL(w%Zd(*%cmksH+E6nbP!Eb{MtyjX{Fya0Fxt)^} z7!1ZHY%mB?Nc{C7>~p0d3xEA0&}A?i9-ns!o>gh&tRWFP9cVl2tWb7eBtFJt zMM0iF%Jl`i9IJqzE2&%{tVI$w-s_K>PqIv%C}6}C_x3y3ZA{y~%f*8af1z0|bU>7- z<4rj>^&6w>(v)5YdOSG?&HmOD?)Sb6t?JN~h*4H|H^O{*tf5Y`U&2ESY0fT=#rXZ! z%>Cf+%!!Paw}_Yv(!kI+1-qAhuG{+5p^#KSoJ4(zV`2MO z?<`V`7#I|g(?<0Fht8Xd>UKch)?2~VQyx~Xlr{?6B+wr|oj1y?H3 zy_o%ou8LAfr@t9`4Rwn%Nf(3bH;-Jbt>~e!Sb+U`^=Nx_#uR*$LC*fmr7X>4g;j%^ zzvgl6Vbbf1gWRizfr`WEfI8;F==-hnOFQQqAf2oT#DR(trTOb)St}n!Jr)9sywro=frDytex5k*h)sOfDE@oE|@$PAe|}2bc|g zHfYpfkRFjqwNPw0IwB@R5%WvX*_M&BUs{)dbYfnPcjPs$&U2)wKN@?sd z&MYt!9gw5j)9{&I2vA9#1eZN7Fuyx-AIovYaIj+5)z88-s?OZk24J8djirG7=Qw$U zoLfxDrvB(n>K-&+lw6HYl4N@?==`O!uriQD$8 zq~5x8RiK)fRPkjDRMBMSslYZ7Un842)BE(9x-B^6&NSo$x^5GDpD<$`K8Qh(EQL(Z zvOka6w2aFh4`HNdd>Cgu)(-sP=Hq;p3moOd1p#5RnRPAyP^5>MPBLh(k~D&2_Oxva zJ?JA9h7eB!IzY8F*OOWyC-N1IBp9H;ntlf2H|^T@1GPtD7B9~O{HtyP)DBcnmB>3g z3SU%ANih+sl>~{gPO>X2FeRegK7oN-zmNB7ARqUw%_`?M#&~>IG`KMH=C)X^S)3-t zGwBQow(fFvP$Ht3Bm|Log^D2Rg91`pbbFQ~7I7S+Ixz;<^nK$6D-p3sq(5TOzS%|K zi`#fi7F44~jB@D+ZaSq0I{dXnPcd3JHxou%79vT?x5^n!_sNI>C)x4Mv*d@-t>J(N zH7S<2#`b^7)@N|i*Wi-aT2ICnSR-{!TOIz|^kj=)#jOhJyj8xhdDO z{DT}Rad&&w(Z&=;7&{Wcp=jVD|GuB)ySULou07R(`VG1Yv{sV9d{2hrLd_U?Z_1FZ z7s5~RI}0>3XZV~es&P<)>;UM*uv|SV5Tv8TW3ie}cR2x{4b%Msl8I~_OYlhbCG7yE z#2PKg9#J-bHH5B_c$*^c7t;Yx1`Kw5G#Ub%scb0;M@!1YVU81ma=h(;zIoFYpUl)e z2k#jtPYZN=5dT__y5tr5k6LrW`t7r2meV^lNb>n^cnuD-+>$u+Z}N?Jq#RfYw>$&( zlaVgJuO1SktQQWgDbcGco_G#{`$5-N}Sq11H)b>0|QtT5q^X`xDr zxXK8R@@p6*XXmy|5)vghz4ORC`sKNl1PFL!)(g{FBV$MC^uHC2H1 zb>YGS4<91F6&|qhf`Y}W*&$9)VXIe#Qgx59eC%{cJ~wD#ag6zu{2kWL|I+TFX2xwq zuK*snU>q`6XeYsva@4Y*%w_#}noccYC}G`(Pd~{G(*up*1{J?bEh6b0sX@^j5yQRo z7r!TLCQyqQ#hH}iCZLYw&yBu2oBzDefUN@`e_Mg<*xxwsv*GX&`d>HtZtJ%`w=8se zsMt_u*@oz49K2*oc|C>~m|Q7zyz`-zJFMW;fI*Qb>ft%s%O)yE(IXNdGNGCfgF?-sEP#8q~htjvbZ>pEF za8}8ija_DnS?wo8z1F8dFqM)dGaxSJ_gIJc>c20=z(3j3)4BOmt;oUCtxl8Lf$x74 zsVM|)*Ay3O&wf0)b?Wr4%D@){-Ob{@56#l)eQVo!Zp@D#k=XxLbE$1{K$8ROmyrHi z7I*Ik2s7~Q*C;SKK7tavqR5(~d@Q&Dhc8o!d?Zfouo$NGuA2~Yy=@kEL6@JNpv_j4~UzwfNl zOaP|K{k!CxX&7D*Lemvn8nv?(*&uIJa=aR@7a(HFiKAi|U4GGNI+G zqu+sx`XK+i0&)xHx(k}UdMIhs`9zhH1ohK9B+lpq= z;S*JiI1uqV(+Ef!F{Kn^hgOagELrrCFNbnBFAe$LYMdiLYP|S5vNAHZz8J|Zv@GZ- zCsi)#+d2FU4e6)^t35}QF;HXiwM4>X8Wm>SS#oK&+eBV2gpv;n<6A;jK0pN=ulaWg zuH$by;x>FPA?47NWUjwvky?pHaIy1Pvis6XM`T=fwCHl$b-`+*uRMRDLQ3=VXZ5a?Q;kKy6yupGPnb#g04Ej4R#`ZRpS;vssM1dnvV--l0x zwY|*7HIglT&Gua??Z+hB*MfI`f4lfcp0W9T8`D4b(bBh;(b1b9z*O|KBp(|o6f5D& zYkUm3+&^>?EJ!IYkDjkuaWNZDnL6#*OQX0VgyD*J5S-In>ZfR#0IsZD%2}v^(g>S4 zfeE(-g=((LmK&6K|Em>%H6l8y9Oqz`B>F*DE8h9_M;f+?3PlRt#WQivVh{Y<-_4h7 z=CVC#Yc(FESWsiC!++O_D^k2W6xn=##@?HZZ4vF=^^rmthQ^wMU;VSUYv&OP5LHl z7lKq-EH(1JQiwIB@rh_2EJ65HNY($Tw;dP$KX69SK!65g_#&|1K zaEUZs$sZH@20FS2RFK0bSb$ppUC#voSUHW+_1hP^vy(SKPbLfx?VCVPSZiI&M&U?M z-mUMb`L+lbg0VP$eqAk9QDR-Zyg-V_mYb6*m^JNVq&7Ym$T8@zxt8ayGKgR%mgW;M zW5OCo>>+$+Tbb64l^z#();rK9!*xEx2&&W%0luvUfQG}d(ja4d-XbKfz3H})6n^xX zUB*U5mS}BfVfYajw*wZPglPAluYr1<(XtJtD>(Xs;OHf=Zaqwct+|KSONf*s#e)dI zA2N)1{ziISY}0?uzvOkNKHPmFa;khfbLi7fErJjD+#!7xXHv7N=B@FRT%pY<77HA% z1a^DZZ@wEL23M~W#6Rs2M8iljn_+V#BPlJ81oq{TYV8BBmgwKnS4BaWGy?Sl>>)3| zw1>ecOhCewqdJ%uB0mb`{)5a7Rb~NbyLlk7ihJ{<6>fcd3j=I4EPzf@2$_yz-2Z3U zGaw2nZru4@j&dfM7iH8lTcA*~m-+fJOe1F}PY@pAf6jn;8Z3R(p zAk_weexPULcq7+ce{9b&e6J=GNx*P5YQh^|(Q;`Tf-|G43{eq-OB`%B!SzxsFR+Jg zc1Ae(Q(O;tz#S@L8FM07wgC7dx?n4|I?+0tfy+O=_oWlOlh6FzE|(y>wdcA#eYsog zqK_Pa?~(fRGqhOpqs;&X_W`F<_^Q7f2MiewH=-7 zu6rszyPxSeq{Hz0F$dc@Vafvv)Ti!g4Z6o9_*6V@xy5g)PSYHrPOq{Ly-Yw}m)xhE z3j`dRX)6ihc7BtKG_Eq#Bf2lfhfLG=@7_WNzSTp7rSKF zj|X&HIIko+bZ=4en56J~YElC~-7xO{Qrq^PMBTf?-WA~Ds8i;6O&77WXW-GK zl&kJP-X9@b3|v!Ifr=_UO6thvcx@7?>Dm}Isg?autO5CW*#k{a`Om5pJGCs4$65kA zgipi{W9>4vBra+Ve6nsiy5BmhNfjbyOlA_JB<4S1BbTEL!(LIVUK*u96Q)oYk*gcY zJbe+!UWGS1iS9CoEkS?>Sxysd@5HKyQZ4{d!kyP=)CwC(T@yB3vr`knR`Y<2WibBd z6QuMwdM0l`9DuhFTj}!`3mKeJF~(@c_=G|kk4gwG&RSUo_b#pjCF>t3hfYVdp3i0k z*6#d^>iFM&*N|9oHv@(R9{Xav03=J(1I0TJFgCot73#D}ujfSS3HR>%R>c!U1!#F> zPpkxO=S6zg82Gg~HJ-H3TNYujM8{g|SgkZ&$gR$44D>p$9|S6g5B8IZ#{8(-4g`?| zadt_J`Ct>@>&HfiPJ~}H%*Q17ZcuGrS$9jO5Dd5rgC=@DNO~uTfY6SDh$x$~QuFU~ zzn9orCi-e5t^&r-k~B~pAw#VHK^yIWO#O+&QDmDaN$d4XzfXw=2;0e;H zGg93|2};jNW5Wa}Y01v}kCJ4Wj&hj>I9-VN;G*ZY3gnvWdPSBrQ<(vn4x?LcpaWfz zD3&adgw3p9+hNHG(As`BSW+%Do%9qwoL$a2*bhx_m?t||_RLC?nu-6qTise$Wi^ba zML(w?GaV4(^Tt%9$KM|&iAgLdoEAE;0n#43FgZq`(i*zk*tjFp*x>pCyx6kq(|JKK zfdW~Qd>9iMk;j6d%V1*%6H5GhsgS$6Bb0Ir3i;j}T2{f(1=ug;ffVY~o4T$|2P;f2t8(A{x>q<|`*44k#Y+|Q zWd6|gxz%c}?uX^@Vaq#a9{$tSlo#gR8;29=uZbMQU$pG zFx?RkBRT$#5xn^q60lr5^d4cOE6*6Vn$a@oMSv`#c4_WlVM`w9-;FF%YsX}4R&;ic zMhDL$%c}79<|$S+V&tb1a8E13(AGly)w#(;+A)9B&y?pweYzuAcq!%=SdKXS$4wys zp4LzK8xH3hv}K{A5rL#vgYjDf|I1PwbdmY!<6dc*6H-$ zdFQ8nEozSH3#%b6;TI<4h;)B4>jy;&_zOHn;4~b_Z8B9 z15u12syV>}7s17or*ErP43vw!JV&MoPg$31KQs|hQGSGi{dbSq^i4YjnbN<4ayHEHD(lWi!l>BavE-+0W6YrN zp|j~Yw-N(rlZ)ek>$CQ}4ncI@Y@hALbJZpf<3$?xlPb(zWv%E-*d>&WAOu>!={|bm zedp~vNRgmO={f#f(E9_ZV700oh-9X<@|<`mPvnvWQAWZQyNAlFt&Pk)F7FHa5`tPD zT!$oRQbJZYoF_XVw2QJ2Girh9_?TIIwc@*i3JZWS&ld%*+4=#r=!YkUTvIS>E0A%~ zzl!A(LaOnl!UJ>|3cBbVc40!tLfSqy3qApNnZCL!ZdWatIeOwz{$Dz;5y3$9qP_s8 zWasR{eV^qU{zN*%a3QC-)I{A0u9q@`Yxr7^DZ zLLdN6ngWyhlBXi{lcU9k3Rnw3l^7yQOJS_A?b{t`7YF!o(AMXE@vEzqlH1p1hdTX< zPo6Yp`i*(Sg)2ji6AMKDJj&~^BokH7LYfoz3fF&D^Zlmq+dBJgO$Lm%j71a-OX=&0ob{gvQe zKF%%@Q+c?&P&t;AOOKqGMulYODN23kZO5+9Ysp$6d{*Rn#B1@G=2;gm%H-8bRZ>>L z_>-uUdv-GAC*$8U;-ko4C50L>)>3kB7g!a~oC?Z&28zG5Fzt8{dW%HKo4P3YM;rYIe zwMx|0!UUxaYd-(LcjxGC%VNCO#QD1HISy%k|}4%H3pZ(CnJ<$pQbz2lG> z_k|rxRphZb?aW6ZJXGNLBtC`D@%q4gqtY0$;4dM@=*?MoD1%dv$NNV^_2U|V>G>eK z5LMXsUAzQqP?Q7e8XCmMYd%kuyIO?-4f8&H&P zDWDls8d{XU1cbsvjnSZ$iq}Y1;RdjW0Ox>kIV|~mQp>Eg>0a=`)v%BTJJz-`Yk2^YPS00B3O#QxPn(M8@BB0Kq8K2)4P4IeIPT zEJREUr!3q`=RRNgN2*vYDI#i(1~ciLeX(`9GTNz8jTAZY^-(eR88f}vO)$)}0!}3X z8xxzDv4<8fU?^L3o`dDUPy7SmD{^3+INKhx!BaR=#1oAooplh9Uu6L?5G-l6|0pW` z8{YSF$eHY^^$ECz-6i|1vYiM)PY9CsRRUqi=Y7=xPMR&UnT=Um%?gS3Szq`RT*(`5 zD4ZxlNCtY6OcMGT5w^^))w1pL^NUH6@n=!+axbdZ1(!zXWJj(!n!m#el~C-rs!zaN zQKmr-!byj(rkYI1%KRLeVCq0t$>_r%iTpM4z0*f_JI2>~ZbDpVyu_W~y*^~D#QK8Q z`NP-7i!z%}ZP7t9`{!AMS__cPe<0Vw_r-HGK8mxwXrjsHAl&-R<{L2zE8HZj;%U$K z{V@$IE_0l!$yn%UE`p!!>1YLMMM7uihV+^Ra0z5+p$xNT0L=h&aObhM4yCz?9ARkk zDs$}sm5X76r)ILiu`2JvcgJm?sfw{sMDJj^z?qCQac%VwfJk@YcW9!#k2oN;Bl$JR z_Oz!WEkQ?T@z8%H%EPbxJET6!tF;baY92P2uwr3-fVVYAN6QJvmK5(8m@Ne;jtr{99vk#mI-{-xaoux?r64d8>xl;J@3EFOp0;h{+^lObW6|kUz73~i{y!qW-JUG6UBUkef z3i03y1XbX%F)`_Xdpk)w62C$F(*((qMvzvT8+Dtl7J%&TK+$by$G9?jJVq$ za+!bND9)-^Fc!13(M%2z00{DZLTq7g%2Kw2q3C;(>iU1d0;QRa zOpTP=h~9V);_n`A@3q2e;KNU>=|HZ=sljeor~M-mM9!$5%K+}<39cKeqMF&77~ z0}Fx>iHWiXrG=oO#*+>;d&hrYNO&4x__8B=Ko^RLO7U=1qBbT>agCWpPzq#5j1U)wcV7(&gmBgceGRbDG|rn~DrO98m&-A{6i|@m4~gJ~09x09CeU*$*~o zFt6gw72iB?xVBUPa2XRFUgnTfgcN4*L|&fs-e$(bG9ZPl0!awm;1^+tq*`@zkly%^EacSqfa&7l0RixsO~O zT_2JriJ32KCSt&x=CbnJg)oaePCg1C5d%T4vRRtGc`a!F2O01!eTJBz8*1vu!h92s zfMk(jCS^1?d`Rq(CT*g_c;#FFQnVgi$wy(J2lezqdE6PCchv8C+6KyOw?Za5{p;BN z_l1`idfVy6%{F7@U-e0sN8V!jFLT)PmOy`;Tn70Kt=-(mPOWqZf$qSeTSed?u&G42 z0_}Q|PLzv?EC4pzL;G`ZfzrZVm`$pA4i^X~FRPo37&1f^O~rf6|;dEVCLy&WHJNE%&x!>Ieu%I>rt!ZpAJ zXe8f;_XN%H6Dsgs(5L}?Lk(Nmo_RfJK#tA!j7W|c1VcJd#vW>XRTtmRUM_l64Ikx47iuZ$+O=q!kR)2z#^~=C9R%8GvL_1;lL0kM1jqs#flOes!<%#*@YfE%;h9r z>PbiOi3|n4^t+r$bnuXAnC)+Co43oLh7Nb?Wt_jzSLu1{1y@N+ceuYOY@YV5@U%Pr zG0Vw%0nL9Ifa6(s(|I)Y@KoXQb-8Uty7%r~HoD6l5w~xs2j8}koGwr)1=uaFMrJ4ClPjde&{!-%Br69W+!7!i zlz1G@=C*!)t`@Dc=`4~hP=otiTqm&^s(c#x=@7CrXkz<1fs7Ni8HQAIa6JdHsb49! z?%GVSBtm z$x**3k2kf+Q{;6&lLJ&8vUym_^%nblVppMtE#(Nn56X`o6CcJ;x{L@nJg3-yZXKIK zJ_(;SWj5#?ex&*96GUlHEIO9#p0_hOp8f<^+1h=k zE=;j0BhzK+P*_r$Z+V60(lk$Y9=?Jeu)CF9|C@M=)cG03>=!Z$QDtgkqCV}CRu6M+tT#J@jnKg(C8yM2ac zv3qazOU4CDAb4A29>b0mMB_tA_nk`$zKX`nScA8e7)2!*>rb0HJRigz(Sh4bzTjp& zICJFfTQP%`LzWkP5~i4?<_sO(Y~uP~P=i3mPwXnv)#1~zgC@bRi(mv>8zS2EwX{kx zBW(HG4$BY_(9KdURtm2#2yX;ZjsQ-;!#I!wu3)ipm?l7vIE=qy(3K;%ns@8ZrUjP{ zI4xRDcjHlfcCVa|mDpV1dZsuZxnRJ3_-;A#j3o z;y0YH4>-s3EBTf%`rvWwckY;0Yec(qGx&xq`!}{rJCTj93rhSLPX5gcp~;A0A3~?^ z%VL1?mUB&?)=vb00_hR(L?_S%j;B48#W9PuP+?h>GCINj=9>pS8lbTRo}Y#g)Nf`8 z{FD*NLM!Bj)IavubJER!M~lz?GXI+oPWx5u^&PLTx(ZfBxFyc<<0>g&tBoyy5X;vzmVTal)EI$_^U) z)x1iR?Wisaq~8o@(>MlhUzC7FDC{tCOdYm6b%AzDf|IeTD$&mBh3g`yLVVUB4KWBK z*{)MLJrSP&E(QjcMN)csDEt=U>i#=H06YRGm|F-m3c#{WnXca`V-2k+#%Ll|AVW$FVKC>wa+NGlB>44o z|H&)AZA$ktotJgv8{UsO1YiPYOL91r;$iy3vPS`;wl!vag-CeNpl7n2H*bq=T*>`tCmNZ_qf)^@JTXw6YO48+5NrBEB9;Bb}pW6wD z03Gb1syAN8u|aT?)fNDbaFsD&F2Yz34JQ!#l$=<>gVuk2p8gjab=|ONIfQ>&sfD)! z#>4A%KU%B$cMQAIv%ojqMHRE1shq!%9iJ@TZ&m<W!FvSu>kq~J=FpsiKqFbr??=rv&2Q5@2nZMQomANKgch(uUZ!AK=LB?Sa*jGxDcDPxp8L=X~oj71mil2|(|Qqt+kNf-h+_ zlx{SbXCNp{{wEWNXWNckkkNr^Im&m6p&Z`1HB<_~e2Hnx0Wg8wwmjd+ArU9cF3LZ* zBYJ5V+D&Dx18~#iS*YpA5pWce{4tkb(?yj9pym*`f`7DOO8-q;l`kyar0T z{H&t!`mUvcNAnRh6)zA{<+|fEJNw{vNyqkljr^~+0IWoaIv;sT!SW`eK zO1kXoE^d7ftg$xU8Ta)()hrU?i>56Eb+ zQ4>5Q?8=5#xg1t}f~2}3s;0THfg5ZM64NTAr9Y$IptAVDpe8)SYGPugX)PSPLeXrm zWoT2iY~Nj8FXfj))8z|zI!3ActhK5}109Q(NC=Rc=LEYDdZttfglL{YD{Qa(*;e(~ zLx9C8m79z&nnLaj z;}xPI8yR~oacvZ?Ftm%r#(&W?Cp^kN5B2}6}fNz=E3K)wUz>c2MD@yMD>+| z8%`C_or`OKv`}=VILdyX)b>os`8`>Chw`vLdWb`_wP-NFElqA#tIrCaLGOWAM{`g9 z#qcm-#Zda@M0u{)Y%1Ul${YT>oZ^$qY|Qza^iOjOx>dCR_Z@@~+TZQGUwIQ#F?31h zI*CpDwq@2;ogkItxd&co^vy&?QYXBTmTe`(%2>t(Cj@~1ETg6wR~vl(RiuZV3flo zv$sh$NP?j%)jABa6o`%SSSPu$!!}5CfIPqYiC%9=Idt62iu?H63$-!(n}ky=PbfYU5d8*^w607+`C2d#S)`QM z8$$A_IalpEZKpGfO6CaX=#Dj>^Hs*55BBLA!}}`Ikk+u)2is zfXRDhlbC!XZ5S6&bcf4vTTYLkA-~tzfQ1bfu!wS>~f?pp&LO-5Xc3fNRu2c=$T=8D* zPzDHhVwk9p&84P2l=6iDwn#eA`tlE+vu31hOtT49FXx&g=A)*3PNl%wh&3gfbC{ak|Tb z5*r>4;&AiV8bIBUG6a2r1&}R0BD`R!d$Kg~QTS{{!uZ=7($FC@h!N!Ntk;v(*n89b z;q5AC!%-fJ(0qCPJLf2(saK4M_nozZmpK3F+YO~!her~uUPI1Pjp_^-3{|YVm$hj4 zOjlwd5?tgsV~Lf%cJXfy6BheV@z+pY)XN_;uUFVwG|HdYd>VojX`g;$K2?@7Uo*VZJ5)U zYCGFdZUI!1*6bRUzU}gLEwKH5XfiS3!#oBt8tVue(|CkJv5d70s`G3H&bj>+NcN(F zkqlls<8S!HwF98a;(z^zdNAQCs9vw?^H8O-4?f(Iop(;~?lgl&>{gg^)e!I*M6p5Y&1(4gsEPVSuHq1oVSI6V$`clU`i0@Np z@Ygi^FCv|p=U`O|Rg0O;wp6!l6749*9LO?LoExupB9_~#j)5Za z*aHMlB8 zFE1XJ_G6CmTw(tj`}mlc-VWa@J||q`0QTMSuVF1MEyANwQBhmrn94m7xJJ=qtlimL zLIL;Z!lNanrB^>$+V&|#Zp%w^V^dR8g-2sYL!`y}nWjDdE)x(7*2WU`9RI!A*@GUz*U%l%>?j*TkoFg=N&r$VpjV;a?6KzO z`v-{q9~w?9k7B9@rc*_m;)5(bLx@l-=^c;9lP*OrqPftH_51L?p|BbSopULA$P!w-*>=-Bo&QuY3 zuz>mS;rovtv0J6H2QHg2v=oet723QMmr`}Mm{u!Ijyhcd{Nq-fC5m7BF76O#0~*N1 zCZ!9f&)MzmzZR$bX18BpDk>@Qlm0a?i$1lW*-rq1P3i+1@Np|zhb9fzRac@9ZhNHW zx>M`XC>Pq<9R9eUAFtd3_5lz-0L&(K7+y(*M?l?QU{65DdQ5~!jy{?uqU)}lpc4r z2a_rHpKAgzdhrxtI!V_rPyUmheyJ~P{@Hkto7K;x?j*U^t81?Z%NJONKLeY97n{Qd z2A?&c{iN|bKRX!6MLDy|+t8xp!N4c)c!D#;aST7RGBf`gA_d3)1Ha{z)^t50BH=Lg zBoYhWdY6e)md@L?N(=Gx;b>H|GcC$m7Ld7q?PyHQi3hS%+b{3Hki=vc4Dg=q5OLC#pT7@Q_hkD6d62XG z$ogG+3zg4N)4v<4!z4gsP?xdjzTPAhzu`*c11pzBd(^_~#Ay|r)C*2OjyTrh)bKBv zN{NQ_n1%o@-_uKGME-wQ)BOYp-G)h_E5*}O#p-x9-}zs-#^Y-{ zHErNShM?|JCMv3M?F`N_e%9+@2Oh%abH9p66vDx^x)BLQ93!{I?#)<6m($k0(-f}H zL?9iv4BEhtd9ChyX4*NOTh>-qZW+#QKTDHDW54 zapEGrxYxy={l*Nbr9|>JG9rPm$i1pD?j`}xrDtX?8CESGO)o4Ae)RIDX4KHq0(|cL zJ%NQPeYj;V)8A|Vw&zvV)uFSR+dpA_Ac7Q7SCVSl4WETGz%6(eF{UDdE&H2QX%Zs6 zo^6w(XnN+2k`nWBWsZiLd$by|kp3_<=R0l)+q@l$PaVy#vcT!#81zH0HwOB_WrM4@ z4U{dQLV6Q{XV-NZ9zpW{<{FcWSq~%$-|Em|A*QCKxmHwsDu-zm|8g_mp85M5uQz7< zzn~`+3*X{x$A34=)6+ZiGhc{K8D_6?hZ$Nu)QNvLdK`ReXlil`74bUO`EjbeZAVH< zism*+<9*7k-$X`77oF#r6d!+_4laaB0lU$ca)V5%kLvn2g5`_9TjlOo^0X$x!N9m6 z505Ic+)HhDE?Bepz}KC1zmcGzpaf9GNcGjUTUpqa3Q$~moP3qztqYfx_SD5FuPQEv z1%W_hHLz`^Qa&?-aU&K`jp}P%7{Wl@!I=d`5it>kbYgl4y z!>%flBM6Uj-<9q8mIF%-UlmOlC;hi*s1d&P^M8T`L<|kY!gH}p^CBcFV`>Z~z$`PV zSzTpqi~R@#1)TsqLg*J5)Q#tVi_&I;qXZ?Ryof9 z&|D2wa!)2pPzbr=aafv4fNahCB6LH$_OV(NQ@7t%WSJ`8ep2eF(DO6)ntr$KERBV;h!3Xxj? z9Du>1Kx^R0t!hb(P%eOe-NyC~4O%v#Gp`d<+o4YG`J;hq>w=s*Qn>N+tM5}V9V-nm z=)?&%6O^l>xEKYWjWrt$;QCxXnqlXX7=eM2+z&OW)SEjqQY}I~Iq|i5?Lkxklz!uX zEd`*G*`vR6!DqilheuQwHm`gw2mxbPWfzZfFz~!2@H|Zv>CLd|GG9Ve>3}f!wp03F zH(Q-B#&*N;zJUfult-#(8*6eGf=t9jjlx1|;4U>18NY7DM?;n>b+rV1;^prx*s7^c zoU&+W*xMd)TPTL(Rp*2`Ld|>qr{0>9pWnAecq|hZyeLC4BX2dWqM)$SSiUIiNRVv# zb+xk-r9tFS!Tz9C#97dgew|=sdv|xn(VGJgc{NleyrsP^57FYLy1M#IWcz>*N_PW%zX3P33xoM*j~Di`a1t`d_+M$h4c7ns z-{2vwCE4qRO1+b;^j;9=Bum6O4`Fngo{<5}EO6ZcQet6#b3~boL8!Vq6kPq*y=ulw zYc--sx6494<0q<8)_s-^utH8E!UwiBOE8wJQ`G_)&@43Iy~^KFLP2!i?irkGYvZw} zJUo&l=>tzOia-k&(BlG=g*Pay*e9pHO_^v)(0g+B0o%z9cF*$!@jUHNxYQa2!$pz^ z3R__-plT1YFC%cHIc%)~X)vhOQ5q&w{R_z!=;myFo zJ{0O6KN}3pf2ktnta7)Ao&TIqhP`fFH0saA&<*$2%vkL!Pkfwiw5AA^yL;O;;PBN& z=Pzls74mCbz8E5%G-j63(kJM)zSP_IUubM@zS6I$_K-YX0)9!Mbz@lD_P?KAom=RZ zNO7cg1l~4?*p*5d!FhD9ha$BNwI2Sc@cFtr*a_awwD3~mdfhe@!ueiU=#4E{=8w28 z>F{yGS4l$r zZE-OpOs?GjJ$clCT)1!~N!GBplXl%ad0e1Q9cm(&=wd5v1ZIGb-2xMsE6^Hl+lxP?+meOA}>*Ag#oA4M{;Dpb&bnk~b&hNRE z_1`0P9W~=?o%i7fN2XC$+eFwKz&VRaD5p~ON+C9loo85AJ1I}P%^3AKfPZIZA4M`G z)!;T65y8!#i8m7o(WLgtVvbzNdP9$%iUc0l8#O}3(!$bHAjjV$#H-bStb!BP;;C64 zbL15`(OmSxkp_QnrlqEK<$X3BqBiuZy24PaQQ$QkN&6N}om2I&P>opju z2(fiC^khBe=(ksOi>_xnuv=~$+z4qmq>|@@XkzMRFJtuEZogA&YLfBLxvcY%vg<$a z!Ws?YYr_8@HS^4ov>wpse5A_!ioK@R83sC6C!dY#|Dyx7*5aEyilsV$7FE%SN}@nZ z#qbggkw1|gI^~`xdENn+ubemR3D0+H7jAfY$u0zffB>UIe3TN`5P(YTBEpdADwbys zRRQA_0O`zSHCmUi`Rb>URs$ER9Ao}VziPzmlC&KzQGt#WG6qahm<6#JJ~CvX`UiSS z4?inMW)mvb99`QOWJj%> z?O|2p<+{}kFNY_N(tfWQZup9-;4C>BT}AU`gMNX+zoj+|)kl^jXXSV%me%zJUZovo zjszIWO+Ju(@xG972hP3W!PjhhNBPDKpevwCwsX|MQH)6Yi)%wb<~%XUZm^aN6Bs0q z1w1r&1^!NGVa1(o&yRYHMg(8Sp1?8VXXxmNXb?~qAtkm4*yg}#s>9PL&T*0_rid4G z`lm_MlHg19Rdt=;%c&N~xxq~UQ~A=!o-K#J)Zcme%g*u&Ef3EEW7A5SM}d5u*zA19 z7hq^`Zzd+&e^Dl7rT7y)ol{SB+m}5k$3FC!vp?xsS%|SSD%P)eJLC`-+~9Tia3`IJ zId5aJLx0wHyezs-ts`#^6{_HO@EeJ(vuKn@x*7Nt!vsejBVPBKd*)vNjzvxhR)aaF z=AEtEhlu>0Xj_OU1HV)T4=dELzNL}9R6gQizXMR&(T{s!%h3g^a0jEfrfFHRzE?G3 zYJAH5#9(26uxk5%-<0qE%lgWDY)`k}zWK%zOA!a0SIyM&Ek3#BgN*a!~j?NSV zPXJ3;NVh9*#e9eQ5wgE5akXDTUcO_V%${ZKc(T<)U`1&`|MS_`VawcM(N301YvD9{ z6T%cF26YNynIsaFnJ}gmjlD)HI5@ajNAK^P2Wz~7NJWCJ;AZueTpk#?c#G(PnWLp) z%bdfGj}$4v3mcuJ!;GfB*VD3LiPYOWJDwF1dxIn2bDN^b{GyA5B&ON_NA|BBEO40{K0> zph7Gud-Vu@9Ue~5Ro9GMGVTHhEOdD@lxe-Al}E~kCX2!=a?x+Mlp1+HG(s5kLdT@e zCSOw>g)BNBVIn_&doFbrpI7a-`_=s4Z3|$vBfV!-#=c&``P|)I}fcm#OdPuubO(^RLGon1q>bF1GFglMX`Nn5wG>wdr3D%&{=19t_ToLDB zzCt_9qGPP0s%l3X(LiSVESfSA0wiYCsvsji#?p0fmhCa~F_Xg*QPf>|x^HhXZ}MrX zqum1%mj9ceH%o_g8~rf;fq2Mn2aY*nuuPHv;aoY{q7%i!TvX+m@TBGJQjs96Qd~SZ ze&DNhZp^`Ksk^Y%cxG=6m1Lk+rA}`Q>j4iSDr_Ld)AG9fT6p@P-T7SGgMM~0cFfwZ?%^^0@BH@?6R@;>oPTMOx#*CS!9SAuuVNja{9PSC)oc|e3DCgr$JBgX zMvnxNW^HHX%0;izWNP;P_v@&D!;jQIL3h&48?n`UOaX*Lhk5s1bltf1GK)LG+=K!3 zH#@QW<6NDI6^)H)nC9Tv{k5s7VCSxfNH~upe%|?6d^fkRG@li$zggA^cXJoCwBT9f z(CAXcQz@ve#%!zCauQVREom4vIpCM&Y>$Mhz&z~%`J5ciQZM-;T38iIg{Seaocs^8 ztijT8I3dGyBiD-8SxskMPpB5QB@Z#rvlX*`qc}J?W*dDGWQ<^8ka-`VdP;@I#m4%f zE;?KGCCKrB4l^_Hszpu3VFIS&@Q5O=@KP1OI3>A$*eI;w-KLW){f zB+M)2QcFv5)eb(Mw*pmps3_DdJ@T(} z1nR0VIT`hA^wX#HP@0gy0yaVFigZt3t&dZ#a=a4FEL{HWYhivAz;57S@l$UYv~jsx z>q=UQK=19#UJkB)=1(#eADpBjz&fY@=x|p-K=5IiG=?UcXqn;Y`+Jn*xp@BuPRydZ zpY=$v+x~5T)stW8iB$Q(6YR!IpC4Bj&3xNONedf<9Gb%(TJDdVZcn?gC3X@R<8)Ps z>{8`cz)>n<1~34~PMR;2>lT{omb_@;l{@-&Us>@Sr`xrL$BI3s#40tqZ+Suok}_GA z3H%?9>Q=VL25$)Rqc3Sw`Ip@T4EZ8%?!OGiipvq@x8#UIEhv4EZqXZt>4A=#KNVe zyXFS~uZ{h&sX2)y=fjy0_`z+m6H?H)p*v>%vtt)%JOd-Gs(1xl;GCJqDa1iu9qpS< zTjyyXiTyQAqtJ|urkU=TWj#wKhaC(Fq-wirT-S!D{Tt+H@Z>%Ujwbh61VRde%N)^J z6vgV65F=KVZI<&D-yoZ;%bk>gaoku!hybDlIV9E_l*+}RSsg*gzzPe7S$yS*r!Q!D*UF&Af zb97MLTp6iSd4(5v&j2sU3d(F&SEyD|qs8&7d73^F7p0T9k;LfPYyc0WnM48r2W{cW zw6f;zy!Hi1P|cMcscIF?k)CH7XXu?t{VosHEk@jXQHTC=#TNrC9AA)2nIiiR+NG06 z+E8r-sN=l`pE#{NP`(ZUZU3mPj~w3x1guS)W7jr*X@-*&&*V(i&M=cq5_nY(wuq$G z&Oy`rYAeBxHBg}m{bm9GoeXdgcE%s^>-)0mf{@uDNW8{XC-no}pUalP073XI2s3sz zKU&RNxnk5reDU@7Q=w?zO;_2a{Q3^WWvwnN{sy!bh`dOjN4OElmDvusv_t3=HIX)Y zq7*-oDAX#uT8aAdql*x((%!$FLdI`6#Vfh6xMaP1ikJ|Ns*zH6nhQ`~UE9j95cT6_ z!U8j4JbOGy>VBV;zGRw*bJANMZfb4n|0`q6q3{GQ15$UoBjEAjH||uvzOzB=Dg=+_ zCT=^=KbBCx6sCPn9U}ZhQCA*nqla`(vny2A14i!qE!c*z0*nOmdF^FGm2(scY!e~k z#5l_ev{sK*w&Tks!1ruBVJs5G60s0aL-+45UMlH_+P8mh4Jl^aj_TD77b+1!Wo})h zB8B}sFfs3r!t>5Jx+P58Oct4hL$DqnESEU?-PjXt_(_#0^h+WZqu`+JQLf~FtpsR@ z-EZK*-Vutk18k1Xx%>F*<0qV2XIxMu3I8^Un5&wI699z)4O0QXFiUV%b=nO&z*8p= zr18u?V`R$usDL#Pk7&RB)`c~)yj`=|`@W_HH|liF5gQ%C|`*Qy*14^Pg~>R{p%NN1}h$^|0ADLZTVARf)CQ+|XU5gD@U zW19gAw4f%=kXd&myu8I5f3a7ys5*vpbZUYV53H8?o@p;wmzBt6n;du`w{=XT{sPZX zB;Z!?@EMuF@kI>FpQr+FksNfe+GJR%bYlxF#ml+2`f%e*mxzw#yj=q?rHrWTJq=6* z4ZcYBiIvN$_hfmmsMD`%>S-HA&G9UnLF|Cb zJukEA5^nL;V!>E$u=bD}$M}Iy60yFOvLHTar1^L;ykj=1z}E6|iarx5*>?qMajzl6 z1K!q@@R?#_=;4Ylbo>08Fn z@`7pR#WvrQ5@tjDd7+yZ*eU!`c#pr5_YQ z#($6@WntME0_&ilxI+ccA9#4U6^LJMCg@y^OLX`+j|l3-0?MH_Nu1iMCW`QxXIS70 z#3tLFxj4|m1@rk>K<*DJHj(y}<)sDbqXSGgtw&8IN9En9ZYS?k%AJ}%Qu|!V>QDNx zqrv-ky#y~8yRh&`#p+`f+2kn;1nwbM(R(!t4{2pp!{HUW%E$Zs(oU@7V3)Wxsc6UG5 zU{?c^d$Zebbsdb2^9?HaDJcBP;8C%$#a3N#uv!xW0t5dELg@ZaZqxqwJd8cAZ8m*) ziT~zhv+Zeqk)i%4uSM}G;?FRl$8aw3*rMx#|*YtU}t~2{erMlNUn0M~3 zEmPVOTFP*Z2_GIF{zk}^Wfu@kQ8zWEixEDTgK$*|I;?j~v@O@v@Q^zF@ z+p0TIT56M#{a;~$ynIKgcC~mqbKhI9(u%STzspo^Gv$>BoJciLYWm;zi9-%I4r||Y<_*|l5GM3^pjM=lTwX=tACKL=fDp4gRrCZ=~LIuS|r_q^_-UBTdo-oox zwIV5Ni@oguzE%e_Rk2r0S7Rr34;%;lHA{jun1VkPUoPxi&zWU+9K38N@Aox9p{Fri zDp!aK63cgx(D`9AbJP8~#b8%BuAZ(aiIgQ65-_*sFB+&-BsqMwf1o)0_#rzjzhgiO z-dj{jc@hY?q*V-<`j9>2mcvPgTM+Wq*MqYiFOUFyg=T$(1!?bKRNyDezHn^im}SGlZ9U6p+K1q<$W@I+p>`Rhanm9pQp+6 z_NtzQ#Li&T2=2i`AP$AwdS8g#a~=;~9wBi9%0C&h4BM9h1Xzg7b9TppY0}QmeT@Gp zC=T)a6!SmpDJe4e@B6+HHm-!MNc!d07ak~~YP^;} zBhYRBbLWebQ`ws;GC+vsFuE5*&o2rSU0~s?hGN`cTVu+%TzvV@91Nle10C)-#^+XF z@6+2pUvi+Vc*V?yKg!$Hu_dn<#{t^pRZwZL`f*@jp#I@}&|ya3jZ#!JYv!LNpUpgv zp2t>F{Z5vb{aMfJK&sgjr5VGnkh9vpo}TY!0`&AKbxW=!l2TGP)3q!6;oW*~$>HLW zIgvx>E}}JDJrI6w;sJ_^qn}+vpfvs+IkyO29_g1~UHEVfdNCKnLfCH09`v>?SDG0f+o^GKG{Onj;Ntat%-o*Cfaf@xe>rRe z9N<4U-dJQeowTOo^HX`e*0b*rm0!*xpycv`UCo>n59|Q@c=-4Y%HY`kus;+L5uvK5 z_t!2~==j}Rq{o{Tps(CfuU)okAd%ka?sAWVIQkaUct~V(CJxkS9hp~m>^YzFUa`2j zx_;>j!JO4vX~AM5MuZ1N+^Vww89^`z!SkA&Mdh4BTlV|+gDV~ZIAjd;-A#-4=J$qG zo|S)rR*0XR3W(8yWNT>K;~hFHE92qsp2%hP6KHJ4G{uOWh ztE;Q9=;*D+gyG9ahjT=Vj~4nvLqqmWOWx7TTxF?QO+%(#Cdv9C>MA0yYStvfOOGa# z`QXh1!<(@g^xfBjHGFmx`!F>sz^~|PNjBW~nGSEh^vD;<(NC@RwRK%p4gfe8y+Dw) zIf=G?^pkd#0|y&eT&KWk;L!1D8F)zH;Nor?Y4Q$P;7)OsaB$=Jo0qXP9 z#W3$I_HCw&W&u>xmgBAzuW zr9oLrpFdOlwp{`m(?#jC+^KfCs~xxAw^mM$j<%balR;zsKqBIZQOfola=Ryx$Se#~ zjAQok^%Y$)&Q&V8S@w#J_2}mgCtxt3OlV)_fMH;akN6rvZz|C01~9nqmzc(h+rVmh z^(B~|^mjX)&rj6XL+xKCA7$IYoY0hD4~Xha6S|Tz5%3%;T|FJs-O`W>y2H;_nlYZ! zh{42ZSjB2vMrC`^4mHM@TUqSN;ooyiLFoIL^nX*^2|2w#L*DPhXWqDSE0~ANNAk&R zij~G7M2{J3tz||avaMum=g-3>Dj>fUo}Khtl>U*p{-xM zk}sd=E=J{M+(LtHqojn{tSRqU_apiR)xg}`oNBQ~1`eJ-jTK+?*;cYar$W~5qbhyX z@9`8!yIuVnvhCUv$lc-M;I#9Tgdws)f##I#9y(_3S*?*;d^O{b6p_xdvM9Sz{7d8x z-MATt<@!zEY<=i(Ic+R0_Y1IbFQ=z9Z6)Y)m7~-7?T~HyX=rHdt+;JQYieu#_ltdU z@XG?7DVX2sw}i{_il}#Hq6#*Y@$>PWW73vsqTfA?Z70+zS`}gvRyE_R6^^X_1U{D3 z4>p0l%Ux@`zCSJ-3bS7lPY7j$%Q+Y#804q=5j@6DnZZNsrlhad&g25a6Ol0^Ol_f_ zLff3g+7g`aUK}jI$Cq+;Y$vRLKa?bWwcKm+z?e6LGG4b>+M}c!dV1;b5#!_c(V~qR zXZ;z0zhogVe6uSPe`#s+{Aw@(%*_aIy{aP|R5V}Oo!IxU!MZZEF4bK>zJEo%iiTm9 z&WOu|!uK163TlM3mu)qgm#{~|;3n>UMGn7EXZIhukbe4z$c>(Fd2+vig*aknX_&F0 zlDs?|?hU9!LNFGgi)6vIpz@?qVH?kriH6U#p*xp?gw0!!QmJm5DgvA7a@bS2xM+r& z9#nFZq2(F|+S>BTq6&~d{Zx10nCH*ZPeerIo%gvvj`HFC0ria=RUu^9oSI5NpkZdd zg#>$fD135K!`9{pHT>kX*&p)Nb_gWA9nbJ+E~&pfxh63c+!jO@xguYa*maq zeMeTL--?QX0aYQHt$+U@4!Ls3D{4FotwL3_j9_Z}y4*@fZKO6mZNCBd)w14cox z#Qjf;X=)MRVl3EzK4$4v7bW(pnWlN_d$+3;h06QlbbuZFWVW=}DGP_teo}NQ%yecV zW(}8_p`?s{K5+DkRh^@ZSAF=Lu%BJiq8@v4K=t`XuF~Ho!}?&-&`^nh&lRzA^DE_7 z?Q!)QQ@MNXibw4hyAjDCFs(S81AmQ@naSdib`S#12P=qnfZ{B<@?>v(i9*3D3jBd* z2$ddaQrwrQQh@pLb1t*_16cEGJ6x`XcotngW}{UaH$gL z(SI!2q72}UQK4@su(t%EkbC1eKV}-=G2yXl#h-pSV6*#)SJ$0MTkvP zXS49zRt3MRW`YhrUhrf-JO@9ukWa8p2@2;^aNiN7a8TgueCf9iub2XGz!__QlcQPs z=HSV9`By%s-@?$4Qmju2_rc;KVBd#wZ08UJYTvg=xfQtn=WYS(S3iY|xBs67 z^-|Rpz@;yPKx4zLd!mXooB3Ut8B&NFY6|yQZ(Y}A7QaG$N1ZS<`oPv*(`3@M_au^E zhnFTPN(4WKFdk9N9sTW8zDb2MZFI&zx0VSh&MjJ4UzXkl`G~I9a8&f0jmm1J;Tg~J zM~ZQ&os#gc6LVHnB9O(fuQ6{p;RzG$f~}RD-EO0p>EJ--l3+>z{wu`X1V1&h0PvPW#DX$XMV9!*%{^ToJ0@&TN^v zqh2%0G#Pwv`=`=|c@twMvr)z3y$!$&7hmV!ci>FljvzDvk~1A;9nLDUufyu`hyYM* zzkdNflAQj%hPuNkd}H~}lr6uxC*dgq$~B)M^ReaSVX+GK)?2EXe<1wbOC2lR$^Wtc z4mNL9;jrY!s($Hand51f8e<@Q@s~R%8wKrBHl5q~Q4}1Mq(ZT19peA9!?gQRo+`+{ zTwZ82iMORRd)bfP)n?6xx>6){)y}NFFS!Svo6wu%g6j%1wS#xSo6bhjz=P z{yI7P--*86R@EOgJ=lfH@&c^!ZCI-aN`Bi%(b?axDr`Tk=r8?=!o;rl6w~x=|B=(@ zf3bpxnBazn=GI~J?#P4b^~|C4rh_8?>GR&+Xm{X1v+6?X^$Remt72sIWx%liyT9CMv)6x^ zE9^g1f9`;fBjJ>ggsbb%g^fyKpK)(N+6@4hi*i8NsA>y;+HYvZ&J*W^0F-KTGCPbc z9(2bTujK<=+9}0H;8M{ibkf`v{>a%!+LdRFe@2D3GJ}{oE#0U}MJ0 zU#iihI?T5lsci#Cu-mq$dodi_Nttv!XIe+)Z@NtP3RKDVRJr+X5)%GxMN2!L<7zLs z@2S5w3oz`Gu1S$-`iNGhJhvd?pdKRlvtnKq0laViJ=J;P-)F>+$vd3MVPp2xZuFkz zlzAnJq}=h=^1c&f#C00y_H>Cg1W>H4tPjfXo)bt#=V&6CRk6L#4U~NgMt<;xJ(~%^hclECq>Y z04y~IDXxUq1IL}899c3sFf*~4l8YPQZb-@yM#XZ?=$MY>%j(~H0>9QhASF9+Mrjw= zQ8jG9uVvI5DE7VRx6v<_;*lAL4s>9(ExYvO!lN4z-oJ%X)r^Niyg<_Q6T|OoicYA< zOPWu*>RnIQ=>+5>B`um~?B^H1{Ir+F7F(mW!|VJ?2Wi0jfb-axaQpRic`z_l+Z0MS z0NxM+SvoDmLs5S}%zx5~-AeknD5+xPJ`ptgskF3wy^bsj!)g<4R5z$7U^_25u#V5J zlbu%IKO&p}h))jPNvVChlWwB`u@k6Iw5w3or&_cdRv13?fIqsrj)$8UQ`^w6C2gTh z6BGbkG{&pNGgw=6jE13F1I8pMK?O@k>+a>{#l7J~sd~1_ii=n{AeD}dbNXc-L2C8S zSEl1u0Q%)M?n>UKhY|GoTJ*G=7%_@A-V&3_j=7c*but#}&hvGYYyxNl|*0L+NVR?n;bz&+3^Ick=$ zxC5@MYR#A93JRrayjs&? z^BRj(@Cw(z-+nI){2TfPbqU?T6gfzIs~Z$5x>7&0RhMq<9#@-vb$CKCm%gHpxnEa^ z^>IjM@n+967X?!S>Q^Yl&SnL~@J`G%^ z|K)oryvv0VY{~PEnjR%NnmC#_3TJ{;jNsM!Z4J*NhcA55N!+RZ&+R>h-`_cSDdDh{ zgoq2PeVfl;R0HBk#8a7>&028OJJwGD+H+E~X;x?bf0Ew3dWBS=*y~dM#W9;Z^8RGY zJUfy`*kAl+7uM*%S$Ma(ue{?r z&~q*c8kQJ+x$$atPvJ9DdI+;hR;@b(`MCW{(P+8Ly zIom6&LiCZRUzoAp4MfVxUKN9M7!~d|0@DP16x@8M^ilGDI*dCosQ#o2*33dfeK~?w zTP0orCV-s5ON&`ILgxSL1#i|rTax8l-Vx^B3KE5Mhb3KRwJGb){89!*a>Bq~EN)wO zGv04o(+))OSFG?PB>QTk^PT-Jymin8{coGmsp;Dmb0buL_Y-sxgDU|9Y1(t7=e}j0-EBkDYpj zxCF$KFK21A8Cqct>x(7utNp6k(2D6wlrDaN8Y2YxvB9UnXgHp1ocL*hX8>8~BefC~qs zeMKmJ+g!jchlptXn)xGXc{Vo&yMgE{SyS1yt!yU=5>(LG>l5&zArLz@tb0x>)SqR{ z*aNDoJ7L8pKs|REF&`-#(`iL=b8NVFL{L1D+cA0doBVaPXPvf}onH?UV(#$hlrq}^ zh%M9|*lO7_nzcpHbC>XIpXFTvf^syaUkW$tf|1_2&2nT6l&&#p&mfa(pYE8Nta+MB zkdxpysaGA~y~b&G=5|@S?3d*zxnaepcf|12IH`P7FtK(mpXgvYjpICjD2Ih6(=-%e zZ#o1v^@dIErv!r$xr_m0R@Heo6ui;+b`!jI^#cdaFT933peM9RZLeqfQ0Cu z(Ak)D{cSH^Ahola&7HEW~!p1{dI{#u}7W8m~lHR`m~>M3sAmH&i=GRExWm{biBQJ ztz^4?12n?1hR%+Y=crLZ3OlP`D|P!snY8UkAv!Z@N&&9VW=b<#L6zZu z1dF=uXAvsufG5VOS;OzTlXbeIUw*B9eJMX$)Y$*Z?(-bd z1lOo#jiG`Ea}$8S;uG8s4z`L)a=UMREhVWmHIF>1nK>Cywbu-9^O~D=eN}>SYLVyG z))uQ^XE8^ML(PSYxQ9>CXr|JD&jvEf-@%@Su8_jpKZ4!1fo?^x ze-m1Wbw8joFgGx$Slrz^<%QQpR=w>F##yjAHP>Nz57rcN5y_ zRUa=$lk-`PTei1StW)Gub8X#LY~!Y8?f1r>pwzrZ<04xCuc2jSpkJuLf}EcUi#k!t zgFh0~DouZM9E6$lVRit@Z+e}-tzQ{joORuyv26^!-xso9N-t3zA04HysHP9Jjc#`> zhfq|J=4u^Hvw*jnEG4R$osp+Ag=5Kr>Hr^ovkO}?NtzyG=LE5(K zzj)N};@RnBhySihUvEi8wio2dP{-o}b|*y;$CDJ{IdFczA@d+;`@jdt@%^Bu-^eOf z-y?L+#>ed#bT05}6cA-4OO7HAz6gzN2V#X2etH&^^hWh0vFP`1)4z5Ad*9a8gWNR_ zA4TZ|kTzU(I^?nKgp%ZU18}J&ta9Y`cw&e4x|9F?b6+j8sE;hmYpllCB_;uyuE6+m z&x%6}YgV3KFX@Nr7tzgY03NR2nZfN%I@#PRDhv+hkB=T0$=3JU(Mc^Z{o^> zlE1=A?G2w@$K#^e+KQugsD~Vg6!h(=nTx?Yk%ba>BFQON37Yb~!XAOy3hsHpvPt&7ufQw~sj^1F&M6x!TG);BN!+I?V^QpUzK z^9vwJvIBY<(YR7E2qr5E3VKeyahv=h0EJHOdE5Agh0>$M79s>)IcBNzka=$S%qVvs z_YLPoZh)seGc%CCTo4bRoBHf(-qBRTlYgh3N7^QJAtM%lZnIYsuW?QSTk$cERc&b>kL{g*KGsk4LW2uC+tTRtWGQ3W%*TaESxJKPl`Jp!xV`OwuHHP6$(D13jS@lVP?~^jm#`8 zhjgM6)^%B7i%~?}_De1^Yrhw4ySl^i8`1pd*VL&d{(qcyhLNld1V_f+hVy3N0yCWkZz;y-ugB_a%MCi?l#{ zaxq_F@*VLiR8xWPGa+i(F)>(=*5=BdEo4*w6mr43Eu-EXKbYFg{QMvJ{N$Vo;+BzW zvpIulJ{-?19#LF~qSvqz;=HAsL$awIES7}H!Ppfe?9%gKS5Q<0ezUQ)0PtQR5!q~k zbA~mO_JuiW=fQ1$h{-f?4MkV@J;Qb2@i3eQYa5-dF{DUxjc%*R(n*5Xu9Pr8G$g99 z<@}5>V4PNAZ~x1A{Y7i;&2ZVRf@ zqXU4 zDDQ4$L>&WqRdL`zY80sfYb1>q9pby2^aU>*QT|YD8f07_`-rdTCEsf*M%ep4{@bDE z;J^WqHaP9waNr>Uqa}frnHk+uMpz4b^q{5r07U!glic4cDt3dMZ9|d(J3F>fUrg{! zr}8<(JRBn~v}5$Ul!Qyoo;b;yO%L%m0;E{Y;Bzx9GIGNxL7_ppaO2(RCp4MPouTx; z5v7VxmGD8~9iPQ@bxF+e{e)kOK0P?a)ux|5Zl~Lc1Lr|AKR=e-rhses#tdu-b!T<; z^XNssC}^~%{l;!EoPE#{=R<6igSRG4BSKFfYG(}|dN>k=S8A5#<}dUa)jV=8FOxlt zh$I$1YKc?}tCMNZ>{-?d31~l=+6cJ%1TW~5mr>)|I&1~Q`hQ?XhXllTlTT~8D5w+I zGcOPT6pnNH4cSO&qOVKUkJQovelFcD6K7m3;{CmA%La2pdiAr~S`ZkR1YCxrUgi(_ z780A9(5-o>Jofe-g)2c_?nOB*_J4iuNC<$2FCJPn1L?{lR77Sgfmixt;5uj0KRmpx=`6UR04e(Y`&;56nUE_e$+tgX##IC5-tyLJYPc2j zxmo>kYz=SK#RN$*;^NxN+92;{%5?j}nc}a<$3HZm^^(kj{xYS7lkjN;LG3aioAavi z5}y&;<|{HYU=?4W6uiA{>U|F!)#Whrj?*DUOPNsZK!SvXge1cIg=*EGKvD}2F5X4( zscg!!(t3^yXN}JBm^NY4LHq{tcds69C~wR>E;V()A#VsFZ9|-&*Ss3M%2SY~`9u+* z;?%fgJL;|{AlAR>2v)lL^L>0KRaLo&qbY<3s6l`E=?ic(@cjjp!hPgat-eoP*MF7E zJ)|LPyRMQY2Iuu&7CVwM9`@e2Co7FCns&ibJX>P_^57eBlssnFav0yhA!{(0fG1*- z_2|m{_VEk8d2}Jy_+2}ZQT?&SSWCG3!mytU-EJv$7R{vJsZpRSauFxi)UL75J?isTwaEbI4 zc>NFd-SN!Nbx`eK!;n*BARiWpaIwD%#pP74wg6yosQ%YZt$%Wcg4?CUgClbnXyhYk z(SjJ*huyJP@p4nzDa&}ra~w=X_&uepIyPOKqgWcclX7F)xc&XjvFrmCQ=p(P!#UB! zy(0k0{o$~Pz&2e(5q-Evi_ya@}P?3(TN|(HlGo>2l?XNEei!Z@5`Hx z;p6XF$8t@;nk!eiSq} zUZ5b6P5$1rnrQR8czuE!f{pDZ%Y9F$x1KyZoM|(5o_g0!3Pb;*Ka0_Jzq_*z>8FpQ z{qhvrwPsOaLUELy{hpp*n<6fmDy7p)9C|l37W={kTA;QcGzn((DGy+U24TuQfKV;b z({ky?tEaeNq@r2mK$LJ?PtoJ@*-lWoPeI2k-a2S4#jIafa40Sfk4}#19e5d zzfS9SKr?|1t((VcYAF`WU`gMc><>!uyxlA+K8?`O5#mAWo~K{mtD2T|bBwU^#q^79 zZPcjm+u%=Q6kPs?kOBh5fs>W-CsUfSn_p5nZLjsL_tC}^hD(Q(V+kPBM{kMXjj=M) zRRft5N+=R9>oigL4Vt84WqC=qIM|GO`I`{p4faJbF zeK@27CP~4^M+o^n_~(x}%~w=<7n)9^%1`2i@`Adeo|opf-)X=T1#qUSgh=jXZ4P`; z)O6fe=?2+X(gczRkcW_}TPj}xeF+b~6kOxsrInBXi$H(8r3udgVuhWZfj^4VBA%>7 zdn%p@^lyNp$c{?OQ*cDtGr{ad5@XBV zeo2m><-O3b_+XiS6Jb8Tk8(?6^Z6g<#e_$2m|6qJr4<&_9gi#C;OP4W6Y;IxumC8l**jS$kv}AuIjgpUNf|3Qf2ro? zofUr%nICAk=%)J0eu!(8PgTpQzG-?HhW4LlhCP__8Q_bP6V3(;Xtzz=JaV>Enb6HK z4gy^C>`{`5@IH4+hx4Y89FPMvapTyguQ%X-TnM~$ai=N73D;p>CTqfcN>&e|?pkp0 z)Dx-jaxi9NQ!E8_09Tao#{UY|2JYl$vMdG?Xdjv{GX$L8c|3t$6L)T0XR7ZIhP_yx zpZQ|GEri-s`;aet4|kwWPGToSKBS*D9#F0loq&nc%-iR9gokCjOlzlr_BC^LL(oP3 zFy(l$J%nJx5f=klw?GKo43|p`)-9aqP?!!6!uMzeDX4~5A_4-b5Qzh9EG%SgpMlJk zrtnIe1-{WAD4DwSgTgN-Op%Z_@{|J9@?_Q??@#)qU+Z_XcJW|)&=?yVuWlv+D#&}1 zjUU9ogAx|}0!fnEZHHac%_IIYBRRKeV#If(5nxiF!6OwC#Ov)qWeb?x%eBb4-;9+xkG-Dbx&Zb}B6TM{^`DdSWY zHnztmN3(F2a%_=H95*k6dV9)#q>MC%(KlC=9~8j4;#8J?Xe5jNGqq@Y=DimD`V`c4 zsq?dZ`t?FZ493Hbt+B1ozNZ+jcPF0=W}Wy=zu(JrTZYp%E6(C$l#7w$)9x%*tYDz7 z@ayh|-~j$~>q@q#kYB|kRVIV)OhF)qP4w~BD61%|mm(P;4xHb8pAJW$8p|ir|6Wf` z&3|*#7>BV?)cH7bGt2v2UK9)0`zM%`J!*iO;iiEsLl?R>v~upywNP@p&)(pEp3Yjo z9sTMZ2*9P9z}j0fOk*Mf2ahC-LXkGleHmsF0DSVOZhJCOZMA@;e^;O4wPMZM7D7OT z=Dhk?WCv6t)c?z0(@QQ{{uJKVI{$YIYG~DbGI1p$?Ul5rcwJT)CC*K~L!faq#?HS6 zA}#hap;nwH#VeAC^Ra4SwFgPZhk;&t=WQTNoRKwP0tx{ zMrMdx2C=|ZuOIAdm+LAE4l8CP?lgBBvOR8tGqtIe5rz$oIdFErT%gx~9KG9G@wA3X z1042nmmG7Sc~n$HFzi1d=SdgQr>HFw=A-&~biHg$_gT&nXY#MKmf8V;3Jyd0@s3=H zvKSP5{(So^tPuw%h~jg#O`1^)*b<2TjF2wTA0Di;CJDG<{&M<%5;(9BB_@(DYSsU5 z`9eZhpUyO1h{al2y?d9vut7$Uhn0+xkM7ATcPL)g2dCsnFJ(V}Yz4F0;<)mKCo&-6 zB$#`*O!3PTPof47d9~3ZN2@)F&v`x1q$kQ-lR~uS z;Av?|5I8K&`RsP0=S1@ZJ5s_T5N@TM6$L3a&mqRpMX2ZQAJy77n}}a+=1#nqQDH02 z>l}-`c9XUhlS23X&Wl0-!AgcZV1c`mF{?KnF+ulZH5HxSRd>MxZj6CK{|d81;h$|8ND-o3GC-CDHh+G-^#tnMe_mj_Fq zw!MS6wEA@;gmn&->Yk&nM&5-g@}MJn!@;3V(F z??$O(BP&APN0=Oie?CO!Px0DG5Ic+PGlY$VUCl_w)$iq&DJ$324^cSEWE;NGcIZ;E zwFwETvrjz*W-Q_D4AynT_Gi61S`<62?v49K02S0z_G6q9sk{gPJMh}YsKj?pR=h8i zgwOk_7s;}q>^HHQ*Hq&ELr~8>TH(9hJc=97h~3uLV}U<^Xf4F23m1U#Xm7!M!FNRt zyNjaHYtg#)s)3{d$^<#5%@@O6OKvMeBaiC8M2WvaPuv!4>L_`5zS?@xCcW<&xlzdk z1Z%Zg>i<8FQM=o7Lcd#9Pun!j%p1R{GRg;xyM$iVIBAje_+3!Esr;wFI@EyPX}x5g zVUzod4@6GrCkt^6=b*FS;=ooYl50b(Iu2icW? ztPh3x%=oBxt~6;Cm5Igy7ayrng*X4`{mh;G%D=K1rlXB9F-ItQx)*iEj>lrgyK^+5 z(ppn@_uC86w}#l{-j2aPCjHE<7SDOYJ;mF9Hby^#viZtPBBxLA8yg!Q;v#4-W}ixS z)8dD>4V=fMM-Q%M8(o+g+{rVW3N$0Wwi$LI$7#VY-6%3LG6JA;;6Vvd6$1`aj3nWuQSFubJprotl4ehMo>`2;7i3%w(S zPxLMD6|u|yW}!P5ZuW@}rA35nvhm|>nf18*1<6uOaH3>wse`^Q-7-PkRmxS|sVvee z^vSp8fT_ik!#Q&Q{Vu+XwBxHAjCcHJC*~#9dFf{z^<~YES*0J!>)MR}&+yD(l8#N} zS>0B2eD8^d31X_^ez`m9ywb_^A4*giZcDDhO3B?89qK^7yBIg#K`!PApf*#kPTsA zoOo9WzNSGO4s&nH4@5b8Kn+-oRe1yQ-aX2(jYiW5xakDWhPd#USe9 zH?@!%nVsC}pX&}U?ktVEk~vR5E{%_m*OUCZdG)zzUjSS}9sqC`Jo>0KJy%lRh^7Vg zpj8$+;(7d81%(&&uCBX!PlFe?z=Kq2aMi>i$8sM@W!#A|DbS? zr}YOj|4JAD6AL>!Iv#jkA;0Advly9}&!A|F8}-r6j{N@0d{`*K$mAcY4Kiyk%r6e8c*^g&DB96qyVnKlx1yBGyzq8+rv4!Rx-<$hRQdys-K|1ICnz*R4CyLxrI95 zEgl|x0__3siSP>|8=TP^;~p{aAUSJCz&?eL$bu=D-cDi8w7KOPOcE87c{7VZ{4nU) zcpVluv5jCOJX&&96w^!aTzv98**rt+{<5H!)gM5X4D7=3&)%m7fzUUj%txXXF};7j ztuCn+ag~T$)FG>lnW4rBor1>qn5=IDB^9k{O&AmT&l>fX#PmPQ5JGLiK}E!{{eGXc z+<5i5n-6x;*EP^8QeZ*`5w|{?g#Y|v`tlFA4ms{8Vt@E@P?Y}xcWY~lVx0+;6tu9L zg5N;F?d|Q{-@geVwv4D`WuaN*A~VmDMKECzBPU2pyjw&hxA^|)aT(J1PxH#_R^%?0`LM_X7VW_ud1iF;s2Nde@=xAmbExK zI^y8tQzKYd2>l3735uDiVYpa)7k|lv)h~S@C~shtdYvM+;=YHL88)>7zP_vXE{>K7;CKVqgLHrwNl7ixC>8##g zAEDzx@bsr^`yhA+sr5w@l1;&vq{%|Ntgv?#fU;nZDYbOCu@0m`J7OcKEgL| z!nT(^mMfeF{*ayS7Lp7s7Gpt4*q26=>(i!G2p3$&$ugDpMJ5hm&a!6Ik&SL$oPesE zGapacL_=_FuY^Cx(UNW<9tH*t6Wvnd-q+=BZKiT8n-D*$T^nRr(#dRJGsZUZ)Ggn# zlngS^FNEu)jI!Ecv~>D0BlPg}xJ$&Lu^oP;y9phhUDVv9Sg?iuOF`8BWVlaa&H2uoK;j z+~v|USLmfxrWC#KuuQC++UpXrXFEJ-Iej5=-zV_JkgU1>=TWtwSwX)Oq5p?Mi z%wri*(b0(nl4EL8!ll(d_oscpn>!Q`3efc`6vXAQ#=F+F-xf3t15Ll50?DeVX%NsW zxy-FVvzO<4jmTR9WcuI*JkFD!l||aCZ@^x|=tj8_FB3g6D4 zTJFj+={glDRDARnVn7}4mcSPt*F_#U@Cc*@TEH~M z`poi-UMIFGP~% zmTi-k;ZSoVzPtZ9WN~NW!@0Y=d%mxWX@RalP{piWXPdWr2}Y|e4C|2;YW^&I|5D34 z&K*5O0ox<>?{?Nhl5s>3ML~tsp}yL}8wXv9lMluEOz>D)`3!0fHab#{4aAO~N+mIW zDM^sBPI2mM&Fp+WzX*9qR?DG0qlk|NxNvq}LR}|w>QEt?sr8rAAq#vynjQGx;|k?7 z?)I(HFe)K-*^%RisOk?6U)WgzH6ujgfiE;^gafOUI9@5Cywsq|L;b2q9mNEuwU7G! zJ>hqQ)FT}`C4R4t?{()|8GBU1prN!-i{~%6rheP<5OidRF#_m!{nE1=AFAhU;wLI* zM*hl>YxCU6C^1J~eNK7Qv&B#*3=tKAqWRHSwq(fdqXV=RwpKp?c@M~?JeQYp3s|@O zcx;q4{H)ny=~xg619Y#@?Tm!c92}16t%CvQ?0zQRH&TL3RTavafPk_8yu1U%^Sh`n z@lCC3h#0$A5d&+XTwsuq`5ZD2Ged*;79VMbk(Hi?`=-it;@z>Cm7Ig>YAb!RQdH#W zRn4o&kjhcmCA4xtM2;lrUi4dWpDh389?w<2$zg%kIDT@YZ{8#Jo%AJyGjR;`YhA!C z#})d0_6bd2x?>hTCW|CGG*+q9l;|4MTSox;lQCRF=>AnNi`v>UH=rH?2;R4!oC9UQ z*GyuLfICv+Nt$*w(~m1p(9=Htj9t#j%n_DCnzfxy)3+3oIiP5&uYOwi1;sU|1U|4* z83Z2^ARd5F_W$Qp;J6fUN{xqB`)xcrO|!3UWwWFpH#7DX8WcPh7$StO98k^F6P#4@ zMbi82UfuNWs!D01rNXH{#(|jOmiOgaF8l7E2=?PcE~#Ajf+w6M*8FQ*T-Po8kRdtJ zw^AW>ix~ONJJyoEFF~B7$L@i&cg4i61v1k5`dYCbeCSPFLZOkE?zGo;7zzdn7{d*t z1}gdg?+7KufaIb9e%gPB%HdCh58#c2JbQRDUFRPh_kVtG^N+NThK~^m;b@)|6}CT# z;eRFUUvAaY_&Db071K@gTrWx@e`jOl@HOJlgwtu^`h5U-64MBzGH0gSw5giSu`Nn| zI$57k{ZNX0T-4Uw$zKj1A{r(YAolk#_x-nNoG}mp&Odo;gZ`8HO|MY2<&{CL+O*vE&~(q$BA3Os)4KFut$@Q6uI$9`VIBTl*s&UI$-sw&4D{Ej zjX7|)t_9RGGGydvFL3UXXA z%}sI?|0ON+bNs1&MAvl@|G&IIaV%AZL;De(qi!3}m<9Lz{A@HMsy!74>OQK zm)VQ3q-E+CKQDVlHFftR1T%c~on>_ug7+f^!S+uiJ~~_aGC!+*?D4;4T~KV!dQ$ov z6)AgslA_S|Wu4^pgdqO~pJby~dW{79%@zdm)etHVK~PN3qysmQ9KVz8^rJCj`B3X?U?izK`Vm@44#PmBVcr8%wNP;0O^%f<^*jj8%Au>3Pnq}<9aWiu zC2$?}rz+aef7$A>NrJh0LfSPZ8DXlwz?hhr?6v0PtdxMuui+XlSv@%)t#sk6k7zDhdG%LFq%ifzTZGYareX9u5xc z@B#|tWAsU5Wy9}^XAptLZ`__2+=g12hecswArm4TV-gs*SU>b@qcQ|rN(Wx$`e_L1 ztxYq#K4KLxNV4-RO4Iu!H7nm0K4&+6_VC|xkxKgOGQJB=xA#rs;SMRiELyAH)X*zw>^NXj{%_k1DWro znC)`CB;57*__)L_%Z`j=p4T5jcC7aVYH2gh!PpBVHkmb`uRFtT{#T2Gq2S#wH3F`0 zI6!d$jT@zPTx4XT7f47*D4JY^48R`-0II?mNJWol4Tx&E&Pe#ney1^}i8U4BkC67~ zjZ&BXs4US^&cyyFrnKS8(rOCV>PIyqn*jDBUuI!#C6UnDBrIk_a2SR7HaMM6n`mcU z0kQRDobxws0+YiB)|&o8QrT9UD{EtQp(u&Er}|DV^oE)T(BN--cX0g4C}K!y%|q{U zBi8RMVxz@4Ox2pxLVhS`!2*nF1g1-tex$#%i-U__8)OX$VR5l`iQ9kg+zZG4CeDd7 zj5Fs>us$!$%Hp#>^V_~4nOygv9ZPf`H=+#()=diteq1Aco3bb?E61D`Ax!GwjnN(- z5UX(4)A&)_2$J4Wyi)Y7V#_8{Qjw3MbuEKa*NG z_I^0?R|z@Q$vnxWY$HD2uxH?=Lj4%(mEvdM*xV^@Kp;ShYAG<7^tv;|*^Q7lrUmh_ zV|n+RxEqM6)KRWO>N6u7+dJk;o{InZ@|t&=09V4ako)am4pRm|YPJW$fEtAP0yQly zg8S2DP*8L<3JI@czC>KgbRyn4Fj{cEh_lbVCDO_jcRT|G+4jy3RnR(i0(;HxdzbBbqm$ zJe{P&<3h^Ok-fU@4-sAwABveIyihP=;ZIOO2H{bku9k}_jF)z&0PH4t*$uzZ`hH2n zkD>G)T1XCU^R(5^4G#&?4gJ%j$@CfhL%biO7&%%SxXOp%AKC8AuGeD_!C!HA3XJW4 zvQ-V&2OX()bD=lhHe6KOyI~`3+?Q+-M5EqbuAv%)PcaW9Jc@rdPeuR}1a&+MY!8E~ z-FXRgXEMKWAIZHK+}<@0lKP!=LtC>P>M355iHgw42 z))E<)@nl(9j^kL6)39j-22SV{%=UZuvJW=igf(Q?$_BGeb_O>~br_md<+)$I1+jVD zT1J#bh+DOZcY{Q*_XYUe@*A>UDKbDMj$fr16lw5`<2}PXySQnx=&#V0MmLu?F$Jiv zx7ap1cCNp5vdFY01j0cJXd9m_>pk)Bf*|D$gc)Sd?9*bGd4CSxz++|YCq;f|6L$Lw?KwR)g3yx zrrC0IWLL7HRt4XqWxA9=Ph6n z!$pmM-~m3!so%^9{6(wdUqEh$mk2X<%bS~q)sp8w4*~)pczJnckQu9bNWCgah(}IN zPklEY(l%i949Nft8y!8)V&5vlpu?R-P)NvJs3nWK&XVvXaxhIqdv+LJ=iTFcjiI}8 zsdr_iUE6MFXQ$TV!r;^J9&iXZbC5C@)24khBsL0~zCav&m00tP040ITen#_F;=zPz z3=0I~CNAF5Ykm&!QlWiMDsv*`t?E&VXn%jhi^+?#*m_#f`&iJ&m{1y$yLgf%EX=@i z-*$ICcLckixV2up1=HHC$^D2PRyM(}DpvS;w!fZ{<{)J^)JRtzYteuS+m8Sd@B(DsBPcu&`S#O)tzxE%YaZ{?FxPibT@QLB z=*$phWf}$^jCeMbD`3$J{;sQ_XcQrvGQwLIVpdky57K-Omn^1eKu2*(fk{h&oGPJk zvJ_U{d-837dF!CQVONabjXc(QBCGBGJ{N2dOL4S;of1cW45CkO4&66O@8K#j+>Pvj z=Pk;w)H&1!Gf;u#l%$QFcmncj-PP#3HL0O&dp&;kYZ-c9UXd1#dz*TJ=s8d0rlh|U z%r}^T_xZ0j#QxR_s&|HYnSlFSax0^DxL*yw0!8eDo7YHU_F>`EZE-KRu=9@a(lf3N zlw6X>nv`^UpbLRoa*@Fy6IojnGCp4fwjBP5OK=ZegiJh7Ny*Mr68&X-ZU3|gaVU&& zMjEQ#w!~LsO01B(zfW7No^0q!95T>a0$?p53dbkI%sG-e*0L96 z48p=>Aiw9^1elo5T}82K0@V$c(T!qUXUAW z(6bl}Ot)UjiIRKTTwKI^eR+_!vMTGeuaGbm;v4OK;H9UR7B<~{zPr+!5`DGOwj`v- z^URaF@j&^oq>_~S_3pm$vy&ID3=N+KJ(EN(=<@aL6Z2XEiVodm%)tKgEcX2IB6lS=c26rgCOm z(2zuBy7C7st(n9rdp?H#Y2zIyox>^3>Zl4r8Iz;??%P0CPv>O#HM{5!8*~ifMia4l zdYBBO=jqk%1T5i)D#k~pA%Dq?{m3@wF@@3S=5G3dfR{JyWp1@S-i}b24;{_$t~YP5 zs1h~3g4SkY#4F~~fD5rX3*S%=XL_h!|&U-j*qm{@lH(88HnQC1v%$M)YMJ;maeN@(QxKxD!( z(Y^JLyaeI+i@LrB*+0hzYGh?A+jovi2VqcLTt91a)UAv!qWvwv&9O|ufzpAwZ6tI% zCqP&`P7Qoo7q4SnZZZ~K3{{^yo&Yl&bGT#C_^< z8TrLmHdwoTW>&zs)%6DP8#Ph%tHHGzg*&VdGO`Rjpu0gwB(>E+3fjha34BCiif3W2 z%$nZoRW^i9w9vu0(42P#;>Os;p&!JKP<34YoeoU5)CL5^N3 zmv%1OMQW_8RMO;pAdrMJo0F3&SA{Z~A4U;MW2)l^4w1}Ue7@@U?ohyJc(+rG2SO)8 zRbC}0cbOwTqDoo`%NM@_Ss&djJS=D}qDo;$J3FcnH@YU#vn(F^fiFP<)!Q?U>%NGh z2iK43+}<<~Hj1%2L+wj*1WE{f5)20hAc#CSTvOJRYC!#fK=2yKxwL6X_wN6W4Z1^{$Y95NI zYKm2*bX!{3v9Nh*F>cU7TV{wtpUS8`U=Gji(bxn`9Z7wRwYh93P`0eBgA>G>q40$| zo9Q%w0EWNe@y5-eJ01mVM<;7*W?BYc*su6Q;VESJ-FC!=R&UKal_^$sPIgg6$#uVb zDK`U>ju6`1Yj_wH(AJEYt)g5|9>qiwae~!9SISBO2FA^1@*MQlkR_rQVT45f;mdG^ zm`dvaH7VL~it{?(OZEaE*;?l5d~N~z0{-Tg&&KiQ99BPYweNaTFw>X$Fk9Nb7sa_j zE*A519px`Bge)7G~ zYQmlKM}&jmPZGGu@T)Ud!W)8o5m{U13d4oj`s! z(X#5h;P=LJhoPcw|E=~*FCp(8bz|9^Rl zOF#8H>s%$(*VA5{ol5rqhP_(n53LW4DP!0`&wMMV-Jx-bxriC9)LlJ3v07;*Xmo7| z=<8stu<6S;aP_my_;LmvNZhd^r&)XY3M4@QdeAj1eUqAIj*dhQ&IZQ*Wce2r*>P*x<^|YqA9En^q zm|9os=emNz?CK((Iv3YRimdMVL*~kz9T@xZ;fA<2Sf!bohqqeH;OvwB^~nikik0}3 zb{FMLclLiKq!Id8RO$bfS@oEqP}o8Dz?viD#Y*jiu6=+{l`d6uGn6_q@Vnj{y%{S< z3K8`Y3#i`yweJg)qanWNfH*l6O>3;>S9mVhy~sG#)Q#K!?c299c%=@0e8Vx$l&@cJ zf`>X(d;JRcLwH@w=}*1BFF4kJ8Vt^Lv&oiBd9DHMP(5Q9duNvvmTCprzIo6{?DnXs zv=fln$Ag1Q-zTS7`koZMgv5X@){c66`~e+$FoMbo(Wk|G{J9jo1|lbp(iB(R4twN{ zZ1mnqbt=8SeycN#^-$`vc@sf0#DrXsv7uIeXl{0|DHr*VSZ?J411Ps(0QV$Z&K`@e z-E?2I1G*XU|HaopJKZnmL1}4ef*q}`TL40xtn1AoVmge%eyNiu?B~fukQ|NYj`gD`O@aE z8@;}!?ufSi{$m5_MX$KP+QC_c9Ir8g!-^WML2=p;Q8^0G%)l_75-d!wZu|v!3`vWS zU`IzQk9w#0}Et}zRM@>&^C(eC7!3!u8CaLxG#?{zZGxX}QAeGDwE$c&BH+iab0%ze9% zLP6Xwq^^5mFKcb-x_JaFS%VD#5o1@PCg&#qaid5Yoltq=*DoBR7^y^OIXOAsr~Nc% zWPT~B>9H}Wt9%swKtipv`&Eau!8c$pZ0ny)o4qa&8XB6>pyS4Tm(TjjNb1~c-pcn} zxSetQqU;ls_WKnZ6*V>Lpbn?Xc3!ySiJy<^>gpuo6?9m;lMN?}Ih-;YE;+7%{yhQLjGK#nk$eLk;*M*2^_Nb$v;E|gS4ro6g9{z=+ z0!1=8I{Z#55?W(gXiRhNhMl)sFHZV~38{~R!7PKnpusN(6YGm?CJB)`MN0oY7ed@0 z3e6vFkN)t!l~FF>%mFeYEMR8S)rYz2E;hvs(nmPH#zU86ZGAn<)yBjG3b=d&|M^0o z%bOb;)zTAuJvnGzus?Qwl*8(i zTWgJWLkWvvh{lmm0Yzp*s`S>&t2LHPiJSQ;D6shR z#)oE%_xC-x%x92j1Mol`1Y qrX`FikNL+mK~0L|5dssm3Bk}4zwF(i06($BCC}3*o*3D9HLXa|$8tT9sxJix>XgXP}d-gB7 zM_)A#cW4;2bg7d%R{78%n#cY4@xv47)x83WcMJ3LA-qkRp8=}OQawzjG4$bV75^W& z1T43qjK~LKB_#AGha5&As&2vf@FZJZU0t4dHxn_8iOES!fTMVP^yG^W%Wmb$NJ_$< z8^T8#Yc${CotT)&uVA2{fCz#|PnAPq^+36`;B`C3K|w`bMS<^@KHL)F$oMWZ#xl^W znCfX`Vrf-WX*gAzr;iJZwXqLBPh|hTS>maEzqwgxzU(l<>GS|fvsBjU!85=!7!HK7 zU!$iNv$;24V|Cz5&_X~q^^;9)30~Chw!SLyuhgX*=6GFYXLuPIm5+YEO|JFD-z^~T z$IMcX^i%QjbhYL^*YPFF3fa#FE4|}HR9U(ts3^w*QYj!GY$>YrY`bz-VA53+O6n^q zL1WEX!dSF~yMshlGC!OM98)T84gE$qAU2d#k6GJ@8)s|$xTa&boec40;NK#G>-%Sg z-_2eC#w0Sz45H&Yljx{WNnt0LYhBm3+9EA2$ft4h^gL8mY~n0B8k4R&>=#l2@zCeC zK+g*yg~`E`=gkDn$EbXdJ(co0hJQ3tV3cUUUZP1O5ojqKeF`AzPJh=0Np7{` zqPa@=AO9#7<$0_#9RXXPueIf`ww6gPRqOZJRPUcJRNz}oWg}KklkqxIR1jm0UH~fj zciJqQ9&*nuNY@jMmUYw+tG0g)W&7=y?=L;?1L+*5Gzk_t5frn)+F(X9??XyYPfsJj zP*nvf$`vxq>k;w0mNiC)1qTPv#HQ-#3|qUAu^U00x1X>co}2_}+`hfO1eqnAzte2A zwY7zZheIso-*f}%2AS*JgapdF`i2IHFJE%x3|#zLqzJnpf$vOBk5qQEkS;U!R1FIc zA9UfSYuvjTwdncBZW+F%@!3xUy_0VizYlb`+N@tKtO7oby4d_sRhggw*pDVYo@7?c zHy-6Ls^@kN;MEs?B&O@07bJX^=kl`hS55vrc}8(f9?q+d8Zl3AhQw<|cJqLSTbkd@ z%+1w{!yi6Wh&R>#spicN1ZMDfDl=YQle@0k%V++~ttcO;+07B8q5Xv|JWDZF3s7P> zc2tL?PnRG|?X@Gn12iYowgK|_$)W%=^Vwxw%;6;XufKACff&`yhMAZLpMGe@`_f-si$(-chzO( z)jl4)fgBT?Qk?=sztahON9Pb4L1W+c7uxJFwm8F?82fV!3=o{>mChsQ428PYJu8oZ%Y34JOhQ{y+9CJnbqP2fNui6%cX%|>jk;FQ%&qL83*w* z{9f+2zbOC!sHH{=S7=tMq$GBm0PK-Ygl>QO~b_9p`_2or?=1lade>wqPV`K8>)sXds z4q5C6F?$KMleZ~XCob%>rJW^H!v0J@4V?p!a3+Q~yu5~giBf&sIZ3=1= za4W}bys3dhFo|VQ1&^Db<{%XjY>zN(39|ZHS#K90Y9fos_|0b9!8k$;?f!R8Mnru% zBTa-eIj75D#Ps{roo+8}N-DT-i@-WJ@Jtv*1X)eU&$Yb90s2lottza*i4L$#h-MuEc?~JrsDV>xfxawdl?aC$#@QMQlMQf z*)wT!zu?wZUfD#sL3rk>smh|E9Ls7O!+JBs?&o7B10=bm+(zCTljz#e`IyeHz6do2 zT{`UxYOyeB&w3u~ZgbC0r@uLTAGgDdl({!b?N%ozW74(;p=4iInr!MUr^&QS&;b53 zz@8F=GMtI41J1?U$@K1J8;g1vAB zh4PNXwbMvqk7tvpwg0bE|4utRCw~k3o+5*2-=z6fgXQMe^!l*YpCFj#iGS8|HiYq; zj9y@4^*doEv@j^`ftxl!<1q}x%jERt?D5gSP?v|pYuu9ZH`Si!W{S)pCrb~MUsn|X z+R@SR+8=&nqm#0!`)kBsg6?joTGLgAF@5zq8R02zRLr7w&@9obt2Ij4IyLqap$NE^ z=DX6t!D)T8Vuz}%bnGa_&%KzFWPEhW>n1qef*AWqumK_#@*Xqt%o#N60)|brD1cqV zzq3k-2PmVNSxiTl3hItV{%=)VB%J!qUKS>o9PPD9jq`;H;__(@RYUqdCCsv%)AWkj z5Y%~`H2}s4w*w8dwT4~Bk_tFp@5x?CR=}-vFQc2cR%b0L>C8hzL78E%-0SI|bjLgG zY;|0Kx(5JQ0Rs<@&it1cFqY1+z)*31q2+7h;=xJ1Wt7bfg4HgT{I&9x94%D}p@#k{ zkkulw*Ev|p@FL>C{uV2BA1R(aDLC%p=mSgJ+f>O1EIeBs55jaiS9}3^(nG3~DWt+L zC!M+M#5H^wwA3>o%J8R*WRs&3dn?E7ns6G>c<3|H%*v#Z{cYtrRppg!nzx%r3q;Xj z)Sm*jOd>TUIzCLyJ(EZY@NMkVAHy z^ZPWz>B)QTNT=sYzL{n#+mV2ZPJo03g@dXWFPr!9!ZhN+{w5`fqVwVl&GG$e z1T&u)``roqX%uU3wqYSrrZARa0IA9Keue}s*v`uaRj^#3 zgmNmol3#UI;yB)MS&D{^U|0BR=xN=`X*}{HAJ`d+9 zg)6cUa8T3Yn;O@mk$4)ZtBGN=yKkd7vx?6HO>I;k(_575Bbjq*bg^qpV&qOrQj@s*VMtNu% ze&7UOt(pq4o64;3SWl8}=vJI?#BmAsmJ{#@mPE3@h!$<=~;=Ql@jEc&7J^;AGXd2#0b1B(O}QqR{0 zivGp;$#OiNibS>SpPIDVe|I4BRaaOpKhN_K%#0$v`d01{`6RwTQf;n|W3AMwoo|+e zg|^9MhhNmggJGXqphomn4Pt~6yu{&8LcPae!et4C@$Wl~Y_ND$KISKJu?c*A7Ggl0 zM>~a|j)A|Q`;i2y|NGgVRdxJJpQuf!w|9)>TWSqf4~47H0q0-(<(~CQBpfJ~fZmYJ z-*|`0T+29toXeJ%YL7}RnO|R!He;{R;`4c4QQMt0*BGO#oVr-2AXqZ!t}HU{+sn(pNby-_xI+c#rqpGdW$n{|P8%mUH+d8GZuluFA=kd0 z0LvtYfsSp6Tp&Br>)*8aT2|Im$?P_;~r_B%0>$XyD6_DI63k`exw-TX9 zzrIG6PsmcjQJWP3ST;|)$HkOw!x2zp3u(&yN%sd*4KEZ;tbf0W?YClj883#zZUqy` zDAxdrWYB4Rac4u&4?Q_~8*h5CUw77pcqv2)kD!{`TK{J14DEPZodsP*^uayT-6LCD zkt`waBT}xl#4@l75uF(|RtdUU%C%Csk(ZT@NI43&I{uM3lW+Ik7oJdM)A zwyRw<8-NWt(V)PRP)aN~ZuQ-=mPKc(Z7SPlOM5E7kw{@(^BNdp@$^-9p6}aS4#p@P zU4}AtDd1K(tcXnmc-uE^YTWMRLFjO2zX`VD60XSoAC1`yUy~Ws_EMeN`J3ftvv`ZY zFZlf^g@;R%6MWnXy4I&B%YNKegnC$WL1$!QGG^-Dn*z#){>8p|BP6v=M)Z+bzi%$4 z?mr)~xzn1iELl3<(9>V-MIt!L)!ZC8{kWF9|Ng~e=c}=ouwho3>J)_mNKaRhiHGH| zGp+jYs6TPsxxH`+;l{vB3Q>mjeJo4mYe_<2GoVqx>t`O-+t4ADh1GuaaQ`&a1iAQ| zg1MWf2&Y6c-Lk#-=I!47jLhX|Uu;SetVJN;0i`Cna6Q*Np*R zIU2xE?{t^5T>g}Ia_|5%>bpB&sRp%gj*c#Ow0*gq^EOiwm{Vn@FU_kJIqDQ!RD8?^ ze)Dn0iUQ7j`trfg_g(${!um9C!pV_{Hx4F+SA(0W#6!Vw?@>Gs;%o6r=*tGVMh zT~#VJ^Oe-xSbW9Y-k>nFovvEt;^fqy&Sd`OX(GDH0etkay9onfz0KMW4s#{HzD{60 zpN)?_^Gufc2tWYOmq$R@@4B#jsZtCpFBo}wc_UL(=r_lgPxhAF-+p}{AS4X@>;Frw=UDlb1(PG7_PY z{&ke1X&`p7(PiFd^ZM+fNaiTi$=n${04zVNbvaO!?f<8&EY&1M&ld9g+}qarC30bX zR78>ot`U4Le*!+gVYOTH6q29^U8qpTCR{=DE{k8l3WI!Djg9oBm9jtV_>6jN$ZKWr z+AE@5>2KW}G}~q)?98Ez-Cb;w-|pmlgm-lbedw@RV!eE|p4PHMnoKY|{_Z6Fc-2?! zjCyl&vJ-6nT*I~;bJv681;>nxji<&b7C_u`<#2rtmYEmwQns|Q((jRmUGCS$_?U{0 zUYlaS=?X#zc{gfG_}|~$ z8D#j>9!1JMc^)D{b^*C@Vxo`F9^*#JFiRY`yG`WT;GK5=0@o1`cnBERFit$CT&-kX z9UXlBg4vY0feE$cP=QkxMn?SA86ZWiDG$j%+n|K)^R3LsTrxaWi?`IzG-hd|+`kIU zF>9+^^3yalM`Ne<4k*jZWOSx|R#zySTeZ$nw#@BWb7SB{kW{;bsG;3=T)H}%xMC0f zh@-nDtvN{!)uZM;A0CeH>|EN}MpNv62NEBUluu8Ooe8Bx)K&Aa`xS>)kJ>tgs`7BP zXCSTF9^1o@Xtcnw>g7vf@$^(w8Z&9$m~Ve1gK+3p+*elj0fvST~DH+)oW&(e)i8~ZuTQfHB{EhjiH z^-F33^BipM6Oeb3IMGo0sIIS%sxvzc$`u;_7H`Ed?@7#SU}(FO{)s5&SC(C7xGWMt z#u75*nj#}1K`o79!{4u0XtEJTyaALf{;Fh0!tQ6}QCgOL0|SE{A9a@Mo;PoH9TBHJ zf}`hkdmMW)Ntynep)>_W<^)e{e1j7}#UUf_q_aK#iRb8aFXM=D4AA;}dqYNsHotWV z#stlIgcp!o9^49Bvv0RxM*e`7yF~Flwad_0A_LT+#cE!J^pdivUW)FrGk)(-<@VZ* zrAOcg=NxcU+j~xkK#<=ZAxmGijnp4{YlFm^tr<4cQ;|%sydEtc$UJK_9S9<)$F!V8 zWIyfGis73NVcx#v)5Do~!||#&_Wyps{v%hzUTJ#_FEYjnt;8ubpkqJ;@GZ-5O(Rtc6I7mLo67dz5BA6q^k;R zDM!7`%u+y$yYQi^EMaMqlxVymxA-k()AVXH%a=x_qUr{0k@DqVu#$;-<~LYz{4N9h z7w&{loo|V8V`(aOs2__g;=2z<02))! z`7Mp>d%2pMOBNLd5fPH&qhmb?oW!{XX_S(Fx{c?TjZw%m)aiAz7px5I<3v&Z8S!CE zITf4Ojz3`h)YtMeS-H(O_A-Ce>YO%80@}aNtZs%Y({}fIUe!;z9dvj}&%6}B7f6mv z(IDHOz(4p@5lNr+V6uJh6&J)iR_PSGxDBR)+O5EB>Ch-#0bT37vb$xbWTof!>{VFbf(5Cr3=C( z8!$w-P$QbNHtj zw@&@@%y2YiDf2lIK3gVl-Q3v?$%`@bng^3cBzRpan#5saSoy&b(({K%DqV^+9T z`Kp0mcB17=*?7{~7AnwFjOFqkK6I8BwzVE}<+(G0fC!YVZ-$!8#+qrrO@;D0W<>n6 z#CvHejLgk~BUf}ta5WsToT`Nm&QLJYzUmkR-I48Gv8F| zgR0jpSd=iVQ!mEH_7EX=Zd8kAMdc0!bQjy2Mi!M|9<{V&tc&OpLY&C6Yu*ZTH&H=z6G95b8XtG@VNpD0Ru ze_gfMd!4eFa?W1z(xMTmRwC*dCERxnezRd58gyj(52<;k{rg!Lc`Yby99f33Pi=Xs@g*%4Uf z)jv8YI8(~Oh5DTDu-WbTC&SVaSV@0VFPq733`Kxbky!SkRL|U zu<5zgQ+zQM`_BDp%QMv>)!G~z&HLiu6c7X2q?09>zx+$U2Ix7ylKHwmjL7pL=1>2b zi7s2*O+U&3JIHx0Sdm9ej2B8Fs-`Pq&9-L0Z+kw5H9Xq-U`6TD=EyP(2PkTMV65r; zGeZLWtMm_w1_6jDs0@#j0N|q?b;;=;dDDNM7-@0_mn6%q12{BQ3)}oWMDriGdU;YD zs5EduNuxnw+kQ8w`)wRd0IZbvkRqyhQQpm{lP`u{4h{I)rhq=^U101Rs!( z&)U%utR*(~XMEg1oAo>tgwM)d-*uTTblJ!?9mF2EJ9xpMscy2nn~_AZpgwomK?0SH z{$9~)Im<5Kz21$F6oM8YDkcee`^lT&k8tJkY`pxP^KnRGc{}>BMaW7mdygPFgCv7p zS>M7km+aN5#HLif-If<5!G!>s8n~2#iU%r6iFJ4}xazX$Y6uzH(8?KI)*qDi#+&Yq z5v9o7Uv~>K-P)Utw&x_;L%Bl{qw1mZh20SNYmk(zmN`#R3QhREFqTqu=@m#h4~&f= z>36sfNuUeSjPe(?a}tmhweqm;>bzi5O9cSjh1tIe4p_^my5RvVNgZ__+jN~*n6diA z9|Sit*6RRNNkA9fx;*vY9?kbTO{8;3D4MX#fJj>AeRd+~d+ipdCeevLA+&6GGkqAb zdpz%YFhC*Y$7!&bgld5?I|Vnx?d8`lb~kh5sloG7ca&j`U?Z7RA(q-NOX3>gJe>72 zPMrXyPus?U8wRNgSb5&~Vt@TerWR)r|uqGZj|?A|G;` z-k#jxp0lC(!YGH4M!sb0r;A@5VE`<9@c+H|O;7!Gesw2?(t)Dw!xQ-T=CKFUqEyY$ z0lmn`RB_HD^)q^B+q*(*dWTWKI7EcD<;fHU-}~vH<)iSe&#CN2P|7w_-Q}aW-hm%! zWprh6c8;vRXi5A828p7;8cm8iC{32ojRJ~M-x@|n-p|*!_rqP6_g(+<-H9<>C2RDU z60%twnGn%f>mcx5ozFw)4GwAWs*wLmFC>C}cuLH22HjSRjN_h+#el-K@7~K*f zDI0nY%boOAS|i|=C$pjuJQOZ~9≷ZEAMeI_w1x56>PzF&(Ye%b5m}Vy~rWu`?wt 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

    }+J3GW5Z|D4n2{Iw_PNhZco zmxs!YAY9YqgCHIr9>?b)YQVdbENsaNNF*|~K6BoX-jOo?_1Vt!BM+WO>?rgvi8Xpn zQ%h?lE5QbC*5KC%>mVQhV%hH*r*1qGX+SYF@bsk+bWY94c&A23Pyaz7`0rmPbL*#? z1Z6-9A`^1(CpL}vf_y19$dcb2J7mQlSdm>i{2oVJ5AYKGwkNAwLHh_Ed#tW~tsmbI z-oOS)^T7NBNg$GYs^EDNbf2gZrtQIRR7TR($vvHFGTGBBh18l(*YJVE9?xOJ{5>Dv zMB8aor_>8}TQ%fhvCkh$gcR-tFl_U~+r-6n4NWYDSSoS1JGNF$f^VBdnT5&d(eC8h z^Mk{G!6G@AzGXmGo{j~kC*Yv;We$JRRmp~Vts-L$v=qzwN==|KXJ&EcIZ{W4to(!* zG&Q!ti*T0smUEO}1cB>V;;rFZatjZW+KpQK{fRIAL7Rd8(FCGFj~L(-FtmUFhZ5Vj z-N~|5tzPg>cZy{8Rlf4z%O0PCVAe*o>kmw4``fmhfMoeB#rYY0K<00@Q`-A%E(KpT z3u}F)>Ts-Q47$(^f93m0_8&I)V^NCd+oVedJ3iqhGO=#?!_W& z&+KKZ``v`L?ebGB0>m}NM(zQX)CfS$?O~q!-SnV)CryB;?;zGU0L@_|EBzz-`N_Bl+)JHUTM%dyBfOdGT?s-Uvkk^!2o=%iZ8U zT6o#WT9y-d{z(=`VYLxDWuF>?Deen6ZdB*U7NB4AVp$bxN3!HCQkjd`-jm6axTJz21}=B z&HNSj4>chL@gu>7SzB{aX;a2Fo>{&-PyevM$Bta~VqrT$4TX`%vC3=?v&m;673M4P z{A~0Q1tk%loh%T@hbnb}Zv|4frpwC)&b6-RsiBR4b_)eGtA2%9g$4a@@L}Z;@cbJB zG$jWY-b7co)b_-G5E6ZOucgH`NLU6J7ASwNSA3`qY6iytwKz3HgUzN1A@1Utfo`EM z+_v8ku#i<4;CJuFt#}u~>((MglubVS0%;te4 z!OTneE+N|mA!9Q${}SZJ`wQ*<6j3Ts=)UHC{$|$)g@o;5!7yiYr$J}mr!2P zDdIY%3}lq5xpX+%Jz-%M9MGR+O)V0u&&o*4jt!#5a8)k_qf;W=R%~x#%T*xKFRbND zMXZlAKOb`5dOG9FQnB5?C zT%di-FegIc3nz0r_PqQ~Ox-Y3ZC(KMoitk?AoF08miJ_aw zq)jhMq5wp=W6v)fNP@4+wO?1788`R!>mY@AbWdU%8gaEuLalK6D5Vc4xzSgkm}Pc! zw1oPOC1TC^Q}*{qphfBgRn2lTb`%Od`TE^tXRSk<o zrZkAV@91Xc^^l)8eI|(wZzl)mn7FY-kE-Ml4H~*(es+*vWo0qvD}oIMOgxznA6Y4X zr@X&ixM3^FAc2jAwn9cUTCyUCs(aN8?iVBjX z8>oUh)ujSMB^wDVxEYZq%N8i?sR(}^%ozbO=_PwxUvxi{P*OOx+v)z2dX9%RIn~CF7MvI_dQq$!lpt( z6{w2J!%;)EX#tG7eq;m$13>zqpu*vK3oguW42}y4`nB}T7;g<^;I@7*%0nu<92OiJ zOIz3q2K|x@M?f`SQBg9~4%<(=y<0UV0vK(RFLfZ4_fFo94y;eoRnDx6Ra`vPTNeU; z2H_+K(#)*e3=R&%^PO5avoBtw8d>HSv0Ka@KK_Z2pNjv@cyjB~xDnkVBob49<`H zvG^w{$y7A7P~no~O7?sUUl#ps0S|#pCbJ)*NBw_aK1ml3uQh|*?A!=9Y~`E34$3d* z65{3%oB*IM)B@6<}b2MrrsxG5k2xE_k0iPJEbBy_PrC+pAO#Es2I{ZL* zi9LT8Uq~ne-ShhuhIg(dpU?&sHT`p|ncJbC-jF&DNMsdJ$6L>jRS&El0Rrmssv?zt z%X0Y*AcbV#2+{d>*-;4icQ*)JsrK*jD>J8+nc*Fzg{0Bnhyw8e`#ti3F}Y@{4K^N`pWEU?6)Va&mT#CHu@+aD&GsecSR{-yG@W#{X#r z0KffYIG=+a@3)wsMj>;=*T*MY>5(gcf++pU%E~G=0K8lM8Eh?AP4;-lW6w z3QfaTq4_y?2-by=kIDOSsI`29AvY#cOHD0DV}Brm*IQheL_IU6erH<{8MpiU$$l_2 zh6nO-1|7>7^{*$86(a0|0;K27I82KEj&=I;3{Q5=LZHAs^a1`$Toqpk6LX80ov#|S zKQq+H^!I@9sY~Gf&?BMe{_cho=kC!?qx$-Ufj6(WYw2b5(B#(Y=C_pN;gZNTHOq>e zj?=o7E)Uwq+nJ7vh~drWH`#G;v*A5V{&7jD^4SFGX@80MoT`G7YJB6L4X5Up zf+RXx$-WiH6H2uyPr6YLjl=O>7I&TIrI!eDrO4%s!J+6_M6)Mh`6kB?ksWNgLb+8; zZUJI-@5JucZQ~->Ph!#pPkC%6m!xiRJw5L}Nq+#4)}zkve6*UApa-PDf%T%~>{I`a z<4kh3Zf)@(kbV81U5q{){G0DAr!6x3&rC-zG*$T?KZ+j~CFoXv2F$Wp~|s@TxLNKgCe!ByB~M!JYv z*s^)!sh5|5^H~}}o|dQ;7^w<*JHPe5#B~!lCLVY5tuSs zg@{)@1bo_)aGM=MnM-Jdu;B$Y(`vJ9(k_}->yLpQVQa^fEu{;*utvtItP!16hZVc( zqYn1~~C+Q zx?_-#jCu9^0<4VAFjD`eB?Glx$CY>nx!+$wR|=(|^WOJQ;IT5CE@`6YQGMJ=4%%@& zTHawugpmx>ZuqF_Jv~A|6NodsuB?f}f;0VV676q?*jo>H`24BP_NfU1s&02(D5Reu z>w)lvr(89>fade&X^hdhuPp#F^61hKC$z{ng-B&3-CnIA|D2@)LH|$=9=@M$J$6-3 z5&1m*DW*!y2EJnbSj}@$2%|g0tJLa_bpKvhhyx!P)>*s$v#S^V82>nWAUp}zh^J$J z48qUdL4DFYw5MA(FxgZ;Btpgy)82zScU#*NjaGA9`SoseEEud`Uhi|5Iwtr652Nv# zGuT@^U+vJaP*pv1blMcK-cVQ22*)fT7prp7h4=M61i*aC_!YF3BagAe6Sqasw?Ik| zxh^|XyTLJ1!C6(_IH}_hPCMtYInbdKMKbO=kjO9Bou`IeTOAYt1sDQVZ)+?!x>6&1 zU{1*z*f*DAEeZ<@wl(*yAb5nz`(9r`xYgPc*1_A_8>SJG%kpSVU)(Ol9O)v`c6%RoB-#SA-$9U^8x9a z-&48a#&ko*?X3f!d(Y;{^iLQLF>(_v8n1dDR8YH+3W{A4~GiMKF5*h!OKn1Awec&B9-^+f23a?sLSQGgp01v|(5lkC zoL$0~gVQnatdFXfrXa%s4-ig_U-LJ8KWDBJ-#Ik`U-ET{cqMzju? z;aeJ}Pr@IM#ZSlWY`S0Xe$tj7b2MIWkbh6adiJ{5u0(!Qx|SbT5um<0@eEdcKH)yGjqrQp}7EJ4| zAhMu$!%Fse&5t&iAJU%OEp+G3f^Vku;UnG7;q?s$xDG|_Z=F1^&A}1bAi@;yW?^o- zD>ICDTI1l&%34v;E9_TZl04RYu;^waP*YnO{q{x3aSNgb%r8^bJO*)L%!rM(W(|d= zo(YSB!frPKm5zP*r?h&P!$+;Bf8{=bFNkgX6FJoih+eNn8@QhhOJ=TD@W)*_3xqZ0 zRzQ#5`Fagx7=9O3y$)z3@Aea4B-LV|pnO-HA{8~b*qa76H&xY`vu8_J@bK{Kc*wOU z+**)eG$3GOQ3|0@QBldJh)|RlItbUwW9k4@3WzYHAcUQrf7H_Sw>ER&1bwM#Tpz&w z4bg!{_*ochbKI!kmsgE27_Uf@^+LqVxa$Rbh}E)?T-UT*!2b4al<|FaZbC!7=<{rq zO}k)LCcmN%eT4hyZj_potE7bmjhJ{C2>H{epQ`HVIvGi%+wp75!3r;4EPXcen-vnq z{gEL2(o9rTw5HOt^(!ibf{7X9 zJF>MCAt4IDI@Rm3+G2fN@GCrjM{2CTUMY3H+zTaU?*y4q>`uZZ>S|eEA_t^f4-n#h zLu$RE=8+h0;P?Q#(0mTxNlw{Eto{c$0!nnlFkVgJCI^AafF-i)^XxLtniQH5G^S+} zv#_vMG=ezww%&JC(lsVfbwOnGGwNW^;!u93zZQUe?6(Zd3)*iaeadR`C&$HA<(?M5 zp_=4WhlGl$l@)kY zh0XV=t193N&@MTXEcidkuIiTvX=!Or@F zn*Km9>k$C|H~uRcPDuVY?tvz|w~rzoHOOAj8m_y~SzSg5IueiWia1@rq$ znH=IqYXC=xg?W<5p)sTCS(3InDJrwk5L^|iu;Oz`dlPqB(jr{B>v4R?jgCy6Q7`DV zAo6^EK}*BPzq9jWGp(fa`VZfodhaAPil|O6<0hP+W(YuS(o+0bM0l&DTLA<2Q29VI z>82B;04z&J5BRsOtx5 z3$@$fs&#PDA$n{M3E9?iwq)&c!|eS~-zeUqEOuaWbr9@HVnJADSRrLvXvjzApU~0K z^L~P!4;uf1UcWW~sjrZ{JhJ@NN(l*$iOHv~(2pDR>gt~09*n^T#i=Vk*ZTMf&=knN zoxj1mMS@AuR}`ts{%}OHDv?4i=vm5D+WLEo2kfMT<2>U4Pr(;rW?^f=PE&pe`aQrR zlxNg$vte_^e_}>)E2pyapR~L$b5JvY^w_0SujNIW^-64K$*!iPM5Cs0$t;;#V|)_# z(#*z+i)e-#w>)c9XC$@p*Z(25k_kVIDp$X!)l9|Or}X9Y`~1l9nIoR)oQnF~YfM2_ zZhy!x1P;>F;%{s={u>Ia$Pbh9D{0=Ohp9DN-8^KrK0LmlCIH68d``uqm4GgY&kgKYGsXBuG0}T6x0ej zO9GU^>m;XIXugou{ulyPUqA=iy){HuhV%YF~i^q%%gD2uF zp~~rYQ1;3(GMO5hz|Rh(UF@=0$tB<>m~xcBWk3xP(BVXQfrg%m{y>fF(N0LbYGnv3 zBrA7pZj7)1iuAazub)Ps%htEYpv~95>5Ok6u`}=|!Cp^)d+%4*eEAPQEq9@Bp&fT+ zW+fv0q@igqj@7nENpl}U81u+1xFH0`$kZxQmHndClB7Qh^285>12lpO@y1@B6uD@3oa4)R8)J6eNGa>*rKep9`_Ga0||Rv><#ryP7=Gj zJ3$*YaypV!wjV!!Y;(oL#1uR$yU#Y;US0+BnZtu=0Y)O#jP@czNG;;u z{5%DCDc>{}i*X1D_Z3bUo0Wc8i-6K6JV*P@Gf$^2i_Wjfk$p5#c;PX0y1aXI> z@njWGh?-*heT>qcl@==Cn|C-Nk`&A;teFG|=y1V-`C*CI7+erOs_2CuUSuyvG)8OOcZyp`Q^`Ec1)> z1$19V0(fZx5btf?{N4VMqNEi9!z?rP4b|j_9XCAu6#846oa~m9D_7FYhy3rGv350t z>)_GTmNoWjObf29|J(FJ$H#pBHaWQp+0g#ZK+eiWg zFe!&eAj$Lusj?*^Z3_NmUS#g7h(+Cn*^f!2OK4+7Viv3R%Q+>bx!Z!LUDyhTt(XQ!{ak#0HHZNIY8-9=M?0;Tjk<@(F)(#=n9l#aSDoK ztB)Ku_6}XbB1uP{acoce76;zDyZeQP^{JZ5hetoZj4+mu$Vni(<(LG04M$Er`Ty~k zw#eYJqeH)N<)Vxh*}b=Amq8FncwSen^!)@9kTLfuV|;on(@6bB!*RJ*xRm`6MZJ^- zGEC8I2g*pV{bf+LR%~pne1Pkz>=9YO5pCCZ1 z(0u|8ISC&^d|FN}3D1u{Mg|pM9yGWXJ~~)uiF@qEv(*EG;74i0)CJgiFXWlo#hA*G z?1VbR3DIeMFz+b^{CVKD*Dfeb^E}V9@Hnk1lo+RwhCc@iT+dH zXu}s}7i550#?oI@56X*cV1$4hjA6(9(>A;=dr>q|b?EMfzwSTWWW5&*wpyv^NtRrB z`LbGF1(=wb2Y}6Pa`Z}11LenngSit=|Jkm0wyW+(MOgUH8Rx$ynHUjfnBm;_RXH;! z$Af&xj<0dAPR8O;deB-rtHb|eR+>H3tbesdcPDb}QvJIw`LPoV()na)==;VWDK~@T zP9#CS6ZyT9}?5Tu7dK~n%bO<;xUch5sAd0R_+`g$ z@uhBINscKejx!$U=C#27%fMP}Yx(>dt|T_}N_2_0Z{PrUs`HNKbhxJ$Ke0dY3&%P2 zp4`5ZyH#AC5bGAxuQ!IN97F3aK6U6i2a7OHDQ}l7#KaU7{K0k@lo!tVWK(*|fqZMu zn|&|XSWOb!YCn+Sg-r77--n;azhNgEgM(Yb& ztz`Z2=4`ATw3xgVKKwL+vND&mzqBc6p^05ib6@%v zT}a5C^Fm=d(xYw;U7~&S9$kX1xmJ32$?$qIf3L%Lyj028+4tK(sD!gQuO3hiCOY$D z1a360mmDXyWB2QmD)sb|Bkt}#F)?C{38uCkipj~n7raMLA5#M3EBH7pw{q#}>4pQg zTa=DgNO&$|&fi?vf(;C~>eozotMhZv(!yu28`3ue@CErZo>E|9Y3FP-ioX}Ff8!}a@4qA!zwel3?? zcVjcXNDO{c=uc)*H{}v_eKhyQ&E}stUyu#Q2zTqSM}*%e>6fzL$c?#ynGgiI1#SGv zDMcAOT&BeKr@fyYU3}5Z3v;V<@x*fBrRR;`;==_&;gx&K#jfM9)v4rSiiRZjbU@ny z_Nq^EXJkO7;vsdgj5zl6x(5IpwZNiwVCLrVK6kbHHt!?dq|n-?O)0X-O3_$f{)%!L zx9IPGKIsFE@I`MF2BG4%$Aa21*sS%q)rdjy-wojh15a`6`2N~VSXvr%7ux0Y0;kw2 zQ(L6~OcapJH+HSv_`biLjR_b+Fk98yxsNCsy&yMpxS{;Kt5 z183e=1ZmM|eIFIh8jk9P^?eSq9?PW4w>MtjkG-W`z@QTqOX zfsK1btnUOS4)z7|_o*NKy`kvOw&dkP%VLK0xg%)n>(@WuC?;$142RT%LZ9TBho6r7 zSc9lt0H(79y_OzPFiCC&9-~#VD$66wwW4n3LGcfEA+!g-=zdk_j>_fa=e7gQ^+)yM z?77}HWg{@f7w>n^Nm3T?8{BX2(Q{!;TrS#)aDAMsEUQ`i zD&=4zXQM=H9nu^PI8Tqsm6g?UI2R8fIgzgqfvSuOul$6Bd`PEznv}fHQ=2l&X@{19 zs8&n6Wx5>!)SDWAU}9{6eX{^yzcWh0<1T`4p7Nb1)P+CE?h|i&vPNV^=^xj48q^=Udh%TeKKt#CA{zdPx+)lH#`*a^%ku7LDkJDNxLw;X zy;H)X9S$1B`lQ{;t3jek{Q}~H3%m)GVwLZh((n3!?f}|0WijOxRh0vxl4)?GiD~M( zS^l*nG@)t`)ygikwchg11tCfjccY@q3k?M%uF|kEa4RTf%x7>WbxP$6YP-Y^&m}1D zfyF7a&fCGsS|_Vk{eO#WsMwN<(sP07gl~f-wMD=o_Fki$2GU&61USZ=FeOI^zPL#t z4kowaKK)4+BFur(OBPp)5|2*U3btDuo>hbf&n;LRw1*r zMeOT1pUJ;*Pn)f=(vI}oM$BR$DF_OkfAK$npm+DazZy*acDvJ0(lUf5ZOFGsmo~do zaKX)UJSwjQXtJK%8|25xBQQzU0yJFgco>}$t%JvXl4Z=_+JsvBV2@|Coo&;EdIE* zy~yw}2U!{LMB?2JImDbl!R{nj0$s}s(>U0@Nph?0k;v+ev*J_?ix(mS-LZs}4`M00`r5ZIPx*Pu7d};jCc&V_$Wx3+MsOQ2>lv{En z;)r(AyvgNCI6p!woH9b#m=yIPES$TT*S(;A!V22)s8@oY2swuj~mu~hRNtt%8g6j)b8Gk_~qZk?;ub6JNz&Wez>vY zwsfixyrpdlg}zddvGaLXwC90%A9vBUwC*3JpUlpAC9r0hAFSz5?%nuiVKf6rzdi^@)ykM2Y5mO)VI_sV=6uevyS|m`#KK) z&bP{APk$FK3t6%*{LyrpaE^5<*=@yt`1Sw~tcXV?7g3Ws=mR-hI=2HNq!|aH!}?1f zXP!Sv)4iXAAG^9lkl-tO-Z}xz2>6oea3gy{-^hAnyvDV6Ihwa$=>UNmY-i{rQq^hs z(a&fahJG%ch@byQ`zdpv@UE?Rt(0WS29CPIV6@lVAVw>eU8;VX^kI ze;|)jnxhImv^Vsv;`^wd3G-%^w07Dnl~Tl8IddK7Ak<(0(85%o8 z`-W@4Q*yPIdv-v+7cvq8S=5)X>G7U7{X^|$`rGc%^iGDq6XA2AELv4d%SxhIBLfq* z+31JjeJi#Hj6T@OQDs&d&THxi?%C%`a+>^S1qFs4hp&>Pv+i%xvoZ*HGBY{Oj)tB< zj?$AhIc#hPIEN91SZ{G1b-nEWZOK(R5y_yttIo5>7KInl+Lp&d(Jx2Glen_E6;5g4 zv+rG&AiKQBf>hPJt}@YHdt_x~x8w;EvMiS*EU$18sUcuD#)nBnIjTHCnsgY2qe>#i zOrEAn&lCk-nJ3T8G}3vRNs`TF>5~4lC;Fe@!JKbyi}K@p<{h;ss~7+ud%9+e0#wg8I&Q!9AF#?a zUMx5!^^xl-i}P^;`n4XXorTh@LfS;#eynJJzZH4-;^I^+V zh_e^plS%?{I>cUZFT6L-p2}9Hwff)!D#$eoy-kR z#?NO0`P}aKt3PNYKT_VrAzO!v=#0CTJsnk9SZXz=#vAig5@)}ev#xSpb54=el^EV% z{mQSUw!BroT;2D#m2o+(^E-GeZ;oYZn}YenmiI)ao&AR=Hx4OH&}f>xACx5mNoiAU ziVTfz@o3CR52P$Sl-FnRBqIo93kAvj0Yk3a#*EXiYvQ0TcVVR39^2Y5YKOC3Y zmc`eKBO4(v5eeW5f_-*m{-^O8r;6bnZ`z#s#pJ?DxRi7m=BW+aDI~B9MmTOv|JzVBB0eR$N4SJ-2 zI=AzGr4g{>B>ah&qV?B?nhJatdZKlwnr{EvKty?DzxEQlVHjGiqf8~|?c4q#Hyyx0 zbaGOPPZL`gU*{9Gyq)#f@(sIqvrssG+%ncGTD#Nh^@{jjy@Oda>xOY=1l86ru|s4w zxuu(j!!GYgL>giP`z2!`;L-l|*wpx#y_#;NeXgu*anyB4s8L@0tmq$W8}eyiiKiRl z+qZvb)k>VFJmetEVnZ*whg&1Yi^C#;qQIUW9*w*A{0pAxvKdM&`f9!zv~~{Zf)URO z@%De}a(F%Jy0uXtB34Y5*5K*06?({@Zp0XFkDwW6@B!OPAiA;2f2rRYE4 z@|ODEbW^H>;~=l|c_7bHMWrHfueFKdHUe&{8lgqhR*KQlGN%@kj`uTM%Fx z(7QkRdZbh1NGmf`d}%AnVsAkglkW{dit7l8ivnlsR7qgZW)pwYqHi+OYpuOI zS1I%1_k^nYq|xmK6AQt_O-)g(VT+%=A*M~T3K7wS(ZAmxwk;lK=9D}ebDjmG%FPNo z=c5%hDxp=@xhTXqGMLp-^|QmDr!&{8Wi#7VR*Xjz?IKgY@(b>{*6#mTKv+FyG(_!X zzAcfS0x3?CrWWIT3pW>tm3YA=GZ;8um$!6S1Uk}%HM1Dxg#+mH6pFSTKrGYQ%q+Zo zNal^x)g{W73VMZ@D(R55(yhW9K6Kq0WAQB=8t+S|H)fCIK4hHC>e`QjdFTSS;dlb- z@MD?^P4`X2?PF%~L+bVTJa28qmFI`19jM!pq3`nd6(4(<5FBA)kDVlm$5a5>mb%Jf zRlv&ViNm_|+fr*>fA*3Lw1G?5xUq4`aBCL)c)OH_LoLn12#chjj;%bJl~H5|pAKHn z+~KA6;~VyzaAtNceKobv_vp;UlHcW-nK5rJMuQqDk7jq63|olxy~!)uDrTu5l?bTJ zaQx_OBvsqROWJ~%{XtN==d6bl@f)Q9)9wKt1qbV^ke6Aem$-fLJeE!UHV(7z zb?qMqJ6!6g|rU9Ua7}R~USGHilnH4@#qHwrw8wps=Ntzd`4_kMgya zU$wABt-iv-V-8j1HCoj{E>yyMi|VZ3&h+>7xWwYz{2Rn6I3q&|V^bYwQi;W4IPeIG zla%cS))$1wTkWyA;GM8?;N^2MWa0^x{z0NDCs4WnOr(;jTqR z2CYdDpJhgvxQ&r?D_AW~DXCkp7^74SgicZ*M!La-0IBA!VY8$Ne7&iM4kwVK83LFruegaX?a9b(>h zT~(zSd4sUk_%J_pxaMpZ9I(>oixsiF_*X|$Iau4%7PhKvcYlt&oi_9J`yT*Vr0~@w z=zf;1u=n=#WG4`^HdB{;xm);KbmX4^cy)UYmfLu?=)22;rAHg#zE;$wz4f1R=SqlC z^^cF&GB>o%4+hN{O(~RkcovFUGb-3f6{C~3GlkLVluS(2y8po4q-N9k-Si$BxU2n}K@!p!T4ENN0q^pO^Lw zbd)~Qx@(?G+&JO))O~#*^vh76oG{XM7wD|5eepL3MY5y4mAfla8m@_smC!-{S=?H~ zhi*N!AZUj^>7AHY!f;QQvteeH+(O{$C1p@a<8c6@QwDD?2Wms(VZf$~Xb}yWz8ep7 z9`iE5$?c6;5vUS?PD)AVR#fzG34egD`7f=|=OE1%hoJ0v@$~ye7546mgQroUsp-ac zHkeiOZ7bT^82NZ<=}!0MiHQ^KSrdCK#4}gsU^eeC&{G(lYfJf0j^m52@a}f&po2p& z(E+PA)9~wm?mZ?|@?0S5g-c?E>we<{qboxnw?rkuSL5Tg?_gi;s$ zBTlfY9sT2ztfNHV4!;i|S>E~&KP?U(>4VG}2=cEq6o0$};_my_4-M?h=sbQfk3YZr zXi7#d#e7$$X7uKJMF37r2C>Bkwz6_jHxz_at&a@fjwd;XIYvhP6RvQy$cWLkYD7cB zzH_Os7*KDFTzeVi75~1hC=-XmsMo`4R@iR(i16XDoiE-O#_JB^n`aK)uG`E5jxPOr z;k(DbnDb&!Du$~(aY1HY4f8WOiYIBTYPoicJjS3-A{7V_r~#-)#b@6S?tlyWYUb)i z87)44CjY+H;;(?;#-d7^K|l@|}Sjd_F}oiKO0 zt|`*gpWzL57Dq=-!&>eN>@N{m?0NRSviyWP1Vfo%(-Mc6?>LEXCmy|aFvJ?VuOesu|mj>mnhO-n;# z;#W6NXAxj`)cv#!ZHw}Vkebgq1gf<4pSKBT*9U)Gj@NV9IX|sp?8!_Abv<}uVEnuU zQL93WK|ko0V{iZ57=L(}xRT7lgY)LZZ}RL{P&*_gUVmOG9c^swU@|k|EF0%tcs#lDj8YLZ zJc}p^v1Ow7mB`_YE-O1}wSpw)#riq4pVw3?=#=>uQ|t2|u|FNcu3xKdtmZFMxSyN*5q>b{tC2B1XyA4* z8@N6wty@gwHrr##G%ues@vN%BrQ)=_qGQbc&IKPdzS~j$)%CST0!j^B-9J-=__65K z6>7rJ?-@!oA-F3gii)n^HRsVuOC%w|hBd1@GE-bpX13&>7jQLWkw#?)bN}?ivLsC}*Plxiz(YK{Os7CCX;zGEU>$%lV{^J>u!eys9#122ox!|8(TlfM9l? zw4_lrW6s|sLYxn%l&%FMYCQ=7%&phQzaJ*Q#BHndHu)iU34Pl|(g{M-MihbO?-?aJ zBidE(i&pjp1Zn2G?S)RtqDYR0VG?7Ui717)6}#!|@7#t{UJI`~%F6!kX2ADuT5`eQ z#%hC4r)&`wDthdeUu}SBL+QEv z>V4n;X$9QsoUAOEhl$Vw)`U(yQke=)?;=7L}>lAX(DG?x|F&3Zi2pC^4#V*~j ztv=7e#4U~=P;tGB?|6YLZ-h{*uR%h9hZ;f>JYc%{ibS(}JfG!9l+}wsYlrE ziQQj>^Js*5+)S!3O*2FSG^c}UL#M*m)EfU3Vwr1U=2K$Z$PS7H$_ELDHJ9y7K#y1T z*wM$)oD9#^GFz{q9!6J_sV`FTY>uF}i>vd!(nvwWrO>J}dVoV~3EY@T`2+`=d?ofj0XCKFyR4VH>NC+-_&|4YS`Pgt)R z{{q7-D=By(aN#QRi1^zy%c9$_O+)>Ak-3^Xd5t-ug$SJj=vtb=j38HsKGsg=p^QN^ zl*xl|jEiUB-)my00RhUF`?<#o%em(YCD>}rr8H$xxB!GV4DY6C`04qJpSac3yKqAp z2=jt;)@X&d=K^60B$3OV%k{#zR|+m(A?6KPc9*7W@lJ-i8^NVKQKmK~L)5n~H``pVpEX}Dx`|nKV5@z(b*6fWNkT2L z1{*3^5iB5BB(g<$=&$3!Rwi5Z=%Us*-pktmZe;s3 z0xlk_YE5ziz**Y-{fhnNEoft8)o^>V#9~USEn|%eh$w|L>@4;>!cy z4=k{n3!)G^TkE>zq|Zcg3NE>fu9Fd7;LbJ*3PM9d1N_aqvt`Rc2U&jWSA87D#n_~x zjdQ1T>TW@i1^j!a=n=TX#(iff8$9PuLD{X!3HOC#BHY{3e zEqBm0<ccQuE_TU&jS%Ek%#W^*AtC$pPcP_ zX&K$m@je|Ju`jrfb{sgYCKL&~-a8RLTxOsbz?Un%vroc`zl{jGlsxeqSaUznB;N2^ zHf=zBq_Xy{w2UJrs7YF5u$nA7HR{zIX|sWnBoMsMEvSC{cqb+G`c8e+50TRI%9p(9 zVW(w;PA@sG|crGPLE}P_E{vJC9MX!I)u$Kzorr12Qc#t7R-eljpYvTDOiOd+UTppq(G$?B7 z^^mO((dLZT7uiIkh9C&T1w9fH{6C`JF}$ueY8P#6Cyg4bY0#jtt;V)(J2N($G-#~G zwrw}IjTIYbz2Dy7KF^Q!e_ivztue-}5fUUZYCtE3Z*FpFO`F{V*}QZKrl{};B5`3P zWCcf2w=owRmqlZETrA;4#pLF`-_QuXW@<@3%oCEsM&OOZzeAestA@BBNxt9iZsdWT zEmo|_INwF|M2MRLAIui~I)vjuH{in^MbbHODjyI%65(O3i$&6Fw-1Atuldi|3l6TL+t$PpT(Ov%go1#^nS3CK$plJ3` zRL_@~q|x3)f2p1QJ;Ng){>>P=-w5OH&xGw{ZS3Ju%-kC0Pql+~8+#&(xg@i|Unz$- z6sKX6Ja*%0Uv)hysDu$10k5lfZ@bPAJQ&9G{$Y>w!874+INN`$_fy%l5w%h}9P`mU zpZGf$Udv0A!nJ(~5^>%p+ptqzN|Q7nq=>(NqkEP7iG9Tq+#S^p*_m-TaG2eq7!Q(A zs)b)uHh&!|F2>7HU!{Hr3f%{_}k2mt{5Z%-g;K2XZf%cxH ze2M}q83O$Ozg#dNd#h<;1VSL`_F;D|I4 zGCf-V=<{&6wttfDyXjB;?E=pW?!Dt=lk}g=xurHoZ2_ok6OR1uhvC)o+|=cJ8c0Ms zA=J}8GkpfA%a?+8vbT5P2;?OfMRz;}4yFJ3N>G$N+~PZ}c_c!{@s{>K9ga2EhJ;AC zP361(!_}i4dUM9+on8q-qZQKjzdNVfUbJdReVE}UWd9jSSM_VR3$2XFJQh=3zoJ`1 zTw07=@zgASOpJ3Mo7S#5VNY@U!aFIahK2QmJXZt=lYZj-AvJwq=Em$Js;sNCmdjFo zg7wY{ZZ>qrY>X;joR~=UWoU?49lU*TI6=HzO0)03-V7i@QLKAywgN1`{TF9lm1^<8 zQw}?e5I`UN<$KK;fY7WcLIcJx|NmWr)#TNstpuRGedheMZ2N8To^3T1_3gqA!23gO zPr3*SY4lIK-bbV3gY7iMkJD6rJ3h$PE#+SeREa8kzkD_CO>>gUW&V=$-X4l*XtrYJ zr~S^*Sv)+P95S{h-gQlyanp4v7~T?HInG!c88NbZSn|}Loh=F)rki&aBX~b{ApQ~y z*`Ht|nsfa6Mg($pv>}u>`+sdHadokQ^b(hwv`n=R0+_M6y5#R59dRF=BpUF1t#t)6BkF54gGc(t(R~a5%7K=Q* zUsgQ~=An4Oy-!wWZ%%A9y+%EPU}YRuEHTfPwujok^Y%IgW?gT=@WDVs1JM6xal=Ej z6j>YwB498;~`bI16vmRZdW}7SbYBIWCGuPPn z*ni5Uk3;RX_+BVr>c%%9VQ`xMLhcKVfcdo%G9`$o^?z?=K|%1n?BODT+Q{)^OJ3Z< zez`tj(+{-3prNGMGu8GjF|xaZ6EIf0F~q>|iE~551Wpki70;b^Iy;w(omz6xqYUo7 z95k&6PS)*)`;CeVF?BZEI6^}tE`4X=!oqfw@Ql?<$fIB6(K!dbp#%M*1ra8M2?Hb+ zcmtgQUR>{!```j{ceJ*2i6!7|Zc#+(UE#CWf(=)ehf+ioW3mXP(PnvWc{FL;|87jc zUyws^E3(1*alxuyY=!M~(NM&e!JV+nau?R7q6+HVb3?sKqGmnTXoLAL@oX2uwf#)ZebLY-4GdYDUaYaBt>~kPfAMa01wGy?QS$V%th+{-XsqY zlE^=$>dQ-J_zw-fH>hmK6NW&7lbHXl01@?iSj*5VWB`--``L7lWn`&042q%c# zZX(d(N58bjN=pS-%V!S$TH_hcOBE`}6nNMiqK0b(8Kt9ixN^%K921i_1Le(Q?|bCT zR;h)r<;@s)E}_SkHE4cUzdIzFm*FMJ$ns_fUiA0Md+ zFIN4Drp`IfI@W9Avvyl~77al>5~!*BH69*sgIt6{w(h)LP%fL>mzOIYUmx>6rGM1n zTia_#F?_5C?tr4UAJ8*-)`( z;iUYD`$yCRn6u#JHXwDk?qZ^XIi#jC)N%Q7F+LiYaeRFcp3uzCN0gtJ=h3zp7AM#& z46!}`hJKU=-2uGtNeJcJ#eT9yYYM`+6<4SD$|3+Wd;{CwTnrKurhKq_KZCjZ?~ZsU zhEUBwj8MkZR_aYdc%_z&{971(5`)F#-tm`32|=s?GMN`CrO5Tb`N?3?Iub^?siV>r zN1#c4WxK%xBN>0Ns?AwEnCqj?XRk9Q%Ku@Q$Gn+v9ay@5WS_II3S$>T+U2C6L`1mn zXhI9o$88K4KD{JAO#3odUM4g*{MAG+9YLfK!c=Co`gC9S(mU?wzcD}Bps_ux*=z?4 z9r$4?Oq9BS7NQfoNoiHxFz;I^1Togq&BfJ&D9>Ia?fgAp9b7Gi(!T3r@XwTT?DaRcir= zDyLx;*F?9wN`xyP{uMjNUVDO_xE|CJGqoLS>b|v;%{X{+J)c{yl`=w1%uk@GnCNBm zOB&_N3)5RXaTEj}(83$Kn=^ZdgzzP4RFttw97x2#ye?HK(bCo8if za`Mjw_+9fHJewZQQ*~DGGrRDx@>Ud28*RC|4B`^%M3jxdt@>u+_t{!|RYZH(-T4Oe zy77$zxo%s_=eLVvIMwn^tWg#{ah)J0>e+!&f#{~B>N(fS8 z-h>}08|{*sc0rAFykQ&DH~qk6wdTUOC2u40N{iM`8wt!RS9EV#3;YBLITYyss6l{W z8;BS{Oc$+J8Ky!XvI-I}?7%dPWRhEe0^qkgG9E5hk{7ERjTkK2T9gyz#RAzO$Y)(z z;r~}GNPt(1YtS~hf9*dcOBrrq{ExlF=DL##<3nhr``I0|wCfDVqCf;0VjCHo3+G?V zQzVkv;CU6U!^Ti!MMR|J7VYFLg7a3OmmCGWgg;Ko)4MtICSq7FIR%nK~bM-~6>(ce*=cHGiK>uvjFO*oCIx+y`z+8z10u(}lliH7`%2@_phDY5Che+@}kBQ(}me?L}( z8=5L%TFwqTvyo~Cn|=UBG?T5=i(XpB_LFSRQOqqtxITK_R%jm*&k5QO&uxo+iu066 znvF65?LZ?oDuszhQV1U>e{o1XC3m1;W2n}Ny zh!1f;gEPK^Q2V9~9X{;KvCG5jeO(8v4lH*}icjKjNg~NWP0wY}|3flk>@G!8-%dlA zB2~j$RhbESQU*@5dq3W;fJcwRp=S5~4pMiJIXiD3)d|)N99s4*lbk#kQTjIyL&4o_Rg_4R4^k(jwBAQy7z-&PM13PE$sFa zUXoIJ$@Xcf=H`Mp?H;!ip+*CuMgujjsYb#`aEhM;1Xzl@siH>|ocUtGdwsb-^F&uF zi5;OcbD|5<+aTikfJqzgu14AD%CnDBsHumHgoiO292BI-$#)T=ZOUm({uAyvIm`7` zUklYU^^541Xf!Xbk6O3xU+pHoN8WOIyzk_B@qB00U;fn1lDn@mMAr$t-QIJkO44AWN6 zLUq2Io7;Yfl4A@7-r82qP+AHSBVwahwM56NmH|rzh%a}9$@8~5#pPT$KAN9ubfW8T zmO;59hZcX*5r#+ww~mE^p15r=_pj@J`26rf?%i{mZoNTU=E88->hlHM*!A7tH-;5+ zSgbbZkIQz9QrE-e&|MpJdLMg&KD~q^5*tEGt)K;f=}{Pg_r#`~q;-1L89*gXPsLyh z?tjBW<_LN5_NF)fYDn#L>Kqqw)a2q&pXgRx=V^2K7QfNW8LHFA^idOzsAqZKI)3{VB*8Hos@Sn;D+z+{6f90GH)|o_R1>F_!RO zD+}Z0hfZ5GaZ+MG5(pCfyb!sML#hO0VYYDN~^7f$2z0EGi^;dyWVX@aeHewQQQ6G zOy#zt;(M*#cwqi`0C=iEiDtUWt1fe~ZWqrB*`YQHF1>xRBSMVd8>h0lEQOOVY;3nn*7pxOvZ5c>OMK#Yf(S*f z%p%#xuFsxt5}bDkk@x0C)HT)qa62~^oc6Xg$9$fhGZ9PGRImoM-OX$I3wA6dBu!-Z zcO0C@!dgfWXcMjWS)i2y?gLovMA1H3m7C5y;_Q9Pjqw+p7I}FhQhQeZB`35w-1%7X z*u;KUmHABY&i1O$U`if-x%WuZV%@B9yQm$Y)4!-%zUv*D{)KvcA}xwZ4DXlg$k8Zn zg-}rhTx}B2dFX66Ptyd#b47M{{g^uX*s47nt7ZboIw#&fHz9Y1$OH78yr^?rA}>Lp z8Me6V!?tYsli(vlXJ!f{ z>3a#g@plycQIeAejL-VI$d-7ivfXMvCwmu1V^&m9%lO=lTD96FCNWF*XMI`yTYeWJ zNx5V9jE&8(pMfok5@V%{5+Mxf-9j|s)Kqd7h=hnJk%;k>ebA?7woCaZmPdbSB&d_k zn=syD4<*6Zn>|lLB4{Ds-rI%Hs%hbRBxKkyVXlBGfyZY9pz%C%mHJ+6oKFA5@Vhs{ zUyz3!y(FGOrU(k$FLZ&AxU%HHS!R^|#cO&Iv8>-)+1gZk!L@OKf_#Apd9OhWoReD5ThzXpO2`Hb%}q z+ts?MGgd*{w#{>&`?+%1%Y3%?a|({evK5&A3G9t@WCr#nxMtdsmGQM0b7;?uNYg7y z2`V0yWUVbq!Co}V!oX44mVOpxDbYRsMt)IIg~snb$EmYLmYeZdvIBgt7Li*lFl6?_J_tAb%N{5mfOePpS5SH$&-fprT0g-@(xc1r_Bkm zTcFtDYyNK^BCk`wQ>PQbp8Fk|A!js5r?}0xK|2NdfCINZrLKp}j+}_tqlB4>fnG(y z91--dwaW>mme0Prr*0H_g~DKZ_BA9=WDtuRMHU)5koeEkdAO1Q`#p1e_KhDQ`NrDg zQ_R#ZnAl#+I3;8y@ghvwdc^8CO%_jF04wVnoYrKGI-M|w=9zKdv~kAmoKMYqJ=-Wq zUA}@j*?(&~4PGI>v5PQnfloR8h6qpk{~L?KiGT}6ex+&!SgquQrs1oN9se(6$}?9>TbZ9!$Xw!zu~M&_f*mvEFw zcB*U)=7kU<36ohZ-Ku)gX3%m_gTAV?S1S?0MC>D7JLH5o_|r@4k60SJwTVjisX(1x-U6jl|l*dPh2t#xQvm>YIS=JBEv&@fqElt{?Fp_@oXmq8^m&nTnBZNbm@J}!y zNTi>_KasD5$$+s$>^(rf=uzvZjLuHJIY-pez_Ce@7e2RaXtA{3T``9p9<#QbeoA#h z&GEWmU7mh=bj0j^)Lk+Bx+gfe&+oADOp3{Dsu56`g8BwJo~i)7bgfNEqrS}+9zPcJ zPfLXLa`wP$Wp^D;@P)DSDhT_=dO9O((KxXRD6BKW{ZX0zYXu0MK9q?3xdhKqH%v2h z8Nm`;DvH3ebxLgbg-9ihVDZLP@l@0dsbZ#OzcYq?-`SEP(YASa&FEJU0blz4y)ji^ zJF47;wt!S9r`u{ExY**=ews9C>71!Wr`m(p!*)|or^%0KV{8fyQ))GmnT;RfI|@-K zeFw3xhL_D2DKEh40Z)!2@qui)8s#v*j&by=kFicP!#HQ}G-@(^Z-kwY`R_lUF|EYh zsIQQ4MN*9M6uZWEqu!I(i>D!Gwtsub*>BG~qRDccaq_~KefW3lir>*QyBfnQ0=xsX zFkjhMb-}6!mS1-L(axo$36EFDG>#r`4V2~DMG}e$nBe&z)H^YYi3&R9-3Jq1K3r4b z4;!*ui$~N|kxpFwM&jbB{B-J}A{F<&2AB2m_f4B}!rOjSW#=1!sVQP*+Za{P-xx2C z4suFL&TXd%CQy_{`=cjzfGuUewi=ZLuigg3^$g-R!BT( zbrfqV_eEKf`)61GtV|TKi|I=9&>49l|PDD_DNraD% zR=%&r>0eAIGI<^W6e)9>Tt|0`VZP3izo$2mI5;^{$hEN?G9q?&qQmJ`>2c%{;SxUf zS#y$IEJR^9(K$I@F7nsqCVKLE&@K!GTY~=Z&(dZQoxmzP*cR&-6yelcZ$g`qrZS_U z0?3MLXyff1B${09mqdoxqr;+r`?fbcT%B*PPv-{u=hp0#$^40xzxy}|yul0wD7L@-&PJgV zHp(NkYr^yN{8pUAU+|Yp)AQl&hPB}spN5KSW}37oxxz3!%9;5~#!_|9CoT$LOI=4Z zbRH0A>P3CM*QPX^EDuyW-L+k)KoYU7_;RSPFyNqa^AI;g(OYk+dNi;h;OgpxOl&0d zGa3%%?w=b3%ixi)NIr6cq8)oE)>w*Iw_S?C!r8ZST|(5_i$#?&!y3s)??2S3E2dk- z|D?vHn0YO}w0M$~vuHM?BY=7U*NQ3>Uz9Z^?WPXYP#Y-GajT8iEbY1FDwbJlEE7YP zX*Da0yGT6Do<-$FyE0o<#OZsR179=Im`E#SKVIAjb86wt;scDSbrit%!=;(+P)T;y zTdhC*;wpMZ(Y8!oJ>Soo5Bz;B7_g2-tlwxu1y5_%W9+7tpk!-9aT9?sL5=Kck#>qB zKdT(sf7h*M9VI^{b))>ld?j(0ZJNI^pyZQN)U>w}xK-h{F__Vpl=m+@!|JS;xi2Ep zMl+H+K*Cq6r$%7?uU1eMh}Ep!%vOL-I_BwSa?d=%8>hM0mG+JzC(Vh#@!`h$we*E~ zeMv6n^TGH2z*hjqM~9%TsDR`K=$D5PxRSzNIc+aGS}#8Y`=DAol=ZXP$EmGXPoI=y zkc)nnib+L8ZYt{*`ltE|9~@dU-4}StjWT?uZ6{`aerWO^mis}WVQMOk*UNW=S`~>% zWn`?I;g8ufHeAh&dAw5^!b-GQ#cHtj=;gPbSr_R9(+g1WPM`Q_G_XKYi2v}{8OFjl ztSU<+`?k^t-yAJ#;$cuX^0+64O)*GS_>Gdf<Ny7S6Xf+cFNRJY-v~&-Tdk(ov zADL)2Mje1(W+sdGP$U1kMPRF)eDf0(EPiI&uQ$8_t2I}hF*%>?fkljUH0H--i;Bf; zj!lW4<8XSVB&XU&juZ}(5hvLKN07F6!iyo}Pr{!|5AXcbY%q!W&j*b|-qpmXb%%!LfFw&4#JmY8hWbGM=(v3<4sff@zzui7iF3kaS}bLCY+Z2R>G!9H`{Sr|Ru+%T26QDUbXCC|6v(r(yom;fnHcmOi_M33Kl>2wUY}9d%vUQs5b=H=svDa=mAu*x~j8gIV7n{DJR7Zvx_wtX2Z>O zWzvc3Ehmc#D~iHt#&_|>jpl;bjpOKDVc{ctn4j5^e3QRwcEbV=mVC#E$%Dxu2S=?8 zdVk-kpn%(eUB-}ECP(Ed{*RReTb*F*IzTRN099O-vc0HJE~GX_HcsG`Q`Sc!T#&TZ zy1R=nqz;Wf6#IirDA^cOe=0m{mR7t<54H7dp(IJRm6DpXWvp3%R9K7Pm>x1=Jy(QK zQ6XoL#f(j07a8lwS0wocP2i`0AEUTaEm4OTPs`n(4FSv&lKt|o;NZUzvDZ#i(SQxO zL+7vFsb*G;7c7`W>Xc&rU$dt;tbvT%zKOgq_oYvipWfUWv`k;yOO-cH#5dEA2znBtC}VNVl0fl2J^eUkIC29DdFZ|YED zVRvA&^3J20X}b`v3HDNK-r=m$r{3U3@qE{PxYH{6MdPh5I461Nl|Z{qo|i{AYeU~Y zrpthUu<}I^q-rqP2N|TN8d8X3cLU+VE;z!clavA3@iVk;XXmnagRj{cxS{^h9Q43? zQ8|&WXl9RSWq$7gZnL8OPKMcQyN(0l=&t&6nywy$lkS{8Nkf{+9@HK$n_k9Y>^5j) zB4$FSnf;~K%jJM|Nx2J-)obeLmc!nsop4c49kw=g(@%o=$m>V}sj{sTJ4HvUCt~>) zpRIXk)M=c*>5sN#gVy&-prsLcQCEEw!Mg})-KzVZn~3!9hpo`^V#TZUwCkE=D#fMWIylYX~_H+kUG}NsQ`@c<_w+EF9%sC&u zLr*F@Tan#2RQu^?{n%%Wdtx|#Uq8s1{e?==QwxBwxenvb;V+V71IWIOMzw)xjUJ+k zAA^4l(e>_#DW(c+h9?d#1nC?~g%!$BB%~A#-X71Bg5X1Xhp4fAiVc&!^J^@7w}N3& zchX1ZJ;&3H^ zY&JGp!qHL|1&j#=&|<>9Oy;XBw38O$V*_>oP#?&DWjlyN!oF>iGD67`TwbNYw7YuO z+Rbtz6w%Z(+Hu)0d>9bzQV(8T?aId;+8+NgA-+0;kM=YDLBioF&cgj~-TP=)B#sk; z)W|E=!wy=`>xL59(*^!{Z4FMMHxfJNP{uZtpBXz}pD-pDh(m!%@ca{<^PFE;J@IdVjU`m$WsAeCs2-;stUq6VS&u7ixGEHgxQ_V$(h;}F(17^UQn@w?%*8ifP_(j(g~bjJVd zLPNLWKnAk>9~t4lU!g$3fca3E{rzT}a{`SuI~CS4F3oWYY$rcIEgO0k7jBO?zf_Hm z=!FfKh_gVv%rLNg#e-&TNC^QE+bwlPv;A6r!%S_5T#4_1@*S(TQo{efaidMW?}4M} zZ7R-mwZIri_|rJ!bzF%3=;Jqy2kOF|nvC0@thB6iF#M7Atp7dh8{K{we2rlcF(LaG zg6@;}P`(0Em3ewbwVkI!B@tC0A-n(MCFYY?w^X9apRIV#u}hQ|klF!rF3~A#zP>Nl z4L9|ndPC(0^?G`vl8-G?BObnw@aSanvsPEVz;y0o*O?z40fr+bbI7$_^nU`}>-N7! z%R|$wu!~<_VRxukG}jM14>4y*O;ZyiPhmX#{oaY2BEJ}qLH5{ME?*%_N>KL>N^9I? z@ys%mW3oRFZVlinRa==VtC*6rVh_B|%I_v*SM@e+4qoQybkWE5bLbOZZL~!!H7kYz zdE`_Fld}DURW!NH8W54uS?Hkt16f!VHCiTzco=C%-QE>neTLc82~OA>IPC{ zcfNCfw(m$Aekpw0Vr8xHxS62zxhuqo!WG+k0T~(8Md0g|IB>=?XnY3IOR~nnc|4c= z;Fr3>PA`9arlW8JsTt4Y6;CEN_YDGNB?$qIbEnl1!Li^t0(fzw2W*y=wcz}rpINNX zcLz^lh~Crto$Mz0w27mD&XKqpqB5axcLcb{DSRiL-uN#o*MV`~|L!;bfx+K}X1p`x zl0J82)&DDxDlBJdb()Y%eUDT#B^qoj4Lr*%1dW0NqL45JLG!i)7vT3-a++F@R#mwF zJ;eWLU8}!d5A|$##&Cz$)u+p1#p`_KR2p0w!D%I{)JfAQye)!L_ibpXMPXpr4Yc8w z!Mq&&PYLFq*Ro*3W<>Y>xv}Y@n~FM};Hv%r4d?bW#}*RCY^xSN{~Kk1 ztb(W^MO~8e+_ezY1ekwuu(MCmhZ{6Va;ZVVY2tIG7_7H4A>*&W|Ne%44Z=!8Zhq*5 z95&(CadoAg#6Pjx+#)+>yY zUOjUY5gjKG8@4z`;IgIf+7K;^Nwqch-S}#yY{X${;Bjx4vl9o{qWeyBg8)nL{(!Sx z&X3^zV1a=(+dP-RbL#yy<{(|OYq!;A@!Hz2=5Ghk3?V-G9_G_EAN?`f7iIF5)%}<2? zo9%DB&pgP^;*&kAtDEAjWJCfPH&A{VPZaLBi(_{g{b;eo(L7=65phL6J`Nm0j&Gau z9|Qk(3O)RGZ@xBS@BYeW+#bq7uY^M)OMuRq^^DK74O#~1MO2aqQSMmee#$l=iUzj{ z706WF2OcP&u_M5u)(cW%ZvPt_tub$k)n155(#G?=^Xfm^-27)EB=3;lDjmDT$r1RZ zs`fXSd10dBP`M~gVQiQi++mAW(P?>X42Owey|_G{f@`^_=>`$)p?4eI`As6m2HET` zR;KX}0gOFBLUa!4DfeSe27?47EY^Y<5rHbVKu3qec~{TPu1NtWYe%nx9+W6&WpJL6 z6Ol2B2$N)^bXZ(Ll>sKs?jwZaGu z3Ybxbj!+s;RRwLv5&f;0uKDjKmzVGlEUPHCtOfGy?Tg`bahK0|g`a7~DZb(nYW4tM z>BIu&BimT&1Tkh$(_GuZX@vf_=p|12veLk@!#muzw4GDw>Uth>G1* zc7c>${mcGl8qN_0=9I18PFy3w+fUPtW?X;2n1q^N+peH4#wk#fI&eaV`wR}UVH2(VwyE@DGp@0Z!S+Q5MiLdkWK=sZ zidPX2IxZ-9ibgnk#(B;!sH3*QC&(qp!R>aLEdANy*}*mRI4ql?Mp+_UIaIS_IKh;0P;_Ib ze!+#KeHoWmD#0jJFtAaHqA z%YJd~%UKM@HDal}$Z_R<&=kfJc|G&~zYFOU56huoZbuQPgcDlACnAC88G%xP`-O8p z9S&VRc5sedkLQkU+C(%3i2{B)u)8}z4Gfke^-o>=bet?i9x5Fb)ao`@dj&L7i>b%4=~wB)UDypb3Jn9`k>- zf`~L#U}FG;uwXNu3i~t5#tOrJu2}r9I!0wzF1Bx-EvKmxpIny4rc*&^{ejLvc|*Q9 z+q7wul;|iHR;CWgpZM@N=e!I}@c8QXS1x6nfC3XWwZETatrWNt9!C+`xppy_%i5rC z4hF~stZhNSf<9REkW0gr{C*s62Il zKlH;3#?T`svoPlvCsLbD+X}0zmi|+$&-jnYVCnMSz2cEfc02D~)gAgCmt7Y;6WHh| zJlt9@m6kFlHm`3xI9GTDB-piH^$$0EI)GU=zPV_YWAumeY85_)8S_gwPXxvhIB=u@ zNK$?^qU27`oc(G-re0SoDP9{fJ_T0kDBj>mwX4k4T4M$;LgLr*b5en!_Jt~HEmzs6w$f0c!06LG3SdV)5=Z4f@>A^7)i$q@Su3h2#^4 z*RLk)Bmrm}^4+vWa{=Ww>r$(~Fkw0$$+HsOV*b8pOdaEAI?J&Q##-kn|4datb9$1O zb=~@#F5`hOyA;2lL2Wx2W51Qi{2#-ju`{cY`r`D~b^Fh0&D9-aFk`N!@&nMSz}3`L z^SP1zLa||j@9rqW&!B$!0_9U8Y*UW)_N=KmnzcNcsU<4j+T)k+q}wX;+2Fov-*pUw z`}n)2`h3+6*4XVA9|(QP6T#*xTb4 zH;Qs@)_v`YaP<;WGs?`tI~E|yi?*(~sFckGf&8)~^)7?ajGEfe)D@*tqv>-S-i)2D z`iX=8+SUuJ5y`~xYn1ncAXTzIJt!L&cl)}*dI>zQfYr#jq|8m~2fo3T*X4HcjEC>i zWpcw!-1%C-w<4%6HI*%(&21-vh-+znDg33$76#*)!DeSGb|Sr5=mglP&=y>rJCIWo ze^9XMtkQ+X;XYRS5A_#bA_alNsn|7s>gSApWB>9BbNrod{!Tz;0$~5|jOn~Pd z%UABKWVLSdU#d{e$B<1_G_vZoa?6PIyF^`!`-|oxG2x# zyZf?;0aTPI`Ngs$(1$|Rd|m1kuRhct;hM_VhWLZl1>_qN9_LQMHXp%rL4ROd)lnI} zPW$Sr4Gld24c*ENX+Aix9T5ZAKY}&Z6Tu8m?^4s#VOXSS>sGN54Orx0# z$@~PD!o%paAzt6fof8+a`5WILW<#OvRDw9GT0wOuxW&?B09>l)y1xFTht?QBsCEy%x zKHe2$?W&`6GzLoz9?p2L{#ZDdSRM%$4oZhgX!husBO}GWX?dn3rLdd`)MTu@;OWbI znn|y2PcWEW1RYyu0uHr+~UUvyR`Ho9w zJN9P{^~VU6bARrO?z`M%{t#l zd@1!q7P++4q`kb&90^y{un(4Rll{C84NF0ddZ=lWpsj5s(C@$h+Y=mNPZ|FoeQg){x&{qh?;l75wMe)ic*OB;0ml$$J# zksD9(lNwI*afD%W&na(aHy|40ZsB33Lm1H(x<8kplhoH58eBsYunIE!h?q~!(sckdyP7?lOLtfqk zLq9*o&8YZ1d7)Z<{6(~OVzd}f_?kZ&Nm|lm?O?!Kry01WgAy%{TmG4r{xkC$F~-a2 zZGNj3gmTQ6O@IU{T{b#JPukE{HI;`0!@fN$cxUG?L(4RZ9?oxRz+;WvW(6>-or6Zao!Id#GxJ#2zC_d+kaI1_7n7bTI2;L$Cp*2 zY5Dp5izse%#ls;Gp5;dkL<7luF9@9<{sX_2@38Xa`F^0dxcGC(l*z&^4IC2$3`;DW-2x z;Vp5Xx6?6>aOct5tldRu77ewkEP3;|#JD)VA~!cr4LtILyqkS54i0*2qR@wbm;_SG z6_C^Za*Skz(}(7tQL-%SpL!DD`27O-_THR!n>SjSa)zR^i4ZZ|H^AKO={JG5{QdOkUMCIP|+{}p2BGKi-{>pw|Sjd!I! zEvbH#1sazHWxI1Al$_Dt z3A)#!iq7#-5r^LyO)Fwj2Q;l9MaV%W2t&K11p|Ec28hjWeW7<@U*Bb=m^X>fGuwHI zRbmLrtJt=4GtNB>jYJP(y`dJm&3vx}y>UF}+3RzFs;HjqbZ)Y68JL zDZnPUn!xXWDh%4VKsyVYb}$vWMXvX86~4$RZ$9{08V}HNvivx7((3-B$Isw`qNXNJ zVE{Sc*^AcgY}#-jQu1uGDq!H7m}U#+6#}D5(ijHrDYR|AX`NK+zD`U61tAx06O&Ba zB8B+J`{xCjqYqUkOyUVi&SPbzyuew27V`KD&b~NRUHQY9*PI(tt z;{VPeECwwNbWOzujB$$nS_u5Ay6F0O4wxe}uzLQgyc;|*3&b5jtcBS5zZw0eVdqOZ zxSr%CFeAv}(?l|D#TWfm5o-ceg5{RjbC_1(Ap-YM%3E{MFf z!0-%GZbt57;Bj=KI=}1slZg-*Hb|zz=mzYW(3F;f^9#noDyOE&#`sOOV|w`c!T#<^A!HXR1xX&{&a>1HA`i*tkrV-mx_SXF;0Ny<42 zmLS_XIkcmN-jeeHS{9;G5tv{oZqNq{wdW*I*<6cU_7QDRpgT$JTHkzf@}Inp2zKFO z`+7r|!H@#e@hV#33#glBy0cvvp<^THn6=cPak$#8BH#hIe~ENxzjk7YqqrQ~k-T^U zPv0oM20vDUGPw5_io3J&JDfeh%QJ0IT^9z2O4 zHzuD1K%>q=36=golo01X;gDCw2LI4PJcnjj8?cj{!wlBPMy*kaHt=hCXlohZdT;UI ze-f(P0XGKAg8QAG@<;JWgUZ4wB#Y|!TU1Jq`CTrsvyJ$}$JqvpaZX)=2Aut@wlpN- z`)Phh!m^8w@lcI+%JeL3rUVuVhTIFOzPfXROHOJrNkz(_Y)2Y@C)_6H8|NfRdbGqN zz(eyu_Pj+9pB=%Z`J{Yr{bEhGV6V(=*D64oxunRMu zr5o}O6Gp#OQJKNqscm^r`qR8B%XFPy3rj}FA)(L)mhs?Rop<3Gt4eT>$T;}8w(Fog z-_~4t{ptTT0{Qq{rjfx?f?7Wwz)M@YEUIQ%0*R0Bmi#5N;+<@_1yQHH{JF%c*-00^ zi}H(T|0#cYkR*lhlBc1=xl;fZaOLWzp|0gg*tL$9rU)A$4e6dh$YO>cLc-Kxx3iD2 zDB4}q)AOU5BOzsF;n(E!9%N3#F%Ev#uS z>WC*V?va;%jG>yLDWE#GJy}+=UuK*3UXXwy0_uOiFUF2I@#rt8hs!zIRXk{QiwciKi4x=|Mtp?M?M;nP4)V z9jzYKSO2Xu9@YpPDZkGJP6xp}bInTbw24p$MRK;t(C@-$j?)Sq9y67+wER- zDLa|U{Xdzo2+)*zyIIcw{xEy*o0$f*rV9?_ZN7CCKEQQA_~CSJ%(!&??tX33TiN043N%pPVw zQ4L75O92!;51aUg@DD~y)#7@aU0pc&%arm=9xCwzYBLfLo}pi^DY=q-Q^&_6Ps?t| zY^?Ao|4_^PA(!nzNU5#*)s)-v+l+i1fxE6iSs%iQE;}cHGVhrGxs!~ZnmCGR&Je))w{a z3oTik`4poj>UD4q{E5m%({pb2Ul69Q<*(p{^e7ebIY1Lli`~#`4Ek40>?9;jhNoO7 za?fiWezNK3xpqY;`=BP7z4OT+B@^e&pRm#sUeW_bN1ADB--5;tcL(Ie7aCY-mtMJz zu%!W=q+fvqDOjt71RlQXChT#z{P*6fWS;}b>#C~Qa{JAKGDmp1$!o<5f>s+;;A!|E zAspkTYvJfT!8O*G*9R#g!~vZNz6sjdNaQDRalRRCXDOPa&3Y!f*{MG;2+P>>02N@a z?L^UtR!H0fR!jb;iGh%lC`zt<4zefC8GwR<92;(FU zj4n<@i9ujrnD5OonBCc>PADDS>Va(#aOAC;-AGTs(THd=OAm#7QB~E+PSd?jthnrV zjWaGtzwEBp3@b>oP42KqmIF5klDc%xPeqkZP)3+r^(r4(d`~{1(BG^ccCtgx<8&#` zNP9NUP4d&K7NMvXMgfM>qpcs{uj*NfPyC{@29vI{6oEXZya)dX=|c(b>vn(V7T#d= z)yw_0)#Z;yxHmZ}`Mn7L^{6Bs36pR#>29rLenEIA1HqO2;7!AHJCh`9EiYD$8j6xo zLax8Yw@^_Uh>C|pa+wu=G_TM6b!hxiXnT+#+Urke7)NrmWLxmvH6uNM{pnfs2HG}m zm|EViJ?_%W@k(}wIh}=s3^M8 zZBvrq`UPIG3h|PTV?HH=26D{`2wUyH@!?$GFs^}jAjRDwaJe}ZPbWJomTVhCqqqEt zf+9b@V1`sFR}fleVx0t7t8CHXyhn!a=M$O8$}JS7?8(M`L*V{3_(61|A00sm<@ENx zok1d~?WXAYm709^slew}!&<_tASOQxpYf_8)ZoT2hxqIEX3X3@>b&7*58 zSw~Dm#tKh6YCF%9uHL39K1{?5=;Y&?6Jqgu3o%$;=WkIkVLSo8B?LSEXS@mHL6Fb! zXXD*;MVKc0P;C;&mG6V)FCmDFM!Q)GmVXn}Um$b3?d$1#4zZYb&cziIA}twvulEx? zu0m8a=rI+5dS@Zk-+`N0IQym#-qn7Y0p1w57q*8F{2w|5;2CJ4nujx@d&auuRh1t% za~@k9FD?5S3xI7@0r`^JYRHY|>=I8J!5e`i_ z@}u8qs)1`Gx?+ss^F~Kgb0XkN?WW4iB^0i&=MVlQGvH4xW8p--Qwu*G3?cjLYh990 zttf{S+#5DuHuk^hfBwlb)4{zxZ}5vWvEBGJj?F*VP{75NWI~0IwyKSFH3?XHzf~f! zV+f|smt&|@f8*IO83?9Aw0uU&T4}(lC++|=mLiZG1Nn+6G1)==W?Aniht>ZdRd2zT zRn)C*OQ*n1cMC{|gmi<_-Q6JFx#&)jknWOBDM1?P2I-LQZr;W7?EQVm{tHZ4%z2IT zI)_F7-{Wd-ln{z2e}KpI9UiO@EEHu;VY2cqw4nUtm@FSw()DNEl@lj0Wm^lFNzQ7* zR*3aJkM|C0_n(bMzqNcL|8%eV+N}0r`Z(w_7um|Xl}N!)&#N_>y?n}8`TWnitm{-E zY;!Kp;O?VY@W{ZJq;Xdpk_*8HE3Gs3_$3i4MX(vX1H)wxOrGs7VSj%xL_Bv=%Xy=t zs;^$uxi8dRZB`e{+-j!XFzIir)4#djAKe1;qy;0d3 z6O(J@AIvk8_F#h&FA!&kU}nj!iL~{6X3MjWl{^GYAf9^ElvP$vv@_A;5md;77|J3vhO%@ICR|JN*}cgQZZ##j_mUZiEu z^rR%2e+i3-a)k88ve8S4UB$4CUs!NKl%6?=>r)qXcpE+Dech!9gNZxj@OrpN04&`7 zXSSkY^OX(vWq%3}{f6uf;7I0D z*$G&fI))!5Li!Hogm0w$5&OoCaAi}+-xSMq4GpNJ$`kGvR{y1rm)=93ZquMj{%JUX)?I@p&>PAhQnZ_tAWu*a)EZ6lxPQ$kV7)6 z@hGkCjt4GWmX2?Mj+=xz6Spsp23;}G(8~l+fB(dm-z6vE#-~WS&#H}AY+~T!k&H0C z%oP?>>E?D)=RT z+)G|cfM$~L61)$%{!5ET`g~1!9qmuHE0P1ROu)0Ke|Z}<-`L*NzW1T@ zEBJzC#L**LEQ+iITf{B{+=Ea9>%pyGG?4*Wo;IQ}3Ze@?^tG!SPvb{n$Um!e?gtt^ z*^{(2W@q=uwJtJOc_78+y}h3S$w>)vjpK86IBRQD z#j><;`ULkJZ>@=&!->v443jAuf$O8G&UFk3>i9t$Qz9e}W|gpBU5n;Mtn^SH-yuZn zdZiV~N8lQ~JDy&uSb=l>l8U5_5$>@xWH2_vX3S-*7 zcmo`~{|0G{mzFTgtO#40#YQ2c(&_AsqGjEFALO@rd>-eo^c#{tge;*7e7!AvNi4et4|+kg54 zA3DwTauXZBCjPt)NYSH`t@u{#AR)=`x(NPS5v1&jS@y0!)E#VMbml3*=jZWo!HW@#(cnJuJOkL;;$R+*rMl=Mp zLjIy#i!7GG)s!sje|Rz#P=!%N>|iBc-wEZ0i)a-f#7_9N$iPDPTHgWjWa5{K!{Y6; zRq7=OA)@Z|4(0LR=ZoiTF|oCdgmYl#Qx)Y-BypDh_sc)4_0Kc$rvk(#RVS*?sl`dqoD!uL_)y{`(3lOZK(n^Hm1OeGUhNy~Z-s z-a2{Ga?)mMBebtb6)&?-aL}+IMVboQ`M_MWPRi(GBO#%^GG#h7aETlBGX#Sw>P6zJ z-w>Lc>B|j@cYfEameH^vXy@fB-j)(@mCu=Ia%UN?e-8DKTx{j^TMZ9qpdwd~ppe0( zQ6+ElqK5WMfBW^+L44UwX8@oc2}U}d zA%8=0p$!i2piR}>@6u)yLz6GVKFb{6lO5i^acAs+sj~Hao2Wv&8RqQQ8OH%^Ee=kQ zAf$W}$1K=aS^Ux@dDOygCSiI;_rRWj`dVZ>Ch=o2NOO1?Uu2_j1fcE6ocL&p<=~sU zvX>vetZe^J{{QRo%e7Yk7xb( z;|Zp+GS0@G!ZIkbuCB_*kldMjqp}2%A6FtYHk1cUF)a%b467k63j2y+icC*d5o~s6 z;1L{Hw!+H-4P?D3s8I%8cjwribm6|51ioBke_pDHSKv>K4#aZDbxtIfcU&I@aFEa4 zXbIY9IIAC9U}w#SL}|2eU!dn=Nlw2dcbyMaQBZLkeR=kTEZyBL?=fLJwZLMDpnp6K zlryBv2lOv#X@R&{U+k32cItWY$NqD1da8sRxlXkwpsH&MD+?a3&D(eh>p!H-e=!V7 zrIhfXp?k^e5LreP`jm5hqxR}%FAmhtFkqlRuhW4?P1}oD?NvU`aLIrEOO`UI*LK|& z8x!sW``fgjH_s;IAw;jY%22{bL5C*hTi{ah4}%i;3Lv@oPmo-X$=80p4au2JHJ^63 z87j5YZ{BOn?%kKMNH{MVzdzY`67c{ znXJv@$o=x=_%o#SXr8ix@NXimu=`)D+{95Hn8}}-;jX-v3YplvPFQ`3v|_tQPXC(~ z1o7jx91($wP_e@NqmQVKZ%#rRwSH8qb>f{;EXT*{HM9ydPpppIqM-m_Cq90cLi2++ zL@@oHVC(DneIA)HF?3>gPsL8tiyPknT-*N#PHYBWJD3H3YOdffVH}IA^u%Vd^+HG1jXG6ZItzDtVg&i7#?3Yd-xn}@-Krg1fP@}68j6g(bk_zJ)6#05?)f&_`Dm0AA&Ec%ooZW-@bpwHz!bh`6OV_AqP98vnlapaitiiDh39X zReunWA4AA}B6=u$1c^~LJEFq@c2dj=YQ(}v?*w4$lhZ)rKSeZU%Jp7YX-aA^b_yJ( z6YJrGIDB#FOggxKh;8{9qRFr=p0RbU?k$o?dkVe6&hp4CgiU}f{I^%sZED@D4gHI5|K z73Tm=Cz&8?@B}5WpDG-~6p=0oNm{n8UaDw!mxCOW^XcoiK~w=u7_aM^zC9)$*oDQ5 zpFK6KL(j$8eVh5{n>D*TmZ)SC;g3Ezjez}>$rvfqXPKlnkkj0V&o1sO*HYs@H3Ekv z$G^yMxA`j1M00DJ{-9{(p&G~Fheo~CHFbhC**9LWFB9;Fr@s3(KuN3J7837@4Sj6P zO-1jt((c`nt~14n^&z8Nh2ltDxZhAd4MG@ffPr@P$$G%p%;!9e#@+ZhN@RYT6|j`F z$q^DG8>SDg{~|u#J~I=27%F+L!)RDnNPOWxM8FRIa{Hwx4KbPOz0$R|%TK#bSKV*FCxX}-=2R6IaGomH%tU9;5T|FJ zkkXmZ;kyS&zhg(@W8-wdM491P+q~>1;E&g7*m#+|JZtbhzn%L{wF?45UREE$VF2-* zo&hrQN=lL$g6A7ki$w?UG4h%NXWiExm^*r1IT?0#9^Z*YOE+=!BLS45zr47he)}C^ z7~L#B`UgMRxgiLfW-_*pcp&!2igenXQ?8*36Vrr_?Zd!zH#Y-NIz4&C!R1SB<#x@K3MC z#=j9371!|sWt;buY6%(NXm>Fc?U;6K_J16ziBOri<56RrcC9mpb}LPqB=%2rlGc$i zTWH1g`e$`4sth?`Jhu=*8%=fd5S072;wBp~jz`bpww{-CaTXG2)41q5@CAJN3M+M};{4Fljo@i};Pxt_@ zBH#Wox5hQWf%!jW<b*hGUGs(G$;piq$_4lk-FSrC*#wQE z>w8xUoAp4I!lsnVz6^djC-hmG2X=ZCq!KkulN#QW2kfNla6?A<@B>ay6EUy^2$Um= zq-YxGaoQ)3{nZx{&dzpjq)~Sl7`7x$3szTupK#?qR0<0xl&&2#T8%h&T_7!yeBX+H zH(=<~8NSPxZ`9V0cqGn*gHj3ui7%lJ_hyW(5&|^dDvD6!Q0ynuQ43~=@22Nb#HF~e z?H(yOOg)!NdQC*xCwIiax2FKm&UpG9d$WGZTkY|(fiVS8 zyY%8jnN=^M)VQy93$Q1B^Mg&0hE9-1{vSuluj*abP^gC)-_)k_TC;VJeW3jm1bFA0 zRh(0CJO3oDYo3~XKt@sX*u2{6ZiFDi!OFuz)lRAlENtmX6vR%N1!uQK zTRTLA8L`C5A>Ddgq5L{%HQE4bZCcbfO49FHjXjCMGM#bSNNxZ0!(ELBRQ|Q0K6elZ zm%Qqc7JTbRr;$!Gff5~T9i{AK{Ds-RK?c%N3fb9iSd z$E`Q#tBO#&@)gBx##ybJu}*kJXY>T87E4N)QxgshW%BGz)L-yF3ZV*_hb(Zo$C7u;_dXddsjF7%F0I3 zx&eW<_Gw5xh&_IUg$;PU-~^&V3Dvo%snVTJiBf(3{0*P842p;gpFHKku{X&~^T`61 zI66)x{TnuIT7*}8DMk3yTMP%hmi759;RQW2hcAGm@Ptl4Ur5Y&?40OFVWddW6ZiXd zj=LPf+(7FRn9uW-nYZmNgzXL58KguA_MLHv zA<)V-_?vn838hnH+oP2%^wrvqX4ZtvpFZ{0?$d95;OgxDnwk++Gk?2M+ zvve+}d3LxUMpSTIp`jnk4eSE_9~{L}pHzUiA?*hdWL*NB`YKJ3PS5_yne$duD-4tb z0fik24yB!#5Lw}zObosEbDPxij9QXT)g`YZme)OYb5W}WAxQpKU+Hl`g_Iat^5hlx| z#|?+-%AFPE0V{efonWs}DSM$Eg^bBmiUc`{A5P3s4>XO>0PavBb4?`XthA#>Q}3 zn2}KvUv*3YqiBahQM*Xorws)hYgt;x=hmwR{7)hAzjLi3+@|ZvNt!%6#G7mW9M~8> zY$zu)JYY~fr_)Uw^&gVccmuy&>^;l=`qB=pMDC7FUgAGpT&=R`L@#7bN%73a^i3R5 zw=Tr-H0QL-9PuG!OW$VA_waDk{OhA3Xt6{AYMe9p1OyS5gyWZW?V z53#AKX+#S`h5uq>*}3rtIXWg1UMtI;xLOcz0XVwtRt;K*Ku*~XuF{*EcPpkum=X*j zRFCB-ZNC{8`3Q*|jGU0I2^^nG+X5rw7;soU!+i=ZKa^PbrV@ON(FiVKde4$P5~$^mCX zz<8rIOXfM|%E~hr^Kc6W$Z8llUzxv(th5N~csz^U#Mi9iF2M^_LXHfNSHFlNQDLNL z8yBg#+m(}mlJn^({E%7feSlbWiG9bU4JanZ$ojH=e$_9@f7V;GBX* z*<8ZVb8=>)jbGZ}(N1oBVBB-{D$`6m2J9FA)V#0%8(%hY?p!N6rP2Z#5UmjYFdM>p z=lt$G_;>iCu?&?5$QC>e|MUP|pVS^?L^Rwf@Rz>JU;T4T?*B zR+S`$jv20%pA+5Jf9)v|2`JR2cGTa!^J%`3L5&~?6xRbNQITPKDA^(jqYQ8UIx1yH z@pzut?#6(&^p79M>@AVGAj69B4H<1Pgt~8+yt2v^B$6tS!OV1{;5IQQ$?9x1@fjs* zG0@$4Vze%f0wCY-ET=9-z40ZT)l!0whw z(~OcL<0XVV%6Y_wlU&0Te31tm;G@kL;%E&28jStZPcNclpeCq>^x($Ff>#?W)~U7@ zsL25D38g5^IH!-dW#uGjcnAD3dY(abB4KF-nowue)Nh9c<#&kyYwu&$Tt@Mm_mnOcov?oT!*dmJ@@g85*?>SM^o|<8F4Q6+QQM6EIBfWI zr!;rU#tFx{BzV0QPAKCGUNct$cTJH{%v?YUbPc1ZHhA% z)q(mfLUX)|76sLy=~1Nv?;a-JJKD_=qwcfAH41z~*3;U}!Sg}a%&R-FW$Y8U{w(Ob zaN+_f>ZA2vx=vB=fZvSzZ&m<^sH$xomkYMZP@Yj6u+W~{30 z1Ldx6?;c&bUvHE#S(YH+<&M^l%cRrcjD-3cb~MLhs@jKy8F6SYxbZ3$e)fGl6$&4RS!DvIlcNJpR~ zXOz4nWNlrY*MjVci^3o9hK`O{tK<_^Ex-47wU%#MZQeGns<2Kb3MT573DUu$l3o$z zQuNq4-s0sFymhABSnj-4rZ-=0J|=9jevfW=^I201QfK+1c|GQ5v+_NucP^%b-vuA2 z+*>B{YRheJuk z@YV!o0sW*QJiS;bvbUY@g!BR{W^~T_X1Q569|(Rr-(_05a2oG7sdz4f$$RQmH{&t0 z;M2n%A{+`YSaJftCvOHmKZ`x11Jc|DCg3)S_;f+YRT5rh510mqo?>F~=)=ytgSAKY zp1$T9P=cbR#ihyUBrefBp~zxVu#D2AgPJY}9n*&rCf3EY=Mu-(2N&}^ z?|rQMEin5F=A?`+CUYQ+h92-#5a zxV4(YZxgPP{`PJk(}se{ev(^w3Eo6S{IrUT%JPKRTL_cmrzamCe6~y*PwG{ zI+@c2J&B=4>2TVynZe}}<;by-1Uco(L+8f^8O2hMOLy%$W}~;t_zAQdqw;q=Tgifg z^n@SY3omBO@Ss2W6*PivN=tOuo}-C~aWF@bqH+KcHa2bxfSFY10)I3EplS1C2?cnG zTMyiV%6C+SZa07PY^HPYYGdcV*oD8*>JcDi)AwS-nVE6Q_}Cl#e`;`|S|Bi8!)z{~ zLD{!!M6HLMA`=bnu?Am-#7V=9d_tjK>RP35_As&?cG2U59iPzZXF}&(*FK@oqB~4 z_-?;k`UUe$ieZuz)Ek!!wX8&*0FA30&gq#kjUe6D!L+4Gazq7wHPZN`jM)hlVa|>r zbggn!<0SlF+GOJN5OCmocyN@nLxCA3oUmsl8Zu2WDL3mlnTRNml=!SFH8$Be3!k74 zYZY97c#k7mr*K|S4>)}lUyFsU&JR4^h2AqHhnV1 zb#bzNrQ+>A`H{Dh8MF#yYJGcO+bl^h(IVe}ASo&7c>cszCq32Tgt-mU@uyXSzI)iy zV=wTWS|wu&^6*-fg~n|1k+Iu1iJV!4le}*G4s0RUGYb22QlETg(nY_7EWD zZvg`B0>bDZyL|BSWed{QFJ_sq0a$04+~MD*I10>=E;H!L1l$8GJjT!AKpYJuM4Y}> zNvqX2kDXixRdFaJ1TkKK+@aKRnCp1-l*8P;NkCDbN|3b%Cv!xrIC#>A^+q4KK78T9 zt)27-fJsIiOu3;wVTCck;S27eaZM?QvCVgDJEuALTH|rOvDq$X36{(AAs8~y zAn}k_t{MSOokdBbK&1~f6vX``W$sQR8e3@e|=mQ5+5Dotd}@Z{x)bbwWlQkSQN$R6$4Q&vNS2%kGA{}zh!Lc@2Y z`AH&G*+EkM;uH<)ws`{qZ)M92&SDw zRs=TnUSF)b$-V^J(HTJ(b))?#SO#l5GGjWCwEY4R;BbnE4Y(}`gOo#UT0Z=Ix5NB< zM@6U~+-J17ZIqefNeWI^kp;8P*+7j?q1^K0-US;^%b;zkTnOMmK|U^zh)QJs+jTC* zX#WEi*!r$lsnVO1lV}b^CnY-A0Od7sllcep^EBt}?p2}8Y%Zw;^bKT)r!tbqdgM_p zGxXa-uq7^_bgQSwWA}q;;?O%$wIt|8XBRqpRigu30re`bwXMVh*1KVC5UL9;w+meR z9rmV)8n2l`21s;V*M(!2j!`~_5}q}!W%Z`#CwKSzD=IIb{nlv{Og|2TA>m&ojLboG zT68L10hOVH`Sf=l&hu%kzLsKFMZ<>N6!p10x0tDjotwixCL(S_M~Nxw>*A0HM~+s% zr#A`3oEM;$B7%s!y#KtcEZI9G@fg&Mg8YKBp2{x(Ua5>OBgK`pk2)F(PUV5^MGAc4 z-zJ-4lX#oo%MOoa#(~dJ2Qa;T1sO?ko(_Bs@_Upq>tO|CA@E<%K;!wgQ4D{Tbb}$ji#TdGvwJuKNhE* z1Y~{P?_8rW@9E<`8`_{_)FXsy_&dj}jFO3nhyg9$HCWhsKWIIUYm{Y-Zje8++$5*( zS1E1svNPY`-t_h9#aJq#Wbm`x4a!~*2A~+3bPCJw(YEGDK>`(Yr*>f!Pau!FOX}7% zv?EqH6|nurwcz=J)>DTIq7DgZUT6`~B|f z{w3)qq*5X(^5ediE1ntfVRvlcDP(Rj3U6DbKCc<>r}U&auIUeY>%d}~(aT^3;P9|i z?S1sKWK809aR*qdGX^&O^s`O=AbnoCbP~vRuw+_#6(H{ZoB+4IoEj&o&WH{a8owVH z0epMC^zptd=ye~9f|~80WiM*FA1Y*{%ywA1i-x!;7$~DsNbDtjsV%WU(l3yO93y12 zH|{UX9VfJcP!c@LLxs$oJTiGXY#!DpVUTRpZr~yfi>Ih ztBAGgs2V@LDfEV)Fu2!$V2(C7(h+^qM@82H+bGj|`JXPegF{FZQ*mNJ^1h0LgM`Q1 z>#aOr1sW(!v)~kYp+&@}MEua|lBm;kW+1s+ybJMD;?ebF9{6gu1bk(VN})LZ%_F{w z`}S$?9%DilLq#~p7h_)AAWknPhAC5EkZ~CO1aWk=W<+#bn~D59sm$tJnCe_EVN)SC zB0z)&My^KUJvKfOP6&c?WB#~#H)#|>{qkZf99&!achF^xMRCvwUYIM)1r*twEP$P8 zcUJcYT{|S&JV9n7fY{QTy*AGRpZ)Y~H16)&nk()tQVXp7EJ#s0ybL@TP2<;8ct9CVc%mJV)8{mW_ty z!zY^9O*0GX)*6w%6U}oQYP!geh3($cZRHES0&Ek%tEi|19)CKBd|2^fh%lo0H|OXm zr^$(Rzip%c-gKE5N~Aqj+&`}+9WM>y=B6oyMs>+Vj&TW6wNPyx9dBqfrf%LM>4L1P z+OoLM9>9yQ@~bzJT5`0o9xWPa*COJ1*bW`EDdYm0_#8!^|9`*x`vjb#47G>RDMm(O zYB+x3S38I@wluBg)c#!45CE;kuM8toUl*Bw3pU zLK$`f25kTvh!%iG=-xk*Nvb&CtiX+A%=RE=bT4teDTCIS-sl_`if9H)N_NBJmvzOV zuKyELAqI#%5RXI+C-lFe?TEWdDeqq_?ufyo{e`HVuHZUiYQUrhTzC&s0wS|;s_zO+ zgbio@IG~bPn+GrThZn*AtFIuWI!MBy@2Sn#l)d=dKdywx{a$D-Po5rBLn>B(o6l4JnuC^s)(K5h3Au&)nAu2qLt= zqrRFDPV^0d$ix`n&4V3yFMuELISi)BekIteiO3n{{LD?C`Ol%-&qu#$?a{(JnTOCgDg4t*7|@niKYN{HFvv;@)TJdhWa!S@ z3bIrl&k(&9#+}p^&cQWvQ6lg#_xo2r!4)%#Kx<{Z4t||81jGHC69XKgsEIN6LoWe-9ISgr@V{ANto|2fQeFztaW;~fu+mT zpMNthU_He_%(OT%a_25GZG5rY*^LE@T{FlR?wv_7Dh;*}}fp`{R zpS)wZC}o02KAL|lkkZyL00U1#;BiQAL2p;`Dr)BOqjJH$nB9J0V3|c3 z#wom^*Bq?-rzvq$yzq(5uxU2s^vW60QS-2!%MtjBsnI6wkIZOQ=u`kGxBOL!CLVmj zgxgl_&Z7LmIyxq{&wfTN$KR&S5zo}!+-x08`#o9&IHF{PXV1~K2=orV+qpckwLU9! zJWDJ7$Tgk4;H$g$|J(M_2ewDn-Y-8MtjeQ3M(;P?BSpGm!I~G0by}zhb!%7vaCJk& zbHfIFYueG#BoPQwLcqWvy@W?`J-B@1SjUs>29+G|w(8oa7s3V*;}doh(hR@|x#(C^xzAI5Uy_epJDtu=~_ql@D< zVFP2S;gK2fVEiL-|F;TF(g4TJ1D@~1>;(|@s9>#eoScfr0iaB_-(+9fk{X;RVqhb} z9zu!h;{2X7m(quLYJSh~&a{>O>03ckmP?OsPDmb;()E3l|In9Kao*WJ$zKRXo1u#D zs%m#;#9z~|MtDJE!Dle;?J76<`Cn=ARg$+mXtX}b9mc|^@R=ERM}DwNP^oz7>&y;f z<#^n3ylu)bLjXI$SSO+X6^~<2J9- zoyWUu?0r*LQ7@htRphAtAXUl9hma5o?Naf85oAhEZZlJIy}3)$#F~W-v*`H5S|JV9 zSGre{?K~?F$&TCOtA?}y5tJ9p%@^2~gzI9O?8tO@U^#e)R&XqWtP~upIrNY7dF0t3 zquz|ChG|!pGGb4@Ze`RxA2V#(|6&YarYjR9+57n9xK5Ts4iubh?~nMf2k!qGd&oiySC%-Vy22`r z76&qDVx=Oy@klpQ*9S^aY2$Ky~a=H;0x9_OyHD8!?y!1P3j`Dx*D2xnD zZPDd9vpDLO{Z@CJX6LFObzAjLIq!ubz?9h_JN@zbmU*%%rCSA@BTloh`g04*K98g8 zzgEQ?M-s4)+u7E$)M7QB)#OK7U!;#YqUpn6C1DJ)MERH?4XYK2TKUB6@^46QYa5H_ zLj+Y+((mRGq<`e^3LKRO7QFlQ_9f?|Sz-CXwyq6^1KisCb74LulmuPaL-AnM^?mNpNZ}Ko^y90wQlIb^|k>Li)i0 z=w$PxqQJsHG=`lo7RQjG4F|7X(&Cu>Jli7UjaImEaN@I80FxVsRsQI`a!w$N;Rrq&1PojE}~Lc9;6 z3sn_Acp47&P1{xnDuzD1SH4jqk#5@FnPAj8paK#!>hD87V__7yA8=**R%Vxnd6f{R z84=o@&4Lw*`&rAL(FnLf^R_ueFSJ+S;wIC&8kx<#UpOzt|FW33yBWR&p$y{d{h^=g zix>X1*ffTIf0(}rjaa#IgsZEork37Y$}PcJi89HzwUu~_N77T4T1c!^6cAH3fYY4} zz|~L{X2!j6dOav}*kE@nR-w$zZzFi8>ouHl0f?(>yZMRst^KiY(tY_yDT23;!iCkv zaZhYjW@!8h4v&uPFB<-x{q^{zMl6xfQj4vGvohovhmf2veSE+$mp`o?Dc~v>oHbjc zLRDKdRnvSDlSH(q{2$$ll!!152O!Lh(w_~)qVLz+Eq@3mk`$#>68$lPYOR%C%})S< zn8XJ9?5IX;QNqp(b#$YHf#i-IZTNf|-gl!_%P?p3y1--i0BP^K!n9b^aO+1njrybQgZ$ z&GE?nfP+(iFr2nj9B(+RX4PL&BhY$!ALv~;1%+(rKGV`bXNHBW_b!gr&Vdqq1FZQl zzev*~vtD65AF}-`@l*o{g0YB+!Cct}XBg#= z0>tV+P96XJMqFU*%xZpDk~p^bH;?G?+^b#gpuKg2N$Ez51btNPNt6?;{9uT?tI3 zp$nd`(MCJLxkmahWd`PBicFy&bR*Y%k-j1!5)(ngH)rU)TrjHtl34mU+*M_Wg*JAw z5TnCox2Ep5zXzH;G!@m6wQUrFSHQ?%Pp|b9Tw-Xq3e+cfBP;SzxGKN~8+=>dZ3dhB zGQVc>GI?H4EmJWI8D=Bj7p+>Z%{rN>VkM8g?=`- zB^xfRO_Z=i2qvvUxkUCau5ZcoHLgF<9M9}D8I51p8oZ|bOU)5jAS-ZWE8`A*WkU&h6L{}|}NjIc+El;}Upoyg!ioXHm7Ka@+D1HC5;+3g-Z)<&T~ z^ZN8wS$q{cW_K~qsBH|9GaWmZrX?sVj1rK5a=Pmaz=NEFAQ!}03bl*Hdh$hBZHy0* z(47JHe)saWtN?$@4jg?!4?JZ-FX+X84Xo1o*u0nWkyv`dQsnqy0vWEJodEfW>kzEC zih04`VDGBuApWTr5nkH<{1XH+F=2m!*H$_w&!8VrxoIGFdL}>0ClXjf-nU8tC@L}c zpD<7={WOTk6&oojS0(3~4Qco043EAfXBY~d$R|?NuN1CYK|>`rl>m+WycOtR;~LyB zi_iU9(^1_zbG(;``Q>6Qfe2?>3(FUmHtg%Vij&BU!dpMzem9n0l z%M6y3eI=Wer27w4hk*#V!5*d`EjxJ{R&TB>Zw*ZzOzgUC_FcNnx9cA^EjT#IqFUOv zhrgFOKC$Z{D^>E!KYy8c_h&@_|=^3@#4NP{-syS$zA1m_p()K;yW(muS(D z)1*EGH#cPZ8eIO06q zMn(fUA%=Us30q}#4;54A$_&WD|7Hb3=_*Ugb#MkpPxPi!U}|!DD}bT@J5JcAEnUlf zh#chcnpTy7=wMj%<92%?gDATu8HdSvFYqf2t^OlA36DJwP1oJ`Jyo?`G~sgit7V#+ z^Op0;8_Buxz%bf%b2DzEdGY??q_++!s)KPuJ_R3*@8dejFP2ulXx5+<4Ry6Y3*zbc zp!dMjupQ4p`gc`_crCj=lPUNw+$0~{z>feWG6^^x>~}0FO=vJV$(=~jrM6Hn9+$0v zps5L%QffsJQih9OYt_%@OHjCpu1J7+t`8R(T~{0U6t`UDQ3tUIC}`3SGL3RQ7~~wc z)!B;M-1@C><+e6=7I4MLP56~m#jgLKMUFZLGi{Y`p8L;zm#98GUZ^D*h~BBXXp!Oy zfYQ$Uw`g&lpq2Tj5MO#4N+|+4`7so)n+{F~xTDN9mKUS+h`DrHIkNWw&wbH?h7MO7 zalq6M1QmIH9}0B_R@yQ{N8U!Y z03I&A5!X=scdN~-w=wJ=K1fqwA~?*<0EM8T+i7}cu-eJYlIbbu9mW`cW@Pd69E!XJ z7MkvF@;{AVCUVP^1GMUXc;s}SI-u`c7rqMC^gRUOE_R5{`pMRBPrG56Igj{X7ZH&! z&sI%sj&Ngo4hK9vB(Z)k$Qk@*fGf3;l#*EEj$XHY+8W4#Lhi4t!>m8#$3zWGO=&4m z&1In|bOs@7NPrf@`4{e|4qZ@Oh*mcTy6u+|-O$gE?!wv@)E3H$d`CDjUxCzAZ{r-? zYgQrH;!%3Kn#J$$5mLXuhJw(m-;(nt*Le<4VY=VqlXz}v(ucK|CL)Iz!NQ`2`QJK( zh-z7quc6#3?v#nO|M;~CQ2%v`zC@0pJsm5IR+d}ZIxcp7ho&jYUhaA~mblFzK8}yuUNoz>YZOH|VZxn@%OQ$SYx%ve zw&p<4GZQ^a|BLNv-y%zC`I@h5qO2m7_^Z1$ToB;FOqbRJ-z$e={j0W<4x0|L@|m*x zt_LnR)ve!0X#E$2z}bbT`^8$ih{!)QbzXgDX?uzMn4&@A* zoL4_>CEwOg7Ma1A4$=%g+LyDmG*v4`C#mztP>_4fjx!>c&tX0fjS^Su?xkod?# zO^s%>F?*k1iv<~fiR1N2kaaO!1i@{ZS)c=8pzvj^R;VV&5bAX+R?6Xhz})8Md$Nm* zQY)1+sRc64dH@0%wLJjqClwy>%U)7IudlGM9DP^?YJ9;h(0a&wuoweFY5_}LI_|Ib zcqy{JCT!dJoc^x{R5ezKm4)SenV|2ersK5g25(PtaZp0sWA`#%b!=c)!=QJ4m_u%N zW@w^FkpAyTc?~iT!Jthg>&zdBU+}NAMcBofuUg+e72SH^0VKl7*4jJmjzLfpY8FGZY#CGptye)>lA+`uO~2)s9s#_Y)`{$1tZ1kI(!3`--m$ zeb8ktt2Mq{)?8dHl1@wYKVM7Q8zE_B8j<%(=i+9$safVmVabbijMr? zthTRiDs}qe+}Sn|9eVfH;RxmUg~b*YeI4a*+Au(bxVB=eqhwvT-g4<8PLECQl$E2r z4g|qpR196~*k(jafw!U2{R3U*LymMu887%e&4t=BdLAD^pT6*q%id^ISGmwbi+7%> zL&_xs-b+r`YeXO^7)0h*QuchJ^zyoa*JJNnil{PNh&WV(Yz*avL0$d3ZA?XCDCO{Q z;C7{@-6c}fmNC5N0wuZGhgow8*EHConqdtDOj$vSUw`?L9^4%Zu1^3$-)IR`a3N7o z7CpRZnyt}(E+ngn_@3F23vLOH!X}mc>5*^u?JdD%c!LemD83X@58()85;?gn zA}f$dk=%%4+4$KN~p|sB24}*t3eC)VAPT+XvTI>{ z?F~+IECMuTXavZ(oFJz7>G&A@!6YU=t869}rX`d&Wj?>Pm z&1{!25{iC}XQ(X-4IdH~bf0@|LP>SjwMOA#(V)| z%j`z|s>0u;{&YZ05;fbT9RSuHc=nqub4jZdgso;(75kV!f z(^YPRm(B;|`4(Bkgp}6K&$5z|Qy8wfmB<}U{0v7f3^*ucbh8qHfMvRycPsHWilJ(W z@4t@LqZ_K{2^Uu_1C8$jr_5bPPQ@S_s|p!Rf4X#mVfbwUjJ#ib$>@~B_qWg7V$U3$ zBwmzXM%z*CCwdbe`PN(kis~X=u_sk`1%>z)Oal-X@eX=XRgoDx_k34so@XhWI4|&n z5{i3K8n%-|-p^csDh@e*hd2~{IMl)u2KtQ|wSY#hCB+teWaLx@LrLU!gPR?L1AB6f z;;-$$THGv84Q`fXzgv61Ln+bp$&{iLBe41?;jOJf^Bu?H`#-C4bubT7ZZOuoWL)RF ze7e6mmO{APY>IlaTtyIM&EZE&@jNsjP+IuXe!L`V`!He(jGe4TF>(`3c(JXpp$|BcO zS4wn_;=Y>${>GK`rv{@}uLl#!iEf|7$unW%?pW^UKyYpc&1X5fwCrV?4o`9tZ#-Ht zcGC@e|1oYZO+*oCVN~)u`*b8GFc2`{JK#Iq2z2`&7h@98IqEe>>6C8DNJpX=9kjRo+}eyKSlP?lBJFGTt>RI&UOsY z{N3A_ylVu)f7Atvu(Csua3_`q_AeSmfgSL-!?mGz{|%Cr>d5o1!ay+I~_2))YsQkY5(<# zf`|v|#x7WSmRKWCmLy=O<|=B_Ie=i>iD~JIQsnGQ(?+ z(%TX-@@^F}qCPp93c)rqm=Mz@rCJ5K+fM(?wt`ppy?!{S;}IQx`)Xzg$Hu|*^0R>c z4H`y2tJI?T`*a*ic6whD?}rabvKT)gSAj72Dg*o^&<^?0ZsWdPrVkYFfoWbG0Y!nO z@^13OeGomtEB54kn_tmX3W60dD*-WD5GQ+i+-B!+>}%z&>u4jwvh(3l=ZdL4BaNS6 zBzCcV?1A)Sba zJHq&Enr|kg!vqV~m+a`yJFKQ-C@X*`2(xBM=qnC@QQWaAfGkyiWv&FRA3w97Gj8n) zSK)AsBy#>03QkWb2v3m*IeHsLrrvLd#{un!Db=C75yWf&{Io{dkfsk^RYDrCvl|>f zSYcy+BNz5gPHJ{bM8O(7+x&c_!Il|@a2BV~^* zl`#+|xD+1}XQqTj`l(!2j&9D%`Zk7!&#r2E;8+62(Hv`q1r9lvIUh--MkHmXpG@`t zCQ!t+R_)*dAVBRLWP!gje7foz*ZgxDOXUl4JSfWBZYExU(Gf&Rd%*3w zyG7|gAQ3;Q-vtLBS)d@(9rBQc4NoawJ!kQKBFon-uKUVL#aXd%?bj-Q@U_RgH>3*b zn(#WiBevaV8&NTXj}=QjSu7*}uB%nqH|K#?M|Y@y@7d@Hy_CM=6&AYac{#w>7hFn# zwlFOFBj>E6GLCtk#m47avgw?o6OKD#VILBdF|KLyPJ#g6 zGfQ{zG0q0t6YL4ZrJ{QHB$Z=oH0|$HKd{`u*`UGrp2W>*DYa$SVkX;mpoJ2y%C)XN zK&@REH{aWvaCQElR74M(tq0aF3vc-je>nvP4@)aDl?YK76P~``Q`Cd*fllTts7~oh zHwk(7HGlg;?3YH2R-#ETKqK@U(8&4_t{~#+f_u``jQQFQ02hjuVc|X?ER3!BwoP1R zy$%{SWmYZ@CoGJ0yy+R-LxHn*6i6KQtN)c{TjRBPP&{;Zy>g4Q(G|fM+p#$1Eza)) zN7!b$-jg_B<8-m~)W7x#e{Ey+H25=9@Y;Sz^E{ezY)H8~UYJCI4^T*mBiZt=@texk z8F+P8c`#sMBrD&J?QQ;imAKJrY9O=qi)HTB%dRZ7K3c-87dspA(cZ_A<2ijLI+M=o z!=2p=^fKDZC|Kb+`Wvax^4^4=^oz~!J|3GVX;Zs5WPUGJ8hs!`{eLoyecM08`NFSu zbw=xuGGpOUz}CO45rqDM2wP+MYdo*I2hKJG?~gkOtmcuw2hl52Lk$q7pH(w7dZE!yDHrhQFV&P(Fk+0L`tFCI~n@bGf z?xTQs#t+Zq1NFCYzXrZMOd*6B_=hr4u9w+=%%Bdb??H99;{#EyXPO=Y`mQ=yA?l6I%TZ0y2RbG$Ney51ErU#h;GqqnqELy%PKg-pEUD988TLp>#B`wG4G>Z4 zXi~dWndrqobCAE>iD0$EN=D)@Z8vBE9ORS1vz5IdQi1xQjBI1J^zYAG&fw(~JxLF5 zf{H!MoQw>B?%q%t%1|d11^dIXv8-u=m3UOr-1a5@d`nf5h~aOQmlm)0tv z(@7mkE)V`dsz`zUJqvKG(hm#n8yPR~ydI#&8>(nO!~M)GprX;*AZ;W%X26OnZSc$) z(xRN7X4>`SbhFiTIP@OmB~zVuz8DLz&Vs%Fo_c6v_O3UX%7J4d(TI&R%Dj!F@b}-` z1Uo>utk~gB$eY@%7QLW5H@Z68iSCV<^?yWipni)FE*el_vEOOTlF<;Q#`0s{fwqFG zb+V#}ilaO_dJjIADP}{n1wJBDs)J=9YJOzBAlA?tN(lq}!P8U5C!t@YGL*>*VBsq{ zOGFo=OpOhG+wy{T==c;bMlzlGcv`dMt&^)O{8V%C_DR`R9Aa?!D57f_(UtXwTrNG0 zAr91A9e_NJ6&?H1T#6K6u2HSiXd`{W^((}P)`TBNro(&y5D(< zoyGA6y}kv|dl_tEOwfMVV&ol2k!S{)wf(g1YheEQ>H&_J7n35x^t#gcrcvYWe%GQz znPZvE_;7d$ov#lRrQ;L^2o7~3?+yxHr4>VNBPY$bu~L-Z@9Q-X2LHw zEk|fiE>zQ8NF?sfzx0T68g$F@(|vktU;H5!;_j%XOWFKKfu?5?RJd)kubKx|MZZNJ z187CR#ZaD1@XF-=8vi~+`3#)DUp1DvYur#VVZ?j@DizeopTpe7TOY*-7SW(rBuEB` zL^CK5OAG7ED!Lwvla({(=a$4y*(uN3Jjfo=f#xVCXJ->QVTR@Cp()i3)DQ0ORffPa zZa7K^ELemdBt*l_9yj~=QxAcLDME!F!2G3taWQfY*~^`}yc`_`QHXAi=1b{GH&sD)vP4%MF22viPoGpl!5IE$6vW@U>ZWE%F&G~G0Dq;XagPE3G_ zCnEz|vygNF2>6(FEar!AZ3ZbbQhPK7WpS6>*%`6Tt{qtGR#me2D>x)xv%hP1uF2-q zum(uXysiS# zjLA%E@Y3J63T&EkRDl%ItF{THX>lN!6oha)Z7QwegYc??kmBrv`~#E;kLjO)x>jzv z@SAf+2vO@;c!YGI-slkb%*-aV)O_YjHPPJF!OSMwwZ1I!$udwyaQMy2LCJ{HZfRj5 z?hi^}wQRubRv(ylkJY|C9UBGVKO~@fTlesAf`>U0F_E)bsKB*Zca1X5RSi5ks+W@% zCN7=!O&h44kF?p@n=K~)1cT5@;UdVdy;6-E#vi&vARkETtMS+9p8Vn;Wsqq~CG3zj zw!2muz12;d}(e_rBpdGd7itoT^K`vNKtNDN!7e{<|HRZ-jpdB6I z)M=aa-|h8AH>{);H(48yOvm`d+b|FEK;Iew3Q*czg`yxhV%Cf?!n$pM^?~vJwe-j9OH{KpqVClVD=XO19wlOG(u&06gt8W5zIdD?TdYZ3juk8}l2Y z;I^;ep$2`1O|#ql{QQe`q9IFGmUjy*7;fS970q3WDvd(>X<{8->X7x5tgpYvw*=UA zW@n~+i*a=rjT*0Z)-#&Uvh8995-9e-jj)*z;Bm|9d=oJ{5^YlDj{f<%o@aVXz>Ixv z&;&C~qJrJ%1of`5S42CvkJO1uL5Xg;M1d*6rLLjNP2bnI0ksb&_=p^CS(s-a++bYA z_Z{R7-mzhia2`$r^8*LSmKA0D2(ZcYs><}lp~qzzH+wrD<=$N{8{U&shMo;IwtqPx zaJq-Yu_7aK^p zzV)O=(^VK@8@4A=mhC?xv$o~IU@I3&fBuQ#^xR4Y9-ra9jrov?yCEah(7{k9hq_8T zKn>uowN0SU*yA$Gvw-C0#(<%>rfD^Yw1?}Q_oA~Fu@XJGr)o7GtFQ1GV$t=aKXSHD zZJQ{J_w)4p%;h*9$w4_X%bxJY}Hp^AGnX%1cgE^H{af70Iax| zZ9u4`cJk&=iLAZ7G2!@NG@>h(<0O`d4$zG=Lt9%0rkB9inlm<>#IV28Qk$&tFH8nW z`@g(m(6e5(!lZf8{V-n=A+il{lsC$6sr<$^UjJo$>DPo^I@w+|7&M4Dz&j`<`$wk! zx#MV$S86zuR1og)@Ia-HmQ-^_eG5nPrYk190MaOSc(_kW0kMM%RBk(Y@@h_SA#Fzl zz3o3z()ozc%VD>%L=E@07u$18;0g7k+(5kH`=Y3rQ0jTNeJM=7=i`>O_jZedfGs;6 z$C|bK%T||&y-RsDR$*k1u`yY9II8BEi}7aP`1`xFVT|)LS&XgJ{k3&q>m>xV!TT`% zL!(K2YoK(DKdk4QOu*^>&~0k6!qYtR^LmS!;t37m6-wD{6ik9Hl?~!+}lv#+-=r?s^S%=1bf?{xOjSFI@gvJ>gFeuHCZ@KQW2#Wn=82tk&rw(aidIwb= zY*|dC2%^JTx#TujA(xJyMBz}H%Md2$-Q}SUo zSt0VveF3`mR+~^4gWkcgW=6=T;UxygR#KgN?w^wT`{?|!4Aqo$Dt3PP0=T=|H;I`&#GkZb|GhYr2cpC!H7HjPcC zOpHKP)q6gLJN8rQqtc~_X3gaw2js2y0><3Ht-_t-Y0|uYGm*5XJFLODjx)s!DK27h ze>l{G>j!4#8l{Gp0i>VbOx$*lC0fos-g0vkpFW(@bex+1E~Q$VJhlQ?-{6@Up{J)I zd+MGYWaU%GK`GGk&3Ug0bJdqMuTc6ZYLjDjxULbhJDO1aD5|?#uztG-8RnNk3!(Lg7E8mFcG=D3*~xmD4D&Twy5*}Tb^ z4mCjt<~M@dK~SAHYG{=B*DZk%$j!|;y9teTv+fXmtbc(5;ZJU<@~Ud*qkb374_9Jo zMPZK@f0PDZD%5(vHFnJLZDk+Ha#K11~sBX|l z)o52%EZtsFp%kO~E~gkQm()Ua-5rOBg4SLpHod_)LySn$c^?u)SwLB0Jgh}O1_B-G zyUVlfpu=^q=){i+B98e z6kg^fZbfT72Ltmey9M3&o^7J#6$ayj&Ob8+$aq*Av8)(p&xGl7O<^ROECrfd{t2>T zB%m@lV_8`L*z70E0o*%E#)P8;Y$Y|HNzscnyq0g_r_ewWmC0@O*T+Eqt3&gkDF(0} zPn(k`5vG{x{EAxxu-+X4|5pE-V(FRXq}PWJ_CEojY+IyAKgrn9fwS$O{@fQ?FGu+D#M7KN{zXxT#-NO+%eUu+d;=p zf!ZekN@V0;;b4>3&0N-X>yHe=7aZ3)bgr3JA2y5hd+pZIF4x92KfP5`BZ9uZ=w4U% zH3!J6Q*Xo=w)EpE(E`3ntiE9*=>pb5%d02y4HtS42=7Z*qrh_DpCo*WZxoAxbz{U@JAS>2VM+2q{O}7)$kLmw75SJ z%`cRzeJe@TIP78aNQf0$nhZDg)b}K6Hz{(}=jj)ZjpTgKuQNqR;3FPE)iNINdYTXH z11~#)ayz^5V0dl&WNI^Vkk-fBp4-U`7c_2%w~rN!JU=lqKd@}Bn;pBnf)VJ*`ZuoU z;_fc3>c0oHP%W~SKKeO+PULBnnFB$!pbRrcennGIyXK8VAH!s$3>A!al8`Cs>z3fy zRV;%!F`o3}{)$E$rsFe4Q2i9vkzNnWE_MS2bm`JtB$Uc?Xk$;mw`d{eL0DzrDePO_+g|mQCn}@ zAwKQ;{TyWzvKV+DuoLnfBO$goZFzCe4m`X-A^&$uJHMN_#)c zaB|rNmw_Rj>k^TwK=5(~&Dz}ZX5p#i?ke6*1*#$7Q&#CP9$R?dkrNYnEV15_GYQuI z&K+X{bY8x|duul;Fc`&oL2U7Dd=$h6V=a$7|0(`Mej>JZCt(8n9m-^oLtRi4+O>@c zEt99CX>xHC$<^8w9GIwFl$dku!h=6ENP&n*K(NbwJ0Vv8;CZD|2T}Rd1n0fG0_Nlf z`+Lt3^0B^kcO!plkaiF2M|uTW5h9(Rs3AXe2;}ewK5H%%*}LEDET<5cf#+{X5mj6Y zZY+Ei6j^Ecml7&URxH`Gp=U!k--f@3roBUVDUNZ;GTho@h5DC#3Fg7(b$cySHQ2U5 zI}s0hQ*3kXl+M*!IM5BwQ4ZktK#X@nC=k1GVhaBQ__2Uad*3>50j6W-mg?j5#B<$x ztkI8%(3EQ1MQLeAU1u9;kugmw8inBD8rOt?M%A`bX5%_^qP-m+Qp?ds+xR1Pe*W`p zog8{@C4-dso`tuYtX)&%4=qp|1!Q0kFqJVQ!Y8#JU7)m~X*t(~%)P`j|2U;^OpRIZ z0;Q~>;f`N-m5wP6KypOT0&}mf-R~L+%e7YB5YXhXQL7b?VW|w?>cO{u8Mfg<<~O01 zYb@i^{F80MZNC@C>(=JYp>iOYKr?#rLA$t|rl(gS`^dJEAI22@1pI&j!cE{mP;rr? zI)iM3aV6fXMhIDHfEISjyYpGk04-55j{gxe$i+p8C905eK!7Cvi!-~~3olX9qcgH0 zk7C*4ZAk+nDk|P)GTK<%O3gWG zj%>{RKzniKeQi_$u0eLf`4_182BGpm+YhBm5ON*t&G80Sgb)dZR659&wLSh;$n+UU zu0EKLpa`M#)lXWXJih4Cq*RAjd6v^~Nv3CsK9ZoXM-NcO&B z!_4PlX70zA4&U)AVy8}J^4!|RZ5Y&Yvq4uctiV2_T9T>`sp>e-y zoO%4$a>?lMg!Zf9>AR6s+2cE|CM{3&w8Zry6 z7g|&dVbpu!yUZBbf7PS@`AvidYAiV355bYkft4;@aBhrD;)jZpBYC(;9z32|{`}c~ zzT!C@LfxmYbPB}AwFg)qpzVoBR=IQEf{3r`3ZEO#NMZTi$#-Q4hzr`YfLrz8#9FGi ztTYZmAmZM;uPjnsHT#T`G1u~>BO3;T7m=sv?b>9|-+SlMhQ-$UGnj3+_dN7ww+fjs zw{mc1?G(Rrhrg~|wUXL*S&wVgO$dHWB*{OaUHZ#*fmB-w3>_39FeqBTbo>@fzM19; zcF;x;7kq(BPy8|thck2gW1Gu;qxe>AqB$%}K1y}|xgwkIi=J{P#pkQ5|Ja+34g>zI zQLz^+o77m@*Nq$X|0s;&8+}4D4=GL3Lww8INYM;^f|{a*QIgdkIuY$p7f|gqa1TTt z1YbG-vM$Q9mcXvim#=vrF?s6@aYL4Aap0(69K(psZ}|n@Nn)GuBl*eyGw^46&__nm zk+#~8V3riz6y(aKLE>!7ghn~Io&J|!AQSp_>=S0ycPU@ymahn8RI!9AF%5xmbh9Pg zqRi)6IO-^UQSJ@H)Y z*@8tP`W!%@9VuI(1hc!bA9>e+u0A8aSb#-H#f<)=463MzB*qE@|DMup(2wO6vCowT z(G{1Yl0CRuftpP>gc2%E96j4@7jiPj#?9TjbS4lm(K#U8^bx)t6g2;g6^5mw%ZQxS zEg@M{rQiPsC%k&i{(QL$oGm8Kkz)^4vTq!Ru+D5{-y&!kzPQ?KU$)|^kvpSBazg>EmxO4zi=wqbhK;dXKKQ-mz zt)7=j`5`QlV=4VooSHTvzFr4wlC;lE8z<s$5E;F_M;vg8gd}aVV zPrvt50;R2#SbH|L-Y_E6zWWf`LcWPyJ-t4dFwc7jISz!O%A(~9{EyxXtO0w92db<8zqz`n39^y4Jf5fl>b|!Ul59rReEx4&5Kr(m zA-CbPU$n^g-6aba9h?OR7>L*yHtmNjEjGI9P=Mzm%T3~hR;grb_H)!CVzs3I>{2r~tKlc9mpp6X^p!BAysivFD8h+$I6A=5=I7;E-H42CQnS@ypwO4bu5X1yVx zC9bR=1r^&QJtr7`>e&AA632hzR`1go>cQB4G4=x3Mr3^RM7xe@J{a_bCW8 zBgE5kl?I`Sv%|-Nz&t!ZfcY~NW^r%9OA9FoOQrTe4keDWsuh$(*D%DTw~Ya8fICdWNcG;{{=vv6A0u8?PL%5WWw5&(Nt$O4W8a@c?26RrkYlspIGP_K6UQn zbehG#&p8R|rr1byrabF=hd&V4Vw{iH>ba0T$0Jm4ix`>}^Iv(5iaah9^VXi&=p=jt zYu}j68f6jZMM7|GPG3khYW^ic5?r3Bps7F_TcokU2nry%Oyyv&)gbn1oGG(JVrEJM ztp8^p02&2gG07*I>^G0%`w_0}zcYmP%6<|A|CQ0Fy=qQ^nn;61!@9rI2N5?D5mn?> z!88v?x$%f#7~<Ue0FM>(l$oD8-kUSG%o^t;= z1-Sxq+@%Z8V|y=OKpkmI(j_S^jk5T!*0(b^->xE#`lCT9oFLCR-z&ppuD<2Fi8lx9 zfhX2!ZgKTS--aGsRoo?ZVyuD0GTV_81ud=Ob_NW%^oT_aH=gM-M5K7Ft{LTE!y;DIyvg7pc2+{c6RFo8^BvMR2&JcZ#nn^Ys;ZdwL2YQV_9Lm>1jBe>WR2J}8fmCPg zuwc?G*nD$jYE|%Cs!I8A_<#{vhmUpH>Tv0p#OUtsX#a!2s&rH(>r>k}Km{g+VlUg7RQLydM*h zghamAUp`bu%{_beJij~d|H+yt@$T6T^UT99KT~d}62JnVWyreRhj+(2rYO`s0(b7p zf9N;s2H5;_>ivrqZ8xga2?iMT2TST9nbUsD`G>;gTi4>V4oKtt9y6G@Z;}Yt7r}P! zj^?$RSWbLLKN9bnk4*`}vy=$-V)dTROV(8{$BQ^K-WfLtxL8 zW7Pl*K#9XcI}{)>4&2`&fuL%*st(m5f#6lY`>EZnI*R%Y@cas;ozX7*V6`lGXV${8 zkL#1?lASn-wx3op*$9@#Wt#x%qtdmZG4SFsP&y_FuI{Gc*z9}==m2*P z!_@ZQUTAFC;Hqp(Qj{4vt3c*|QmXFrRnn{DAvs+8ChCTNDUJ%622osAU1#Ug=bxKC zzzDcloZXvO{uJQBLdBQb0+)OQ=qNsqjt0zf3$2%Jp*y5VV&xV*I2A2=gC&4ON6A8h ziq+$MwboE=Nr`%gQNjk80XYK~bp|&_oR;8xg$5Sd!1iqKY$^ZtZt;Be_wER`yoz1h z^<#0q+|XTfhRzp8c!^PJOuI!_j@|J40hhx4-ZTSOE?P*NR`10_W9x^spAN~ zWpY}wW9Tm<+l{1m)W>{*<4OO8f}o^Dhn*-6@sL2Ltg-Yldf8B553-x}vGE@G1J0<6 zYfAXmW@?tAXwdIuU}F(Y~g z*mtsKKMgI7d)H*7($c%VUd|q2;eyes*I$DlkQ8KCM4e|bj81R)DB0jUH?4@6W|xEa zPMWwy#W>*fV82bzNxcar_1)UHp9!R(A%KI~c%2ntR5X?tL)ROa1xx4(Y-KrloU;dT zZUKCl1xc}J6^nv;Dg8!h;d_-p`nVq=FLf*>rC^Kg$T!#;ezF|O^v5zmm8B^lZ(zV>IcOAm_hJ+1kwpj+ z4aXxV&N?k3cy&IO3uzB!DnG`bhkBC(cz@o|7@d6gV^%_7%>Cm27|c4{^*cx`;g|oj zvygNC{ui*WY?@ewO7k|j&Q0(x&%PZh&{wqnBiO(EaL|bYn#DGLi}8GwTf}KIOP)0c z8h7Qvf33;a=fZWm4-JHvugjr5l>kOLTzEMX0=k7cjgl?sS=N0|WYsIh6D2^msQ&Ew zuf*zLRa>nYlMmA~nwqC#Z!6V_B)Da=#f<|$=#HR$f8D>qZD!WXpXM40 zPbygrdb(Z_5nvHWtqK$Fb;9Z#fW#jFe^cwCghHc(?0>y8zw;`zpnq}Y8;%%$`K*A_ z^mqR6UH>gA4@@F1-sic`Uk&X-ydzrS<9tP+4o@|oeR5e&br=DqJBht@8Ke@<lirW7Mn!Ef62T-_NVevwl_OR6`SX%fw0L&r67Uc>QJfGmY z8Ux0ABfKfZv~6Y&wJhbaj3B4#=Y6+=fy;f)(0wdSPprU0Ry1Pgfh7vM^X`R!`wB=b zIJ;Zy2ku*6IV$gAz^Ci^b@OYnY_>Px@bK{0-Q`$CKt%IQEyZ%gcCXmMTE&^+v42@!k<65krmApNr>}sK*U=I2i7tri9jOH+iz~P|F+N*(eNwM_3bu+w!k3E;?-|t6S3$94j9l&T27IeKltg% znoB|z>ka-pe;w?qyJG3$?DT>lr+jSiY)HD%vN?gm>y%#LQ5H`3peX>dL2}N4U8$b{ z*QKvpo(Ps_`QXr;(~zpESgBP7DqURY>kZxN?*{zZbJ@m2Fm2W7UpET@LCca4^D}qy zZJ5Hv4vkrHGV8{iHt~^tn6na?`l9P+An5+-tO4oQYt&QdjUVVNr^@^lBl8IM-i@F5 zg$(VU?#&(UwlIYLdSgYT0|L(TBQo+B0a7YF16br7$Iddm8>6FjUHd;ciW>+MaOFS% zb>kHc4N6Zx-+g1}y5A5@XJJ0K_MZ@R&X4)G8;#~uXA9=%%i(RtA$W&8@4nQ_SAac| zB1T*b)~$3n_uogk+pLq@IwZGWh_}NWV}8X`1{5O}Vm+uZ=h%k&10Tc*r&Ah|d)L}J z(Y4A@|LuFYg$reMSoV2FRXl$4Gs{D0lI8!Lq)nk33MJz9!PzqJhb~0pqlVyHet47k zU`ToySNWX1GSs3HO98YLq zqnbcC5at<}sYuTF4)}CBP#M?;57z{W#kJlrMlyiwHxPxTfYh);3D$zo&!xkbJ${0l zSg`-pupQ^ft8YY2*PNw-@P3CGyBc#TK-O6d4;orR(*6DJ8hmKjIXUxi|JcJ#?bfC| z<9o|e47z&@1$KEXb`yT~#C&Q&KZ)ktzT2ARB-q}yWI z6LGBX7H30`QwO$EZa82`cI#J* z0wK!|+zJTv(ExDCp+o1V>deZ#@V8sH_5V%NJ9<8Ho_kFO>Rl_^rH-E&!z$P%znTz_ zQjf^-fyci>6SB9gxOeXZrkdQ3-B>7D!+lS1NH91GK(-Lbl&vwY_3Dy-+vh7X+$#R5 znF^{@A^0*rHIb(dI2DhEfzgk61pwf^xR9jJ8mVD^2wzkZ+gz-5%C2^i^quViAU9gC zCx0)IEzh(B7ftyW*jz*-FxXOgvswGu16WmE<~k}%Yy#nRIf&;jOst>%X7J1Z?gr!{ zUebcAC~!NEg=)sSZtUguH$*T_q#UQ}BPRJ_uK&{I53cB?MQkJ;gIrL z2Gy>Zt{pI8wvQ>`1BA@`U340;4bNax*JertE3LTnjSD+oaU@|>aAbmSr~qA^z5ShL$;mWBYW1vRZiNC6-H1z0C- zDzA>OAC2%8^1XPN4+K|7Yi3aD>F>(T(8j2$Ga@s|_f z?6xN?FoQu~xo~Fc@ae&I)Dyq~pI2qC*Czc4p!vI!*wpBdAjb8m2dJl*tQuJaQGA`C zjtwfdhF4Lq`8$L2%@`(#jNdxhaW$Sc&pqpDqB|?cdVxv!WQP+4fZoA(Pxltf7262U z%xnWqzD0}F9*H8`PrhM>N<9l}8ED~5_P1xv?nJ*N26Gn;8_oc2{u0RlEepgWGkHj- zPa5Mhw;iICOhC^=#mb{t1C z*2Ws*VyzJ47ay8|-po3kT*$yu-M90;Ls@d37q(r3bC8;Sx06Kg^#rlz5zl@oGD5oD z%m8qWfQ#f>Ow_e!v6rkJS;rosn>knR#?N$unNVP)Y@?RW66>=39qDyiD6h5~c7~#_ z1QoRQN;eyNzS*mK-UPCXuOHJWzoLSsc0Py|?s3BE8ZbLEwdhu<@Mc$-ZrXTy88>s* z)vE6sxhC8ikvh01bw}e@Oq}+auaU?@B|iqvKeB?72PG$}i&9OmmUgJqo!zaF$;t6f z$ryFfbvsO?Hsy|Xtj`6)95C)^?no8Dn6(>%iJ0B0St%HRXnXqHz(I^N@iZU==Q?8Z z(RM2yJyZFKcud)g)ImDgx}j<<;WMw(*9h@?^hR8fv`g4}j_62|1u*1Ihci$%tplJK zc7&iM5P^hPaZu2tm*(#I_pA4ghfl^@Omvh6k?uhmnVZlnI=Ng|ui+gkYKn6SWY$P> z5JjSh(mj2_rY|DZAaKNZtMjUD=mDMm;N9MihXI?34Hifbjg804oq%G2m;LzzB*-W@`^~OPOEokyU1^)obnM`Lq(!ZP!&|Che`Bol zP1H02CRci{d+XIo@cPBe3{z7hnn=C{@kt^(^HZh-^^s?~PiHd^DP?LqXPRyx9o}u} z%aDb?#AFLX>nLKS96B7Y-}w~VAr9ro11mPv;F%4@WgA=OGO>j6(dn^^m?6yyZ$H;eQmX(%=|zZ3K)vF}fV zj9vHh6<7AXc+((pEZ+s@9bLEBYcAGN_%L4I6hin&DZlLczRKcJt+Eg6&34A<0xg5o z-C$d%Q+-O}M*$YRxYx@QoYy}~!4ge&Tu7<})`*oz5g<82#O38#G8-QI;0&&%3%twm zaCXv5>eQ7_HXxa^*&EFW(__UUYl8#S8c6$rm`DOlZ<^GcTQJzGBm0Gxw{f%fMuY`O z-#enVe`b-IzW(&6=UJ6lk5(5ch?6pxbx3zOag>c|?RW#{KB_3!wSHzlETho%%hJ-# zXq{Xk6ySR_H&pJ(jfda_AHu;k&G9(WLE#O5#B`^Ek>{veH9PhbA?>)9FY7ODUy;+G zNUfW(hQ(5dQV0-Z4~Q}Tv(Y5Txj_JeAbQ6bnn5tBoArosjQqCqVCfhU6HnK%lhdS9 z1_B6myKE{Om9YMM`wA&If9@@CApVw4qYMQksQ1>7QfULjFR{%%Q+&S&_BrneFO!tq zkx4TVGf)2g2w%#x(D*?5?iy-!^~U9YaDy*!v^_eCS>iivv!w0u8? z=tn-npp~^$;c%L%zqXN`^OIb1@M5(jDF6MnAoYrz<>xu1iwhHlV*=wpfrg~$C^}LQ z@a?TK?bNLROMjQb*)Q7*UW`E25eFOy2%1;XjbIB$(WM@;w6NgAR}v?H7IS%p69)Rn zh$Hxcnh!X5<>Cs>FP0O4D(h`koarmHGt)4|n?W<7R9ws$y8U-aMP&^3zZdgUgD)k_ zr-I*KM!iRelTl&22YmI4%5qGtG_q!G#cIAZvo`4r&-S^*m#uIS)h_&wlEt=)|Gh7z zh+W^;Gd-k(r4@u5rQ3_kR=UVy)SC50>=zQp!1CB|TH{#83#Sm!-7D6?mvrkr=DO}a z=DB)!`675qaMzx+8(1}HZ8Z3- z7LMVH*1QxuHI|>?Lvg%0G(vVv1|g|j=($^N_*Z{p)!;Pmovv-|GEA$6X%BOAP%I^3ln$#z#pYh_MUn>0pJVth#|Eoumoa zRVsb>GIz(h?|L*})_-#}yXAQksXS!JGXEAP2pb9CcFLN-?-7;R-9GG)*XDWpzUjH- za0UJ7;IgjH=9?VXpa(Z#zZ78WVOy~=Mx@v8UeDaxyK=L(x>lB`AaCo^W)STuAo7r! z+4z0A?PVFbU72|b;HkLCOK3W{Dt5kB(>kRJFbA z5m3JiLd_hb6?2HizSyhiRGS4GxP1+GIZ+_3njTk?u_EOaBRT$beH(Ih6hz5D7yKcpD@LquU!csCLsK@Yn;CLLiS*)HFR9$K9j?! z!BWOgoj3Y&@&h7ghP~yqS+&}uYik$FLS_}YupNi{P*i!c1}Q!)WUXCYVwC^qn6U5D zwzLv%hrGVtCbpneSi3U!`+F_PfkzWl{ZBfBQlFLfW6h-lZtdukMmcT0^g{uCFT7MC zm+=fh(O237gE*?+$ikL76vcBdpOFlKlwVxTuz z3g(j*bd!&Fp6OD38L?{hUb_6-SfNxPDCP?I>?qyNwgn$IjTz=klI~HDXzZ!Ik>V;! z684gHZE*=1{U&%A!{T*#Ww)Qxh`&E#*S`OU0g}JhYuB=uc)x!NFv!g73_QqNOf~Bip*c5&t z%uHd=7MIU9m~z_`%^dL=*EgZR3FLaYvW34lUu*k$m@b6B)%Lf+U_m`si$|+jHe}2d zo4`%Aqb!oF&U62}&?#;v6pSn6!TToF1<<33E&QkNIh0R=J;MBExH+N-MlnEZo(NH4md;IxT zWzbQImryCUa?`)$?6S3RGpj}OHhjQVxn54X`x8rM^YXQV-D%Q@!Eg84%d1O~M?KVM zr%tzp)k^){Qob=f0=AnH56>Hve-dM!(QNALv1*6P5W2UC=?w~YUJq!l96+ZMy%V;!_Gvj_WSG0>*={n$3tBX+e5v}_PK@~*5~2gs_*AM zHFwgsZ8qKEkeFROUN4our!29J7pWsURW5EIQ82 zeDs@<%kTbXDO>RMpRZKaOFsbYrZaM7yw7sNbFp;e%?sF#AR9x?n~J5Ht*mqqEoE`w z5t$;=%%NObKhcLm?2ADgv*mJW4K@E*^L;&MDp$^%FTtDV#?|5_CI{`)ZJz<+Eqc?r zD*92~!FOr?56j#oGKvy2Lq)iSRld{_`L{a;G{UJWy_UEKFKX>2PAxz|M(`_W6@xGH$fg~&a|^YhTSc2Rr21uKlj=OIx= z+6K9nFCP>OB^TV~)ewI_U4G~_@5L3M(A?Ci_JqSc%N3oEPWU~Fjr!Sc2Y<9tW!Cr> zc8N5m)vmzW{*)zbC4Ch*etV1IDV*j8OPWE5EbV+7-dwwJNK|9H!|(dGtF36b$eQGr z_t!pr>#NY6GF(^7<3F|hFFlu#tq2}cheo5}iluW5;n*0W_5&WR#+9Ypl-=Ju24gL! z3OuLysX(?ybh+b}Yl~0FXyXg9tN5mW2wThw$(OYtTh3GOLjxW_sNUz~dREJ}c0rQO zXYs2bJOBUd;@abx-2eDC!^Tf!$@MU~-@|E?WKu_Qax0gJ`B6s^lBisIHXS)3oD@aj zRC3F;<9;otgc66T5hh)T88KqC-*=m_e*b-6dp+OJ=ly-VJ-3dyJDBG1i4F|~0fsU$zatf&gh zz(9-!swcl9aG*F&$-i&4DD&@=j(L7#ro-_^>66UhL3&W|NMx^9`nfjy#G=ov2|4HeKYJDF=P}jzvA#YrO@?AQK)C0uJZJ;!GbTjxvZCMnePjk5qEt;eLEPqV8!rz zPwb42Ksz$aG*qT>vl$5iKYxtZ`ZDyPQKviYZGXulXZk0Bu*ZW##d?KXUD|^LmF&bj z(nsk{>Q`hQo9TCRWi@0I)?&80Clmml?qh|b@WU3Y48bDKL z^`PUmE_>>nOd8LnPEi7iRv7Z7Z!!V{PS2;Dr7U+oAAvp>&|ma7hmTb*=PyF{XD1So zd%gd)oEpmP4t-6YoDgH|TKbT6`nudJuY;w%@d@sXj|SC~#u|(-rP7IE`nfQcuKT+k ziowyVL|kx5_$JSZTU8CW|9vt?6FE)Pijs9V+F97#Jk>(4b}q_rCRms%cDklj`@6T2 z7Uw=M`je%Y=NRPr9RV(^Z)Yz-N@&;L$!9z-GdoITO%-g;9zo?zZ}` zIv4HjNioVauJCwDTe@gg?tQS{GgjaEuEs#{NYb9LRr~ZhMY_|o2`L*3D81i-nKCdP zm})*5Y^ZK$`y!$zxVd>q&$uVt#$0cgTA_o{gTK<0DQKl4`)k|!jbSh`EA|TuYP5AH zfA4;-^$b(y*S@&87!a&}|J{Y@$_tg=_NXm(V5pv{QXBkwH~5{FPV4>Fl1;cEmHzrA zEBfvSLqqj6JwZ6~`!??pXrl4lsm!K|hC_LGuJ`m6SnZMHN)5GSTP?6&Z9lH!+lw>4f$Z`Wdiuus)eT=7#6@UE=KM74n(gyIklnTMXn zhej{Bg{6~gi(ZMb2B;-zgDV}cT|2Vwm$H6qoT{B4XfApcdPu#xHXcgVdH48Z@AnfK zKE1xvT}az-n(6`Cv&ssYv*kzcEHtcsSa7>lXy1nsZ-4tI&!L;URVJ3|go|U0b#y#~X&SkOH|4WaZE8=IpK)8kQqRMae44AV z3~Lx1xyO=t6vTnCgTWBrH)Aaq?L8b1Bf&pU0uX(|aIgSZN#L=`2-We6|L8t@*mY{R z^_!^ajFub553`h+=(wl5N+)&`+D;I{wu-jtDjc$h>=wgxpY3|Ce=C}F@2`Ago%x)K zvss^B)tBgYCd#JkY>_j=jm;J);xtb)UuJ}nYphhACN9S93~kCR24DAneze*Et$0m- zaZj{7pzLY1DoIEyJ;cm-O0oE~1-(B?_A-TF%Gi5!RWE6u=IEel+OJ2AzSAAFuYV0x z=vR-`Pk;iXldEehBb99*l-L!_r8~uYOJtjrrW|UoO12~-S7lNf>Rz-$5pHJn;T=sj zdYUH!CSA;DhcWJ}3;r}3WpeWE@)hPeWE*cPR ztI$|=foj}omuV3`EKJii-+d|(`Af>Q>5*dT0m2NIarn!Uk?N*yr4X@(=EJLl(6Hl! zx+_k|%cE&7jG%!dGvOzMt+%3-E^ZB7!Fo4V2p8!aO}>-(X}l6DKq`Vp8_{S$U;jQR&!8c?D)Q zlQBQpl+-%#pgT9R#+3EjVk0BXR!%SE!D;Q9SSHq3^EM0}(LPQw9aiLd)DKJ4kL@OzQo zZy+TokVK*?2#7j~KDQVfEwoXS&ay%iEguz}YVefRN(2f2do1~4QNPxJRGyczh>(JS zwS|zbrTs6d({nd}?do}X+tmp~o*6Twep$IT<+t;Oo-dS6Ho))#7fR=EJ2tw9+TZT+ z5qcVX@7o9#7y2;Zuuv=pYiV#t&*K+P8^K7Ds4`n_Q>|#@W2WDv-5*}-KL-)`!c|Tq z;-4T7bc_Ddd1Z|^j5H?YeUZJ3bapEU_qksqe62Ax4dD0ovqR7P4MW%EWyW$fbRzo1;K&$de2iiu6s{_=29I4g5w(`^&G?)HpmzIX zeluBP%Ym}}PgpOQEgJZktW>HLI}k5qj0S!m>e~S#a>)AHerKKzoKzl&J|R++NJ`G< z!>NJF>y+3ymoVP8C)6Q)jMr~sb~XH&h%L8ZR;B2aoXFz+`Qqzr*-A+u;XbB8aLM^G zbzea~2yCiOqR0@I>bT`;XP>=1Xk3uD67dK7)hrFrW@a4y*O5zTLIl!P6%EVmx3L93 zKmf_MIAep+5sm?`x;ChCSEyS=g5*509JA>MaDY@CplT*A^#7r5xPbFe=KGWYzie#G z_aRhDj*{RD@y7)!KgJ@m1P^qtj$DaNBGNXzz$x$+Fc=$AFQ(q7B5%d5`DZPoHz?dg zJQ_SN_)+XV?8D-qmE)mc5eFT9-5@-c0QM|hKW>KlKp^UEfh27Q=)86@feZt8i(BLJzH6_os+!4`*I@P)*6B^+dcL7vuB zII}M%*=w}8^Xh@8fKBOvy%xKqR{9O*cuj-(SO>A(#!ysO~lwf!j+e|l7L86_Nxbh7r zDCoAZ^`dHlc=kJlZ*I&IR1)k@Hi$Mb6)r`2>0Vo}0g-5e%ojwUkl;?x{LCR6Jg)@c zieJ5mdRQWU78pDM3hq+m2@ObVo`=7;hLO;Kk_P_2l00y1Q+_*2tW%-d0}N1=eC67R z=E~-TE+ZgCfF-@KZn%UE3}6){2k+M+06%;UjNHb)iQ@T(^c92k5f_EPl&J~Hm*dZb zr5eEf&1Au*_VIGgJ={h}{45gDqyd`WWc%okErwFa#22J*vor`3ErZt6Z~>l`F!fJV z9k*8V*#N*@K}ZpU?cf)$8HTSopG2I>-iRgUVdg7N!eiDexP~69vjxCGLrz?=o^WddcbMKBW0P*=b41J z(#9@9FrW-f4b3=X$utATZEKDcs*>lD5bV^X98n1+p2Mi3fDqwl%uNnn)0q<34lAB7 szpBizU@#bqWnH)R7+46gziA1;#L07#1p)SC@CoeTe!G1od%a`+2Ukkr5C8xG delta 262491 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 z z_Rcs20v}=U+>hd-CwgwN_{e=+utF_^YXa>8(zTUd^lAD07FR~%4p%G(q0A0V`YJ{x zVRe_9D_{cU*cJJv?t_$<`iot;+6frh#cNVNA6)9SBu%n5!sy+amSWAIov4qxpTgD? z&4_@^`~7TZ)&2(WiG07E)g6+2jM0yV2Dv?c&6V`2Wl>bzayxY{U#deVyFBy-NyJLc z%4fe$PLL@D1I(8m#~fqMYR}srgC15pEAJizMjN;KPHLFghyb#$up;t$pR{}axaqWcjYw`FZj3eO;7bqMzr zyzWFIP%V?t@9i3?wD~>L;HHl`fuq-Pf#C2IMYJ>irHtI}f#yNr1qDhBco#Z(q6HPh z!Ca?E06cd=eEHKZHPzj9!qd5 zGaMRdJe&3@SP}D%n~K90hn(0O)8P1F1*0RZOWl7})&B3x{PgH7St$e%)p7R(b_&Zi$oL2H+uE{YpH9BngnKb524vlevpxb%DQf$8IS z#R8-ujBeE&rujYxaS%O;p$h;@44&ODP8N;;tQ8&~JbwVxoOCTxf__rAP(rA;k!|~X z42cOBCZyrJpO?srue@3{!)ik%3$lSroc@OqjateBk} zk!|gsy+5WuuEUw%fP`YzJ5;7Oa>zqJ_bx})0We*cz*Pul^Iv*7mKNtd8PCHJ&Qlfv ztR=NTx+F`&6rtoR*S0oSPuGMf8?RNDSS!zXd9BI8xasKf$c2+uOz+1lnkOjxLR(Xm zeHL+HN^9j5W48mErrvn>4U;Y)Gc>>b{fkfZ^m$r!QX zf%$F4+uv_Bvmk;7l1c)fU-?@!N=(!}GADHs+M`DHLN8=YUPm@k?7nhuz0fcN;o$P2A+Z^&MlMc?-m$~JT!(2V z(b=z=w1&PN1JtYI*%0@;>>Sq(#3lF6t~q?{wtCSIUx*jx*QVFJ`jnJSP8(ruXla0+ zl<7=!+~A`tz=x+jMFL+Qke}Uf-oCOcmqc!dFkYvHBGHd-Kvd-?SaVh&ZHUeG3&}$T?mWf5rL*vuioSI)|!0 zAjKwQ0mo+_$zodamRl1~2Od^E>e-Ur-^pCQgFRk9KFwYeh1(2i_?%QwvsUj^WkIy7(B*AOw z9y5+>s7bH#wys*_`+H5yucq-}L|bfLic#$KK6v}5v}x@Y(N+|0qI`b4QC?AWDoJcY zU+eG_#Lr*8^aFXy{{!)mNUd(pL->oYwKrP@%!Kuk*CqTDRhG#x&{JsG1keC?8eN_c zljzf@8OAjA*NqMn-`-TM%M@DfKhZYcJeCDVbv^OL{jFP1rc3$Egp6M--`HZ@c%8ec z$56Q#S&$N)l>8B%t-%Fn^*-`@zg1IO6%Y7x(=$y|3!G}Stg`aK>w74-K){<1Kf(sd zeFLsYy&ag ztcaqJ*P+|u>@dak++5#4zqq-q9d}vK7v+hTM}5skkM;Gsp%9egI4eU0r-}gJa_Zr* zx|tD-1X#1En*aza8pjen=MgK#=iT}{oCv69%2t30j)g4p>da2;KF8X6*7YTsi)L$1 zD8YErvz5*%_$Rvdrfa5PrLLHfx82K`Of6Eg_wkL1d⁣OsJactr$wPAdH^tWjbf^ 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

    bpVtYg;6a6-M|edWb0ZRA|piQ)7jwE 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

    7F23$s1G2O~M<)QJ$(YHE| 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 diff --git a/test/image/baselines/uniformtext_pie_pull.png b/test/image/baselines/uniformtext_pie_pull.png index c6da30322988aa95959eb2e8f6bb64682d4391d6..d351a94c488f9df024a815b73217f3e420a75d43 100644 GIT binary patch literal 83065 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

    7SFp(4tD*Sr`G-)&`t!#i6T#pak$biL7{=l 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 IQNy7B2b|)1ga7~l literal 82953 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 From b52cea3f07ab2e37c78c919a668d57bb8feaf320 Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Tue, 16 Jun 2026 13:11:31 -0400 Subject: [PATCH 156/241] set splom.axis.matches default to true --- src/traces/splom/attributes.js | 3 +-- src/types/generated/schema.d.ts | 2 +- test/plot-schema.json | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/traces/splom/attributes.js b/src/traces/splom/attributes.js index 679337b30bd..b8eadcad9f4 100644 --- a/src/traces/splom/attributes.js +++ b/src/traces/splom/attributes.js @@ -90,10 +90,9 @@ module.exports = { ].join(' ') }, - // TODO make 'true' the default in v3? matches: { valType: 'boolean', - dflt: false, + dflt: true, editType: 'calc', description: [ 'Determines whether or not the x & y axes generated by this', diff --git a/src/types/generated/schema.d.ts b/src/types/generated/schema.d.ts index d8a20e31113..96c6be2e523 100644 --- a/src/types/generated/schema.d.ts +++ b/src/types/generated/schema.d.ts @@ -10038,7 +10038,7 @@ export interface SplomData { axis?: { /** * Determines whether or not the x & y axes generated by this dimension match. Equivalent to setting the `matches` axis attribute in the layout with the correct axis id. - * @default false + * @default true */ matches?: boolean; /** Sets the axis type for this dimension's generated x and y axes. Note that the axis `type` values set in layout take precedence over this attribute. */ diff --git a/test/plot-schema.json b/test/plot-schema.json index 4effd2f0c3c..e56053f2635 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -75855,7 +75855,7 @@ "editType": "calc+clearAxisTypes", "matches": { "description": "Determines whether or not the x & y axes generated by this dimension match. Equivalent to setting the `matches` axis attribute in the layout with the correct axis id.", - "dflt": false, + "dflt": true, "editType": "calc", "valType": "boolean" }, From 2ab35b8cc04d6dd2f1d08ed0f16543d671538b06 Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Tue, 16 Jun 2026 13:23:50 -0400 Subject: [PATCH 157/241] add draftlog --- draftlogs/7843_change.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 draftlogs/7843_change.md diff --git a/draftlogs/7843_change.md b/draftlogs/7843_change.md new file mode 100644 index 00000000000..13a635d7c1d --- /dev/null +++ b/draftlogs/7843_change.md @@ -0,0 +1 @@ +- Change `splom.axis.matches` default from `false` to `true` [[#7843](https://github.com/plotly/plotly.js/pull/7843)] From 750936fe88dd10467a1425690e84bebfa92644eb Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Tue, 16 Jun 2026 13:24:07 -0400 Subject: [PATCH 158/241] update splom baseline images --- test/image/baselines/splom_0.png | Bin 18877 -> 18686 bytes test/image/baselines/splom_array-styles.png | Bin 18238 -> 16760 bytes test/image/baselines/splom_dates.png | Bin 18655 -> 18211 bytes test/image/baselines/splom_iris.png | Bin 79971 -> 79620 bytes test/image/baselines/splom_large.png | Bin 604078 -> 602367 bytes test/image/baselines/splom_log.png | Bin 30937 -> 31588 bytes test/image/baselines/splom_lower-nodiag.png | Bin 59832 -> 59536 bytes test/image/baselines/splom_lower.png | Bin 58881 -> 58751 bytes .../baselines/splom_mismatched-axis-types.png | Bin 38254 -> 38623 bytes .../image/baselines/splom_multi-axis-type.png | Bin 37152 -> 37300 bytes test/image/baselines/splom_nodiag.png | Bin 74033 -> 73381 bytes .../image/baselines/splom_ragged-via-axes.png | Bin 28606 -> 25793 bytes .../splom_ragged-via-visible-false.png | Bin 30957 -> 27419 bytes test/image/baselines/splom_symbol_numbers.png | Bin 23466 -> 24398 bytes test/image/baselines/splom_upper-nodiag.png | Bin 60528 -> 60170 bytes test/image/baselines/splom_upper.png | Bin 59457 -> 59268 bytes test/image/baselines/splom_with-cartesian.png | Bin 25484 -> 24534 bytes 17 files changed, 0 insertions(+), 0 deletions(-) diff --git a/test/image/baselines/splom_0.png b/test/image/baselines/splom_0.png index 64cb6360c331310fa6d135e6f4f19eb94aca3c3a..90849761f9415fd05fa76de0a908a5e6bea770f5 100644 GIT binary patch literal 18686 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

    +%0ZiqS*f0wU!F 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 M*CjKq+^lprA`orkheDM3L(Kv56@De1Hb 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 diff --git a/test/image/baselines/splom_dates.png b/test/image/baselines/splom_dates.png index 830bd0fd863f14fde051397627693c7769f2ca52..5d671156356bcb7d838612f85e424596b081312c 100644 GIT binary patch literal 18211 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

    3&NiXgJ+LUnQ5_zfAsu9WM-2%dBAQ{mn)^8f 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

    `a=sO_lYgKCSQ+s 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�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 z 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

    |sYp3_Bbcmb z?;Q15RAUFPw_N(RfaVZDl69^*JVcgosLo=OJ&oq7GuajxJwSUB^;)nDr9kB-uzk5= zr@|g2F>5+3P~&&YgNS{r_utGj&QU#D%PtT2LmkADN0R5lc^&mK;D%ZBgm4iRB7fXc zW2qn`n|-XM{zul>Z;nwV7F=KUBjf6x9k{ADjJn{XJKSbKsOAG)+Y{@KIJ|<|&ak^c za3xKu%9pvO-|!&7Q*_2oe87WHLjd}RTslX8n+x%y6BBNbxHFYaR)}s_jwsu;BtG{8 zzSj-0Fw%7YaYlk-+t~q5L@s$=4j5iv4|nh(z1}yAeps5{oF{w|Rii#6k^IE+lcH%Q zH+dmKe2~EKsYLAK+uOWyHhB8C1|eDKe!QOz;v)L5aGovkMsZ$+Yl(FR7hrOSG=!_V zU~-C?Cpgzp9JmdO`t5eCH}&Fy>Sv&RwVb!1VKkZNy6d(M`VZ^~aPSa;8KN-nxGbD6 zQ>^3&2aDL912Th@p2BjoJbGkaY8LF2_65s<3w_CrafX zt5RR1p3UHW28Vi!G*x09bbFd{#kP%TGOpG}xKe4(>td5~9*POno$a^DP-dh$oK%r}jZUS9)^etZvE6(5lh zT`rZdIDwEJ1fW?}e^DW|`c;YtFjs{FZ4#JrJ2yi{TxTOUjrjAaj{(5?KvJuOsoYFG z97cadS#-aajyh$F_=?q|Bx;Gt#>QN_nT|r?yA<3FOR^2dKeQ_il9sWEjIG9+NLHf;lWVp)b(fgvQ}&Q!XJAP`E;? z#=oS=oFpaL`vYA*a)CDJ9Yrm|<#xyD;iwR(L>b{)V5#m0AqyH?qVWnmwjk50#+R%D zEHTMx**#u#muzOZGWy3O6O6-ltJG2mMA^0Y`KkSsele)IUo|fFy{**9@-qQGUj6%z zcs^pvxRGy7*^gdJ{BT@IyES@Rj7abYzGhhNm4DJAo6~vl(b950UELwUX~wz+S|%|W z=SsoBEbPclRtBJ;px#;-`T%3*iCw#epcq_xx>TiSoAl>UaMwAFbD7y4Ob(heDmB2h z*UxXGC$(IE=Bp3rix1_`5qOEV&~4UemdIw2nV1T5txPi~Ty@3)6f0RN$1e0&EI!Jy zutJf&;ZQtZ%fL|w)b&T;9yc(fwN;Fo=;^app#JDQ`S@iI9p9jv8RGsev-T_QrL+6$R;quRMG`ujTi(gR!Id?uAjeJxs z&AQ)Qbjf|@o1G0;*$r+5oN;eP`2w3o%9`>v%br}+p{9NLJvK7Nd7|3NdD>co zo$;Hwk`5e_3p=bN6Cr@_+&W+It z3!v^g>{j8^z-r~bIQtAhDujYWhFc`ni0A25{MR}Q*?b&Sdp=eYIwde58nn6$x zzlhYmF;oV8W1f1vO%?>ONj*{QnX9vyoFQecO$64#_3emYpPlr+8Yplnw&(jvoWRT?5n~5pKN-WwVV%_6p?yYX)?RO>`Qmlzp74X{09g4k+-Oz0|>u=RKVDIJUC|jqFv^gp-Y%0=QNqfLef>6 z$65apU!r?{tfLZ%SfP*%xIIg_g|%pmo5_bK@|0uvm;iZ0xHn z1yc@E9QGRZbJ)JR>8z-i(LSu=@*eVj!+#q-Kxb>;=B0pRsofq-ik%O_IpJ=<+ODP% z>bvj>-;DB@Or+#Wj@VP8D5pIbHmLkcnboppuqu)Y$U?nyQa}KZ6YOgYxhH3IZxAVV zy#$XPbyhFTRtZ=CU`c)L=xCp4Hk!mLtr4Z9xu5gQ|2u2)B?I z?DVM?2HyiV;X(m-#^JQJ*Qh76wtS7K6#fHY%tEUlHjZN*?6AW}zLz!f?Gswu5+&p% zu(%Xqz+Zo)xB>On)OVtc$CYnbU2`^J~GD&CX_bV!0Bz(uxh54ba_yeNx%33wi zF|DBHfrRjlonpeGBu-kr{+UIQQO7}Z#Z0}g=5nGz9D#>6aZAK)j_vL6gxrb$&_n&F zQ_?Z!xVhN~cTI=)tKrh|IPcsh%}(!`zD?MjkH3-GyDLPKnml znFdss3hmUh)@&LK6C@JXVWjO|cS3IkoO&e#MjY#{oJG)%jSfb%Faflei3BWdD<2` zIWTs7pJz1qkjCAh^4`CAbsZg1ftg;I1LKySuvu2@u>ZxYJ0}*j!%w zW~RQHpHx8?b?@nO_St(qYo)SUm`*mS(Qt1bnjWIhX150FXwuo2e67A}ELDxJjqO)F zTwU1jiz{}NGbbDC+ZdX1Ee6?`Ek{Y<2pYTFJX*W@pQ*YcfUtTxx?(gZl5DixKVm9; z?HRX+i1-?#w&!YoaU(VYE^hcScEf0imxUCpIefVsO;xxrsQz}D*u1T={aF(06F)n1 zAdk;yWwH@Z(hX)S&`@iv58KtvuNHdu z|A@tqhu=Vy_SzDZb!2qvZeoFZY05UjV(#O5XsyAGd$eTH$GwCia8*v!;@;ar=w{=h zbK4*Cw zH?~U`QQ|XCDTu+DYe7Pv$Z|p4NJM^9ue}Z1)ra=eY0FE3IY4UGvSik^wY3-Uy3N1$FbMc2K|T)0Rk`!j@M+qqNy^4h+T|4ESWKs_AAe@Kd;CTfnwFwLO55z6n+KE16@ zzny@A2#eX3^Dfgyff(Oy6Q$=Z;?9f-88>5VAN%EXXb??sz7&suH+bgtDc))Xw?$Ba z9+#?f0e<%}7ER-`O6M;(aQ955>WtB`ltQ*lu}q9m9yZ2uR7p!tTPZVWQ)ecS)J=Z# z9GPm?zPr@E!>sF{8g_`igW)gX_Ubx*G*;5iWHMRY;V%zvJu3Ep^4@<}wjT3^f*!gq zDdow!TESlPmDcIqCqS|h@qGt7D1VP;jw4$eQ+^p`aHsrH>8)bodD48OrR{(Ob~6(O0UEToG0TC)J}#xgt*WDAv8!os$&&o-7w zC_r~&b%5x@RP&WPe3ZkIk35M0zC<{}Zi-ien2{|7r$FMU^K zKw=d=d-QksK-!Im1P{Hx&}+AV3)a=?9o)Y?@OZN z*lnz7@)z=>T)!Nu6wO-S_$4l*I4a>`DCR-y`&y?q_fQpZRCQG`=iYwT@Qc&BxhI3> z2I>axM&d^12IB@Ntb7Ff(Y^>@AG{Fo165djgokFvxA`cJjxt|wnL#95aq6W$n&e$& zURaOe=N9xVqCLV@EtYJ%hTwii_brdU+yIze1gGiK^vhjIJSGD@tm6}LI`(y^I01xZ07YbBe69t+2#uA1p4w?pOYgn*>V2Y5Oy6qZ$ zmXxQs<8tyXfBMgehKXOE+lyxW3A#(g`%z^t^JNwC)VAb-!RPv6O2?i#gbnIH@A$8V z=1_lhziZQBy~BwiWm!~^$~cra9tiIKRi`48gmjPi)Q6^WIY+@_{B*6~_`Kzmjh*Bq z_<&v0ylfZmu?z*LI}Cjq9`JiV;hmT?MdUj)l#LHy?6g(N^3T{>xa0VKJPraRpQont z9tV}8+>X8~ya#Jv{3PYi7TX-7X(ZvIxkG=ggZb7yof-3pr1bZSlVD10YiRT5!Kbf` zpc?{0VHd2Zq0LvDfa+-is%L!?Vr%G4WbJy5fB`skfuS*lleHy*^4_7}2!B2sK=efv zYgt|>(6bUe=aU<_PYVc6Za4qPcn`%67-(Q5Iam5l*Ax#Ov?pc6d_rGy!Fr}G*ENpK z`kd8J;$%xchLn@)wa*w)$l(m`FM^%=z)N*V1WukDLLU>*D%+-6B$Lv~5&{vx=N}3xU%-q+yN(b|g^uegGmHQieUQdCP_^u~+X^Rz} zmr9b{HEUjjlBqA%q=^7_d4#lFHo$hxbgA~eY2%{Hlv~otDZ%2?23LV)z`G+azdv<1 zV!IEuaHu&bVx+B)@4Tg@*$5v-koy+{7A`QzuEEN7Un!=jsgwbzBPp7~4EdL(0Y)Mg zR;hCYG_{k4T)GuCH98W5J8>S*a8)57EBYu1canFQh8a?l0RPgKXkcng?LpI8o*QGG z%KSMpuE$-yz?B@!{g43za;B`dE)AXS?(-10$9Y(z(fB-#WZGQe+V>1`NE7{BK|kb# zgy}3Yj?Va0dz>%5r(l93Ma~k?hz1hcf7V)h5?Lu&WDrIBC&v6QBiiVPLCkoa(sNHf zZT3p>Pg1|KD8dvDy7^{lB&KO>fL4NPChgPDv@RzLI z8f#QkfqTeT4p|&oq{0F|Rj!Gy0+LOh^s|P6+>CEl|z1iY>kt9M&=2aWFY#OSZi zF`Fm*8NiR*rW|K|m7b)>K^e8u?Sd6rsdE2F5`%$(`xy5t2Q3+DZ>Uar)K<%>sXTW4BGA}m5q%xMlW zl_(q&p08lO3KI+$!R@;WmY_K6nlhAM&$Z8oy#GZ?2hv~U@P5&3w>#8>{HO|$SmO6Q z3Y$eV>~Uj?X8>=zDU@+~gu~{DyY5CYB-+eu{ye`!4KtD+!j$eL(c)o{5jy^f7GIvq zD0-nc&l~TKg;7OgP+6tuMle@`v7HB9rPl&6J6gEYXey*x4A45G25VooY=5>MKCpLauU}N~ zjYd9RPK~X*J|8rsZFU);3ZP{nf@xU0{U#G{9DnMB56jnfWDEK@b)|tko-KcP>7vcd z=S)#mc6|-5!-bKUn+H0h-uwC9;pKVCI_!SSHB?katYyiEFNhWw;Ry1lK*bg#>UhSw z(a|Fia_I=~`!o`uBhT{GtfyspsS#6ZyPZkIxP)gKP-&VN5s#S6oGeYYIh~1#)ktEb znQ(DnPtJ08byzd?QkUwET`kjhXRX~Ny;w4eaJC0pHgqNbKwt;xLBoJ3@Gj>S^DIf< zqT>-SNJlDvD6MQ}rCu~dWck+{3$)O^l9YX((lGs4WL|(QWeLH;D|M^(DnjV;wSws> z#~gchn{me?Q6fkScT((~#gWFkD*Pqw0~(WV+)v4FJRLgc+^YkX0WgtHs)H6#S|I&r zX|YM)KnK2AZnz=Q&GmBc+;m%tzTEUkmH)*FId`$zlM}L>9~ZLxXJC^^c(wWXQ3_vPa?@LjR;b?Iwwr-*lG z$_86yC`QmK{8RdpPj+rOKCI-y^$|^{aBfJ)SuyPSwP~TuacwL&}6+FwGQ-zvr5hJH^Uos zlsdoa#(0OxYSF0#QVaT$GMRR>`o=3QNeihHlss%sa>cPFknOA6b6$B=>*}15$>m%~ zpDbnXnDkMT_NbZq+98wP@p`j!q|0AP{q%S-uuELc)1=e6QuWw}aWC0!X+~SCWo475 z>pS;WO(P*4N$fenTkB!ku)~}*4JY!$7m!=R*SYr9;&1W(*3)F6`iH#lY-8q700HDj zQjX1aN@?Lhy&I?I&t(^UP9%&vhL?|Y-=yM4TPd}KCldq3R{Yt+eU})Y*|)jk3&`>A ziuW;U?`4HC^vP9i0FGQzHx<~`YNak?trA+lKIrhdYGH?5ev?hyX8w5n^uAQh2XlDJ zJGx#8d4n%~d)MbA=2k|I&|@X09Y2RrPEoxS74yiM0%)2!q)q6QaFEJ(Oz$`=R56N!0NFb zFB5{8TK$g5_Ot1WXzD=A!LBDdP$5@i#zZg5*u?VLYW;;98;S4m1xc2d!k5M8^QD1a zjT54|B%{%%zhpciD21OQ>WOD67qG6q^WAebg62MLq6yxYWb`0WUk?zM5~WmHc7M0} zlB%>vDq!`}MT(EfAo3nb-wqyY^)8r3p0g6~VTmv`9b4OQwJ==n`|Rx}Cg~^rpN>Bm zsdY@F@psDB#BJY)VB;3O|BZGZt10Zly2&G}fL^{p5Ox182PgS^Kzt_t^P_msv5J(e z5sIpRh0FWY18Hp)A2G$sTdkWq%lp|Nn@V^-Zy{U0_y7K$Dki9WD?r}A7bEog#_#c= z)NteJ&kV}3=lz_``PaS9g^KipPIhUA^}ON-8NsH`PVcudna=kTaJtr*k16oQp*~34 z?8(7{$OT{TJNR*0oCL{{#bWczS;Zzk-@nnls z8PnKzq8;0|ZhsxjvrkFXeQVZJ%52hP*rz0v3uooL9&{lT=J2&Bh`HK-U)WpG%t(ImQ&jIEDw?lcX5&`2+DbtIrJhlz#l-L9p7JkxusT>k!= zauMTjwi9}Nv&~#IE_Py>#MdoJl)pyuQdsImM#|CiM)ZKtYsgo|-QU~P#afT;Bv6Qo zEoh@PA0uy*7Za0af`V~HbF!aWQNGa*e&1{2KEifGCQnl%YF1{EM`F(H(C{as^T&72 zX?v%qt7Eit)wq2zIL(S{C7L7j&4wXZ_tOjRIHh8`Vp7(w%mAavC zEeR^K3j#;W$17B(Q}Is^{i3}#hA_`fW_ObuZCWS=#yhR0Z}o^%%0CWuRx>KUXC0Q? ztPr5|0JXx?{jq_)ERZD9_91_7hVUr_WXAVmu!uEzT`TJAsLufnj~INpo9H?5F+JrE z)%vCX;(zo6n;HXEUPR!V3ITS5 z2npsEZv!1AY$;{kwf~Ko$|r`B>f`1gOGyS|SpSEa z_;7~!`5E{rC{48YIOd!!4>0(ZfxW&7dK^n(IQk=SQE1TRJ+m7pq6ny)@x+B}mspSg z7Rh~F^M5=O7ygp`fAE|Df_3sgpZvd(U;qh<5A6l%ect9-~n`?CM_LW_8X0uS9B-}k7tHT?En76T=I`K|9{Nb$0^d* zi>12Yu~a6aL#W97QiO}u76#*ZJ}{*OoT zKmY1~V6ZP3@wjh{oJyc*wveNU`zik3RF2^yED#-4AQ6UkWcgX}dX$pWaZ8kt%>>r% zY$e6O_eu(|awn@l98I8XchvCa=Ng?TJcfrTr@o|wNa8lKQ+*|FynnNsSou{X))NBQ zP4o{iqI$cy16uybZ^38=u!BwSxA8qVT3oUv;*BEJ$)z96^Ho{l#Gc?MIz_W`E6g@Su-y!`_Ty3!{L| zsu+Kv&O&1cm6aKb)JO(Bwt}=3!sPCG7K=41Sxd?BpCH@R5`u9~sUhH8g0{F%S^~*6 z0JyW$W)7BBOP-vO5#tux@Z%pZh`wGmyVFB9zd8jE<9cTsTi2cPuRvO(*v7*k{9Q%6 zTOY-ssX+c*n$sZv{M;CF!qzjT#5R1aVcM9@= zf@j;N&zJUZq1_P$nbe8XpkM%hpU|^>qkr>%x8`^J^#ETVbp(coUhL+G@0PZKQ&#JW z;JmmDww*$>3V$eqS|z}GC;o!7_2@*03_N1Y50C|wHL;_2VLK7s|AmgjoMxTF^_Qs)82o^-Jmipm$R)D!FCIA3wZHj3 zS*wCAdA)YJDd~JV-FR0&K!g?-$_MEJ-V^Zmw^9HsrRJYg7Ev3z&fY5Xwt(?yl|_Y; z|K$xB(S5D`sHD0}C7YZJBt5FkjsSw^K!6;9VMur%%erHV7gofwoI1tC9eFCHBtTmylCLqVROlcKSFti-J*f)>CRx z`5~V@*Guyct0uWFcIF)3dlVHz(EzyEeDAJ&seH6U>p`Tu@6^bnE(Lhs@|ZiImhwqE zp1yqf^26vSnfuZn`T`Fa@)13#6A$E9sJ^lt@dgTcm7x_vMP$zp3?0u>Pz#{%(g+vyNU@)*AHBKh() zrqI5lF`zyc)7CkK(~y zMjjf>ILrC7GEN)D+&xs$9J{XkktUHSs)E3c^$DxIQyldmoPJf#nRVVmFR|t2g${sS zV(f?JJPhj{NoXeOuS50B?_6*96mEgQ4?uqfxxEvB&ED4{=6#3W^N(mRpLq_6SPF`l zU_5Z@Gl&EAIkzOo?XupO!xkGZTPaFLRb(p=(%3H4hJ5#03gZSh(9f%w8>NZnBm%QC ztn?6%`e=*}y!)>IT3$a{471(O*9b(>JT|V<0bi0aSW8We&PRQLw2|E10Zn&hm(MDP z_yWHBM?e#g5Jj5b5>fC%Wf*~Q?DEEL`Nqz8RQg%WtbrfQp9ce0L33s7)ND0!1~w(y z$b3=*f+PQ;JOpZ#o_`?cs#<025Kdt!6$)#hnFIU25%S!f&%9Mdi>&<&Hw$I+;$?J-(15=QTo0R z#NfeOJ5?}vN{Xo@_j>22guEc?ti&<6UP)9_V?ih_tzOD$?}m{KrK1XBJ^(Ofg_OzXp^C>E*meKmHWt=rl&8b_!g?yj6H^h7!;(^Atoy-O zk^8%43|(4AyQLZ95ruk{e(E=GkUyekeP=O8lHR>SNqaA|Q5?UNn99U6j<4bgQWzOO zeWZ4r<2QJQ3fjC8BtwG}Il;*q-da(g2P(s)C~s^jmFIVjEwq6$yNlHc{o*S1uCvFt zyU35xU!xr3IUf=KEyLWWbJ<{ar`EY1sp3>2VNole0jUs5-Mg10HSx<`J}v1jj@#n5 zk#TJ<2Y<^oDoV8*%s-F)=h3=D0A-c&{{}XvC19^lg9KOy^B@4FJHI%%)%y&Xf5HE{ zwElH8TQb`hj4;o6ZQr^L-wxi1vYIPZxd8(gOl#}%bc@GbMwPlchSCw20F^Kv>KT@( z=2d2T0?Ig1NZITSI4-K}ZZ<%*=DrvZ`ub4RNG8vD?w@LVU)}GiUo1PhZUD`G01eBR zK%F<1{{U~mYzX>YWcW^<--Ns9=Q96gW4$0qg{=rpC%Cw)0HfgV`xVHc2VL@$4bx; zC&!{M4C$iJ+~!Q>6Dq|N34~1*Fg?zi4zuoNidgKvq|FGeV28w^7`8xxyb#zof3{)F z6zALc71ylFbcv+NHl+oCX+cqOOA=~&8%r^xv<;Mme+y^2KOPT$a8t#iciz` zCs?0w&$mET*iZCet;>cjhrWyJs(O5!=m&fd`@Y4*?2L8jjX*(@S?4^15?SkR6KkB% z9sV=qq~>Np*P-mf3ZXLu87F_!|1svW+P#p>??#1?+cr&>h|}@|m-QUtH<`TNG%9t^ zYj1vkcD40D;a=|D0H$%Tq8Li!#AOdy`xk3&KOT=LZ_hT{N8|RZ@#V%$eZLxBWQN{Q zz`214k%yf7OhDQrE^Ufl4}In;q;o!hk<2C1%(-)YFcX*2INj|?rRA%@g~2hUmmQLr+w zPJva%sCu*_p4cc1S}TA(*t~jE>DQ_K^u=j0kSR4Wrshb@m+(cafe3AO;k;;K*1~G- zZ`Sd)PbG0P;lUHY*na6iJLt-w-gegkH(xqA(K;qSbmp*b-dpX%gfZ|Cj@7KYBv(J$ zQf~*sAh?JCAy6KEEsTWfAO(a8)3hnp8e{(f!LWxvEy$*lm%6)JGh022)8yRurrG$c z-fYjD0XET=WCGS3*OR`49kxonc=tXA-3O}=oWA?i^Cboi0Eq^f)Jw1PH#~i}pI5B* zXRerPBubW1aFA0^<+8+a6zvt+ANPp~tbf_lpF+a2$A)eyJlq-mKmg+0Ke237f@IAs z(Q~^xk0zF&uaTJG;6AGKC84K%8o;DSdHgOay-xrDpFLmh497wHYG@*p91b6W#c9(| zla08FPFj*85O*kVVqtko9Zi5jqV@ypwUYDxi!aeGXL3v}v%e!}VjT>>ki}DRVBeJ*q{NR02wN;#EdZ^G`O2O0`l_-XY;;)m9htp0c>s8nx^+Xk2*B{7|F%fkOtMsC9^RD z%rc&U;fwMC<^)~3qttJv7*13Q7ljW?1a#vE_G?Ntak^gs{r8uABH{$GUIV5AJlg`T zm(gRI6F=d@rWxwHgRn?z1j#^X?n?qfW4}pMIRGu;*9CzgN9%AXw#u^TYl8f6zZ?|=7kqR z-iep6+vB#+1Z)-pLlrI2n=e2&-`ma5nPR{v#CNuH*3l#u5h$ zySpmVlJ8iUgMrkoX+O{Ana#mB2+pa&%;Jf z=@O0Aj;3x7$glkukW)ZlH=xIQ0 zl(^S{n`ARA+HiZ1z%Sv;SM~+T zRlg#VU*{7hS?$B_iwepiKzPr$!MY&tXPz_A#q)C8JheUH zb52UfyjF(q^`^J@p@=Vrf`QEoZW7V54#CX`U|^=B+O@!9_yd?c?w zH)#G6S8vfX#u8dVG(#>*+kXN&8|~e0W-{gQ88swG*J%VUQ2VeGsA-g}T1I~^TM0Gv zTHyEH$^ss(tqm#zwwmariF7oX#V^sLZ#+MnzVr(YuYUJJ17%4M1f$?}iKJ}2S}<+1 zLSlLrX90S|X4%Q@?0%lu``5a9Z#S%e{YRv3P%1#CahZS^hZU}-+JLj zjM`_b{Tc`_z&T`~SO-lv*P?)v{m+N^WuPITvWO()#OzD~L5Unp(5+=#06inLvO@k%j7YDX^^Bp%eH)#z{B6dqYj1=$z{%R=g1*Tlqs%5nLYpsHQ9zI0n z2J{ZZneVm?@$5>>zI!aRRH|lnA1@~I&oLr3r=bBgOiN2sUdF0Mp7a5B9z(iTZXOSJ z{?0^MMB|L7b#x8Z=1uP!G~kO6V)bdZ0dMsqXO(*N`LTKyAVw$FcEXw7oW5ZG7V951 zHgvcVn{xE9aqHW1_1LygCN^NcdLOB;9vIBoy#!#3ha+C*&tBP%JHy;wg*JBHM}OhB z!*8l84>R}&EPNilOU13e+|249sFHDOaem`D0T2e+&5ebXm15p;FJN#>9Thn6x!FCP zJwMqf6BN)6(i?H{uYKU>nH<&&1YmV*(UXXrjeM+46f*redSaY27iwL zjtYl8^FHzmzz9j!^YcOQNxDjn^q%~~j3Pd_3l<4~cAgqmkFlH1<)kfebYL28&PCf> zx+(VJd2p}@sN8nhWK8>=I#z!f$}cuKJUF~4j^?FmC38DL{Q zd`FnxHefF4u{m=SeKYSM^3H!=0YDu>aU%b6F)_@bdo)t5g-0f5T@r1HT;BHe1m^V3 zIy1z2;e*)r_W%v}bkxr|ttnS$xg4Y0_FDlbMbl&f$5Uj=FU1A0zym!qq5x1IANcT|NNfi=X(1QP3wg=z{qozS>NKignCY=?P=Xx{|+CwoSP=%gN& z^@N_9n?>lgemTOW-OV)2Il53!wPd^oHK}+t=UnAOfl^DyEg_y$+P&+GOXcorbYnX)iCm;tWwAy)i~r| zoaqnifWEQ>==2_I6KHw^MnF0c#Z>NuSL_D~aU}!>nETu+nQx3XrYB zA?Xrj5yJup_rcO)O|Oc9IPILj7x2~t)+e^$-f0Q{jtUTgSN<{0kz}MI_k*S z5C|*VoX2Fk!C0G;uJ|ugMH(4xKLdkm;`JQ{ls#u284;1%+-8iR7u9-a;_^tcU)bkH z#lhKbRGy+O5&Xxt(J9vJ(MBG`@FyES9tlrc%!v(!v02J>>!jv9zCN^7 z1b_zEjaOlS9m7?mT>CX=u&t87*KWAEmY9f%T|pr{3rh9e60Queq1T|*;Cjl;f0(-q zr$G?Zgy44@=kYnD$+4Cg*{cvq`-3BU^$#>kY;-k{=Yk}L@O&203k&G3XKp8mpUUp$ z7&QWg+w$57<4VxMhTv5F$-g1$4Zx6OwuGnoBQb0F5B%rei@HuHDN5Nd^2$t>dUdo7 z3@t<2D?nQjL@>kFYc3xCrK@giyMH2VG&W*UH8_##u(y#2 zK`tCj@$)APrulFnG8@9pep)Q(E*z2Ff7$TT$xLKOk_nm%seHXFv{KR&^+ea{G{!{n ztCZ|h?-$r$MPvPGq!`iS9&YXfZ?K`96&xtitx8nIlQmYGk-WJ%qdD)kULjN#5C#S( zh_gVXp#|vP^w2m&jk~&9+@Gd9sf;*&|O;yIBKT(Le%0jM)|J z!H+P3a(8C0ZU(oQq{U!^`Fe^f|DrJKMV9-<0(z?JyB6-oZml?y<~X0+;7Ak*P$s6* z)Mz7)b|;0vyjtne>^K2Wb^Cd|T;;K<0MQ@r3567f;GQfftYc2~fEw&7;b0{d0-CmA ze3n^UB?OcPEuOMgm_e-)qAHi2CXNl?s{dc@hj$6{MC+jMXMd$50)=3KzZS|gNv-JZ zx4ZeXS#cERrRy>j3YURC4TNPJ?Y=I|0&1kTdp@JN~@$Ya*Ma*gn^Ty0Vzg#$+?w5ktu5jxi>!Njqzbx_Sk#npb-R4!VSW zYMSP?N^N8b5XI?#4xgk5s97qC9l&U4nI>33H=RX(ZTutm4Bf*5zP*XLnMqdQ^s=*^ zlmIy6>OVOm{}M$G4bkVm#Ad+ynu9|xt#Ivyu#?=acH#UddMfTDyHNjLM0Qj2`%)x@ z%5RiHNGjY(BZT4n<}3lsxqSUXK~L^6F6+9k7>pg$^>JV66tzw!8lGWW94({n%Prlu zu5_?sUH-rzPKU-?Aemz{PM4R^>z@s!!FtqAA$EK8H=i!_lC*#HT&~P1#7*%VW(e(Z zFSX&-&$i~0XJD^B?)KAyqnoR_$(v!riqi4b*O~2I0*ra`bcWeWf(iTZPGS3^L7M1c z{@?cdH$d`67rQ&0i=tLTw{TQgQhx+^aNcD-J}&tDu4`^E!d5i()U!ZvJPlcdK_3jyWp4oY98NH)?W0de7N z+X5IPPH3wsXHxabC*%xx9fJmJJWM|>JeOr=4}Te^V(v?VQ!iJKTX68v= z@NSnP3(SNNJA0sJdjCP)A{qfHA`aoBc@)@pMOvpp?jpP!yn3DHM|jI%K6QN-)=)Lx zzGZa4>0Yb-Tkw|8`-MBb8q19?TH|f4V$4tk*(qVK%gD#1%*Iw|(FtqEjlM zG)d~t?pCpw&#wxjWm&VFCLsBg@DnmLO+aLYWD`J&wuUI=26?X(+0Ogahtzh8E=@wK zQvJc#3_Q`9t`u$1PqRKm`IUZQIO?W@Vu{aIGep>R^fFhoG6p82IDIJ_;#C&w9{oV+ zNv|oBj6@C%rlzaDWr^_2`~5;3?B zu6QQ+Yu(&dW`#}IoK+9d-T=cZ0a3GiS8PC` z=<^|_oZD$6jG-W@?PdGaKPoT42~<(H!z^V-e4N={&*1ZYdRp!W4JPg0Pt5@8@>Yp_ z_U*L0JuX5{hfM{_azO1u?alb%IF-p(wE>`S>625xsrX z2`*Bn3c@LS06H|^AMp$7y(9i=2b{?qc`}2|wO{dT`}^*H0jK^V-4zW~OLbmDcE5>X zm%#WD3V@j?vS2R9tL2Z#y7qTcLy^VcHG-m!LWE>WX<{c9$P@v}%D;P)e~@U^BiE;a z`-6EUg^FGb2eR(E=or_N6CQ|U7r9?r!h0;_-z{CnnGSEC9-rwgdSn`js|Y&Syg zS}#dRjgF{T+#QPJ{%0oJ!*Jh`;uO<;|2=&!&-{0w$-Ep+?qW@NmD301jSt(8+2nEx z-M-o|BDgd-zu6BnKU!5cm-iD;IyDQ$!v-j%C~eiy#PV12aK+VA08XmchyZ*@BS z&R4#<2xX>g) zSz}>=5EpRBkJIe=8;o1~QWw6AEf*UyJ((7206L?&=`fpeD;8MMLhC0n)Q)N)$%}PRq=^3YW(B#4 z=YU6eSZIg{H~8Ud#=dFZ%j;Ug&T57O4--wSU*+`xZnYHfO4Nv+BD-N>;_jr}D6_4k zSy_pEsji{{p!cGtwnKFOrU8Z*;|6Z5eV-fSiPyBBorz~H#NdfbR6KSvqa7H#Qn823 z0iK?dJK1h-gSiJ#$a(At3aO~~Wk(2<2zbBdVEXsOWdH}%?l%{beHXT#95R}}7s!9F zh0Q1RdUAAnAUt_Ygo5{Y&kfEkIz$2m`BRVFd2LFrg+o(rMG>zjlAfySlhHHir)+hL zgPC(D1HT%*@7eOG4zMR>cFD%-efU6P-Cb3v+tZ4p#8QJwG&LpV6CqYT6h1iu|6L)Bzk}{VxfU`&G%bY2p#5*18071VD1ZQTB&I+Q*LI?brd{Qn=2m zU_o$@b|EE(BSLnMO~pJ?$zBJaZsR8fgRU_6!KFBJxMUv5^9OffrWI#aQ9qj}dWhZ3 zo#=`ktl=Vksz?ZS$fI?bt}zBZ0%M~Dt{_RTX%J0o)Sgl-ozK$`)Qp%NI90u_;eQ(m zC{}xaD9gRUVnr4K+OkRYJZ|(V{!8K?xt2E=IL`^$Ha$AeXnnz+@BlGn%O9VeSHJ7M z8ZPzk-~9*HtXyC=Qzm}hi;!LDwN--C$mi1#O?KOUzY5p*eLWZVmqUwT_}DO^LdMSs zR@06}|Gs^gn-2o=gB@+;W-uTa2QqFvl|`tNh~{Q-0e_(&vb5EgT$=$s?9BS}cU^++ zT*lopPH)TcLtM(c&01Ozl!=sKLN-22nh0B5z3fF;OLVaW+$ft!tN9*Qyhuc1dwPsrP4?iaqMxW6` z0>n%;z5^SqTG+LvoO~+eEiU;Xqq*NsYqn90s$nR7VJCvZ!-y1>k=JkbZ2$VNc}^uH z{Xl?K@^&qP|41uQl6 z8BUp4;=JT!Y)$psMgq*cE^me(<`iBjr5O!qser@sqYxQzV+dm zb#elAV>8RG{4z6U-+|X?#+9CC1zh(qWa2P~vdPK%cSne+E?gcZhu<%B;et!Vtbul- zho@H|}{pU7w92ar|?+*64^ep}| z-;;XAKJ%%M1p2jV!-l>U=qU21`MHcH6MPTM_~dLi31#*Bu9B#d4_ozsYC=g+VYmPf zO7OvU?)<(;TSOSOp4Gz%K%hEC}D|KSzAR$3(SPycX}L)2QPe)U+VCwCU85iOor|T z*sK*c)O7(W%hH3mwWO%%s1@+BlLWp? zKtT19JD8lC&!c*Q+{*m@M`pg)*YhJONH7_JYtV)q+G7;hUW}AyYF*fq`SnPi##vaZ)F6I`=maAy=gi#%qtWn9%2{h$;bEqO?ha_MWr|%c=%_Y8!9N!qwF!g)01$bmOiu%dHa(-$5G=8M13%vip|M@uV^#zhA2B-ta#BM9;^n)uK_vTLrvb1C^@ z4{#IAua7@!%!&r3er8s3Y5yZm18Xq66S70|>i=}E>xL>rvNiH`Yc(*A5?#;}@!Rlw zutjUupvwn1UEMq^Xh1GRyNhi)I#NNv)e+xJ1a|g5aaKL#=Ah*;iKNEugjs9U|E87!j z1i#b_S#FS*(Vq9mZ41dM<03}rTE(hlpDUT@#jDA!9p;Ab2X@#!3!9&!vjZ?OW> zFo7f8zMDYwck8#?j6{YK+M`!E#tqptG*pRkSBb6^CxVP&91PrMPY(Rc`PYh;IzD`K zyP;YG#HQrqm>`<#==vbI{STDuQJh&^J<@i2*G1Vo<0o|eE79KzdBuR6R+wmoa-O&= zAaNvFtTP=cHR}7$uhSY4yN4D2>V!R7p;m;L!WbWI>HCAW5!&#mEmzh*%iIjPJWo$SdjN<6qjY(b9$PAJ+@|=L{`b$!&j%V4K7RTtpK#k_x746(R9kE7 zy92i8kq=VFpPkN=ez(!%dU{lq_o!s)dh#%3SbHz}4qU^PSz{c%z@B`Px~5Vace%0q zTBR<=U*lV=%07hzeaS(OJ6^)@H%}I--$v3^5&@~Lc|Xw2zD(^{tHp&@GVLd;2!J)l z8Nf1IsgD(|DWJM^JK2skiYa3sc`OIgnK165(5O|=LpFoU47(AV1Zdby_$A9JCLWed zuW$90smQ2kcFYI_xwv<;=s&4$H-5^x#?w$D4~gL;QK1Hq%e%!T3s6eGmU8mtqyCZF zYN-m`GuTe04PS#ff79j4ZM>BOwz@hipCNED+pRpaxZpQnH}%mYlY9jM;hcbgAUQi5 z#Q$9(gIi^}-fTXRXU!4jio8jehrjQdAOG;tp)+Bj!I4cyhM4o;x~GI8WN*X$W-FxW za1B&G`x14m(k8Ha@(mBzu{PtAg4$I`T}LH!P;$vFt@QHnEG^O)3!9W9io`|$u`9Ch zvHbywD(}g!R`TPp90(#S~G#Q3Lpf`(#o|8d8#Q%wb7;x~& z+5($!?`IV3IktFZT*@izQtF^gSMNm_x#qY zyZrS53^F!9G<%ZV7sj?CyT?{h(`gZnl)pRyf;Ndw(dobbdLnJz1YMqA{N4tY-oWka zh5@8ve|oaM0xgIk+5VrKUqmz*IPqI0Ws;53)C_E$qmG!$!*s*(Q>!73 z>%Bj*dUF$jC`&KDM?LAD^>t}|tss{DfC)LlIJQ`)$SdnY-J-rIcFhM0{#uC-d)hP8 zc!5D|WZV_QD8kX5I)s%vYjF&h@0blnyH6rfj#?g9EFSyjtvp{BTsO@~e)u5Y1S|of z(%suWUb+td%H!Y_Ai_|)!>O?@gUv)s7+eW~yO!h)3>6OcErGI&Y5wx7{eXkp?VRLRRc*bA6l^NyZ4<5U#Go-xa@$g{$cQH z`%*ni=8KsO4<-6AH3a??7jS1bB>>!+{fo11s*JpifSTf+3(4L3B?c=3;drn45-qZ{ zK_Qy~GA^yC$i{Li>Cyk<>@B0JT>GfsEiK(0N=t)uH%KE$cSv`4N_R+icXxMpmy~oj zEb832_kPdwyfwx-U;N-2I#{f0UH3ocoIkac@O4ul;z1LX{;)cD$7Fo6lP48T1LQ43 zq9A5|oKR8f%hnN4_gGV5RRrCrH%~>ikImg2-a5uFVjuB0XgO5TI|yK*%vY*I0VxIm z>v-{hp}w`XyiwnlM}SqAdz6J~%Wa{M*s}7?*V;G?FrPP9Cq?tZM|PlWk3c^5G=MXl zr&dlRJWxs@z?{pMsgro`q8IP{7Lvo>^K^)mJbkbO>Is0jbTm(We5!lY|59-^Z44bzDZ985rosq}|tP&kn9s)OA zfpi6_TnK1quS-t_p_NK_3-Kw^1rF7a=aYeOkLka5Gd3A;`MOWkRN}CD2^G?=fRA?g z`%aFA`rctYZA|`Y9^; z-u#hJhQRMTJtDsF>&4TDA!MPq87p46!%G~Pz03@CNmPP7!U>RmiIc{u91%utS1i8WgA%j z{{mJH?^1nP@c&?+ya4w~k$QtAfPKQaCt0M68rz4`M|UvA8vfAuDXt(?t9IC4njgqZeUP~2k{?f~P~GIW^=n%g^+_B)o8*3cau^fk}502cW& z-Iieo%(qX==!=0{XgfJ)g316BSdE=sFZH8;G5EuI*JdQ~DXG6c9tir_?rTQ>5pa{mAbLts;vQW zp)V|Ce-q#Siz3BuPyC@S=06=mA5bQd2WOy9sg=ufxz1W+U2hIWBKcm}3HUrUdPJPo zDs{o%oIsWx&yLNHr!5D-Ym+-8{{Jl6gg=3OrTq^_)Bj{O+9L9ytY!cdq;Ej3*%l`& zTozOGxgv!?UeG>??hHH*lfPPnrF4cT=o8N~Kv8yBZ}$+?`fm%{y)oFWO!WTUJ_ZuSz}(T;3YlB{sU))VJPs5^`7nn z0JGv?%HrOS5?duQhQSZ+1jijlzH5l;6BvjW0e@9;fWkHx25dhfMic3ET?YtomdU9A ztN>4!P+Yav80BQOX$Jhut+4R&i}ewg%VjQ454^@dFg=`EO!CNT7k%6mHvc3-6rhRo z6WgNcWB(U0NmFZ+d?=8PTIY?wL&5fpugzwovAujM5=xF2V%8W8>^r`g(N3Ssafm3 z7@V0Wq?vY$)8GjO9RB4RPPin9UEAP7Zh|ovCI8v4L--x&buV3NA?6uR`X2xPEC$Ui!H9f*lGz`!}Vr=zGv;gqvQWqv%bO_L%w=2FEWNXz@iIkI;E{1r0*I^)-X`v@2?n6)(I3E$a3zzfbq@}Edr5VQoxrcS9+ z>D)=kzC)K(6Q6iDXGa!(RAnN<0zZJ@9QY`T;04YVfP@!k%R?}u9sb}C+=Ew+p_c-0 zW#Rn|ggeaN2(06Me3`XQQ~}bSQ+Aa2A5swV=@?^0Wik(0NWR~mMLB<)Jz>L{iXppy zKr(!Nx{^(1vr5i79h)-IKRv!0+WTq5aY>m4ttOp z0cJZnsX8VloH{k8ts6ZOzcK~<@bA#5Rf(J9%Zatvn5iHBsqe!a9>T$wvAa|%5=^LR zbF4X4e@cV%Q zQ?Un4QR2-5d2sCa)~{kWsMRNYb}XMQoD)nPVQ3deE}I_!1s zYDC#_kp@SE(HdbHo?#eJK?Z(5QARXapJ*~Osw^vJI&pjwN^t4;G)SV1kXGT)DRn^6 ziuPN+kZ{SJ?z>4wg#fGWu;mvZfkkoMiB~qBEB;2_E{<$K@PEJh|7Pg{^gih~lZ6{_ zHXSM+IyHG(zvoLOF*X0}jXiI1IwNmABEX?ltIdoc;F{j*3ysdLt!36sj82wNM@2I! z@Ok;t?taY)N5TGw%a%|RbK(7hwY_&B?ib;n9&wo|L@4{_IuoFuZ2vr%-Zu?EBCp=+ z2XGz^4%L4;Kp^5YZrGY}`dI>?6-39=Y0bY+0Sb30g4$+ORWI=`Up~^F+_8N8=tHbZ zWDfbO60JT|kRhduh-RH?!h!?fUfzg_RB0nR^Yh8`r%#bzlZnW?pO8csf;)D7*QoP$ z6+nZ$CiqPq@_7ZL&r_Wr2>|g~_>ZrAZX%vKIK!*4{sS)7oGM624B#EQJXU5s=vYN~wYlVm}wm3!3tkspfxIl(C3 ziM7IaXO%kk&`UQ9!9iVw`v7|e9O>NF^z(2QH`ta8*l=S}WW&f84|firdVdG5MSks< z4!FuRdS;=HbJ8j69}H!ji1*l=Vb5M3-KJyu zvaEb_G2rFhbEyGz&Q&w?_UGL!-Z%`%-xp8fBTbtMPY@8;Gp+IZn(NBqGPck-P z4}hn`wE#4Gh_AR7>57yYeKeugH1p`xnF!ElaqFkOxrA276huAz@&wwQw<^L1ZH41mZwH8@FUQ9CM9IaCVh6b8hnP7>g6`Ld zZ5V%`Y;dtOG}T)!&uEXwu}M=`E1FGfgsL9fr3I!s7QOEKMRF7VUj&Tp!oY)tjUg(v zhuKd~?qM`bJP=E5&ZkZiqEe?K-rT`rJsWZ!$BR{O1x&ZkBfz+WXWI1k0P=M0&o=~a zz8tunHU&mGy)_28j;&d)j)OGWZ>I0QA(gLczhI>~}fo`2thk8;ZA~|8UT>bPMz@h zB5=IG>aoUa`qb_00I%qFi3BovnO|h13WBs_CCpT+cuF&*SC8!g^f)k1zXrRTZ6@wU zipbRg@STok7YOy|O|`W+gf+YM$bwz9wb7zBqX8!YM>I~g1}XL=#fHKlFUtE`p#`7+ zBDj&;XR+^W{6ld2IuEXEV`?d0lm2L!)I3o>=DrBG{t`KV%!yhp)yj140q$mb%+*tO zvp6Kxv;d1GOf*7ov?q}U^<0u(p=k7ooyzr~qA3;1>-Ka1Hp_1AS!=AIe>#syCg*uT zMkHRE=($CShrXx1^`z6w_$41)J}*PDpWw~tPH<*6@D5bb@gf26xH03Ym1RV#fQjVw zidBa^(0a{YLt<(0>-UFc(YN3G@;;pl0iOC$38b5gqwJIGgWnGC>VJD2Tt5Xp_}FU& zKh?Mrc`$r}4y1*iK1k;d=xNO3+UK$Ki^9Y1RrhlH8)?4125t~=WVqy5KLPqr66hIEs8@4R_r#X)}cs~sskR5fo9|@=gOgXzF zWRrN*)U^CaybCnmd{b}QX{PQ!yfI_QmCizc_DA*+_*RR3{AG{d2A$PdUg|P{_y-~P zN)O_w{~7@rJbyy(Xc(@ezaJl2juVRHOiD%iwRDwW(w%Tch4(Z0k$S;9Jvx!M4-kmQ z;m!IO&82*dv%zLo*TH5(+f^|??Q&q+yY=jKNr(9c+*lu7#5R7ZYl)opAi;u|cA?cf z#`}|n4S=lFPwTQ9N!CWj6l^lv&1xSaR+WHgG-dHt_crxkFKnr(si8{&Cw(A ze$KVbNY{7T^e<#c;n+xY5*X*0xFCS%Ja6U?(5>jBGMed+zia)ZfNBr(RA)~SoS&V6 zWj=S&=caeSdevZ&Zx?7aWzOgIA@`t3_e`Fas^TNEO4D}GIg1fsP_r2n3JNMZ_B-zH z?z%2bfot8WVf}qVVJv*q4_FDDgA7*HArwv6b(Bd~2k1ky!JU>U8byb8C~slU6T(eP zb*>tsG0#kbf3*Lw=`1fm29g>57uyU;I8J9gZ^B9XjuI=;#v;kdznl}ib=sD?&Dw0-k0=@Op8RSmcIsk`PnyETAp+?3og$J>P=nux z1S|jHuVBggL%{jPqTyg)7#Jg~$DsBK(bDT8Ll7#fzQIu9OH@XsJ~O_5?-Hp}BK0wA zibXQ?Kya7+!%vz-z3Oc7c2YE2-1mL3i4OFsKk>thMe}3;<_PQ!l{&k$c%*}#5Aal> zi;BTM%KwqqVZ2r-->jp;WVksAqey9~RZ$X0iQKFM!ETTd^w%J3N#$j%h#O4`vHnkK zy(}wE6v97njhir+4`kh7-vha1zRDyL8K90u7D@&T5_{J`%4=gy5tpdi&nwjjEj7@q zlWNaWro>S4QcFmVukgCgGRt9y1gW#a`&1hvf;H5ZNEpK7-9fjcoT2Z<1x=`|W9}3R zGCun|0z?Xk0!m(5R&@unKvTsjYwXko28J9|!krhHcn2_GPk^_)Z^8)$sKF*1_2f;J zb8;i*TWuK+zgC1rV4ej73gzrs(zef6?h~a8!6Gdu6(;j2q*m7)pA#!UFWed zL|!-gfQ<0aTHJ2XBn7%ig?cZ@UoNLrvRCWf3sdA@PbT+s+_dz)WSAhO_KQ_2#qRUT z-mA8wqohmm;fnUDs-PD<>yYfhHl;X#Op0!xkzjr5e^o#!&saR$=}FHh&{5vuZgM?} z^}M7iKNkZELGz%Yjua3Zs1!xB>`ZMvS2ZDK9>ELY~WkzdwwIDEy63o1+JEu%& zy3#&DX@}CfVl{5zPf24W4B1|0u1N&T*|NND@;so6al40Oe(rP<=V`AuvH=6XHs~dy zel|yU{>(+VWo;7e?+1~NZ0!+&G{|GMfun7yplbOA+;ui9~l)t5llboe0)Tmgvn zI})7``VJV*{Ht!o7nX}7h%^@BfIzesq>sNvx%%|eT-*{cd@yO_e&!IIGsTrI}t zaJQ**te7*Q5fVgk}v*9o%7~o7(vV#3J z-EOKu#0&+V<38n11+_0(RUhr$K8a^XeGK!xU=)pHvcLth?)gjyFCmxvob(HzZ2RVR zcA%K{bw~NzoQ#ihobDe4L^kS9;2F$@2_1ry`_b?nEP>)*8GKTp4J+R?-fIZIZ*-X*q<1q!V2XCzse(>Zo`@d z;s6Wf9|~t=seU8+aC>aD+wMp-19O)mb31FZe|^528KLhm zAHt#`c?F*3r&c4z8;cmsUa>FKYF)!W;+=MBPPkk{WNOS*Y`ZDl_l5J%0}r~9aiX)e zW!J?4*lgUddov7+Rj1Jg&I=O9`zpM3s&oGH3Ap+xxDMI^AFuLU5%n>?!%YE<^dRQVsGQsU35Ud+gCa+gjT(V|WwI68C`x9ZzK+7X6F$cfCZW=t4V>Ox*ioD_ zS&i6|Bg@z{Lplk#h)b?^Tj0T;3YBvmY}7Ms#@FqB`^&|#(xV-8BumM^K=Uzt zefi+7ao^YG@RhE?IqS^lIxN#OA%8`C#Busfv8}w+ZrR`Lfvc*;BfLQqdvg#MewYlV zy=toU-8}s{GPy?Nrbt`gEj^wK$&Gv=JhR7KTAI&cSz2CpSn8J}r)j0NDe|o^^kO=) zn^1w_^Y00E52c$=YvaK<=2kGTuy#yOwAUznH{qB|iEx!a4H%vT5B&f2t7qMl#7DC3 zSyUc5iAwOPMxsF+U+o@%JK?9^ovx*bhU1Dj9L{D%@`A*JR)N@p{V}%n+yO$juwQO~ z^A&VZ@WZ_;2y$`Lq9__}f6oN(Aa>~J;1b}mkBeR*MMK1HGSk0Krzsv3Rn0!_ynid| zuX|Q$Wkme@I-HL_ntrw>c5pW$pYyn-Zw3t7xf&Z4TOkFa=FR zu(o%%6gl)@)yzrX$jw9Z8hC6hS71%QcU;^zp@1Pi7IE~;nOE@osxZ%o`#EKU8+)nh z;*8N57D1N{%Gz)LfKl>2JNAPfPq?4vHPiDxYGX$pltwmNHZJ0L)FADk8NmpYqu zo4zGHXY~$<@UGM2b}*y^{!xT?eooj>fS;b^yE*gt16EDlIQ!mqC-jx=fYW!m?Sz;7 z14i4y00g6OmR;S@o2VC$8&ZE4Y!ow8=nsM#qHJL9PgbAUqSTJOGoH`?Y5;+IPigNs#E- zhSB0zMta)i>t$ylWbM^tFu#Zw%`X9x?-q!;IV>?QyYM&^yVnXy%-!1sf%=d{t2}J= zb3lg@o~t4K+HB3`F>*u8jp8^F~u{ktq*O{>b)i=Gc}nMebAAJ*KWYZUJF7Z zn#kl@a-N@FzIkj?A8NdSL~PVAzv%4&LeqYwSN0pYaWCSQv2FyM>_4o49iABKlSU0j z1nq_#mnOCvRIk0zYENXLt%lb-y{gJ)r)c*qfpj#qjjR@B7nuigFIeMQZ{hT-9#W8| zK^p9(42LLGZG1dE%zHgv56J|@riQPYb%E9!Ie9Yx6a8gd~XcsiNMc zAJupNk+{dOe!(oyJ>Ne9^nF7S>v>Bd1r&9Sj?cQklz@(c@Wc7L78kCG^Kk3!)?)#d zcPNR&HvCv0Dq-3;8NUnsUb#8QNSHp<0v;7#$f?Ni#$3D;^&+V*yN!?*R#^vMNXHHgL;J}of zca&ro)_w5@bDUo`V1){%rjdUEkd?VV6LNl_uPA*R5#qS=i7v?wmRvT(Iwj(yS3 zhPoP2l|#{|z0Mu2JI4`L7nq>+@gA0%^?{vzlPp6(Z0r4!4Vu5{Ok-QDn7KIdzH7n(-R&>RHi5*B4>Xgp$`!WcxKyu<-kYk?7fydv$Y)0w=rXUc}VCp*Af8>*K*zWquM!p?!H?WX96qu zKKI+MG6mhb4JGQg5{HdlKU_xl-%yxP7=q+gzjTm{4bV?8!nr;3McPT`Bi1l0D$ovW zC%ZFH$HcNPtHk~2>6(jZyU}igcQ;r2p;?5xkZb^Ov$Kvj{AQYkiZ! zH()aSc)r;!KGJ2n+i#Pd2z*}QY@!UV6qgWY!jAF+nKWW8tb!YSK1YAk`1w18T6Mqa zBF?qQ%6ceG^h`e`D^XFXyn=$G5m1mU`H@#Yh*@)0W1>QJ)j%(NYv`Su4mA)}N8WEP zSn1k@3XFUs>74>@sB^O3lJ0 zQ)ZrFTkMUPUQ9pqok`GjFMrv7@94luE|bbG0Mlh~>0+#~*gaFa1qc=o#VTXA$q1go zPSB-xm!xbmey?EIi7?;*;aeu$o#FHo1JQ5V9iJuwUVWF15S?7SnTLJSimxBEC=bF+ z+#QO(u}4*igzU-YGd+w)O`WE?A|CuU-U(A)G@${1MhUa0pP3|yYn6M>mNO;(_DPD9 zizR82NI>#Rxn!TKN-eW-C7;JnlFPp(z zwgu%jiJ9#U2uZcn@J)DC9{lDK`C!tJojtj1W(|MXY}3BHhd~XW~ z3`Y#wBl{z%fw^?h3PNHAgI3vnN=7Www*$dC)CbC|UdB1z5?gKpXJA&W|5Vyp;3Mmi z_z=NOzpPmRpRn<8&#rQBU&;P<15)-tk2)#sFvIuY&?{97Ec_-JhpuI*AR!VXoCsyV zw3+kO?2z2<0FZb=lRuQ=ZQX@ugLw-t9&N@9Jbn$YF92w2x&ClEY^=^-(yE?MoS(F5 zq>mq$Zu%I?+dAyU|k24sY z{-`J$?#c324f%CnKFE$?${evWVnLkNRyiB4ZT|#aqu2hcmT<0%K6&U}T@v2JifAk< z<3xQLY(ry{-#9z|-QB|h?nApdi#k_$yPv`^^q;lz>#Dj&X3Z0nonR8xm(o%bslR3N zzq^t9sf;fp+2srAf~woym-PtLoKnt^(tu#N$Zl`E)?f%V9;qT{vnR6j>1VHSvT`Bv z#kIo%bIvs&JYjl2>g9aitu|Zbfp9o>e`@5jmo{MF{Zj7}!MrcJM2Q6Ajp)$Io3^jk z!l~mu$+4(IRcx^#(@o1!RUO10D{rOi=LAv&2M>{4+?UwO&2#n3RA`9S90V)~=(szS zFLHB9nGUxUZ?T@$^Ni5M+p*L7m3|a$1@M14GFkGqcaKv3o^eHuSvKYFVg?c0-(!bM4K5k>xJbHoh&iZT*Il+vpfk*6G573uzC9_0Q2lX(1gk>4ai|Q zQdg5lVf`NNh<7wKZ7KkexWoE$G_&}8f8K7xeiIzRxCteGh>?#ojiVFq>}0nxVS0OQ zx1v%NgZO^qLD&Y!IY$7tsR-ISpT{4xf6e;hexpS*K6=@k%MK`gc8Lcxl4&6rpYS)T zVvx8{N-x9h+b22++huqoxZ{4bz1O&ELH$@vfi&!SjR_MMSe)LC~G(?n?K- zj|wDr)pB*f8Qg+m!yOkE<-}@~5E40JvEi>&se9(Dwz9M@|BwLAM+^-`A zK7+@rOK&zX+0Xr()ICPKC+;VgQ2DN_VQ7QQ^G5OgPd^yL9^iKvI&{-}+>O48_AsPg z=#k;sOY?5I^Q#Mq$@9P69rxCM-yL2%m;LqtlHr3W!kahh&b}PYnB<>Jd&@1eT31q+?71P5FsXfb_F5m+qZ<9A74e7ufPs+4D)W2>u>7_f=6 zZNM75pat<6^KO;NVZ4gL8Y-h) zGm}N{`d!1W0HRZK$tP96sk7N(Gv!g1NqHbabFLqXK4n3@Kkd(&c_e{emdk0kH4s-8 zb&~~{5dq%mM0Y^4P)yircCLr2gzjiM4zqvn&fdEZ!;Nr3TQpQ#U}XootJA9W)S-7h z?@opQeRsSM^lrpNtdRyc4pdDS?ZGfXAz+3$KiAz0r!}VMqV)8hyZN5c&wP2yYCzT# zg4hI;tO4XGrX*Q{fN*zaUJZIHB_GfBM~&th4>H$Mb&KTla~H*0{^AH|cTWhBsiUph zh>$+GNhg4Z8eZD=vu!e*PFJQ*97^@+QwVBh>|#b?X#f&yexy^yHV$uTGyht)YuYsI zj%3z^iZ&Rgnf8HzlT)#7OaI91=L z(W--T?}X=eEfV4lYfx=$Y_?6VMALSoZwqlzf!ohd`~im-->b4kgjEADFb5%qao zGwq~t9nH*|?|e%+z=0IVnQY=R=c<-vWdQFcWElDzZ8-3>_vOCYvsV=(9|SC_MdTH= z^t`(4zetH^5+y14BEam{G|*Q_R%rf`qs1#t{W;LPvMYikA}=nFzG8^p$4d|SAhf0? zhi=4aytAs2g$fd@tcIM4IjDf5#0%(0yP+m1G9WFatNH)aDOhy&&(=Qh3_g4kGNZE8E@3j!Qvok4GZ$d8l{eWyl zEV~}$-N#+YFV%Sz!y&%ezxTiV`7s^NcQE>-wy(l%^t`YuL^(4~=L)%L$4|Fa5~wgG zKhKR^;cbV+=!Y`OO1^b*@axFDTa_ueGi2c-Nr$?JYAELIa1IKCLEv99Z8Yq5Jje7B{Bv@N0Dn4}T zgg%&?4`Dx<+hrXR9QMrzBeYYqUcr_eVR3LKPLAu->ehnoR=7|f1- zs`S&kOYs_#Q<1a+Ay)=~zCqt0yWOkjRZ_gKpp@X}HK0i26+mMCQXLLC+=u||`sLFW z!S(2a9?;x`-fpMgE&!LOgil1?9+16M@oB6KFE?>N|%@9EQ$)Z%2fXNX|wuF;`2%HFF zbSAN)%-N+m+d#LR5>^TgN<`k@8SQb~5NF%itd?V5XebIqw)J#vOmQ_0-a{D8l!GEM6qTI>!yhmemfFA0AD#9Z!U4$ z{DC!Xl;M$2*i6K3?G04$;y~cH0+4Z4^*H#&)nioxv|Z4rXwYp++|^Q(Ht!ThfX-*H zOM5ue>N}I2e$MtMfJ-j;l)C~qkBq{Vc*g9bv(dWPYkA(goCIXgMYFbzwW}ouSI>96 zNY!}6P7cL%z0iF57u{APZ{8vV`mKY6A(%_;4(MIIA1Ms5%obB?$`Z^AKRWU3jvlG7;Pfg0xi%`J$dIqsw>7$?Haoku!bepC6y_|uLt89Z~pX?x5!Z( z4|@}WK%=uO5^*`w+yFCW>y4N59wfigb}P4kgdi*)JqT=tz?BPVT@SJX3A4>A+J2hO zmlo~1+}JQ}GizRUDdJw9aVCE@g2OOOSuM*Lzm{l?Lxb>n5!#!?+g6$yT>6tdGbM5+ zoz*60m)iD0#A7VE`a8Ym>jMoiBo@VG)kj<7v-NSkshfs*KY-xBw+MB(qMBm7n0jJ= z@u+Zh{Eo8HS$|7(S+fz-gVoR@y}x_n)ak4NZdST;a7le1&GFpx;&I0Kv1{8?DXGA4 zokvegaU&cLNSI6)0HRjJa(2y?Di%B$1J|r4X2$eK?zzNhbDS2(UgbwA9_~ACM#Yju z2V_7s(bai!sf@a@u8iuB8%|*cF9RPOH|%E;YRuI>eeZG2E-Q2K;8}9HC)K8aKmAqT1=7Nge@Rf&MQA7%WOB%(Si)D9e1v!vTxz*bAc-m zyG>|T!cMuK+4bXbz&2(5ygRcAt>*0}b2oxE{ZSB<>Y}<{WYO5e*;7sWDNY?bkgX~l z815EXo}RJbx9ZpZkdHG- zR&7c*ReUal=u@Y3eXG;xGqLrg`(u>M!MBhk5Ns9wX#>}Z4w`!aX(Xj|i*u@#P%-x<$ zYk+23jx-ALN{!z`>ziQ8)=QgsM;UT z$kE2$3xG6bCNDFbPEK=bjgJHX_t);kpz3B_jf_qlX=Ot%VXQK=o7}O8i&|;FS8_-E zhSe3wFMx4i#(=vT=81e!JJcPLP0d1vQpjuxdv}Cx%`*`bub(-CetR7G-u#kN!KX^{ z#*GHek5m}rP0PcRtVX=HRm51J?SZtA|Ji6_8VF6HTq~#m55Cs_R_w6bA8V(CS7B_8 z7?H+o)f_2OsTpSB5VjVy=y6Z_BNPD}j$lMueNZChsS~ozM()41mh(q0p0oTVvN+ixF0+T%GF(6|qzjgzYqHYfX zhzp{|cijj+a@jBmd3h&E*SG3K^x&tbhngki**2x>awksC4h`A|R4I*{rlFUWsU=xg zh%K=%+X-{`1KGSXE^#93J#*MJdlcX#mJD6I;Hu;VAO0f3Lqcofk>hslehN>vUg<5? zzUPp^=g)7K>2oF-|MH-+wdQpkx8r9R2x&niSs!d)x6G%T8gwtvnwWhW=X(0 zChJj@F7u@aYg+j;>q<;4A6fKa9Ig3QTc(T&8tt@yMBV7wNqe!2NEWUg>uJI3bEUWk z{2?@l+@e`f)81oudD z?zS|WLzWGuZ;O(f*YD-H$WBzyXV;c0S%pO^Ttr^#n>wygn%6Iiroe^|;D#;lj8P%~ z`Y}o!n;ge)QJi?Q?a~^yt#bp;O0PY#nh6}d+*M6y7EVz8B#RM;b#MvXBc zyNCXTCAhWriwoLV2!sAJuW9GJ!{}!8<)>2nU~7_3k@XrhUG1Xcj61=cg+7)f3P4zN{yaqb04v`uJC< zy9GM8Ws5fc;~pnOrd{p?*Xu`o86wWuWGXmGMxuXpa4GtgiC93(fA zPR6~iSc$S7t)$@|!+IM#0@Thi7{-y2C=@x`(qd2(ue#oUiu);yQ!w$BdF&hC=!yhO zMmM2JwyQ|8!cxNio&xJ65D=dKxVVHqUbw16oXnQ|Z9XHZF`o9>zG0AqngVGxZF2|D zsfpNx83-vYmZQl~8z`EFJRogBW3#=*1Y))MJcbb!ULMQ?lJ^$Gimdh&!0r@R-XsN_ zm`}w>wr50jQTG%aFB;W;qGP|pXvB1(T2!sK6KW0`L{>}yeDC#gp~soW+k%Z62|eye*6et;-c~ix1h7wg{(QF z&u3nPVRF}vKr(XP2LG(jtf=jmh4BMupOD-e_$8a0Jppx&Lz%KDt-3dXKjPs`;<-L0 zm5;|8`LVJP6v^w`o=uMLzS_x3=B&IW<#_%%=7zczE9RAv96H-w9}*L5cKp!Goh-D0 zkoYMGUG|D3LfVSRaq?xZHk>(SjHQtnp_%ArCtx(8zbtQibv6IsoNxsu4{l%0vsA-| z&cE~+SrWHObQw#KujB^!q0FOMSkNXW z3-{N}sbs8NpD(Q#g91|V&Hy<;?yE zolIrenw)e!DW2OIy|pv9&Wdg;Y+#qqcG9sM7->}4!PUEP&9O3I?0E>(`;$ED0k=#K;LXIb11Zupd^uR8XALu2P~`xdl5*5HAtmwx?FW?_6sE2Y>Z z{0>y_g-6x(1jWmzv~_PYY{r`=pmN6G)XL(?!V~vQXm?CoH9#{20A=#IId2UaZe$rsksdd^z zm2v1F8x`|X$)ygsZqK1`V5Uc7_j7$?*cy%z-k8H0DYBQ?Dhxa>u;vjWR9iCdNy=m@ z(^>GZ)y!D_zAzN_lIYybmVY6kPsF*kLlRD5@0?s=lkvlg zZ{mrxNNH!Qj3ZDKmv+7!?dKV4@o|4W(xNm>PG$6Q)TlUIJe?+ce0x(KhHexpwY&-raDb@xQX|!RjK(U{?fU80of3YtBtY== zAV@yLB(V zw&&Xw%2O)_{Ca3AE<1AM8zx)UFRK`+F=%b2q7>A@9AnF92=1b`F)CQ;1K5FRdbvAE zwS7ZuAb@C-o0s^=k9&lr<&H5X(J@PEm$pw0qhuI%{TWlAQY~XuhU>fIwAoKu1Llz{ zW=xIf$=KsgDd9*qwYuX1CcUNdX3Xc_aEojrbLN+G9cH~bjq{sfHA7g@oZ=-;L!PmO zG;8|{Q%fhsBB5QyQWRgN>>J@u%!b^s(Metn8XbRx%&KVEyd>=(c2qO&Bse=v<{N*t zTMPD^T6@x7j$Db95VE`_RieA9SyI(b-_ z>m5>ikbRhc2X*m+S@IlVk6y`lRS)3F-rcGPIeJwZ#h4JB?Jx>(QBC>w&}TIKdIhI+ zuC!wUjYy;Gxt4dSre6L^oULEv`Zy7ZY+>~6r>ASol^r|Zc?d<43+_~cwr7&--Klhr zXm~cK!{MYDkq3IM1+db0qf(hnN5fH!3Lnj(9d)W;O5AoJe>5{@6=v7hb$j(lV3~|B zQZ8qhJCpk+cEyxM3ESpksGlb8zV^zB>donN|!c zc6&ZNmj4Q;VvcFv^|Pm3hA18B61}b4fT@3bX956>=aogL?`3_>Mi>=AkO*D0OH;a; z)YD7>#$}VVdrB9Y^kHb*3w+U*^!v)~)Y}S>nukA8CE7#AYVzPh*;u;4nuOq0%@#n0 zMba$KXT*(lW$R758~_jCg*T0Gnja4yxT!^kf;s3Aww_l~GAgS-4l7{pf3&@&FQh$< zb)-6@ajsxI=k)YJ~5>lEin{88!&eLFi^bfnXrqz`L7EXri_OIkX>Dm{2Mf$%r%>C{IwgQpJ>H|U zaFwY|#8X6Kd$bpk-@h5TF_Q5GJ!6aazFb;&$`)|m&!>UuUNaCA&a%us^o#T%)RW|_-J_c63CqI zf-{?f12zU$cXb85y%5?*t*uKOraXmLO`%6KfKZ(IxigIbvbhSppi7x8YkD+TQZJ>+ zOkL?i2hxv|eT?^nQX9a`Kjxgo>3yk{)@mg)LX(Ua2?;(Ako7Rt2+fJi3T{l{u6Yc= zA$m}7s?F7GvzM_ZDdZ?X#2|@5U#I{pOG^sX-M z43AK6`wY0Hr>-eD6`t)v?#q=Wz5+_;4i>J;F;Gs(05!EfPF?sjFOXjrX|Ttv;e zY%sE_2lzmWJ54#i_QoQ}Hk-T-wg_T94M(yZODmzXN)F_0GW?ZO_6pqR3Nwptv{INL z{p~nS=~=C0C92{6QOGy&wrS!^FC>H-GvyQ6kr~fXJTWVe!Z*i_ySXvi9#9%`EA(yF zZc*G%80(ph(N%+u8u%EaQ0#O+PEau)Ff&dpA6WjN6g+@HZJ}t4soA zl$6jT%bYHPCSb}127}rZbLA9(e%_1dpcfHF|Fz$ovZZZYtmEZ(047z$ndVAdSraX| zC)HEagr)hZLp&pG1#OE7Z+MwHQWeW_v^h~FW{Ykfj)OoN({-1F^m|@-cbwH$x2sE6 zHAnyQP373c%*k_gbu_}m&g8{xTSi)hsqezI2_H)y4hvTFGGPj#2TOeaZVWtm;iciUq* zAx>=3W?b%imz*E1B&58)H;VMS5Bg5^vyr$=|D4_DbK%ia6E2~D*IUD7t+Zpqq8p0# zco3{R5)XC_bMKa1TtQv@mCNxsv)XV3%Kj_52#@o6``T0a`e&o@$)k!6nKynF5RlT< z4u+1rFOVy9gL*yiOfY-rwC$lzwzzfTvzSSYTiN1`q@@yT$=LwgB@Z)vEdO1|u`r0! z%2N49Od`py63waogy*54+LJwn>q|B#L}1+IAdx4s;idlG49JJ)U@k>yI{e>Rz%K{N zjtv%uO@1Gtn3t0h)a4?}rtZz4YE4X!cOGC4*^!HMgN$3BaA``Njn=f09CIC6MrG5j zkDCZ-71+ZGb+*rdYVhj?*e8@3Xy`|F2r!vOVuGq+5;=LM7MJs3vK!+QY98ZV?{R;j z-{S!V1jLyEXWumDukjti0?bxCjstqDv6_Kqshyfo22w*c><*ZqlS1@1m1>0lKWu$v zSX|MPZ3vJiK+xdQ5P}4EcY*|h2M_M<4vo79cXxNE3GUVecXxMvohvhUW*$HIzC&|r zpWeH+oT^o8Ve19O!ZH*~6TG|0`F3=6^0biOJyUoWLUi>b_Pf%~nt2M^0fI&m>f01$ z+LD{W)K7bgcRGQEpQ`U)u2-B&tZxm$3I3Em)nmQ*V#R|Y{;9ST=>oW{z5zinI+UQW zo!!<2x!TZ}bJ8pTsM4n&zr~xF`Uj1Y;BljKhRX6E5t8h!-S{V~>)|5K8z|NSstF^V zlKF6>Bt4zl;tCIFbxJUPJ+$x<5jGc{~jI2dg?dz8{p+DC$yUFS8 z$>lKT(jxj?yhpxl$TQ5Ze1(|#we=D56vR_5Z+2=+-OzS=tmm`s%9aRk5nB~`W+<0< z)$T_G@tr`%L*MPamV7Cfnfh)_6&GnPa|-&0+sS4e&g(K+e2<)-x~0v2dL0EpK5>#U zEo?e3a4Kg*)whf}pIzRds(wPIgi431n<4UfI*F@~-K2A-cHt@IaX(X6&g_FoH7aJG zk>x7L==C3OPYa<+zkvCS_;^uh#WuL*u;jC3YE zk4C>*VnLe-`%)zwM-|crS`qMkEdZd;n5D)29E-_C{ zv=1$UEsy_=wF+@VCkQXZQ3xopb&nN9r|SS1HMTOG#9k9%Kz)^K3?~`hE)!lusTpeA z$kmEg>c9dzHh%$Ve+8Fc4coktRi<&|#LW_{hkRUeHW)O1~7I#{-s!SlP zi&%RV`c@wCp6w^pr-3gEpj5h;X48wZW2XRKcDQ_0IxC}t1~z*O9l`s^A{_q~Lsjp7PjN#2i@N3L z!$um0q2CE1bfeL)u zM^L~AUp3F<#cH^7O@S3y5=KFZyeF8#cqnVx<@ksGyk{&I?J~KbN=N)_7~|*x@%GRq zGPHic$w|7{;L(uXby>u)pCLLucjibo!(~wfy}SmH)}#>T`2j7 z1a~+!EhmNsTYdlxN5OZzap?E`RTpbyAMc}Kf!kmCT}Wa8cxQ5ATOyQq2%`L3o#I?) zllNa=dpX|`4B);`zai=F9k`_#1qg$$!rVlmfA`q2>x6GQuUjQOs6c32FAVma7lx*xbCO@AliPGTDW|LsfA5?=7Z9cjyB|z7Ux6D_*OZXhkVky zv?e+xrc7oIwPtD?9@yZL-7g6^0t{Xp-(ae#am)@DS2j@;i7SJ{0Rlobym+WBP;Z&& z`};(g23Z7l!91jKuv}kY)h7A#j(_278$e6gtJfMj848o$*v}0(&b^m!B;ulnZ58CT zq^zq!;?D))sqF`pDP`bzKqXEmJ`gEC*p{!SLd^|@!f`PjI}#ovG`N+kOaq>a#JA2l zpJHQ>k+dj&B6zMF7~EH(Hw;~LosSs$-7aSj$4ED(6P^P_Lx!Z0|j%>K=@#^tHm%seVP zngyIWE{t#P^?A}LRnGq%?!>%N(@Tr8Vo1Bi>(8Qw|AeC!%vy-5ivI*w9dJc3Z227o zT^3|$)YQ(1bxC(gpEB})iwCn(4){dbttplK_;#yt6O){bcZO4wrl6pJz`^OVaLPzV z=2vD>UE;n!_UXY{gg9TNg!WoUnSL5|ub{9HaP^m4s)LUdvJPNiWBa4zsWz`9B@o5lH=)f7+8*5?(>fhr3@%@)ncydiJUrlN|O<=e9>JZG!_E#eaSXW z`H>j^DsyjAnX=d68-WYD+*aeD~4@z|~+O|mP+W`kGqAFnN9tF`^ zUCqy8q7f<~hCa`8X4KGhN zKFoUbepZ~i*75d;?jBBf$@E$I_^sPoX843r^l98tgX27BXakZ)`pkP*9!_Byv8EG} zJKFBIyjm#7h^rpErmec4J9NW`21Y)Qv?uxbq%XUPE*>ZN5T1R7`aI2mjWB)>1QghJ z6W=v60jluy;q!=He?zYb;g0@)jx(z)qdC4{%koMp?QYKKO|8wKKdeE z(2o+O&A?ORWYAU4mUe|Xov8dJwZWMEv%sxc5n%J9jrbD7FI_rw%ur*X&&S7{5c2r~ zX@V{l0c={;EFN~ZD-$TmMLLKvy!#f4KuKt@Toi)}#glK@x}E(7n09)@_|J~)!G8df zyF*Nj7i_OK3R(8cpgOhl-IVh3gQR|OuiupX_~1|oX$v6QsS>;GY{?b(F7F)OEIvNB zniaNpz5iTqaj3<;v(Myk59MzdfYv}Yy*^75*!zKDehHq4Z4GIMHBQAuy?)~ePZIUh zN*Baw;}Zo+eNwt@~fR zPgEm$Io#^IvfnbG^$i=OXsqIcL#xI%qV=Bx9C2kSrS2Y|Mp=!{XGok+UySInuoL0V zF__MuGNnupGoHN7gTYKrq9jC7=xmvst!BXQ^Ae>_Tkwdw^zQ;;#D0lYIrXJ=F3a}R zpFU!$K*HI$mP8w7D4%sB-iU~L2)#KTI;eE{q1;klpTev%F4IZW1a zS%){9$npX0pJPR6gYE+s8Z1i-d!s5oI!%AdL4EeX)j+M&b& zS8V4E5N>x;pT`DiJ~ysfbAQFhDl|;aQoIa#|0_x7sdj`nu&c_o>w{*Ve#DMs-~IOD zO>ata$6~Eb*!-?R&u`}}I_jzvSqw)j%{oKy`}gzQBcJ1R!VNV>pHb*fBz)QaH03X@ znW2rUX@lP2#GzBZ|Jz$~O}{N^NxLVgVh8p`M!3q-)zGd^M;ACG3p9X{CuyOZoNCxqK*V4sDs@|r)P;hDNDGDT9w{d=BmBcn(=QabW=c%A?y+*dOl4I?$?*v~84LD>X5_W2 zY&3cKfgf!fg|Goi;0ZR=E(8qp-d&J+M_DgV#5WkhZTxgbfwuUy}S5;&!5L8~2YeVuYqhzw` zGBTWv#j|mD1?IR|*=awUiQ4=pOPH0x97#nHA&fM{!i##%$yi zvC8p~Rzwl>aONYN6y~Gr9g~M%md^G;{51c~=Z%Hi5`H=~m?6%8#{%|>cD6a@)=mf# zzcv_Ci4H#-GsjJ{p3dS!`!Y7$@@`*$qtfK*t85NWz8U%-Zq5vPqtv;miX$O`rMc88 zg(1oh-_UzY1mS9!74~N}9wvAai9}`7mqT`V-KeiE)Josdl_Zrc&Xh_jo(P0gO}gH9 z(X+msU>3=LxICn#?rWJVx&GY1m3D9A<#rX0a@EVmw|{u(22T{)mr(zro?AuLkMqyH zV~%muGf&{!l+Np*x$VcEY9@RAd$%l9w`}0GKYhL(4WbX_*pUR8^{Eu<2kx|&j#A*V zlR|1JbFWjoX3BIH9%}mc@eD{v)jWac?)eYJ3u(SZ#LXX7irpoML5LkrzwSTl?#}eF z(HtJqmNizLbUh#)Rv~u4VJSSjCjxtKB>N9GceWm7@-ACBD$saxG)*tn<4rLxZ$%q+ z-jSkc)g7PJ@Iz;-2uX zd?yo{2v+2t&L!<<&9`uR17u)#w=@=05AB%bDm5p&j%Sy$kzzSxUBGJBkgHU#m&E(_ zR17Wcyu-a^Fx~{KXnO?^@A<8)rTn1AMmNz0<7+NAlGm46f(*aXE{O%l6+wX~&NvOA8Wp^~8T4b62*kPE_q{8OJYu_=0VCnAE zBKF~yfwEo&DMGPkrv&!ap#5UVI>1|4kTeTT4uJ~p<6A@+=q1SunjALGzpwuJVGrxu zZ%}##XrWTe%fq4RM3#`lY5VPz59|)GsQV8Ak5d`FGqiRdqUpRWTB=n>(w$da zul91IB)2~*{?7;gw>@fP7^Uj}Y|IByoCJCxNTkycV>6%0^MM5@Kne6r_a?Gg&1Yz- zX=zzCsgVylPQwo43o2EB!6fxA=-PryToKmY)&<-lm{@;%Nr->etw?m)*!O|1vbn<*Ey>F9WMe}4n}B-@vTqwl9M~!a@ZI5K7-{C0k2uF&()lH!1b%ai}l)pAnUb31WUlZ zjOVLIAH~6$$^M*?G4Hyka2?GL!dZlml42u%v>xcL%C@b~aNI)5Zc7&e$#tRJyvzzf zoQhY6cgF+EQZnbx8XQ9*j=u#~=)*}bNPwZ<%|u+eC~+_$9wSjnluX)ApeNY}s|S3= zRYAPzFA22-IL{5#`aRx-hK^m>(ed;QcSWm6d}2h}Ppv83H7|=V)!@CI${k38ru%o* z#bZjbWeHduJfnfyPlX+N-|x-OmAjTg+5MWa?JMFzb8t0792eCqw7Q#YcT|8!1ApFu zHw=aRxr9T0XpK3=G!0Xx46nISc$B;X2^6%;->EhW_$L`k9}GOI(~tpYHqt#cRj5v( zZ8o+%&(lTSrg(F3%m?TY7G=v^p-PzvCIQf#YD$e+q61OLAVi# ziudoC(}TxYba?s+kBMhB#0LDzBx3Y@+Hr3TaLud5yS1dJ$2TWCQ*S?LQ9>hWe_!;V z;g9jLF$xD1bZXWjYNZkzWx3!8)Rp^4=l0uu2xW9)N{ZwsO9?5+C0giH$o@VYhHJ1N zKsXI^$hXlaex27}V)$;&hoswd=-_9{^YUBjL58VgyjBMu&HF(Mx7Wm8R_hJ*l!2qI z8iaBOz@6bmO2Phv0WhTiUKgf4OFqnbLeYyh_bCUXYqj!{1L7$_pD-l6^5vMvC0Ogh zoSg6KQqS%FH2#O&_l$iMW2C1Tc}Yph=ns7kob54Nx%3m)ndAAzrOx|1mWvvKvyn+6 zG|&V8JXT4D+Tra)ZEnJ3E|@<1)X2JqHmIeExSe?rFrFBImU!NM{^?85tVjTaVQ2NM z_veGNG<`{4`XlO8g!V{oK*x=Z8??twN2?`G!EP}IV@o&m_WN`!lmMky^RP_T5`R7ic8bM{{7) zO}U1h+u{n*%|Aj3_+3l9*ic{AEP33Ec1i4v3_S7T;_K$(%0s#(O5y6XA^H4qy(d%8b;85?Zg8S1++VhEP7 z`n8G{a#8ZeMOP*1_x@bi_B2C!6`~6z$VV`0+XVM|sgreQ&u}e5e^)bTDCQSWUjBqq z=2$kl#!Z*B`e@%S&0L@J>u(H1r7_9OJsbn4T^vZ5;bEi7iGZ*8JUsS@X==3r|Ptq{=RC%#SwGnh;m@%y#)&0QXQbg^mvT-Inax~ zTXMR4vn6`VZ#RteVX&cq5*;Yg%S(AKw@LmThF<21E2e&`(scbXL>2Wa*i>M{Y9TA0 zC{|^A4~qDtoQu3axH-j^dPH&%> z`GD`$Y0FIo^QV+ms0J#Hip_0ZBL06Df+w{WOECYc&Wde`RNQOg@oWZOb2#y<<@@Ib z9dk6RpOKFNZsozl7gbpbbPXID*_F8h(MPgPY3XQ>LxVKV2THk7*_FD-pAsVSEJNJV zdK~>e1DS~?Yf#Ng_s#7cORIM5>@wD`!h;|4Om80FSFLZOIg8AN>B_#Ngf0=pF31Fa z*@vacsaNgeUh~N#Z4vH%H|7JkDK4vM*Io3YC+HHk+N>Q?>`=nz28($No1CVmq_dP{ zC~rEv3$JhYjd6x+Aao)5%CX`?W_+k?WJD2C7ftl5(ikA(iiaokB%u0$BnE(U?fET| zQKXL<3+si5B+5UvMy9=$%X>G`e-A}ELyj>87-Kv++>s&(TT>`JxC90|ddukd1P2^R zwpyA6_D2Nd3vtDXhj2~#d6GVEqrKXnH)K6T7#m*9V`nCB?HeX|FlQ$X zEm(qux++i_?eNO1?mm%KgQOt?hy;y}LDYq&_(W7QCf8%I6p$CK1bw920F4WifgqNB zNHM{Fs#@y)x^}`;D(1|$;VzZv0ySBg?4y7fXkF#SQUZiE!sfW_3jhAKVp(Lk;aJ>J zh}Bl9;v;HY|1}B*HpYNoxWt-iO2OeU!?*0qm1G&9%zWp499}Gar6A>%@0VOVCJ3s zJbg>ZD5^G;k%^?|x4mL!HS&UQfvL|;pt*HRk|FX|$aW@vb6SRx|M}jg7e|#7bA*k3 zAN@%V{Tkv%+w>K3N^SO)O=+1MUs9u~cBk?{4n5k243*y~R*LdTqmo*?!l1aBnOQUu z73!l<@S|wYOWSn2t2O%a#UGCXwmYwb6vCMo-&uteqsq)qe*ML!z3%xsHx-}vECcH3 zv^7Jq=dW5?ZY%`boVsIlI-8B(iDwZ%567O9gh``bOyIZ>^`W^&`;?_Ngt!S#kdl>= z-;bheIm-`bcS^gcCCl+n!)uWGft=UfS@zm%t``?EXQ8~PW52XGstFsraq*wU@%>wl zeifLO(Y>o&6^XB3Y;2AMfYgOw3ECAhSNZie=bBHylU*TYMA-~Bz#c`@-QDJ)Fd0MZ zHJ1G&3b;-wTMr#R@ds9n@|jG%ClE%j&?q`rfTZc-me8wZ6bxSHGB76Py$-M(_-4iI z8sb}`ZUxBH)#_UC!KI3(45Mf(C_?gP<>D|moh-W27zj!et;ciqq_woE1bSZxBxMo+ z?m{(fHoVhFQ_wZ@D}+_Woo#PdU!BuE{QeB7=iY<9dqJ$t2ul43Y$Jw=O0>twVaO^A zkET5EwI+c!_yjFTd4CyVg0w?0!ee!q++bDt;=OJRVTYC$a6pz<8FDI(Et#&-*HADH zu{Q@WEjwQfp4V{#mNJ7cpuEf?PB-zLE0&9hN?@gof`C&>J+(RVmEX z$u{=jSIbRaGQMsPF^4ZaiwK68{e&Ia#D9;hu)NatQSdi2Uu@|)Z@1YmE42R zk0n1JUXoT&VH?dAvzT}pjH~a-)Y(vj!alQL1M+3b?K4uVB#lyvRpTX%GQLqshF2Pu z75e7r2zX_J$xVc`zVQ7qh!{1pq)xO5uVcMbwXo=Ac&%T88!mjUU^&kj?ELxs z2)XA-&_QlNO-b*Q919Pb9#jv!C1K`x2x*GNS){^L8s{@wf5&6l1EnNt2dQ+@}dRQe_*kt)_8}M5TQx^R z`r|hz0yNS_kv|PUE@PkbaG3(2e4IpzJNM?uC{zE6UNf$DK10O=rfGUg4Jl+ZzBe~F z*MXkh@HwmqBk}j%=sN?JSIj-g_O7S`D@6;oy_TUr$MU9X2>^N zU#53Xw6EDVCkt%-^&9ehBlBKzsJ&5qfDvA%)zhXw)f^~QZACl*mUfKBp)FNO0)^)K zG5H(lWZp55vMq(w%U{i(_Zz<&JZ)fH5>mw454Toncy^^xC-kSKk~fo54fSX|4fL@U z>35q688udD1dQEeSs#6I-`0(`OPEX59^l73)lTa3O@l}vNy4sZ=As-j+0)wS8uWdso5q` z;xvFDIA@PEdb*ZkWfnBfcRMjI@LKkYYv%VZAHbyq&7}S-$}R=X-a}9~ZAloW$P<5J zw3lw>6ztU3nqH22nv7SEnnrJVml!>l`2SuGFzXlP<|vWW)^tbKRrGY46}wt$7N0t% zY^*NtH_Lqk|H{?!B|jg|TDioaK%tT1H^J8du^7FalBi1Fz>}lZ1Q~%EQfRaa{@G3n z2!Vl7dvdf?hs3c6+Nm02ger;^u{-@-TqD4-Irq&?kvpcw3wD!XPSf}^*x+$68UkbN zTp?@yb1Gu&a3zVJyWoqbhau|0Y(*p{R>#ndsbyb_;wHX-@0ZFZjoOr}$$arCG$U~8 zx&O}>HM$1PlFM>cDjpv85*dM|X$|nXlX9Zi)zy6Zo{!J5pT)gwRDqD`=Z9KRU{`3) zM<)`HMX7qhLF>1^FR{^`or)PGK3KsWHbTa3CKKzdP4*)A3$4xkT6)AE5Q>87;DqbJ z#B?JZtAFFuvKjM}30BF`N{f3_O)1}(ShVUTO|PD>`}gc=c2q~|fwf$TDrkrRdPVtc z#l?<}4xD8dVRL*31K5_AJLRk85B&qgKDlt!sG z5`;6->+=6@V~##%syz6U#CRjB7w#~=^V?6<>4x&_M*}yi?<=iGCM}QCP7d!h?6v+B z!auv2Yp>qK3yHa=3wB?t7YYGqlpC+igaC*e zUP0!-tWr6gZsJa#>!=t^s2DYaI~T66B@v1*VuXXHKKSs9PzmbeQdVyXi1dDV-5Crm z#{whFuDKBjlylR5i|+v}PPLpq5)807zQ8yYDVgt0y78(5#cMynv;Sexoa?>Od;lj} zSy4IyjC!SS+HPtgU#I(q@4U}>s8mDa#Ml_{eu@x^>M0U2VQyd>GBH;_MnU>-{uO(ZM_6P zqBJ=j8O;TidCin6f5Wjt@7q^#aJKb;_JZ>3M7N`62Xo+BY69`&z95uQN`Y2$>$XdC|&4_>sg~C zG6uta8S%}H=XcWm!YWOkm6N4{Uxp4Kjp4NrNwdpJ9XG(nhBI!tNLm*b0pWacj#Do# z%;}+=ba_7x<@(C(-0XARI_Bb{Ik=ZRXfJTwh}i-(yT8M*E2(X1=eU}1bs(y_U(FJk zg_O#Ge+*)MuKlp%>AZ$3I=-paj?iJG3SIIE+@Jk7R<;hwWny z$HHY9vM<+s{XKfH}5YZEBoRO;HRZs_+6i%9<(DXc#+K{D|P!c-Up33L;3eDb$Yk=Gaa zjcevHG!>#}+tza^v%njCe$9dZG=rQ1wr#{zvL)kzCU1#2EXr2EivqmAKtDvlD-MJ#50oaA$i8y3@QKQbKlrHNHMD`R9@1|v1Rh99c0gq?g27-u94#LaWJ#pR)7TbbO9_^Z1NrI|)$N#Y-ulHob01Z%d}F@+*TCKNp_ z*Ysm0>*Lup##R4csEH~a#t;epF0JGFDgo1~3l+ph0bQkEwi(gouoHX)MIt$@~weBnwX0Og{)WorgGfh_h(s*JnC> zKM_@yyCa(H0Thd?=ALLTnCMV)!KVk}=1JCGOEZZrti=_H^1u`HxsFC}P%6%o)wsDp z`u?bHu6r#n-F{xgvYj45itTuH-9<8tKV|Eb!V?j63CnOEdw|O*{)?wjWa|eH z>`~3k(o}ExivWSdDF*vxqIbM~R?`)3MkGFHv+>Gj;`LWWKK%}A7TYjTK6gR^q{MO$1v=4A64@UITTFopZAIBSGcqnJvx!Ec{}3!sc5}&VK0v@~HH@Ti7c=#;)_g{b?U@}#t<#6*Qhf)Tr zFvC9K=*i{D*DhdNPu$=C7Z-6;Nxc(}eoccI;SDYn%RZF3Tk1_631f5!_IF-_1%Nr8 zsy_bM!HJ(pyWS>HJNtO=*XfM$6c#GAx2m)apnjPqNC&}w6F*vwi{H8J72u|Q-186usWM}X0yz@E)C67eMaJi|rnoc}8ueFf1Y#YM z?qPzlDHpTj)0G*Vcl{;=ESeJYNu&fC-{G;y^xzJZ*#tDT!AD90=rp%-FdZqOm1Foy z1?%ofVn!GRsehQGjIXKBQZYkZ-a}7u$xB0H5^U!f>FA}K^%k^LL@Z|(>N(n2r%$n3 zt3NK)S6lJ*wK284$ZDBsem{7PTHH6Y+B0}DwW)K zw|~*ZjROZ)oD|5-Ps8hak|`DD3UVEu(Uuk<3IA%!f#_d~cc1W*-}OVz##EA@ zDT01^+dd9jN^5CRyLz>MlVGwSBXQsET%*UjHN#m9bf?8F-DK-~8~#406_ELQ`s{r0&2 zPM2U_tXou{+7@=!h{-#;H?L+tQpkiz?pQf7q)W=)!_fAKt-A6;SIjvHccOpC0?eto zIUHBvVSNb$Ill9Bh46V%x_dz;fbN4nzJ-L*W)z)o}WVeF;>8AKjI{&gW#%q2_8^?Tc_^PNY~F z+<8Ga00*=F2l<9BEypC|vrTS29#acWxaz_$=XnqHr6Q|U=g0zb@DC0qDhJCoVjEoQ zKE&y>?M&@n_md7}hcu08P<^SkP0oXlo2Q!;z!yEowmwzw=1uGd;&z`1LtGlPTNqz| zWz)8fT&q*5QIugxlgw_eAj)G)i!a<%1I8?>K*1yDB@;bEbiWwb)|SKV;Yh}<^`FbzZBt5< zQsF}6(-hwB`;qpL2J7yJ_4(hHMS~r^4|6cU>al3DoF*-@i4G83!x+C-Ke0LYQ_*!a zC-|NKBbRgh2Q=-kEyx@5>~%E3>?r6ybU59)yMQ6(Y2;SY;oYCUQTo_GLKsbv5LA8q zfgPQrcJ%%k7G;(L%KBR+)mB#xa}<5M0$IT9!wCOUy=;du%uR^D;%LUx612Wr=y;su zbP_)HA*2zr{_I1?kGsIJtQ&~&*T?Kya6*o|!#DBQfc)$rLp zKH(MHMO!4DI{6|K5>_E_Z?Yk(iw+mqOKc`+~Qsb%%lO zIUwO-PP?&28f6Io@>q>~msl(JB#!T~73L8K06zQ!i$0r1-sv6}u<@Eq3&SrA)vjIb z(_15W*0orCRZ~;TGflC)mw<;rAYbU{=oHv8;sqX$YKx(7(;53ng;XpoEF~}Eq0ZYw z@!idzN1ZjsEZrS6WX#%p)bb^g=?7J9zj z1PmOdr@^XS!MaxPSXFAZBWzXF)ha+mG7H*&szcf={W=Nf5@*pqQ5a++OX$pp<{%%` zk<%iWrZj>?*cRR)*n$U4wVliWXK-9}I5NcC=~|S99S?j3d3kwq`I7Nn&G-WX+i{9T zP;ywGx@Cl_xAXD4c2t`m_2V25aE82>;`}_TFt?9?L8|2-X}6ZpU7yrdgK9`8FQ$E3`&F*$99czAet5wNMSpkRT89#Ns){gwi`N4`k1^3%#$U!V}j(s~dS%6)FDF&3#| z0yLp?GFTomNfA5yZRy&&ou-Au(b0`6UF)?5Eh-=&iPp?yTG8>*Q(1}p2^FP#Zy?UD zfLD0eR4)6k@#Con%wliV5grJq%MAY=xm-})2eb`P45Z^|8s#T!G{kOwYxyU1;JA-j z&M-fYIc1zq0|*;tjSpqDR;&lDTSX-uzhuAszVu!P=F za+Pe9>Fv4<6J7KOCg2M!pb(eJ)f`TttoBFb|D4!@zGPWTivJA@`tNCu2!o0)2RI@2 zE&kye;ysoBpWvbY{I3AP4YDlWAOA2B65!2kBU^S@+$R4&O`ajb^1x}F_*M&w3rtb2}J%PeRmbY zj{x*g0LmR+wKSa*fjTn<^L0PTJbnd%_f=a4bGUv#p z6T)w1ksZ|xc#L4}bx!L@D(D7GxuyfS(-STitf!+IV1$<#>=qK!7ktd$*s0T}wWS_z zO{;+WKaQ*yk)>7gdd*eovYJg(Wz-S9^@=`zYv^mmC?;PB%0?cL=DJdv3%PK5zlr%! zs_8nA6At|aV~w`q^xhH%cP<{4d=~8WDmRb53xm3bQT+)CUTYt!oL$FPCxpbos|(G% zb>aD&BOY}R4qi+;>6X$m5Hes8PL2z%9|-c#tf@kkv;9Ave>jGH;VOR6iIhl=#}Bj*BR>gaOm1*Y~G_BcR$><4wu?cw=pg;1GZI$Fkexs{x^ zBcKoyUCY&+yF}>re(v=l9`Ju*T!OTuSr-4xAtluRdeM}Y+jbMw<)Xt8s51X!yZT=U zFbNO1xFD<`sBc$t9x09f-xi>7x_LCY7wZ3n(@B{8^}6vy=iw6%H`^=b9DxM6o1+N+ zS?tz>##5RsoR^=HuZEl+JoX|-_y@U$h_I)>(`(EqKR|^f-i06RZj?rVg)q!--^wp2ktJ^al})U^-PG!$Q9 z0Yi@F-|sv0WIz71i#|e` zq@p)J^R>qErEmF)mjL|2VfSA8XEj;D&+Zhxxgzp1OX^%b0Tf$`$BJKQ*9~b)N|O`u24# zczc@m0%Y>LdEh_>yHdCW)dk(nvCb)&vXGon_n{d=DbuBzW2W7;if6#JefMk4`BCZq zq5fD$58HtDIJ9S@?yOcd1Pj|(Gqj$~xrp$=zs$VYg820TWBkf^u_ewxsvMZg?|HLx zJ}Vl?L9HFhQc*8;j1-p8BGjceVeaE?uV47EmDSJ2z4R@6>0bL0)ik)}dG>*_kL}Ol zWS=?J-&%9e3#-HP9+#-UfeHC9mY;0q0g(L=ZJd42wQZ*1y^&c;d8U)E^Rz%~Jq}O) zFybd&{`TG-=vcgK=k~dXU84{wI`sEj85T&d94AYXWvqOvcQG&eL_H1*_o7)JHs)ga zseP<(d3{rPD*Coyst8_#cY?4PvF?4@mlfRBU-e;F59%WIAp^FKr7-UAj))ko+F4Bb zKIm*>&-}5v?iJ-iA`_)uNoh)WSItGER^17umcZ#hbT8$Y$F&>Asl9H3cX&UJz4-2C zY0g<}f&E3RMjH6KqO*BL@OQ+5&zaVLhhqY4CqO(r+Ff(OY(!(}HZLD3cf|jUB%9lt ztkGaX$BqUXVuDa5SWO+%bh^$9JT$LsSn#&qwz@jpHeTk0#*~Zz|4t5prUP|>XJ@)& zD28hDX_K#Euou&jHywFBv6db4WGVjXzxbryR2B>d{*JTy;OoL~43A0cs%R_*a9#ucst#vRDMU*7- zy*pJPqtD13V7M5>uo8B8-HBA{z7KL`iM_~Wg#syU>IUSZKXuVPl9>W=!SOd6nNofM zzdmoPEGE@eM!pxCzcay5Kwd@XbO^o*qU;H^Ik}quarvSe_icugSb_QBrN{ti7#E_9 zZ*F@e)$`DiT%Ca!HXneUOik>J(DUfy{vB4!H%3lRx5kkG3Ad=|v#XZ2u462DGGnwu zK(H!-GfvWw^|JX+vj0aBah>CeXE&24)y!C919As$%JC=1qh~?ca3|vWNbGCdJ-YRcRqV*D#?4m0KS7Cf zPmke5M3ok$xf_VtlZy7OibmAOZygbVd<}m(6dB^OfT9WR2Llh^bdA_B^=i&1p{dRe zGC7OMiSjW*4-Tq6nmJOn%iW`>^x0Uo>vg~0L3=IiP3eJp*MrVwHiva2C$k^RpB-HM z%;IuH+3%C%`Z#m-yQwLVG-k_%lTC{$Ksn6N*rcu<-8>^B3>xWXc;rqYy<1}mQTEK% z7yc}LSV<{1S(sfX^E6%(M%h+2w%bw61;Rc%z1LT0bp5+nL#Z*bwX|?(HrYf4NU22q zi*!^N(65yhBbI%$nn5|&j{8rg)}X=Oxn->TQrsxPuA^*)?Zh-yPUqhI6z^CDgpK_n z!wgg2?OxP%MNh_ z3^sFHvb(9$kDxsh!8_I*w0N(oh3AOu%f~&N7EX|uK#|` z&Q->2X#9EHHTk_aoNkh=21XAPj}@(2jeiCB#SNd;1nnP6cWa$6!+MuHqq(Wp9m!Vh z*UD}O#f7xnJ>iN`MY5>KylJfESKiM$-DX#F(N;OZ;B(x`l|n;lXh}dfEC)W6;3|@X z;Tt`njEQz)24}6lg8rJLecSF9_Ov#q4e#?npo91;yOv69)dO|y`=?kMce(VESTle9=52U_tA0WiyNEi1AoZvo!&t_g&^n$aPE zNK}CsTaCkS+8N4~jyj(Dvh?yo%=683si+)m!5U;n>NROmctz1VvTBnwe7Sn#7Oq!G9%)i_$+V zUfr#cAsoZ+8<3G<&uNp>U~|$wf)y9!_vu@&s-7dlTFEtH5$*^~2*P8##)zw+F)z!d zg~IFwb0%K>>(^1z>A~o9a^m;vDajY<@0sUmbB(SMPYs zx6i#?f=7stq@%5%Ii>c|o6o^Cq1JyBWJG{nKLBb01NiCJLZh{8cMxi#)+kgsd#Xye zd+%>~m5R1!Jh9szX>nS3$XNTsyieYbJ;R^UcsfiemzC}I6bN--_kl5Ba$qqk zm;JhgqHSCZz@Q)GHW=xH9xE}mUksIhHWWu+n8u$0Yk`~0*8;^pyTumMqL>#7xGIaDZz@B&JK@_8 z81%4aR6=nPw>TgPdC7S8Q_FVG%mY5QYa$TRkS@ zwNPA99ZKZz>=xN^>GI1ntnkyZqGPKFiK+9);RL$e6gKmzP9NA}vp*%Q4tsLYOKdFc zl-1owXzBBm0Ii5NU!{TEJzs&Q#I6pNunYwcZ@( zc~{^y`*QsM@pe{0adrQiP9VXdA%x%_BxrDV4b~9c0}a6;XmAPc5Zv9}-QC^Y-Q8#N zednC{*UVhcO{#L!MfKjj_gcU8KF`aS!u#@Qot!23A2`9kLmJ6<3P8f-|J*_mjiHLq zL*G0-+{goS5YJ+Re|ZBgKVNM}p#O`|Y^6DA+4(}+aWhS#{(3+R3~i35C6gkVov1H&v{Z>oB#K2Nz-uD1xeB~R5sEV4~V!oAL72@ zL_LId2xIv0mF7n+)}3osU_ij71=Vd<%7Hg{&}@&-bk(Y>kO!a=!T|2OG&9qSq&T!n zpuw(PS;Oh}%X?1-p*=tkRtoI+f$7b6lz*uKKiK&Xm$-LY*%@-Mhu$M_9BHp1!fH?F zoMs_{EqnYmL12UfU;#4pBfd1wYkRV3ORi8!sj~Hr{ni0F3yzjUvY3F1LhlHQd()Dm z05x_YoGDriJ1m@#E|@WwDKU{@Ww(YQCFfr@`x7etff$_nRb!*ZfQpf?w3&QCyPEy=&W%B+L;CJ`PMZa#7 z3CE-hIfH*P-6nnLV8b zj(4E+P3Qvj$|@<~79f4yab3?9Nk*cZVcxB+=YsTs0B;%hI1r~(#+%*1xy@S1je*d2 zyydRMhG3rtbMs9A8!$GzHiJJAAO7wIZnJF6NWOY0LOAA|-oYe!b3>BG+M!(D*`W-f-!C3Lh94$N<8zel&s^LL1HN0o0euqc;1K{xY0;o|3Q-e_f%n-IF3;7CiesB+>cwtu)O^qAZ~Y$*DFeD6fYWwgh{$mVxy*pqdK>)pLF^SfEG$U zX1uTehKHj~%Gf6p>PSc+h*a?Y7Y8Fp$wy2`wL&#w#vwhSQ6(mg7>Vda>j8TRT*n~Z zG+LwhPf8_ai4iu;`|doa*u)f*h{-{tc3~w(!_G6z4>M49>__Op7aCb56y{BDrw0fv zcHhm7Vdn*9b979YxpbQ#|9b;_7r?&Wzxx9J|L)&nqv3AB1{d{0OjZwJty=bZsIOo9 z+YD~$NHb`_LeV`>a4bXEJ~C#b%yq6m5LN)v1;P`?blxbHAyX+pZ;NBAT7}r#2FO%~ zh*rMT867mDRBF!lPsp^3{}NV3b&l3~OHd;+v3V4*qwXDk>vR3~q0q*6J+RvMFVl7! zZ)6nkOK`{(AQ>sK|9mtMERE;%kKzF9>W{_dU0g_}SzQ?-Z-*Fm-=)Y!{Mi9nMTaB- z0EuY*@f-%|mtjMlG^6A0FBwf~v`2!E0TY#_;a7Q%yPD{u_&cyxksZyR53mBSZ>Rhdqkil5Gt z9*k9v&RD1W!0Tvq$(S^K(l04aNIjk>uUXH@Xp8$Gn( z5!j~Lv}ox(Z++#1%-qgaA0A*IT-{w)xXpA|r!nX*{iSufw7UVO1(jde_(TiOdyuM@ zkwZ-^`-mMa+KpXKt_~W9)(|^mg+&hWAxMAxhTGo z#}6x>coSLqt#9qX`{%cYHeUYA^TP?V{ppW(j|TwsgJ)fvVvL{wXD=>l@VM+{#q6KN z^6n&B?}l(4rv}p1`~CV+V$gjmww<3ex!d9`n{&hscwFaE%Z_fj2VaRNj;AXB zN@pM)SD|Vg1|DpgYtxLOc%Cdd!L}Gmojb6`pRrk1kJt-O`BV<=zGbsBW4${M{>eU# zR`5Q3ZGqzOr-%uwQd(%z!?xahm^IPQ)!2TNM;T{Vjno$+6s=5{VPL!ar2Qyn@p~x+ zTMQB-vf~5Ev=ggnRBXT+p8lweHT@A5rCwWJc!Hv!-Zh~n4uIhTLY%h=IX8m8R2p6o zP|K-58tPoqtAnoXN(qn*9~<-vjTV-nMh;Hp*R}|yGMt)|az<)EPqpsB85^X>^se)W zONJd7Rmb-Rb9U7y@u?#^^r5PvJ;=C{7i`Bqs_>?z$cT2~pb34!> zR~)wztSN`|;vqciZ>wLrwYKwCKA~L;u(|OD9zVD?Bc;b~Dt0c*y@PV%U-dovr}d`m zF(BZj&XC&H@etg^12OYw$&R8;kiF189@un$eDdw2Z#3gJjZOav^hOu>l^yF$}LBoB%^5FX40Zu9U z##1O3!%=?NY+xOE32?2l3qVsIbFF2*WlZ{P1^`NZNh3TJ89OzJZp4M@-4L4tcU!UZG@j> z4ike^s76`#rc`bUzf3{()7s6e{=R9&AvmV*1$9jzTFxOI-zPNpXam zV87^P)MqYBc+*mLIkRq72>PJ;bcUqXTy*&pGkLlmAigST`Yc?dNHp#_y3;iy@i>KF zA_~8Jtq#?_z(aB4;(o^DIi1iAn6BBAptXD9u;?(a_s4fU9qI)he0!J56#KaRgH^HC zNroWraCDwEy|Et4+qyE-LeC`P8BZ8*$+#4up zAGZs*Q!IYy76r1<6D-zm1#(0>wI*~NzdV<*uTqeh)~AN%6bdl=iI%$FEO%P*5;WEx zB-9Bo`p34W?dzKkcFk*Ff{;dN4;r^gzMPycM8q$$XG-#y#rO#yqfkgnn4RiP#MCdIU-P3YOkMSV=VV@ul9_<1kB)`b(ULKv0sqbx%7)(Sj z-FXdhvs%=+aHuOyb|#SSK@eGwh=cUW*ARZt=v8ACXm;EOg&RaQ`mYsm-C&I~Ul6Ypamh>Ku-n*(@0_!TYvgjkKgR`4<})<^2j`u$+Z3 z!ymope!bDrY9y5|(7Rb0I1hWD23Qli6L7Hj#+o~#dNlYppYoV3ITBt}(y&de;a02` z6zwkLX+}U)B3j(tWoWGPO)EQ|(q+7bMaj2hx1)r2D)OYDvjFlrdw*yX^O&jG2I8GJ zI!A3=x?duBBG2Z}?fYfjkwb?MfnRs$X2xr4Z3OU&;a-;P{!cj920Xci{@y7l$_ zWd7K{NVlZWs3*B6ZCX}n>c;3&b*HFUi%k|S*?B8l?UvBoeaPj!gif&n#n*fNP^$cS zkYXLn2UqlUX3l@SGR5I_2V*7PKsH!33ym`{a2+6u%{QTBB6i7eSw+^~%osN!9yIe~ zS8T$trx}VgA<1%9J#gR}R+b#sy7k6$y1eOU?$f(#U2PfloRfdoT1JoB`v;$cLT~v=LuIq0_@sAI>`2#3g@&m~>>w>=H-*a;v$&!)0rVbR5 zJClSfzqYgUOM<1-epZ!B|D`ofa3Cl4V2GmaJ-vU!-N&;U1!QJqWDF(f}9!Aa=rN!f1=o^63rT# z@~_4>i1PBJY#+1_5^LHPv!73IM~nK4vj*2kU-rI)FOfd!ZvT{jpYds4y)+i#zVjCH z{B!?))9@)zjyuYq0yke-0;G!D9T5gab8$(ETRyVtCOwfW8G+L_$S#Gvzu2l*m2E`6 zl3hL&Bqv+#;BvU*J$df2Vk?NJ|DA?Ydy@xgzGEU8+WUSY9BYS*ms5fd2~#r3RS%jW zug9sXILmj9x3n&yas08r$^m!iiJ-omNgj<-7fz)ru<%mBSe7U7+q)M4o-}X6OD~hG z-diF6dVZ80YzFOnYd63dE(u~v`7s=YKdm+;_eC>AF2PZ;FrapQrugp{TIG`XM0x}; z#Fy8eL~C;`Os{+s*BT#J5wpv*>n!1G4+u9W^d_f;)guUOGyi?POtvO_n1J59p`T>!=Sh3+#F5J3p?8Fh#1$@`6_lj#>A( z8ly#l{5^jetn8g;uqq0-mZ#mWy^P$Q<;s ztO%C3upQ&K#5ae0P4Qd)(cIQZdY;&Q7LR0v9oUqv04N5OGpdZ-NYEu645l$9lISjsC0p%<8aYv^S9DAD5vql}wotl;7 z@+N$neXz0D`|QHC&=~4Vz~*%(TrFcE-!sRNm{1>4BxR$7*5_kPbBn91nB2uG!NnJE zUT)RXwUnD{d(v%til3$_X+`aT0S1@l#9X9Prq-F9$Uj9RJJB^>4Qm_^pnb>F zsLKN0I02#AD>Ljhs8kH!bcw@J$r73nKDC)VK|ALPtWSTqd${5( zD~d8VQ9V$58iMHe$0Df=-qB-~>@NLb4kpFP?A9a^{=)q}Sow{>yAr#$nf@28a{O;e z1b8;={=VFPE7rzbJoJmc*?lg#svJon7PyZ?5#1~myXRU%9eGmm&Ifh^m)%{OdBwkS z7xFA^=c_5S1A@EA!uoOIx~nZ;LIZbGFdBk%(Q?L?4V6)W8N# z?c~~6G4MEgaK_-biRt*mXetW1R{GaV-uhn!SzNE^NtVhb-+&-Sq~+R}^saL?Xk%*N zIz$z_%|wDO0b3yDL3f_>={IRD9f5ABUlR$K3%QJMZgJmc;JE9feOszXm1ZDl8zeRU!v#JSxb4MTUMs}TTPqz(MdY< zV6O{eZx&zm=2+>+uLNv4$#`{tMQO_kNE7F2)ICwG9IkgNkM;hB9$u2ehXp8Of=?!i zGWR&tuj7xYFqsR!Df9jMKx_Y~pmsLMA7CTr*)D}3FRTu&gcT4zKHFFm)?a0^+Hi0=v&DDxpp&k|@|HM3)b0-X zT^d!-H{SsG*kfxiC9Z`LS98+j@*zEnl!*3Olqf^+?XI_a?prQHJO_2{`nakQliAp- zSJ*AXbRx*P1ztNPrEz=_WB|YM(HzFvT9aPweA9@N7$q5hp)?nNw2#{WMYl1um_2^T z+xGz0oQ+`RZ*yHem&n1J?vNu4TJ(HP8;D7O5h$_nhOO|+eHBX$->h4-XTo6^W?#P9 z;N0pH&YO$Bnkxy%DPxf-mOZ6C;9vHbkr(Jd=$ zh-=Sye7BwT$9oV^?~1$vU^1kE!zasLTI@G)YS)u*)NVWTn6HanC%cI-)tJz_aW|>s*(o{7H``)U`V} z6MewQ^rTL@A5eJTC#8c_Rlq)J|7D+j@3fxz>N(=_*@`8BiGXJV&asD-rpvK0KzTrd zqL8!<#_DRL+xeg2b)8Q7y~HrK!QIs3W?ZVKdOgF}_=VGW2Yx2iI|&r72;o zst~z}C6i0jSxR2-PG+q54J6Gp37U&pI-{iIM8suI8Y^?d+o#NB_B;o+oMWB&?-72P zd6zTEz2_awjOHeX|4YT-qnSvg*h;q+nkAcF6tsY%=otM z3T5`@^_FMFy3t)tnrtR$5NJUjBZ_aDe#BWKdJF4s?qgf8Z6XUxPL`R=`Rit_oPaY@ z@M89DSK`&OEnLpeY6#*rt*O=WOp)a%`eu4Eb78y)OrS};s6C@dbWb_{OG*dp_|3J& zH~YVrKsI2FTqnAi_R z$Q|e3aT9Hu&rVD5{aL->{jy75}hy{b3BLdE4#MnB7zG`&kflDPX}a*>Pv5aM5A-PCYYuE{k|= zug(d!GRI(K?_*~5&+0q>P-E4s#_TGp17AC=iqp&QvI2zYO0Wp0Gb(0TmkP=&YOV4F z?0$z!^{hz)=7Y{1+u*?rAgha_{ncQ}PFHe*%_!(Hfo9o?e85CU$AIQ%;$lQ?8%Qi8(H{xr8+NscE4P1`e^qS zOhU(Ylm^RUO&E6m4zySWX;8t*Bi*hHnn$PMuZ*=69r30c;kY=Mf$Ph`h)?9a$xxyz z;P+Jc9MXyNvHekW zD5V#-`#0ms;fG)~ilIDP!gB2@Tm-VHPm*P1OkU@7Rh%i(nvtr#{S%c<&o|n=x6?kQ z=23l}OrQ#q?d6u3SkUyU@^3q$>yF@_@1SZ|Ao^U4u|SPKy2@|X{>gc*vGBJ?znH`Bwq$$jeOo$z%-QEQ6zX;PCUFa3$RD0nHLnw z1Vh6nRNo}qo^5#dB*;D__*YFS_5kHvw8r};bcqIUDt>9rRI-z{&vy(oQ6ExLlFvtv zxeFdmF-s#JQjEeFmsY!%6a5#m`pV9Q7;DMbcS}oJw|wH)WE8}ew4RODcl-zralcWP z(gI6a#n7k<0>_&?$T-Y?$4xg{fH9q4oa-!up=Q~Ux(QIFM_c_rRKAL{2hs?$n~f1> zdX}(7j9f$?gUzk%n@WGfh&VVb@?vTa^iT`%Hs!Q`5KRVEt z_r0HcCGR~vyKL@F(Dxc^$R}6`M^a@%gGp$d3pY3XLq!f<4*8K2038XwAa_&t4m|U53^TDl1BI%ve{qtr7Ba50#u-muYw9=LZ=2pXzT7K2Hk?mK^JZ;aIz;+pUollda@ZDuxh{36HK+A-aqrKIQggaW-M0L~7rGmD?w* z*-CM(IOT6^pE6km^O+ruMzXWQ5$-3MgXyC1ToYaOTt;XlbZi&fSOruzn}4|)aK;a% z$VBm-PXMKliz_x0eyTQyZZG7G0X=ykh651m(Ifvc8;pdP=ZoQ%$(OFP$cW#gm`uY* z)3M*>|Aamd>s#9+bS#^B$Nx0P1p)_ozB6{2R?pc@n;(5Ua20@Uek_2r{>&!Z{(E0~ zh~&6=iE?>m+q7HOCRQrsK_fP+2Cr=+#q`%K{^g*JjA)n+>RRnRVFik>cyJG*QKNuGjX!ZkAyGu&Muh~F_~j8HCHCkY`-+z%Y7fC@mDlVxLOfv8z>KpdsWGxh3xFPsVe^YE&@}!j_GO&LgxO)itcl>s+ zRBwaqG-O#M9CLYVgiqomE2Eswn;yWgdyHZ#c>Dh_I0{8S-XE0YNkpx7XhJ-?+{`}f zBC1n8Bs9^*EZ-R@s^;tdnO9`ool$?-*Cso5&=czCsKU?Ev{UH9+ORD8f@HEt);*!` z8Dh%MmOL8I+mPOHq_&J#!?-I}j}QnNTUr^e(BzeSmjc1nXaq++$SY_F#*Y5#^}gv^ z%iCQ5n|D-1P<86Cp{xxbd{1%r9&>1%Ihk-9VxtVQvYTKxec6iUy${ZtP<89lJO#`L z-R5VxeQPkA!G}NO3Q<*@Sxf=}b3{-3LyWrP0l0k)m*ED)o#>;j+rr0{KL}a-SM{tx zds^p>Pjp(D@JmW7A~k_y^yJ3*k8;5(Pg*Slv>+Zg+qIJ_Oo@V{^C_Cw(8pvSLBclW z(56Dt51RJK-4ybFdOTu8=^=;@f5a#6wXVlfFvpw!oJ(*1qk?9ozn8PTn4j}HV6FUZ z{q(eUlRO@u%t?A4T)NEaRed(ZA|`jh8HHbWy0|+f*U=WP15Xpw(LiXvFFjL+>jupg z2XbXdvFE7ihKi)u7>zsTE23q|jmFkPnbubEeb2xnbL#rtcIHDs6vO4sU4juXW*10a zej3uC(lZ$)`Uypz{9^sZ48wH->Wr zFHShST7Tq&JQwUi9@uhf>URFzImHZ-zB^DqlOX0U)R`e5!z6e+hdrh|bCr%OHi$%p zx2Hz>_Zmmf@AFw}>-9fsh(fwxIMAkx)m->wnH-CMrfwG_)T@`%bdE7!wSpWOk3B43 zsYn8_v}dVS{FKwtNxKBpQ?=pUp@d){{$jARch2>A%lX4&v+t|3nMgi!z+kj#MqrM9 zaZ4@rk&f^9=ikHupB$7iP$dJ8p(}UIW23I7IUZ{tpbla_-jN7VQ}Yu3*j9jVw?Io=p-iXIyh0l-Q4`OCVj( z{7Dy5kX6t%e$N5h4?2;GW5r?@?rP9F3ywVqF)_*zHuYQWaR`du+{73sCY|_skBXZa zI8iP&J{AkU|DBuD;t0n!kIIHEClE9cYF6x4@fJJ>L?@p&tT6OsWUF3O8rf`?yO#v4 z%A#W%cxUv+f#U=z?h-6~9EFUYVfH^-O}W&XmZnVS`>mAY)n$M_+knsV6k)`EMxL6> z^O$fnS*tNMa1x_rN6Cmx?x)sr1^m>Nu9VE@_sl}7k z1C-Dig;8u1X7fGPh;P=@F@&wyOa)33q}+Ldw#0&&!Hinj3^x$uH-d{H$A%*mcBTRP z*o&*I^S{H23M|F(0uS&qid-{63|T5%6-2u$ee;-3tdG%{+Zf!LXql9MgnvHElvnVT z$&1h}5MpgzV|@HqO>GzIeilT@LMBrG+qPl4^(vsU$>-wuFC>0^;IJFbRXMYQ(-Z`& zEVWH>OXlbqpnT<2?sQk6=965iv#C7Z2> z7AztspAFrq?*K;tx3_dy`rI`(usfoSDK~URoo8$b?=h0678hdN)g=HxYL*-Xe_+>* z{`tr2?NT91CI|N2I=(>&2o&Bk;7@!Wh|C&z=h|6h$}p|SLyf%sUM`}83UO4|moH7PlY0{S z9!N$z?$?N1a(6fYC%&UB5q*J;vX;Bu?4SnW_OyQDj#va$Inkg%+tIWS5`eON8|li= zN~=@H6P^2L+Ncv3Xr|EO{rIVO!zxXX%jym`a5oCbzkg$`A)%q9A?Ml(y7Hl#$g!oZ z{h1zuod0*sB10>g6@w1ayZ;{4IZ%%r%(v)Gr9RU){Qz^>!lqLdf;&yl0oVzf7wUty zQVI25vuCE^Xy-y`{XYFMTljJ<0eMs*o>Bz1?*CK*33N9eIbG}lHi2?WBLX~GOD4Muc)4@_jao;p>gWz>{% zRE}?1ZC52wZS6{reds0ud`Da$02w}`5a=56jh8J?+m4XcM+^)wx~+}6*YLFPIU1lx z(r}}G5u9tgkc~#)k3owOAqeF{PKsPAf8hTyxI%n41ogu($Cbi1;NBg!zaP#)RFxDw z7}GU#JPW?PhPnQ&Ev-#h8^Wj>-m`!?J*dKkdvpOgLR<;D@-rIa?F{!FMa&;IPZdZJ zw}0Ut{ww^{i#cJwF>3%R?6AEHIcm{&6kH>YfCXLS|1dd>8JM0ed1^{TDSr;)E`h%m z$)7k@gSKsB1HSA9j{}V0>-&kr;7cSfL`SnnHMMH}k|WoyBO9Cm-tmX59c|>q3o`6d+kJ?p^*&r<#O@ywG1*@yK`&FAdSggoS*+O{dCb3f{B3<9!1+- z?_*OS8QUphQ98O%%R^DvWGJM|!4P60aav#M=S~BJ?0V=H`F9#QR9_rl7G4U|O@LW) z3Rnw!nvTtWWwC}~?HkiEw5!H;dB(nX5n}T%z?V#KfkaF(&eTGe`tsmN*TkiR(Zr_@ zopjy*POZ{Bq3FJrV6tsPMv(26pO60Lan3hm|BbDMTGBA*dMVMu*fSKA58Qcb=)~&> zh`DKhODM1{-mLti|T^P>-E?2Z%t^h5F-uUp%Nb)VxEsY znCCanTrmW<0EWV*!_vfS_a52)j!>;a-yp0=Lt8-Lt%p6QhMx)NWvr;zSuz)(k9@ir zv?G7Adw}2PBeo89jfgq$avh{tJG6`kIVY|fiM_nIa140e+#l85lZ3~>nlG|J{J7~1 zFwV<*s8TLQuzCHpa4Hf{F|@oeoA^4$uC^TisjFcymE-Y#wpQpMVl(G1##T)Cd}r!W zMoAwCi}C5hE`_K=B`7TXgxTe!j~0#(rLVw5wSiG{zRBjW~mUTL+mYHK1IKl=X76n+KMcqw1LAY8*B~ekaewB zOx#L-Y>ZPm{#in;-|xudY)%LHT^vA=!eNsPWBeezYt{uxckfs|Qaj+&=qC3vk@SlC zRfi~?%`pbB8CH!Td~?-1Z;%O|OL&(di#@lYmhg5e;S&b|tnQ3TfWLXwWvWa%SLaG% z(Z=P;mPy^WZ?jDZKNrz5eDM-pfolJh(_FuxFu8fCe1{ex`M+lYdD^(u7JuaQFFR9N zBU5U$Phc~4iZU)%lE2rZ5VU-MDe?#8xOs<(BfX->RdvJnq8Ouh<>HdE4@r5$hgO*c}Ky2)U$f7HvoTQqefQ*1KQn zCG+CA$EXJJUR?Q`@->U~kZ8=wUZ<9L0K(^67($`Fh%JsXkki21_Slvm8_B5!o^@DQ z{re2(vZK8f5k5_n)TEpKobLGIo8AE>v$dW_JI`q|bBR7rOHC_78NSUa1=>BbTVb$= zmdL0*^Qse-?*6WYE@NzK7O5YEgr~toP!El%7hE&h#lfE1$bWdEa&ccHvpeJ=Pb}Bb zSO>o}OGR6;3@7z-QvCF9S-1kPW?mmX^pABx!}z=moh&N{R3P>@pfXoB%LWtVN$&$% z;19BWSkltQtMW5{Fb;VR*uNn!$?+(W&g3Ylu5FjAT%e-sQ1kIzpZiB8|C(NH^;pe; zW%z})GS>Wa2q&J^3`f)Xtn0f1(7!4}5}X$yQ-uDs)-&RO^qnKQ7@ zRwuHFWJqS_m(Pdwv+`WiURNEta_f z@pvMyuF)x)6+wHN{^JylFb*48?>Y#GO@Eh=2zWkv`x-nI6@^iq(=Dv{8N9FOjPb4+ z=d$CE=G(^pSckfkiZqPCMnmxM%yi5VP@| zx%!nQ4`na#5UM!}kKxL2vX1}HW{C#e2if5A=eDCa1VB|F@WR*9X}j`97}Hu4qQuT| zV59*?HuWL7%0ODykPFK?Y5u*#Zj}jr8N+UmL!0)>vbwAkAMGG~dDKCHLf(gepEvP} zU*rjaVZ?^!hBe_HILFTX=ePw>xb?iTFhlyV@>zv6J=WBw zPy)W_f=%Ui*fOvLHfyff`uZ2}De7HTFmO=ceh}?<+Iw135VewE#eC)Ux0>?4!+rYr zG)1-23*^eN?$X9v8$_1&?>P|t*|)4X#ib=ZN+4C!{@MGm^>A5;6CHZ1FsDSzR} zeD@r&_is}NfoY{AkVW6pXLmO^qzJ1LYQ>vjjVzpUCb`yz+-Z6nF*~`Owq5k&J1`sH z5j5d@b&TbLr853~s3-w4h9(&~v08h|l_34Hnoa`r8G+A1&_J`uw-itJw6a8+;B!V- zc7oSdFk&zb=#Za;Ug2?utj;F&>#br$%E+wnt~IbG1)FNCa6L3#i>!FHFyggFT%n)p z6kvK?_!62QOQvW|d7j><&Y5a+q)MJ9w|!ec&_}>| z*ll{h_B`~jkg!|P;(>i(xrrx|iB=855^>mivC3nN@qcyht->Aeudy%z^5~cIlUmCS z!@j>{HUPG@e`4VV;N5$ne9x&sTg7MDX{@pDps_DKtU0b`2VqMsOLyMi#}>IQR*-3n zKKsXcleHm2qr6}4>)OD;*v9*+?bK-3OYd|l#Iy6;Ldw9_OgN9XnK^L?{X1sBS5I+k z-B5oEXpOOk_gBV>)Fc~)rQ)JABv6b}Is?yx<|tmkc@gdg?{b7XE%lP6s_NUm66jl%vI z_}hvzew%QTpAn9#u`8IA(oinH)RQ3-f+iq!HBKVeyPle?8G2R|5>9Y88N!9W(j9 zih35-v-RNcb{U&`wgMx@2S9}?)hKL0Nt15v&GcP9S6cJpt>H~JOFD%A@6?};jOwfW z_{QU56h$ei6m0fU382n-PpsVFV)lMaF-7NBVe_0$RGwY+UG`Y3%+N^xA*r9otX<1<9M+gnWujE9_E&W;X~bE&wEOL7yojO?(v)M zNCqD_3PmGo{5zcX(ZSgISH6PEtcU*PA$V}L)!H-u{#b><@6Eni6kqM}VD|1WrrF)p zSTHtH!=89QEN$kH;qZ{inLb_PRB`38(H~1BB}5XGZoGMR+adVY!*ToRZ-ZJy%_LWh zZ76&rFy6=jmmCTJ6;b2#Fzq*Vds3=y=bkXhg;U599CONi$sN@NSPB2yN_$F z-?aoSlSteNdz?1b%@yL7ZpG%Vk@NSkNROkxrkvKX%f$_Wn^3#RJV1T=Y;pqAifq-SBGrwLfX0c;bvLBy z?j>nF8s@i=3SAg;*{v;e9%%9GIPZ0m;`)4N@Y-OLE8q!pAJys9>3X+?X}nNfl>CYB z{^~&N@rTx?6I#!Nj5Ps=H^BqoD6~=L)R7#*{;E%t;=u#P2@aro^? z7**2OzuW(2I)rK(K;fby>m^1*X=-jRjtRLNbPAbjkG8s zL(cNaRSSM`@^LSF*)c)=`tnWv>MpsfQp{z2!c2d*O54Nibd}LQG{qPISnd;#e{=IN zee+A$lj`-n{gRjIrA&VJqus=eCIL2Vm^fXyt;YP1HYb&()>f0bNh}G zOA6|mEiKkbnNPdDmu26(cwL}B$-aiAm~a=sNWbu~oEK5wf7{Ss*?*!-cl|KY+ZAdl z#>N*!zG(f&mFFkVVoC^j)t9*R^*SBhJsdd74$Nn<;jHf%dsknUYYiE_Ul?d@IWcFC zJ}oL5B~vhGMr|!XVVGX4{}JrYFk0aFP|9+B2@9T{nTJ@+FonkRW$) zl?J;wCt7P0*5_$ccPqY}dGT)+MBAUU4x27D)wufr&WO;*N_U@7^>1Y5G3;G&VApuA z-$Haez~PAF&rPd)Th~+2^_{8(&8}9R3n336g5bHn5WF|u&Q|&Qh1`@s#=+@P!ZC8~ zPjjWi?^6(2k5~9x(#6KDud?jvy})_b<$B7%tV)F}C_F@52kFzZ`Lw9xVT`wFkct!{ z+fj%BViQ9jBJD=Bc}9+_dLjC{)^5;y{P=9eSnO9}e`tB#qnoLWb_LTdZ1y6S?biyJ z;KjtegGa-295yP2I0V5TGtZuv+$OLp3r*KER^^T*7VqPB9I8$Mu74$_yD)VT`g{fU zv{5(vD@9-FPr9DNmRgyo!f%xW; zuB3d@Bwf#CMba~9=Jo$odp}o+eCf6_oWnLJV1ie-IzNfb;lRAQ1rO+Gzj%7ayAk;*B>3PPPR-7RWp3WozmEpYye3I zXZ?w<_vKh73-IlW06n7Ofovzi7#F(zA$*wTX=#KqIXC2mEfQfM>rogLhRpZ2X-=fidk0*;jgj>EOId zBg7nq<{SK7K=)-pXXsDWz(OHNht?YCf!eFGEP!AmN-mUkJL^mB#a~nb_LDjb8FIW_ zwNHK-K~W1g2PT6xvjiWV${(5&#K6z>lp)-H((?Kbbxn67Wk!W<`Fgl7dXT9=(;|pF zSz3fe`Li3WdW;*p5zE5w;?Ie4YlT#4NlL@2B&jHiv}t*>LHY92vh&A}M5N_PhpCZ| z?L^5EktC-NkF;56YZt&Q5k9Xo*p&z3X>@UaS7~c{re+D2>VcZKmvA~9KN843oK@ye z0V}V(K^3^O9#c{)Ww`aX$TTSIL+e`Se7+XGKyPgsT*8{+z0-fBb}Rat*DVm|j~x@V zi>s;dU65}W#oPn{#SDetf$c*8^?jOwx8B0l?jvu@%MtrDF-`nmBqA*RvEv6*^ElYqOP#Q5uFlJckXWWr*K zRF~r_m;D1`!!&D+K!A4@S8re(fFF7|+Aj3M`0>bG6PwyDi?VJgx_5%ZRXmoA`Fwrz zbi2A`?LIHuQs5Q<#uW!jzYla^I~X#q0txn>D4|yoX2Zv5N=DlJafHAu4mBPB$dp4V zXPz-X0Xa*nABx{e_*7!7gDJ_(=l9|3Ne~-9VET_H1NnnE;b9L?MmvpjJ+Mrk9Z^dp zK&-6ndMn6ityjLkMVHpyIXd6>Dp~G-UszXujbt=XAC^Z+jyh{{#u?QF`{6`xxp@{f*4ru>D!FMIr2}|w)D4&z6>5lWlGKG=AvQtBb?1XC z-CQ?c0WWHY^q}>Go`Gz61=R?(5(4CdM<(wt?Q%VMO}D2jX2VgU`kQ5^z1FvP=%SFG zkf|*hz9*adgW?85pk=OEd$5rdH-4WoU&}wBKrj9_KmZ6b?vrEPQ}lrv@uwQI`)-Dj zLL=c&Y@`r2!sK|UlTL-=L?^(eIj(~uotr=&mXfFHvB{}dsNUjW-jDpO1=3-)evkARfawB3(_JhAW+1U1V`90Yz%&yk6z{%H(a=FN4tijafQ{J*3RVWMMG@VLE>k0b8Ocv(wk-MRW z9Lz$Fi{lozhM4$v(M z&>x7F16l}-R$Dz3s*Dw1w=}?i0}&91v=4w+qNGh+WhL|eTm{7uFs=tifl9$0xodI9Oc&)fjxj*W!Rr ze3tRcO3Q@far>pxMM+lvbQAUF827;1jg!urkjGm_2XRgKW-izbaLT3wVb#uh zz0I@v86%43G?A%?$YZ(5`^4#Dt4VL?uIku9quV9n@g8cqEYw2XH=D=)uj`TMvMZh~ z;HBZ(V#tMmZUYBV$R8hx^;G*U%h$OqOv+FdLQcJFN8FmXt2?C5~9<~2` z;#p+<*(f(Pb)enJvYEr%iwof33{xvrlD>(VsN(mD)`z`6jokYx3c^K5k6@L11JS&o zT4&l%uqTS2fQe;<3eF?7svmO>mnzQVG0i5o7vs{Z&?hf;irM$e=rH&@rOdZ*bu@y# z9-&s^m>)mBb7m8D2k8ab?2ZxxiWEX@Knih2`<`08v5;x91`maR8|$>juL|~&*FDD8 zcU)0Jqws}5fD)Vjf_?dPVwT*VQ^6$+KFT6$r#cbv>18HPxc;dIbbKESnUr|N+IwPm ze&d&p*lVuh0!4Iu0?qObi5iHro0Z_zdk@)Z6oF68v*A?>;8b)yF@sD-Khal%VRVysP%C4j$cVV|CmZJM#3508y%JKm_@XpW41zmdz6ND}tQD|r( zrOErmQ9^>auBJ{H-kZQozU5j20fhevMQdP>TsNHnTW>LUj1V>&WEg}Q;OZTLanWT3 z45y%Bbg|hsJSWOV%~w7hLD><#N+GJ>AO%^SVmA-;QVvXnZCUaO=3sGFwf$S$`1cCA zm!oLGpZm~qLM(AoXNoQr`WfiNgt?RHlUCocO$Edc$#x$^U&|R+E07RRYiSLYPs4ML ze8O+He+I4F`Bz&fC!yK{ElNR8@5+g|97&_zUd!A-g-`aC#jL#{m=BWUyA@4N*%P0S z29AfAoFl`fQWBmLq(botTD0u+NW<4+GnNK^y&0JW%W7Aawz6;C#Kj|-+!ponyzb(Y zlah)EB?3m%Dirca+*+8(-!@+0pE#aOJg81v*s&8va#liz8g@rCWyOBCZe@Q zA(Dy(kQX^m>|oMsx~%8jzB13*JJjZJ{3mmI)e0QVijdILQTXG?Rh zv{?3i}O`0l%-dHmWT@;%uMH!x+lb zI@(6MY&rQA!aK09dv_3u8Gz=2*|OOs{ukQ=fZten@1&SOQ9U*z*zM{_eolU`A)||M zGA96=1doz?lWofA8*cf-V;WsCah}SGZCTT9T89g;AD|VcO_R+a5|T#Qtr=`g6DN7- z+5n@5MT#Q+)7it9Zd7C(uYKH$FS=uDKvi+lBnw^9BT&2D;WK;U9Ma@dpJ!%xfjjg% z{$CSKUSl&!s&PBf0ypr_ead{>vmN14K3UOko+0L0#nllPlb4_$%9E2RYbHfQhYQ$f zCs{`1vN~8{zjF!ojz0=!8@goX%^y+~fO>{+@V}*g;-RPvoC7h8F7g_rJc6%L@tYgY zxiEebA=pv{Gzmx#*{E?0Y$}r(8vZg<*X3I`(&G=we?ZU+1GzOy|IKVpvA92o&~|SE zgpkZSEUpWsNfw>{w`)Jma%Y#N`F-0-x!XdS3*g_K9reiJ4n&qv`!}(aPB8$48~Q|w zFn%ednJ{K)%PE!-h#SgIKpj7C!BZDKFyK=2J};&{3*dSl)2G0S%9H5^d%sYn;tuO4 zWqRE3kOgN&f1i^_*1?|%B_*IrP5uJIo*6>&%~H+VvoV`8Fc+Hh8jEr9{L*I-UH{AO zCP|w;9NOSjd@t(}?|4X9*)H2udX^5wnuD*J*k;XY+-kDqs(s}J<39C)Lh4h!3NX`A zVY<#0m>F}EkK-4W{8hBMt|W?N>e%Y~9&RUjmEm5PrskEy*|ZwH#HSzaer9^))T>wYCV~UvTlx#ghM+vPQdHNQfodNdAh}ox|-#AskTsONw{7?Y`e7XdfEw( zh$74IgYWMeDbPax<4E~`LTvwo3Q7vWkR?$DQZVjos5Q3H0M?>?67X6h!XE?vYO1*a zmEo_MJSlee_GS;a7c5pw90aW2-e%YheVA(Z_RbIs$IBirLi_)snw|+bHbFkI|Kp9L z3;q{#;2&ue3iMDD*qhyMC+QRbV3Mg4wNDR>B=BeCT6Tl)n=Bg8ctoEj(<2m_z24^@ z@#9HrZWE#>S5gK8lt{lst7Y>6xj|D>MiWo^*2k+i>NRFEEJel9TpQUDV10vr?xzy+ z@b`EMA72)16|xLW{)`odZbL7i>%XSsodJd@!wlx)70#H3McIwz%8u%%(k?Kks-jSq zv|5gWpq_Tp0KBu)Sr(;=RQb!h)?avLyA5c2(M_Sv*2UG2N07?_V^1{;F+l z*!~h`rJG5Xv$KbUcIT4#h_{X300>G3Sdy}IE=HClQoAMrh*JrsIqy=%>%?$XTd8EO zl#RDhOeYj z;ZL+4;uYwBvZh_WTIO-PPZD*QQpho*Z$`upBhmfj0-ZG2YcI)Kf!@#pwJPtp22fKB z#%D|yYxEcS4sMQgpr=`oIUhkNf!j_ z$V^f6iFQ41Pt>^}feK%o%J|9o-Bv zaS_{AF0}AM4g5wd*#$eQ56-~Pu z3x1;9S+_HNH)P+Q(%4xu-hQ{}s;Eg`ra82|$r=PtO!8O>b#8A!dv+^k?OJUNHXuX5 ztpI<=&!Ro0lq&XNG2XP@w4a=jV@${$*L9Fc#ZuhsBH~+6drDv=w;3nJw;S5u ztdV1%MswPA8b2e2p6j7%`1^F;uV*hd6@9nB$`(fkxwzQ^>=rn7zBs3aIe;&;XSpWj zRGnSX@a`Z|zuTXwTeXs-ZjBYSyn-#XF0|Z{zzFMogcCeS2PommD_thWuD40nFEQO| zT8k)TYA2uIn2F|r|m-F!cnY1p*Z5IH>73_~f7 z=7th;rnwS25|Oo&c-&usgWJCyLWCygaujO`T^e{Vk63(3k1hRTr~UA9eAr_7f!Tbs zk1v9=XHUPRmN>`LE5CFH(ROtw5allnKn6mfYEA5R3Aep@ zKjUO@kv6zw!hZN?89vknB0$YYilbX3@s$(^FnYEiv(lJI)NW2wQ}OU;CKg`BNf1}I*pd zZ{*p&(}1oFozdyV4tsCf>@faRtP83-ps^0XY<{Iat9*r&8K*;3&d@Zb3`x*!$(mIp z{ey36ZR&gq!LHkD-#Nd5O1@oDSgDkA#IkFp>!Xa*eTz>}Tr55P^%DQyTeU6)mv)`c zsD<*nh}FxWqgCwbOQwShZ`_&H$hTCN7{=4-gX&hd3vMmQI!|)(JsW_cg-kY5WYnG$$%EWm6jG60h8`FL!Xjvk7CoT`A-&EGe1qOcn zBmg{4`ywGM05#JQu6)uhkoaIt>C?4Sfg*KKisO6p;F55~qWDY#Eala^Zt|w5{P(`K z4U@L>g;>uKcoh$p|b=NSByZ#axt!y7~{?HadN#oEgv!j)k`J`)r!uWMVq{ zg+=28)iSgSM01Lr++=uJr_2?Y-J!3RY2y`P!t?Pe%t(dDKnDK7;V# z@(SL~6zi`5!l2$&EzqQCsf^p)IBjr2V!j!;qrS!T3K4m! zJ732`z(jXjp6#;k_a{C@nNQK+Yv&y7B42V%YIylgrvm4OF`gYn`gy?o1fkud-%ndH zjTT>zP}SrCDd*QydcHTOKf2-eRYP0OvdVy1-HLRil^32C&~4eol*L! z!J+$T`$sHh+norQ*C|{?pO?hWNo;(5qCOYeh0`8}$}29}aBHjC4E76isf@HKgoY48 zt?oaEL=wdk7G%+w8aq9Ctk&%hY}3UmQNRXL5O4=%=Vy5>BxajgRNep`q5D^hw_moe zwy0)i>2jsTIy}yPN3v``#_c@}N9C!ZT~U2K!YHWLs;R(ZFl7wmcAXf}-5%+9hUIE^)7)6xa3U@mUTo+n^5-{S&yem%qH{U8Vrma{E%a#7Sl8xACrincOHK zZJu+?5!u$*hFkf8nmi->jmi`&qEVcZ_GW5=**!1SUh<11ruwVAplKSl@68+5mDiqO zbnZi0ukCX=q~8E`((bd@qhgQT2uw%A(qXeYTdJp}n)~?rEp;EUQ26>_YdphI@F*CS zb$_4cSk2$3R6qRyDT!+BlEs#zLA*{12(bd+l=hX=1woF1$l6bcbCv)InKzYkc|J~> z_ow#Tk}xl9e{S|)u2Gpk?+Vuq7j(N`ht2-M>(Qs@+&D1UE9Z{Nf6lq%@Yxa&uPQ&% zZJH9&6H4m(Puk)e9iiW{lQc08WzJN#t+b8*iE#a%`Wlrq$GeZ$uB47QXL^`axFNW4qCuF=@j&rm@Dd=8jYIlDGJr4m=PRTmey#azLDr#I zT5WZSwjlhz^k2hP9jKzxTrKqLYr|-}MqCgUTP!C5gWudOf)*q-_+TirR=N6nuDo77 z$^^OtMJC8b0-3qNh`EV^Q{Ii)$mYUS89Mu?3HiMSHb(>lL`3h6$=USf*!j%NR8`^T zlGee6_x&BivXd+aGc}YK`tW9j9JOcijr~oGPI@^@(k>rYH$TE2d^}5i8E%9AS#K7y zw-bzkU<)s5`F#jA*@kz4YP`kvHFr3(Um)LP?dKZ>j=p=<&+MggpSgBGtAB1fR_G%}EE}z+k&9x@v>9Y!@Ad9uYq95DW=oWfxGFuD z1A6^*q&+5ayfWt-F-%@{9h0;d(f;6g6Qk@{EZgqnSZF6^(emXrJ-f-F+PwPGNCUFx zI>MFgf+R^1$IYo*z$I~+2l=)^20*G{HK!8eH>d=b0+zf7X%p3>MelM&vnz4{BIl!Ariq_tXydeglTj$(0y+h1cJ=}K^lPL-#owf-eeahg zcpTcF0SfB|JJFU*D&hRvEq7 zL13|G<(yj*8@voC+~KOL>m^9yp88HKPc@{HA)^aFbd^36*(`=qr1BH@&-anp@K@pC zq<#>jO}xHO1)bMHwy2xL6N6u6GN)sD{E3OWfW~V}X5o#-6ARV6`e27#0yVQHtCHRa zk|d_!@4-XQy0%?M>yp_l3(zj>g5>_qc6q{QV_N;~1q0qdN9-AuiVq2nm^Er8?a|62 z0k(LXO#QH%EPdvgkqOaST$5`4tD71n*O?Yh1#nl4Dn#(d2_Kc-#10J&{akK#K5UW8 z5sQ(yqmuer<9TOV=$pl4#A60N+bi6ZH@$`cxdbpVOTr+_^|{QD{<{O!zKJ#53fccn zL{95-@C#-p_cq4|We@B++IjE%$tb>~yA#M%P3-TFB$o7Me&7K+Utg_yPwIF-h{jA+ zyRNrGWt04&-&WtcRqGHC%T+D>vc_zl0b<6BRYsBmB(^jb*AEWB)rs9m0ol$>5X_94*lcgW#eL*ZX<4i}ncwOVQ*^~^Tx<*DC3s_W++HW{nt z{j!(9SAvorEmmuXyJ*$lumZe+aONKThN@Dr8$>{Jbi zzv|y$(-Ki8QCvl-C(*TFEKwSFbMt0G>;*VvgP zw1|L1*5**od7v>lz#ABXm5HWBQJjx-}_?4y|G0|N-EzJ{*ZF4S>C7I-cJYm`ffd-vc0Fs;jiz@0Vtjw}8N!!GH zlO0cMP8T-<|H0%3+6KX96X*E8;u~t4n}5dwaBhvjux@Kve}no?2oJDxi!rQ29b)xH zO!WNotT7S#dV@BHfM(;Ny5AFqL}CnJo-2yAPdTB zPF{YMZ#>EHe9zvVg*Pqf`$9%sW^||M^7IIALkG^e=)0Si+_CNb0qG8!zdDd=|G>}B zFY)c^@j)^7%RUWjMJGlfCb#LU?>s%`RsP?`HUg1M*Zpp8`vCjcA2a6^TA@F}AuJB0 zK<2=OG;@axxDX4eS|bDQPcZYjkkSWBX`$l@!MbWnBjeJkzdcpiy2H-m_vZ6$8EbbK zhgE0v&dh!AyAzbdKr(dE3)3R@T5mO6zyDD;42GE@y*3jCk_t_=?CRTzblL*v^MXNf zw>A%@6#|*a@B_owPA*8QY2q3vREIsmHccgGMvfiq__jdXSFX&K!I21e{507R{-*Ty zc&4Bjud>;IUkPBH@~9=3L!I+^4sqsRhd7;@lb;Fo_BO3$VdD%S<-)sm5Ct?~3E}_E z3E-n|CaLdvyu}sqzYNvPhiPi0srHZp7O5d5>UAp{57ZCO4BD zBn`mLKhoU}^?Nj*WpBBV9Kk>w8qlj;9Lct9GJq5pK)JSvcO^1w4sd(6nh_28xTxbK zMxr43ExZ`AX*V<~aXFtS>K`7od4Yx(vMq-Tba;e?fl1?!VC(3&9+s@|%h1?-T^6KG zmEiB|$Z1-m>xYnfgWLBOvkjw7jA+hUNNFB`q_~vWz^54$PN0$2jY)%$LEn%z%pCdo z-&jM>m+Rl-_=BQnw!;hf6>nj{AqA}}d0NCzirALJdDrcG?t=fzm56L+3Q4s!B$#|J zs)s!uEf>ISgKGtJe9D=HGF3qnq|K@!M$0|Rw_ADiYpAj7FEUHAd`|M{>y31?92Zk1 zo%#)%FS_|@swQAui+LDsI$*a%sQQe;N2P&8g>Ix1+B32`MS5TeIFwHP^`=k^-4~eP zAnVX23gA?}TQ?Z)s;f(AXm}V&qD-qf@nE*RJpZKa&Iwv)WE}F5LOLK57JZJs zlK^St&ri1tJ+24f`P2r#(f~^7anm6^GmyGiby~D^xC7VUX|JNNFOm8S?m8YXamw;9 z0QgC50*SkA_F4Dy5%x)dv5a4P3*<}{oVCw7E#m^&S6p&vG?o+X7fB+v4clx;ZvFmZ z-0Ay;Yu+#QYyz1osNnTlu$5dsq^W~_*>({A7V#|O7L|W3O4YicVUo|5n~+~1+ac67 zT9hB%RoS-r;g|Et%FC*W&G)MxGOZ5#ScSD(cy9fEsqNAJ!_|j#f6k8$`IMZMUQ_#X zl>%2{?WJ1|{qI40RDH~*grpR!!!?x*?uCR+K2*SPod;9(*+~fJPyVATi|0OW@V9E* z#__Zg(TQe30;u!X;cOE?99@gVtodchKSPzH7tctvJ-SX(pA-12#m(z3aV|Rf<~{&P zGA6$4_Mo`Un`lvdAWhOm8BMH4Z!o03qNMvL_LA724;Y;-{%FZ#{KLx0}l`w^*oyYMoNl&DIWi7exFJ;Sf7{R4~c=- zyS8l44!#^|ZnJ!QoZ0Vfq~^GQ+j5w!hX5|1VfF3jJ39lyeiE-?382Yo_jxD+nnkOF znn@Xv)@Q>R05j)k*Y?`qb>rOGLju-gA(EtBJs{1B7v9!&ctH`bN7pR~Ir?Y(<(d(o z;4%7m-9yB+?0_W0?d*LN*8w%JvE8!pDOxwFtUplZ2APkN+b$j z*RzN5*<$y6?eb$n@dmiGL&X^KgV%a@pG|*?@y5arFgJ+PKTS+dY9%_T(6X{7ut?df z%mvGrs=A|l!*v9I^i#~s%@v(~l7IxY3Zl+^ZJ^t&<87id=_jUD9g{v9Xi6AoiLfah z*yYck?Tt8*E`Mb)!E$FH1mN*~kAz;SMQgco+W{2|6w$=<5=QA8`*nO$lRTFGrlYCG zPfhakpfcZdw2>Am-oQ|@3&Wxzc3 zp$^_%z{zrgB|%k?)1PZB(2&pG#U!>pNX$ma;SEoHx>@@{)698J1kNNSSk%5v>B zIlQ+iQmXO%3Xv&!*9gA&E21~ty<^#KXJ6V^Io1gL({Fc0R)(E0%CvzO)H{B>n`Ci* zAnElbL$J*cup{N(UaEtavOh^nV+y_VGaudb3RE@lxu0M-m}VJqyd%f;wyJPm6w^%3 z#~o+6vXoR=JBObkQgy%9j3`?fxtKuWx*ub4P8LT(D&J|Btq?&vlx2ITp2=lXZ!22f zbnx-xhYx>!A0+NaOijS#0tLw@V0*?Am$i9zqXhVW!+hj3gj9z2z*!RM`(MFrhCMx~ z!rqIkQ9rKsVXkHM3PE)82ydcak^Mn*^1Z?|i4RPwM)wGyCAfZebKvT7g)5e6&X2Dr z2wzY_e*gYDd}x3f2@B`UYn#vWMrmJZjs5k{O7uw@15nIHgmnxfYvj}4xnnu8dJ~WG zpdaMD6j@-7FEt5U-ep(XBi1=_s4racwdeVO2Ttbwr6iP$||Tjw}n@vy{f53otkzX((sodW)?t`%0N@J$`eq^1AZ6&Qk=>YMJ6=J zt!sA37%Exc)`*|eKrFpWtNrJ52%t&*j9*{%k0y2UU*^q!X;PPuR+kpmcib8ahv|04 zySj>R7~ZnQ=n;RhKiesUb0(bCo@60lHbn3QCS@p)D^!Rg;kAgDC;z`hf&yf+WC#Uc z{)dcE5gpLyw)**~O#jO;C}2naqvd}j34i>jo|DuTV-5cJ`(d_tW~o|r5Pkc--NOgx zD8-Mg|MxorQcX74BEJ8~M|wPKITv3z55<3g9u${PtOFfX!s_4uL)Ec{3ZwMp|1x?$ zKL-*4Y}@K>A5vM&gk*RiFQ*F?`h#jP|CfXDKl7>d7_wsjW$q*udM+kKc|pi-^;M}z zv6AdF^m3*Yx&?T7h~7Ll`@b*OjUWCmb0^0o%ws?8+ozb<|3l?bs)u+=Vv>FRgeB<{ z6)g()R9=C1E#{54c=_ZD2fsI#EnK%vfz9J`N(yK?#fti>&w&0D-cr@du1}upZ?WIL zm6el|<6s&+qv+*kU>HrHvl?!+jItV@x3yYr^MvlCSubEX()k1GPEDE$wXuCi+f8mj zdBrA0{*OEO`TPeomrzf^?s{ejJ0BCF*!R3Zb^{Bf)iB{OjJ>Y)RG&+j5`;GKzl>g~hqy6sd2`7q< zH-;*i!`a~q;c_#DI@EA>3aCKCY<#^WUe=fnct{w>=x9h7mCYBuUQ&8dgSr){vOr28 zwk0`zL61RGCA;=-e{hXWH&$H|m^@t&Fv;+xr_-)VJ#D*@cVZX`KKGKF+mwh44-T9? zi#xl^Jo}n5{;2hxIZXgl-qC>AM=W4@Q>Z6AdLa1}?j?srAt{)B%DUyW`i4VZ*IfQ|jxnlNZ0y#o%y(sl5a%B8*vc&NV;s50Y3TQ@TD zIF2&(Ln960iD$xOi)d_YG~BvNSZVj>*IPT6+4hSUJnjs-VS zhZVp^reL}sf?8|3r8*#lL8I1&4VYW%!Q-DfHQ@}>*37o>Jr`=su%wb1J7>*OnIkpk8`!e$=v%`c>DrR7s5CX9g!`|UR8if1op49MS*8|CfGcv$;DL@ zcZDIG?5rVO3E{VIt5O>_$VlMtiLYSB^A&J@YbS>6vM`q~OJWJ^9CY3l&kh57BZ<68 zEB=^-KO*HY z3Fl#$?0{=Rnz;nsjAcPGNFFo&$G7|k; z=DcH^gksi0sz|RbdVKR6=~VpZ?c;x@y9|aJN zvS&MpOtcB@*A8vY5dv=pScudB4XlCZUkxm`+4b)S_Mob>=e<%DPr2*8n``N8L6kvc zn{JO!evAn%?mt#oyuUJ{)VnevXM_ScXXl1jU#3gc;zZmk)mc;HGo|fO?yYD&@p6{` z;YCE9qd)c-cC^O@O4thl@^O0-p=bMe^v+9?kbI0T`qMv5dtM2-o#F_b($R3B?T%v2 zM!ODYgO~p_XTMP@*UkVCq!TGADTYR2Nse7qz&DLT=%Te>!mC)S&id^!KR0)Obztq{ zj<`z&2+1@)^)beyM5Fw70VC0=k0)^2GM@jJio;X?#mE-)70J%9NoKWTR}wF@^B6&t6_ef;0CfCVs6U-b4%l8WndRU<^X>fJ zF)MzIVW6(0iNxMMBmMT^D%sCk=_l$n{6CVbl<;t5l|zy>G(S|T05>Brb2{pHxlNUR zo2vA4r}rm){5g1TQ9upUM+Kd=vEu<%QFl)|39X@2Q4AZ6;rPJFoTER7W&kb&f*Qr> zFbgmrX&=0GRNL>b4YCHljsiH_0WxTqEY-pfo!ji$A}vz1f0a8T&c2=Frh|6{ltG~l z3ZXB>p`ZSx41#ad`|qLV{XEn}7Dc@pI1YsWt8@7OUm27QOj`qIEjy6I?ON>|zDUkn zKVAzUu3|z@Cn3{1h9%M)KXH4HKG*c5NNtSemj1wj2)*B%I zlAsQCefi~1$@cdm{!qunBPKszPa06gCllZDa|4rW;4=36Midr5Kv@@B%y68Z;?#+c5iBb8X8I=`uPy+jqWlC8HwX)g1)3>t$>Tge{ z65sB|BnWDCB^8%d+Z-7(?l)Wxm@JrU^)C2tC%Xz}K!*vo9t%ts>b$4i@5%TwwSVG@ zGvp**JxPN}ZvAih*b{dwE4=#K^0DuJSzI?@H}UVaw`M-18JCVg3iGaI@0LqYo&obv zNXe+=)5KN+_h$F$%c`@K)g)P(XFbk^yB87NLJO5|OI$Ov(X{lz<(6sda;>)mvgarB zYE8!Pje}G4Kw?uJloa*2Dsu494q@?>@(3RWYL4=|LHLFBo1v;`l(ttkV6K^f+)c0q z*XGE6joqEsY}3ag(h~;NeyEGv*WXvTwZ}yTiTYY6#H;i_D6&XKFDt#r@XKX>TDrd} z3B;l{0b0@=W(ea7M*Q0q%_Fq-QkL(0Wm9T9!UXCoM#DzdTT(7ZT_V%ayP!rV~hY_rCwKbWBH8VbJkU05M>Jh{osZ|vL_@T`@jz^lv~Ur&4| z>YSv0?r>wMd_*Q%JJffoxbxN-MX_MJ+`%1J0*#VhOrecIGL=u}%CFp^o;`BiqxS6M zK(U#KVm|BF9b>e+`{elkwPm~3WO6{~S~_a<LucOuC;@sI zO3%F-tu10&@|AWf+SPS@Fa5}}#aO4P#$mS-5{xS{ER@f+M*KNf(JS=0#FEu$FGYS}U zq^M9sx96XELE2-9bFO#<_EsK0IUfe$q_vYJ9X~pi+$KYha>Qg=GmRxFmiB+!%*`z^hwtHU3X>s#E*`2bEG+XAE zW-7+I)=LSWdYMi8`yZ@nTUl+1TZd3@U$=4j_R%lXhq@5-tC$35dlS@b6lR(dF%uL; ze8Yqn%5S|#dv>5}>pk3rM&(VO0-moap>ruA&Bgbzha^h=SQS-;7JAMb=bH!*Bmo>Q z!*$23uFavuO$HcdL#Muw?Hb4DDmTo9UZfK5bZ8gH29gS>Xi{k-ughz&^U(!#*RE|# zDkP@NCA~LY$7ZH)fZbbuhnqWt$M8RrCyw zdb}Yc8FIU5)$Dj`axz(0Glp(k`GH61ww%j17eq~or7}5IB5!G)n^c?5;?#~hJQG&X z#z12X;gkb2L#knGuLI>~tWvMyv{2mTS^CCY4jJs(lC6LBO*9?;bbibQ7aaN$ersc{Xo38trIC#(LSoe(;l_u zq7-?JLzTGm+^$eFBwv+2S|lD%e^`!!JKc?Mu@_8izpHHlGWMiDKRrT`;bA7MkPf20 zTY7=kd*Px=<86lz{P-!-3%z$G#Q5x;G7oj{^yk7Y;bbzsnI`WDd*<=aAne=}bo!us zMcrBw3x)cktm&ZX2S9FTcz;Qhxv>=QPHHjl@|L4VdKmQNsu#V#hX&}guzQ5bwW^e* z_2B65#Or97FR{Y28(?(BQwURl!--#bMrTV~(wtYe@>xOo70{grjV--f(oC%|+B$q; z&y7+{Ed(=9r1?pMk3n2j>FZneOSv4mi((b#D#ZmKAB)jGQF(ZHyiK5;=kN(FJryC5a1sk3bn5e@G<=|}=UckcI%Qux zjpxstyIR!FUDbHGRg7ePD7*0Sh3|95+pAce%=`~SkK7lDm=I3SfGzo8>Z;%f$o^ivH@Krz)!CEs)%M+h3GBBD3~ zZF~zeqKvWTeDka6Vw{%w=Bt{^NQY+ZJ~Vj0@NJ~9hm3B(hB7&?Mfgg|-NnC%<(Ek{ zsWvlJdQDiD{&}&s%`3X5Ryx&jdI7O@f6*0wSw?`E`c0wyi>wkZXfmF8Lf`#E#D(t3 zOs)UX@k$Bh#fdCK2rjti%X)&p{_>$y%C068zxJkRNp?;vA=t!%B8=X^+^8g_H(Xqr zU-K(hXik(*cpxf{`>Ko!F=R%k%=mBssM%_~adUB8#bK&EjvX0hv;m`fuN*QITVF)( zT@61|Pkz^|5oV00Ph*r(5mnyVzB|lWk|V-_L(5doCW4vIM2VI9rc8N+jo~b;e1}D4 zj#5GlSUGSMd1sOnK27<$qf-aHoZ0Y?vOw>771{AA#7sgp14B>70R4g&5oA-^8+vpd z&7d|+LJhTE!2ySjyJ)6jFE$4>1h6=Tuee<>)x^<#E!(r?+bWCC5L9CJ$7R}rtQxhZ zjswz?yu(|T+(qecQr^q+Q3r~U%kNXwO)o(~Hn>f!sF`CN{E0%5qhPA~TmYrJiNt61 zVCj~8Lx?%|qj`GQnUm);>sjRH-k(QHH4SrNYn1)G{?>x}ob?~LTrzx1?f#)Tsi2^b zeh63>-TtU(8}Idhmaa1*@v#+TiUL>+Xm>>G{v!T{v}tQWx1LDmDVHbCV+AOHiF-RWpN6HZ%?Fk#5}G4!)fcUB>E#E2JJC5 zYiH*RYhfMjd8yl)_9Vx?IC?7Z&)Ti;2Y^v&K0@w_M58vsIM}FB<(nKcFKeJzYa`n7 zh!u<0YCV2y&qD7f6X&YvNV-deIuei2Qg~|v_MafmRya@hhe~X#wI6>v2~F{SnGrae z$-|8YP}G2GoO2BNgtfP3^`3`FC0h>xBmyb&hol>eSR&0ABlbfh15>1#C(REvatM!S zkA6;92i{Hcv{y-Aoi>lIH0~y}@@pph?`G!-HnRnZEnE)TLoBq#N_jO>XT#RSzf|2u zS`y!ql}Q}NCs=EgA3Rk%W826RYTbjEZJp=VkB^U)H8s90mgl~9%nnRUl+V_FqqHFJ z{7U^Gv>EtWT(|3De za;A8Wr0+c#mb{7pRhFAvT?BoPim_qKGf`rXU5Nqw(-=Z-w{TshqeP3YWy31gRc zAlJ=nx5-dg&kugRI}qJpXES;apR(#Zdn$=N@ENo+6P;Wbi;r;1-_*#qJ>hzxp>H=1 zTBBenNbl$`D!i&I6VNipzET!PzeZiuJjK*Z79jms+B_X%e+fM2;8Lj;&7cjOjd70oYIzREKj|sQHZq^eK}3bIIx8Ux!K1t zx8zyo3~s)9I9|AYZy9$O|0CT3%=kmtXmFK+#I}gI+AeHIDsS|b?QG?!R}5*7*ID9i03;{ed+BF6;l*0%JfGg( zOI3>3ISluLkHW*Pz>yruuEd{cS0gO1{GNB!z?HS_Vusb1U@R^UC2SGbcFwi{A+nY0#w|^~=DT-w~mQ{&c3B#mm0}cudz{|1|#oHuYT5 zU7fv#&=P;ef2FO`szC`8tRe71M$JH5ZMg61x1eQ#G9ow)$+&k$@gjoV8o>)|wFK2~ zl>nB#D$RIN+XO;*h(@RbmIfDL*HTgoeVeAsh|1%iiB062OuVT)4uGJ4oZhyTH|y;$ zv0N7x4s6x}I}|IWYt}=CdU>G$U7H{kR>0fFeH?s9nA2p>JHkh(W$Fh7eryJE` z-0jtIo2_N3RgFE*od(W@lJ+p@d+K-hzVSu4Ad%}Qh`}~c{E(PrjBM3E!>5Jlc^jcU zkG2)~f^R%P3ZZBIop{Li7cVh4HmGsEl7+p}sbL-1iuBX_g^k92E7*FO2YSiu`0 z?&I!!t%!^-DKDfcv6?P07D6R1Z2TjP;7iDPzy;z^#dtOLnn@ZNiMEE2RS5;P|N`4J7Ft2-AJneY+zQ?uaRs@&WIWxqd z^VN=~lTE(g>zbjAMN(39bOeN#FJWO}e0>B2{`;=) zp16Q2_1_0IeSPL^oO_MXzx=N!iZH--G5^n(J^vO`Wps4HWBT@qU>U6+fs0Y&jgt8E zvs1(emi%^!%14}^@sk*ug|pGWRqkGMs<&)%2=eWS&) z3oWzl-C#?P;Uc9X!W%?b@jse|kC)ULjmadjmtD&UN17F2YGPjd4_ie&1T$ptb0YqB z>24n=CPnBvi$q>9A?v3&;7n5Q$0YJQzTe@orHAs7y;TKsIYlN`BrB8*9tm?#%-WZo zd0%SbXnh{vD0VkzTH>+bwr7lMQ*<{DGhC+;uIpaW6E50(8#jSRaM`EKQ3^EBEusfpzxDH)ZIc%>q= z(*)VQ>UjuVorJI6jiAE)Rr%;06rcuoQx-52XkBr1(Fk|-y-!2PZz ze#WrA5;~*3u}_;fAD29sZ5t^vvE5}+bTWj_R^CR=6^FWX2f!pg54l8L`!;#$I=SRF zhbS3gad8F;eZpZr5xHpeYr`G3y3Wjx+Yoq}eZF2RRZ~=ay(i_)0%MDR#)|t#jom6 zs?QkLo_y}^@6xuCkFBK_Bo?u)VMzJy7L5BB!d`WvMX3o61!I_4aD6qvJ*l(cI{331 z(>m_gE5*NaNQ?9qTR5oW-co%3?iIJ^f;%)H+kuRZE9*K?t3t-?G)nTSa%3jwODx4r zZ?p77l;q{jKoC6uIHP_ONpb4`QM$LU`vv4hz=tJ_YTEgfR@<=Toknl=)Y$dcJDVm9 zW)$0IFqvJ$EHLH6jBfn9B9ziNlNr26v`XMJ7Jv^39Kn z&gPGEDPaWDbtHT_*`gG_^-Q5YIBAUIrsZ;J@}v2ccM3z`%aYW^$n@c%kakSixLHta zRw9cS@AdRB}0z zx*5s0m;2hwaWY%sSbmDq5_&Yz-I-_no@w~%lxceMbJ5lUe@tm|h=PB+S4*;yPLUHB z%R}fwjhW!wVA=vT2R+(aZl~|2Z|r{nTteZ>}II8B)XwH zj$ETE>-Joa<#rAk+h9S6&3F3ZKvp+|5EN%#!>+F~4Do5jf?~%a^t?0QZ|uI=e#m6t zq|_bEi2qUf=>u8h#wHJe8!d)>ti8<$U1DrcZvV$hrQ9yfN%Mp+>l3X#2t#iNa=}O~ zwpfCcoO$1dhZY`Xn-%$h;o{Wk*2W=IHDgWKOU{r_f6u$X{89Kc5Z?Eo_uP)KOqK&J ziDX}dw;5_vF}d(iL?0|F5XiiB>G z^Ivz1ia)-HR^gT)ScomDj-u1&GyIwqpRAvda2g?ph{Ni+6Hf=t-LcQI8#c!xI%oO9 zV4hgD#Ij?aAsz*FR~&x3D_CgIgt^su*x+NKd3AqHXme|K>C{y`u58$li;Ba~&h`9o7^7QKTZjX@0;uZyQz?Wwr&|@)v z8UyN*|MAz-nCPQ#@y7!jq$&bmoh0!47LupYp^_6j_c=or`R%B~q(PahnxY?N-x|W3 zqO(hU*v1lLjak~k1Ndf-ce)G8T?#5Gn)g~iq?sMO1`{e{D){inxVd>Byc)dviAH)dirPaPq7~0muA`x)<{-)! z4Wf%-NV%<}-px6jcKjl{dG^Y~G)CPex>vIH%Prrp)6P;9hY?QOOH93EQP2ygrf?=F zA^f{M6GKdEUT4Y4Dh%Jy%%|q~%+Fb)3zRoL??XpLMFZr#;h6!1yqBv)>Rq z0Kh0*j(j8X#abuU(mGH}k*Mn4xocm`0$0My{cL!{FMo(wZXm^`*B7;Bx_56_t_F(> z9I?T1sRy_4(wRwKBDOtSQY^7rpYA2rwj5(FHfuOHHuth%O81smE)c^85g*dz`wx6A zRrGy9(8hyOe9YG!+0%rRX4Be_CK2%$OPME=EksgoM<30QJ!kSU9xi2ve<(c~ub}St zANx$6LI?}`;qCW+_7a*4(ip_~V6ac;RHCuu_j4&FL{i83dTY|EzA*doO+rmwc|gWK zSq5(@m!Q>Fm^k%Xm2jxn_00#oT1btlNVXP^Z8Y-z4+%!?w@8z61RSo z3tBOre;=Km~qCP6#EP9Gr!3Ir<@cP zbvjRjJZ|eJwa~{JI)~LO$^C8b8PT*GP4~nqlsaW=={OID+ZSg)Y*X+tn2_{wdl*BE zaQGHu)K%yQ{xs~ikKb%fYuE1Ad(piIaqP4iLm^-_cAX`I?~YQjc0H5czsuVl4Yb^T zN-CvZeT6@eZKYOOyEND>=pJwlXvFn=Vb8?4#oUjMQTa*VRF}NJZMF)}BzEMmQC4v1 z+}m=FM07T$djA5E@IA-}B=YznWc3m;flh2;{idi+$rHrFNZ$W}q}c!kI@{b=Vnldc z+v@J^D7l-{JL>qe^Z$|cmSJsx>$YH9id%u=R@~j)in}{0P~4?x0>vrr?(XjH6nA%b z*Pu7u=kA$#&iv&MkbJh*yF|ZK+EaBgx5pq}l@q?XLgaU;6hR_wZ~~eZ->*c)H36#e z8BHhG$H~#JEwi)=P>@)1%9YP7s!Uk!)$k6UwT`zxQm@sx6>~`7B$!s^CDk{)y{{YR z0*_n%4DDP^A|uO6BR))n$2yH3uv&SXwGEX#_D!C=IxbLKX%r;Y8g#DOrg5e{bH>A1 z9=9^G-zy%9YxX8_pDYb_jpy2oNGz`WawC0sp#|tAn1(!RGz)bW|MsiKSO^CV`%@Wh zFS=FhM%x`+kUo0muR;PQ^XXH@nOaU;(O|*dqf`=@T_;%&0QKmoC@vi)NCc#fpeSMk z;f>Fa;U}@WP=+EAdQIlS-OS2T0D`!#%81IJm{EiPC*6dH)yxhd1J`?_mfN~w6CX64 ztNNi8AiFCbtaaBWOyScRJ26F0(FZ<5yJyRQW{smUDwol6+dhx4p#o@TLqEQ~i4ssI z=3X6M{TwVdLD-Lx>x03t6_g5~^X@RNHltqOZ<*FxL?K&3hFP_b!W4c>{ZLK*Kg;IJ z%->(H#A2@Vqd;G(y_5El6Nedfq*|JjAivg3vXcYA#wYRhuS$59zIOTTbc; z3*!If0t~{lCx&onij2*8?(3Zduq~+th$3CnQQjZ+($4iJ9ULV zJdf9UsdaL^$qrUSI|NU)XrMsAc{jwbKc&-yNs$-Dw za-JXkHH|-#=nF)c2t%>mn(O!7fm+L{jrGvmUQ8b_*ZQt&@xbaHyuHn#erLbH+>-ny zprw3m(3|Ys-b{4gs|^55yEnIO{n;sVHNH7I(U38^#4>Kg5X^Y z#+c&bV)mbZzof95gv50`ZX+@R(t@Z1Zt`%?e>&2^87-nwCo^g1inX(XIqJ-*^i&)3 z2EOxya!3ZaNq8jrF-=^{=9o8EtSxow67Q<00n9wh@(0VB1;Pr*?VnOn`K=8m)0l-X zCrySOw)_KCN2&0n^h73~^JHVM&pq}4$QsX<%bIIe374;LWi1Nq3A*aDVoeq0 z>p=8!C#&9R8oVNRhonH7VYo3`^H*adQG(Fg9HEFq<<_Qs%Z4JHB}GrkZD39_90~a> zb%y2)9;z6!>Q{^}Y-BDPsW>*(c3@F$J23Sb{n$L(qO8jF_jQBMrx6_X?MB(1%bu7< ziaMjVO?D6p65%Vguz<&HR-60Hw7%<__(&pCAtX6Yo{8IG`!gne5i$ZtSeR0=Jeo|C zbKqXh8$iGD^V&K+Q0O??{)K>H-64(9XS~trE(8t3 zj~rAMOM{*EE_J-|@i!Lc7uKsTS)1tnsHip0r1QgJ{k&t2cUJJD@j}lzY6oLu3wDMK zxxlfysR<;Ho=f}Nr>5)AjqFjO2@&lf8Q=a!(}{Hu-oP6e_ct2FXR=4F1n-gUOOGaM zWH8g|GGn)cjP;p-TI^oyjnNaRlOBps6aKfSRVP-l*Fldu8noY`_`qJnf8hfzi_`O4 zRcOYbtKm;QE37DFxqsO96NENnIp%O|H3nY}p?`?3>A`AT8p*sy7_KgC6Vi}oH83Cl5WZzb2n~-RPSb`@afo@h}iRK4_ z9OG>7wQdLSqNA8)E-r(3E_a$`Lsgu;cnn(j;viR&FSYpRuqXss+x?-Qm4Smh(VXiK z7aJG(L&-M>6ElCK$?_E^kRU2|ECwBNi1t%}hmG2M75(Y5f4t5@%k}B8;gV+}2f&b{ zVmFqxp2?J@!=#V{F1Z-7j9Z}i?D`31*E^Fj3*}-o4_`1@5`v3+IM?eHZDAHd>X%Pz zW*S|&@{z?_r%DoACd;T+RQGb+%ix`~%PsIxl*h2CrpHd7xV%Al0@pi^`pAg8GI3tJ zW@97z7H4$&M-M?dD&quKEictBM*9W5v%tPjEq5d0w}*;!Mbcp3I^XcCG3&5S7f^bz zkMUr&lRxqP@!b{wF{dNv-Qy1wL$dyokMhIVS(r@DC^T4*S<6n4`YgDer{ad{-#eWS za4Py(t^8shp>C~=YPTYcvMa*4>u1ZcWlH6hRQwv8?7U-!ShP+TYcVvwqtP#}E-)II zM8yKw4id97yD8L$s{XxvuY;;{4>VimZG-()9#3eT6pu;k1q5IT?boG@d7mutKkmGa z(R6pOF|J;=?u7=--k;&l9;}$m?%ruzvr)Z(s=mvhC--kv12i!9|8F@icT){+Qj2j*-WWc!jmi`0|%@o4NV8a^zkGLRwTO z8Iy3}aR#g>??2;1u>zVRTpne$U4fB6#GAwsZF(QAwqJXHy@qug=q6e096xQr);YXJ zN5PH(1V&|(GMN<(J9L_Qm+EJsgy{1V?Bu8(Pj#5&3*1*;8?leUeZ(5k_KYO!VnVBH zNz4yMC<6qakq&GHWH>6yHgr09(jmeN>7-GI4()%vwYJ7Anx(GTQS2LW<5c~VF8v+j zx`rLlWpwWb^&7g?A6vomS=RSs*cb58Bz+p;2AT38?a|<*6EvY`T#3yZzWFYli^^6j z)e%2$o%QEl9V9E(vau?OUL9mBPO^JAq6e~nOWSNBBVVr>2sju@W}`~yFMdTifrLaI z-7NqLS&Rpi5*hW)Av$E|Q?2>P+^r*56FleRuk|vrx%1c))6Fwf(t?dIeek^FDuM|= z@vgJB(&T!pv3EYc>brc`R-pEaxM4+>oP{O4R+4zKUiKIsqO@*CG>SdmnvyLhiiKYn zT0{dndc?(x3@R6F!3j<(qwYa&=pj-L$uy`)UJ#ERSNUS>@t%;oV0gx(J9IJllortD z7JchHWwq0@q#EbG6-JZp1`_9lh{bI3tKaOOZY@-6_F6O|j*gC;L+V|H5aXCe5UO`N zOHn5$5E~xn$X;J8WcbV!G#3%t45_RFpEoiIi#9LX)_F?rSlQU}9V)0a<%PUnxDBU# zh;>9#r5;)O-V@HUYC~8m%3%4s24%Smcg5en-r!Fnx)-89o#?7I%)HGa8r08U2#MQ; z15O$hKTpGEu9EIw{G|V;rwx1NJ0N?=XKF*-eXC!8QKy-P=IzVkupf4H1nBY{RdKiUV-QtLkkf@H`(le1nruZ%zs{%O zr@`iadsGS1_z=)zFcb?Y@bjZ4`R<-S80{vnY=EEB+lVNBVh1jLlJeT)Xm&^~M3zsM zdzjy{)uiQ#y0KjFdfER?$`V&&1lRhl_3yrj3Ft7JekJ#D^*0G1xpo+M6x7R1gj(blL$$)#ah7`P&NxM6qeQo6Zw2lObzH!*S<7 zAW=^s0B)ME3Qx3GV1NZ$rlgzH{Sm~GqO1^7`6f6jnUt8tg}z@(^}Z^MgWuM&xkYh{ zOVpXdX*o`r()Jdm`5Cxs+*wZ5*Jo+)OZ!YRJNI;Aw#{c)!eMu)n_J9x%s@;Hx0&b( zb6dID`W7e5=8!lBWPJ{8YJT&0g>m~$x08lz#T3FR0wz`u**Jf|JdRP;1+}#KJIT0r zp-4;DvUR%M2=)MTW}$D8_X+EqlKZD!`Z}WW6|gJ&B8MB|-EVP!5vFO*l*L8Xa(_G- z9&!8hQB=D}t2aq?7_q>PW)Ekq*R%lPK}Zo&j6Q&Tk*3eyrxsiuCxg2*0XOTFr3Gay zvQ)qt>0}8mR7fXpaUM6jP#oK-46DbP|LMrL_|I(s+v4qeg; zuJ1I^^L(|LLntQXV;oiF{n5T?0D|%#bP8(kx0h+IjZ%$rT96k^)J`q?@U5*3!q`Z( zp9Utiu#AV82IJpp>4cxW|8qcG*$qHFef$3%5WJA;U|ya(ATPs2VrG}8pUgdM84_fxWBU0Hox8&sB%hHdH~Gw;wms($dpoaXE3B`-~>Bsi{SWCwrdqGQwPRgJm$z<L`#aS-<9S7iU9v)5e)C6q7;EcR1ON!Xtxg#sj*%OqPwy?EfYsn7i{` zTXGx{)nRJ0=A`lr78z~M*yR@lNzB79AV@R9^7a6_?R-%0g@p`ycrM8)DRn|TvoO$q zUQXY~wrTv?Kj)Ti^BRiH&Z9X~nTFbnzk9?(%buX#6NcRfFZ^X(9LiYb>=dE!*&a(53 zm}7t@8IwIuTJ)O1g0S~j=ucs2=@Hd9n)<}m%tl6Jck%qgSEYIQL$H2i1Gwnc8Y`rU zCWMofUm}N1atD7{i@pB_4L3OMjY*m@SuBhdPHzJT7;ZJ^*-|7ui$)-4bsW@bR2)0s zjqH8;L9s}Z>#21RmFz%9=?Ai$iJ}vhnh6f2OfH=PoE|M-ev=-^7J~cl7RnbK=Ko(? zsO8&5pBIdC0?VM5Fdt;cZmJjjsP58{Tf>^S9_EaKT~`>dG#4Yn|2raGo=Tl6_HCTN z^VS|x>K=naH0s4mLq_IznVf9Y9|Fyeo{kCy>Ey)0b)=#&*HM%S&UJ$YU@ow`1$23e z*SK};(wX&l!+%zZsb3&Ii<3fYf`VnE(KO<}O6Y`kqDn#AL0IRdxG}#i(vW-3mB*vR zMhn@Uf;?ybR3rAKVoye1Suhx*=fu)UwgoW@m6XelqZLyAag2i7HGNZKAVm$;bQ9DV zJ1B5ejv)5+q8Z|`htsTSUrV7-ZDLJTXTEQhSRM8~#Qq2zOdeF~WPjJWbW6{J_dX(T zd8%>0aV1S{P1Bht;oP){rDMsE#9~kVB23?-TY501y|6TEt<}d~sua9ZvEJ5e5+O`F z@P%oA3f~FMJjaIiq+e~SA+x*no&kwD3+><#97LrY5%$HB)RPGJjdgkQ2g^N44Q}tn_ z_4l&Qh=9!`gIR8R{5V zbhq)#pbObX$53M@r;*mZje+2Hm}iZuxJ=lD%d_|mB^pqi9Cy0XhN47?I#JVPOR-Jq z^XLb@JJWGbt_4&rCM=xU8)HIF@AZuWBl;vF6@22h64E)^qi2^z*hWscViXs47f`#= zY*kn#VUiQZ_Ga{{c{d@e%&u%f2g5L!+UZw1y1!cwWH{77q7=L~>QkwKV6EHyt-fS8 zBbA^BKwGI`ejPl=%tWK>dDC({oKx=J*A)CKUNlHwHGW$QaxMR9Ylr)=9$nIeBvj<7 zSc-7Zx%?%TNS3b*Co->A#uK>zxe}(ocz<8<3iMzItWV)Z zQ8M~=9UUNiKQ8<8$R@O5QH@y0tL-)!2a?l?$1W8UsyH&5DU_La!N-Cyes{K#=y884 z4QU(5ha^1dc*G~9JD$B0SgW3G{?>4=a}~gwZKfS_FA?}vj`?^5qCy%TIUiQ^C__f> z?BGN`*9pfGTKJ=*`6rxM-0_oQF6%QplVmJWYY36q!h5Y?_+ev^4qiF!qZ-`mViEi6 zoiLe4nJVVfVME|_WI748Ms;(CR;3yO1E>Q-V5Xh7-A!J8h$)UHsonj|11iavhQ|rg zea?|(*lr2$-E+x&L##L__p{?M9RGN7lX1>`tCq0XW{%YK`*#MWeaX?-B&Lls{meJR z8>;=OA`Wi3K#IL!su$s1U9S0j$ra7KqsYb_l)2DA>D0}XSFn$%e>0}jDLE(P>4U70 z!)MjGT*~=6UzyMT9^PDu3j(&b5_3<9v-m3fh9$wZT?+^x3Vjggv<*Md0LnK_$xT9708Z#+}S`Soc}p z-Sc1F;~BsxcHf}*!k8W|$v=<)<5DKNv7sEvyz%!S2ORusZ5n>h3*2W7(mak5M8q{0l3kT>uFvByEW zE8K=f5H-;58R9t1FHtYekx~={lS9&*LWJ>Ij6Tnm>uTn-zMs8sk z`hKvjVPV&F{ky?+hxOKe1woA!@bf`rv^>d}Wg!r8La8p43XRw})wY~AG>Agfhilnf ziBjm}O#@>)4ebj>g^GFX;10>ZkN>wfwT|Q{UzI9miJscCbdORUajA_Oby})@I)quJ zJtpaDW34haDFM*h&90QNS2;%W`&S3B6y$}rVfjGDcr(9UFyUDe@2z*0-SCX%1M6|; z&9zFe+&(j~q6LS_)d$S~Z)wK=C^f#2f68h3|0*^hKOXxxrA+-8?(C49$OM^_Vjr&N z-$o_(q{J=rd$Ks&1dcXQTOOX~Bk=-{b8c5)vsn>ApI*^GD`R>Xes@7mBVn`)m~%bs z8Mec3_>j{?qs9)Gov z(|exMt6ppbBY1I`@u_=yeX4f@@v6JK@XPDC{@uswp<+z2Ve_T6RnfoM(z9fC4vB++ zcq#qv9i&f)4aB+2)&@bSsOoZCVHD%i;c8)3!mW0*2uDwxxPtL1HFX}9Hx52dnxwkd zfl!6Td-yZOERc?IZ@YI(v@OFpYm{g<-!7rjdsP$8i3T?ip1R4+c~L-Xn3@xnB3#{a zrbh;ECtoODHBJ?T961V9JeUcn8~sv8@I)C=m8wm;jvV%^8_QXp^ox|ElQq!PmKVJ# zCX~CU+Qm5JE(Ld#yYs1xir^57;n+vKR<}kd2KZ*{<@sll<2Xfxsq{?mwGj;j;{#^k3XEIZxPjljZ@Ns| zYaiBt=LxyDLt*6xjQm>>$kqhy-?7d9eU>Z)32L6FiR#WzM)w^^^Zi=Hy69NF@ywY* z;1gQn&q{&=wlCl>##LRRB50+9-@ZnqSRVwo=7tP}*mDQm;iIbR1q;z^Nsr_`)+Vwu zX9{{~h}DMv*7UecNz++}Fank_J0@+M{C-;}*k5_fBZ z<7fs>Gil5sO-UKjwVcG+<&xtTmS;TK`Pr4oixU3L&pd$b;=Ubd!#aSxd?|le5|+z9_4~{_7i%? z>kDm1v;aW zCC$%g+$E>j_SKJbw__r!Uj8l0vC(`<2GUIv+tsPBmUI4-7Q<)5w3z6 zrVWN{Rxv6JhBXX-b|-ZRrfe0}i*R%Dm4nRn-KjGuR9;6Qze~K|R2L27vjKib>ejkf zpIpmLYJbBJip1m*;?eBuE06Qq;LRaKH>I*;s0z&3M3QJoZW;QsEEqNV6fkHk5yEr< zbb4hGB@8M|B-tiVV5ZLpKl$`izZ3|0yQkP zR!vhSL=w?TzK&hDTh`;n4OLQt8FmWv7owdG0~PmY$^rCog5}kFQkVEBI8-Zmw~5;z zs=+^i9W^Se1UY5pVA`Y2BEv9dQILXAm+7~R%>k-lgGWyrf9;=o`emL~^KGePrScnT zVzmv|T(6Kf@je1W)QY~BMlpFSmjqX>!!o#Co84kfWRHf1_;gtr9i7Y@een&>Zp_Lg z^7DyRS?$)zp41G)B21CjSammhUa}jqf}9Rl%GNt0T*bUw-da8f-nEjN;ECjl|FxXQ?acQ11dqQ?=)LY zr+o9z0|ym_NmM=c=t=Cj@S^9CYd!LVIjz49I*+K4ZH-Ey+ z<|djMxC-Mq6MK$4jFqLp5duC8cHDz&&Ib1}l}dp%dO`$>Z3Ww{YMXV z=vNUUaLBbLl?uq3XkiN9s(`NdIl?pmuz(Q7+MkzX)4ighUWTJ;1@)tNE32u_$hrcz zewaWEoAt@6xLK5CAjF4|!hA_9GoB49T}4#GTNb}HoR{rua)Fyk(- zDR|MxqNwsoo?tPs3a9H=O4s$mEQ3WeO}i#(WailV2Qgw{fN-X8>S5?1T>}0u3vmJZ z6b)*r8%Ui_z096d@qTpvJcRh=od9dJuB*C5o9HJr7!#W-T&(EDerQypKP9B-e9guUe8}%#DB>89Wav` zF0j0*<_)KI`RuOFm(jm2b;i$9?In>a^YiQk*sM&QUT}E+p?A`_8q?5V->5)x{4W>q zB6M?Y(i521;_GOuo>{A-Agz$~PGl=Fp|3C2(h*DC8PYO)t3Rm|Z=)%Y(dh&5^}b$^ z2s#$Gc)~a%Z_PL|NH;~Xl@!0Gd@dy&clh!M!H~D^kno`h;??Ef5^F1Ay?dGd8{0}w z^vlVwx`fA062l%2i5NS5!Gf%ch%PfgqSQtrGpEH(M)f7&d~^v`=y)SRY8;akVxV)@ z;F8D9fJD9t95BMEk?4v>Qp~5Zp%3r&wBNbHy;Ep5X8i@AZ-EqUx^qxmG1mmNB_ZN- z`cpcbOITWU2f}y37=K!hrsE#|(|(Lun0a2or0-o8RLwZ>v{<&pzY(bQkt=&_SmlQJ z_EGSZEE7;q#Vy1zQhoA>sf!JA^b~`aB~WgVZHRTeELayD&zSw=^iplAf$fz>WTz3f ziTYbu@Au8Na}?ZD7M18puk$RViGLRx3Dk?XI- zL7srgo+Y(HHNpK4rITyr!>Ya|^8E13j>o1wYy4Dof8)O@o>JCG)Zt@k#)nu|wi^gd z;rzh(sF?rhea=&H8gjOLd6Ec6UtTa6V-NC*XEH;Pk8hLiV84aFg|E{d><%|8d`=or zf)+syEiL&qC|=T1!JwKXY0WMgzqBy((8 z;xVKCxUMv$Nf~3p^v>9f$sscdA-<-I5B94vM^Yx+xjMZFX6UXwDg9|wR8ZBt`lF)S zJZ%PSq4>1O2gRam1@&8u*sKi@zcF37PSwnF3!Naz$A2Kmx6qZ^LgMw;(WmAn%e{#` zK5WNi?mlj;(MwJAA*QPyat%*hJw;$OH`b#XJ zcTxJ*X>kt15RHj_lc;3Ez)*dsst}NR1SVd)y0^^JQuc>0%-1$d1vVPZew$|^T%~jd zrUku(WBl?wX7$P=a8cL?vWksaHR!Q=E8zX*q=I!W>Y1A=<7az;l(kC|%dLn$b~Gh> zXt;;wlg|h@toOasSa#7FQg-a81 z${yFhR}H)f?61&Tl%!*pvFB$tQ>3 zj*>Xkp#>Lsx@jWo#McLh%m4WjN`6gZJlpI|ON`weBi;*ySH3jbX}r;F%5vNnqoR;X z!~q8-BORLm(!RkI-%-i!c#PHZw&Q*~;2++QN<2ug1fkDvqeH)4+?$$!%(tld-P9>) zHK`jLE$GpM?n}-X_|lJrOnJ6iN4nkzCiY{~H`MxO6l7jc62=uD!@^>)LV(myTHp9S z8T#OV8Uv(CkR_q|F!?C@*uj%)rcFqE5ZRNOGmFBDr|Yu4R{v|dy?ZGZ{pfNx`93fE z2D?G2M-a>+U&C$*EbEi$Z3K z&bbNt{QWx#H^tcFNh)4^0aiRP6UFm+phZOBG>a><3%iS|i>phrOS8*N>FaxIzA}6X zfVY28^pPTRa7T`bTN^Cb6QY_i#zq#bEohIKJ%pep!Mxx&hg3Nib!|#yPj5v zjp#^^WA#`o6(9JC0-TndyUqxt{how=qO zas;ZY8G0UhQo5@A{30@ zx8=dpO4@`&{Ab(~S-kq5_f-3h>9tLzvA^=%T<+i1b=Inu`x@Dp?_XM{AlK*^m)`Z0 zL;jBD!)EbAiw^Vt1H_KCFReX)bG51O14&Fq>z> zFv zK1%m2-u53t|GeTUHP2%Dcd3Q<@6cv`%=E3^R4m{w6#t;O%z!f;eR(#?lw8?g+TwGs z-;q}97ne!V6c;VsJ76=3;QDcIDpTXpyxR6%`U!aNLaalLsBeW$RqMu=pZNr%{!f$W z;v;}Bs&I4))7*~#m1C_UZBd(r%hmL0Cv*Il?RAts*aZ%s3p(plf9`#siMtpKUiqt0mRz zojBoh^V^+)5XeWia~4w&npf;Dr(%jrEyR5Pk62-T<4^fUJ5}hi%IXIH%H9@ymQTPR z%-il)P=cWxZ&RG?d7gJazK6EZeun5@>CZk2tmMM9doirA9c{!^QPo1k$HMt$-<-_Qbz!4Vl4r+9zw8hedieBO*yK$2eO0OJWLdxDMhN^vydar3``q}= zc_foS(q!B^uXJgQn1gu2>=GE-l0j{SMh%gX6WMAeUrI#ZmnGEvfgZ9fG3Zpj38)DZ zK0z|;fPYY3HNA2{s0HiRD}pXNkWbZ~qv^4Qk_3K_h5LA&Mm>x@?3mSfCz8dmFz2>n zdWQ!vZAaEXgENy@W(3{#{w;<};74HKl46{QS02Tq=OgGb_s6dTeZU=Z`;V32I*8_5 zf3pO5EQ*(Cn-I(uV{4%z;X#J1*pymcIhYyc74gN7cJL1o)1l{*{C9#mi-l?@OO@~O zihxNkAp%84I`2HDuQ2L#37R@V9E^Z(U&o-W#VX&A?;d`C!bH-t>N!X>wNixU*{(5j zeo}b06hF##iKo`cble}qu+?hpUg$m`k$@|x?H2mxr8H8cODQx*fAp-8oFW-lPV#$V zbXz`vs6HeHay-W#Fj;&itUJn<3jZMjhX?V&5V89|eL~oio=%&6W-JM08GyH0`Z?y8 zGwpJ>SlDXQ+%ShFR>_A1pX&+T*^0uH6jxW}MV^GI6T zp=G`25XT-9S9X?a85R6({X_GFf@YTyT<{Bj0D2qtm*hb|t|bxv2n$2VLMAQt7{*Le z)6(N&hCE>hE2@EdbV?l4p$!EaONPOr{)8?TE(mfvqckCw?z%k}c*G?_`^cpH<@5WH z!S3Fss!qJsTTv?C)O#!zwkeu-TkV=W@wfc&;gaT(0SyV%R}?|aq$*gh%<9eBzF1p8 zcjx_{5Ez#hC6K>kL(_)4BV!^~HanwVsw&=~P0FQP@k7C*NuH;fI)W2Y5rF&)v>)V= ze}m!mH~}+-M$uFLhS%{yPy_~}|ex|9~ z@|}C81lqH{Wj^6B&t1U$K?!4(lcnvx6tmv7^+FRav(A_BWuQ~ z9psJ->Ns5adq9c!#Pj4i>YKx=cT0%*O*7=!JqLaTF{I%a{x)nMnx-6OA9gU?ZVfkY zXjktUt#WV85~|3yr2R%qbwzDB!chX+UxRdAEXWEV`JDy5VVTO(M410zCE{stEUKP7 zGq;274ETJRUTrerN(tO?9;4HT7h>KYA(2sltQgt~Hx|VAxw4CU3nCD{TJ+@Lm!fi` z$M*ps91tFe01VBxVoLHA{YGJi((?dECFp|ry4Hy~=Gj7~PP;u$1(%{pFJ)zLMEMHS z577b2cEa||hl(r_GsK4;$QB$~6A?X_uTtYvFe|v-(CAq}B#NFzmj#*IyYygO?6|O#T#e~<0 zJfPZHNg)O~=VcOGi-cxaOB0r0SBsQ9f8T8UF^_siIaV2(c_uYg(|vWeCU1T|Lzs8c z=(7}L2h)oBI%(yfO4GD{2ziwr9%L`{tTBXi(deC`WurC1zQA5O z&T{@IBBMjf>LH!<m zMm;?Z`jeJuS`c1s>MzW%ibpz}TIy&Unfmn) z$AD8XmUEr{r4EHE9KqgxYM!IqIkq|bS^a%wG^9`Ep7kI`Y}$ZF+7udHsQpZsf2(oE7h}liOOE?%o_OO^q$z@CC zzm1@CVEMx(qE@!~lpcQ4&ipB#v<0ruU8xp1*NXXsVsPhJJ!zBJAK~4xlI-t;feq(x zw($Slv;E%OiNkH|f9CCW-f{Ag<(qZ-#Bvi=ceYfIQcw?+${_;Q7r5?^soE|dSL|+U zg8PIUHWcW8CU+B{{c!bg#rg#_!>VUEyPf|p7eLGsTk-aTF`eJ;0tWroDRph~Ph#02 zc%`OYEjE16fOsr_c~l6*a??@w}hw3Gpr{`;G?9) zj5oic-uib;;y?AGEMi!;pLI}X&wBSP`>DMK{Fyz;bys`X8~TSsM7SU+d`+Z;w3OY_`6-@xz3Lv0ThS~ugo4Sce_zW?c@ z2yw(J9Xyz-@^MC9%!3VObmLe^K7&57KpP>p3vNwtV#tdlS#h8Br+obPMe_oyl8EqX zS2>yj@USVc&LkM~J{qTAZB=}H3?b!DV`4MfsKi#ST_{kAMBP^caTYQxxxdJSZ=%RK z+kfg&(p}=J+8=0P)8b&pHd62>_80O8_)rlY2Qkl6xFJ zkyR%t+!c@UFq=WdrubZ1bpVnn$c$==wBdL3h-pOZJYgQ*DGb&Vwe9c4`b(}{KcRIw ztf`InUe+Gv{b%0QY>t zo7ea9^^3|B?gQA5eN8o;9pU}$h1^`d8)i3mDeYA4DlS9AgG|*uSP8lVl1f1sjP`;vHP)xJIXCBJ1PsXQ@GT|?qcc@ zqFuoRPm=y_Lb$?wI)IE1@@^7Y+Yo+iSg@~nU!xl_`y~;*;dtTh;CSJ^d60+lXq-#m zk@{9gX!Xm&iAgjsC?)q}dRLA{@Llcqyb94H54EAg%ovwQS8v&FI(kDC3~FUsEO>0D zNOwmwL4l~mwpmzc=Ljb(5k~k;8xtGFuDm6O&k6>!i+-&;O*2J2Tj-xMGP=$1vQRjw z41RJ+G5^W7ra0TO_H7}AS{fhpG7t%M{b`r-&w?GUUn40<*sv2ew!}LmL%))rKXfok zu+;H&?fDgb8MN1uT`73CAfamRX|SI2bbDp z1o1RU+_E%Oi~N;}a(Yg`v8?$dCSIxs_$nF+d1NEst63KJ^>m5f5WSF$@nwvRVZBh^ zQ1+C_Ax@9PIh!*9+taO2zXV!`C*GR}4zf!+HBQM2?c7>15nGwnM?~n??M4xnQ&Z|A z{9k1{frq!yzc57s;sRsve*SNed9}J{4d))SQ#+eG#%n9BC&p-2QdI3n{MNyt4av~S zem!xHhRc`SKE89uo0af4Ihn{H2N?v7gBjLE5v}LHvvy@ zLiwv!T`;XWu%pdpjHVk(%9+@Ee}%v0aIW@#q~Waj=iLxk%7}>(g|rmstK`c}E!X>G zDow=WTxjme2ay`94pySUC|uijQ8~w=zw8(b*OAdf^bf%E{gLo875+aIGhswdR2DYB z*kEK@P3`6dm)fVG@h9$N57bL&_DZp5rt>f;-#7UJ+6sRa+Wz&58OW28T)YbBs^3ID zUB0BW;Q-8BL(h>HuR=W3M~4MMZEpi7i5kv~@j`_KI)8xDcq#bskG2Imm7kh1=Ex<7 z6$~&WzwX1$J;Ud(FEtw*{{rADX>BMW(+n6x4@oev)Icx z<&t7YV*K`)%0*eevytTNvs|HW2tF?xqs{k?#kAuYzNJkAw4TU7x!gl#gktM$$RX19=J#9{vvX8$RqGxV9UPhl&(Xp z%o!48x4r2#FjKfZQs9$<+{khu>ear~E3U}4Z@s{eeDM7ZDYC6(63LK$m zUPz-shrXXGJFlMdG1aHcWOi@X?16VFmKxs!+Q#wUOHXDfPn%lRp@~yep{XkWsPdNX z6_6ifL45GwsHyi#h(Ic6fW}-Z!12az`s;9Sq19*q-%(!Q=&3QU0J z8i@VQUf(AxkU^y$&?T_MS=f<#((|^5pJT934iI;z$1{^M=bBb$T0ZSf#Dn~zekppq z9phOxRK-nE#qpBOyOrqvnhr(9*ty#ts4BA4&GmSbo!D5KuM+*zgWETPfKHMjp;w+4 zzzg8-=du-sXd!t|F4jVztzAiv2DUX{uKjH2RMh9fTcf!a8p}e0c(PB`#T#%&)0Ze* z_fOC99pt{DB0h>gO1kEJdDVdqDXhBqda@975VTc!VZtJb77%&w#?OA+vTS(5?(rsH zJb8I?q68$cBd2ZtzJ3Px-OS&d?0C^$QQ;oB#BqOAno7|WmN;fSE@|u&rt9E#RHTt+T4Z%ka88mDp_S^aE-NaZ`)6c@^X=Q$LWrWHj16h zS^)j12ILe>x1Sh9`uP(78Bm5$|M^dD8#laG7Er|D54v&{xE?zGjK8zRZ866qoCBmx z79tBKGCERcfiCf$cgNxjdQRac;I$T)Y+#Tk4LwtP3_6yy&sJjfLYh8W)fLicNK%y z+dVx^z&om$`1gWKGGbUN_*dTzIL$0gsHaeUSCrQL=_ISD9p4U~sCT84~l&{M8_{kQ_ zVgouq8!RHNL?_M+Gr_19Gk8nw)b!1Jn=cfR6#R-Z8IruaLt^sKrG=Eb2L~JRB2w_~KPd7NrN~e?cDb(YtqL=T-1}+=3Oo zraFlavW>rGX!7>S6FU7Z@OFGTo(;(Iz8pWAD$~RGXJ|>rL2OEZXsTH=*U^%oJlk(P zob`0c(=zYR$<#b%Do>Z0^0rq7XQ}~!NkS-dM4OxpUeNpYYnx~6e4LfZK_GBK(1u%}*IAOWiWsz1t; z`bh8oVqW+mt?*$Q)Ofo+e6dtpc+SnntKh~9ZdKs-8pZF&_LkyNyzm)bCkMY|zc#fz z-_W#izAO#z3=%|e+M^hEm&VchIc+BMyR(Mlu=tkJjh|4|dJH+f81kQ;ENG=|KK~Xy zm){{@i*pfhJNcz%zV4~!c0s@yG*ReC*O_%d)TF%~yAmBa>_H3HCVq>XOgw1NK04@& zQ+TO*h!ISKaF#maoJ!S?r?|0_`sU&EjY97l#K*CB$a_2$E)zINZxkK;AD|I(o zJ1qv={c_Ws!-Vk}niM#_U47yCT-nKDR4+fv<_rA@{HpqO(#(F{x~HkDo$SCqheeeUqGh6q&atokLhiB#@i(g-i`kMMC21z~6rxM7zZw+)remlgu&b!w0x zQvavKDb6?`>pj8^sOFGO#%s6xw{a1Ar5#Czs2;TbZd~7X1^ouM{IYA$TP!A_VJ*EX zXm^OM#%pJ;Ry4LUF}fu*nONfl)f)sUw2WhYCd6_YEfBR%O9b3Ox6fW+Rd)Wi#&rsV zu19JPgXsDx>9h{PjX8X^_anpBIAR+D-j$JFm)$sY!wqNSH&qEX*bqkyB#G-o)81HW zBBS2rtHkP3tr?ACMwzBkfn2iaaNI+>DQf@E*JM;&+azM0Gp3!D1`MGjh0vq0 zq`+h*@LF2G&mM*U_;$svbLwZq$M(m<2XioL<@Bky7b!<%`d;VzTPmc-r88?;>u#*p zpUU#`c883RcBV(OBL4{E{Vtlvw-M!u{Yw@s~{l!QvW={)amx0LrSdu2;(i^B-g0_YwN`Aj{O2%?6E@XrCJ0t^DT&jal!5Suveyu24CkHd74nIw z{IlGldiyzSMoJ2rIj5~U3=;a2FZ>_E&N?X0rd{(P5S#$P86>y_cZWc5clY4#5?lfa z?ry=|-Q9z`yZhj_5AS!rvuF35t^J3pDQcKvp1Zs6?!K_juXg z$J!@+ah=|qo`d3h-zGSkPm_&QLpH^LITDK2nC=0!+o3}T;w>saTjp;!oO@B$xEt>G zdPD~-IxWt5RgGRV!Aoy~4mjDBH*vbg?S)V@Pwh&}L*{{gR;p}AP(Yh+K+6Kl-q}QS zYlzp2z@%(>n>)?X#UQwlCS2|LFFs2FGeg0*Fvzr9XOyAVxgiQsf2ghjQd3_IL z6BpIdK^Phs$A~vndA~5{!%#QBev2P6V{eswIrEB6_5saoq-jjw#HMQbSh9n<6!-zj z$@DMxgD0NT^dLMC6V@R>i@?A2MGF|q%cJkec3h^Y7cv?i)C)xzI?eWMTN z1%EwXO#4og=gAmLzTfj$5s@%%QnK%F=WAh+OZPzcP!ZQOyyoqbexwq(t)_L7FoBiu zboVi3>gPnstH&JLrJDaJ4~;;KlOSTatK&U#_d&NN$aRj#A^k*xx&L{iwT!9V1F??{ zj0{Foj|c8cpJ;BwdM!tJ<3#Q%kXIybNo(}=an6osQpJQeCfWHts8q_Gv39i65WcZR(F6q4^o(`EqQPR1W?^x&>$kTrQ`nSU%d#&hi(Vy{$&s zNms1DCm>gfrT{{vxsES0fT~g#>X0Y}f#UK^nzr1Pvx(^*XnZg<{Ys~5RqWg~4x48R z6rz?pe}^PKxYSU}3b{`M+81&S>jba&MXqh%sn!K`Tg$!{26xVu{MmPrbu1*m?*2Ff zpHxbBhc6)DCcRDq!O#q)M=+HKo$wf__;-fYHduUkC;Ga!Q;o&ut~YqUbi zJyZy%TYKDAY?^iKQj_K1;J&V~MCf8Phrxh5bJ&n-6dR&bcopNCnV|o89M09A#HWr| zGnJz3zzxzn(TIK_AcHr*{pCS&bGh0C*=nUJ4wv1UCa#z8zhM<2prAtjFS$SP5(V;2 z@(+o1zxv}W7YH|NI><}e-$~HTGf8(7c_31TRQ?bm@cBIo3N`%y0D1fmC&4o;EW(HP z?|tPy1IRC=%;O8!0@(~c@KJgDlnZ}l^J;F7))iYuJv==rTb9+PBA z8cd)k?ClLKE8ZE33yF@7mNGxU<8E6!J!>{~t`8miyfYBhZC%-P>DSvV;QPL*>N%}K zW6a#UMq?}k>5|jq&(K=^U!yj?aBTkyB5WLy!{k;v70V#}ivD1}bw+OT=$IHdI48jP z3kroKX%TTdhvX3xx%b~-4#}UXvmG6epLsZR@4%ZcKJXoCs1x(Oo8FtiTvVEZj610V zon+a3COT7M;*K9Z^tJH$UZ?Zf>&x6=NvX^u`pAYUNo47zn}{Y?tw#_i68+!I(0`TF+gs-&d?Nn^5B*QFD9YEjZU?qWO;Gut z+FqxF3Sj%6tu1eV;T!+^E??f>`{ozNS6^Vkp8=|4XA zGZzYq%KwEe{Vy+3o?#1U(Ltx?-~4FCcpZNBji!il58kfnmfYb>7SasIp*A@= zNl8M|O`y*vre14~fzRVQ4lUmIEnx9QZ>ib!;tylDl9tMm`bmV!QQ`D1<`_deW5hku zsd!2-P}`m4c1;E&I#^%ofD4A~;()_|1-|6;bQv*f#wOuAP)*jb-bT-CsV3Z@pz@UR z$fjA7?-vZ9zGveM#$oh69*@Fz)e19dB3oriS6?3krJeo%DD8b1Q;JBsOSk!7qzRDt zqc=FkcF>N3@Hr6=JeDxf=I)tQ>doKXR1UxL?^6vk*avtEYKpjaLh4L^T{V5b3XH8z zlU~f}tz2NYdNEKp;R9n^DV-@1sePH&2jPi4C!O0?Dm);{4IKbI>IcMUmBPa3(H;Az zsVw$#2r(&OF>-9mle9>r>sk5(nc<&GRB1Anhni~h@rMlX+&S_h1f=$AU2QlO&44$+W20Aa;$@!jdo33xKYJKA0G z$&R=wh0M~m+8<2lHf}3Jtaa}%Z9U%Jt`Lv>UojK$Xr^NJIHHyX{x^K^zrpOo{^2CU z?yv1#_L;>e`ro@>$1?Z{FOgibA>#E({Pgfx&C&6>94TSpc8hcxY<&R&#Hcd7A1Is? zyJakm+oaH`_`2jqwD>v{JLuQLlq^4Mmw6Hl8jEEGO^2Rv^<3}olM2WiY^7f#;c#FR z((KF55IeotHP|)34+yY>ur?Ju#uqh<1Z6mjLq&v7x^GWaLJ*(y%k_BPg1hrl*v$lc zWTXpq68^C9bqA{elO{b1|M%opz_g7ND9c!##RTN?b>#se57T?T7}3cD1)*HVj6bEO znGLZHKdTqQJj)?phmpS_60)Dxh4FzO{xV_%AZg>r6#hmMkUfr~`JZ|@>{Mk3lCxKGW6%~m zC>Bnx(#EfTOHIL)90iQABBcN%@iK%ZL;K9!66__Mg^vZGC}R4`>n~;c->3<63%jekA-LJ(@W(5z7@sEIzzfiI(KFDwj-#2tZXI?s(4K4d`XQn7<~q3ufBxw z3OgqKig9~=Q%;0q*?=3cQLtVwZr*;M#R<4c1uSsHtX@ALTEVwXdcq=>o_Z5|{n9m= z;8CSt+DB@AU4tPF#%to{SG$O_d*mp6_W+=fdqHbtSf_Q4*Hw1OR_yX@MmO;@e!dkC z-ql<`>^n)9jGUk4GEof0cOx7Rb`#blGlCsxywV=bHbL7FDBdi9JTLy32Q}92A7$AH z#kVurHS!J3lY6-6*C1VZcs+T}99TVvjr6nl3T#)u*q7S_4=zt4UQ>Jq8Ryw1|6WKm z;bjb#rHf{iU2J|!uDuV| z{u7Azv*WL!$=ls0P9IvqM#|NG68|hy(H)`q+ai{rRf=RO=)Ret93ZVyfbPN{i(e^8d=%FSTKkttfn~nW)SncCWtP3PB<6Wl>32lW16IL%{ zxDpz&Q=L5nE`3?ejd|~5TunBsW8o3)$@9&Ljx~07o6Ai&ml6Ii^E}&h(j=-WAC|%= z$Gzu%AaQs+5U;#;f5HUx`1A`(A|n(Fw$e+Ep?pcT-I6}QL%96(t?wGPrQbSKR<&nq z*f}k8BgW605_*f2wlQ<=MJ@bm>*oL}2P)o}(@_}95*3%h}7epSGYJq7X zS;Dx3`7y2S8)RQubO@^VQ_u?Ky}=DzIX?FSD_)1eS9&5`W>h`2H!DR|k(#$*=-`fC z_#W>dczxd}pg!{R-cv4OQ%KmJ!*OtxSSJaC?Xkq7$9|3KIKAX;FpOS{={FG(pefkq zlGaFQt)woF?emKagQ+?*2tl$*s-yZS2Yi0 z&32#OoKx@g`7e5fz3VuwTc(o*zVR;s(zC4;RW?O~rPe4f%0IhiNzVIr<26h<(j6aw z>y%nt1-FZ`m`VAk4HBO~CYw$cix^k?UlECJhkx)F^A{Aya^(;2S+2U&kSwPRt&P+( zUMo53-}{6GRoNV7heEXjEo6(>spvbU}4NN6kW6N zcZN|NOUR2}N}x40bo!#ecW-*O_mN>N@;qco!zw&vza+7~{Xh}>i#mo8i%s~FCC`&l zCyPFo5K~+}{EP3f*NrFOTah>CCNH%F7|RzjdT~;%M=;DcZ3mBQi<6J;<{>q$;c#&B zs2$EO>$Z3%B;R(1CQkQAw=tAaf+m$B%EHZ8i?hM;D@%mH={K*ZC~n5i76z4WAp*vF zg&Tg}_VT@qDvRH#nkbao3<)A}OkW>PIZ*x08IUNll)PS=@+^r?YLWBPooh<#>!vkB z7AK4;jm{0s*_P*9&?RWUX_`a1IuJa4E(=SZv*bK8dP$))f*0GGE8*xI`|7jD9*uT) zL6YC}x$&Lvc)6FhUJXdOp-~*CNRcZe!u;9-BfHD3_h&OQB^%bKO&&+x6nH*`FX(?q zO)=i|UY#LfNoLkEmqOg`mJ|DcJoXK>ASEi2#sYf}Yhz%zByHC?> zI@AFMvBRmBRAg!N5)xb0;!CAmH3CA2de$$Jzu;7au7*i>V=OsrY!sp;iU_n^YYZ{! z?zaYwKXIy(*m8rA2_nv}-J2ZFuj;TVP8*MN5w>$~W_~|VDz!^_HI;c$5o)lYpBge! z%qB``o?2=9e%kbSY`F9w-8nN;_WfN*@Y$nD^ID9Fh}x<50r$u<*Up@~}VRLU`{95>3UADmcFa7=01e76Onsr~ZJx`XZt(D<|L_ISf!mneMJTN9#ax zE9dePn2V>GqlbJ8X60I&_=D&9Llw2wh=!*+i~F(UJk^KI_iMJ(%RFah=*6i-@g= z+uw~dV*Gfk)$pxL&FKM4Q#5S%#ok{=rS(Ycp^yoEflw3hn$IklbSYBc>7tVsX}|X9 z=sXEYAsuqT^gp$FZjwdi-WIKMm4DXvRw*t?LqCOzM`4>^qc=~2n)V#Z47LESe zJZnsb%uUDk(X$2hFVBt8O-#`CXF9c}#AXqmnhouC7EPBssV8&oQ;&8-K?}pxF%Y4= zX!kPUoc0-`&EucKEc8r=ODmax66~^n%NI`pnK2R&T|OVtZp#00Uurq zIJT~4`}fGns-j`wOSja=Ke`g9!yM~eGlYbFp+q3MP(_Adp9BV}bVPOA6Gw>uQQV+S z%I`+mlkbeG81Y5F8;04GN)ejgq@5hC?b5vkZIvOc{YwW25cuE7#+GgsskVxaPh za);6VYFRT2(j8O;p1!Aj!;uJLkqSkZfa%+svd>|<7nnI|1IEKmMdqmPsoKp!i?O+a zjcC=f!CK$mPESZSnc&EPO*F7imLmQfiupfgYy8t@KA;9uBlQ0Kp`B-WPEwxHH=)3Lz~%0_MxR@T z7?gz=6k>)mp%+gDf`ZOlXX<%6X~F-;e%uG}0)WL4yND#Q3U&U+CLZteqxl=U`>j6# zx{IXa7{=I?irsfBH#@{lyZ)U2ke}}_cLplb&EPz<*ntD?P|}waf%W|)N$|3+#aq{N z0C)_>7d`W(ro(w=r?4gua@*$^f0#^k15uijY5gQ)urMqy7S}{(1f3p!ZoR(b0b(ED zd(*5*vU}F~xL3M84RbDW;%$%+^Ic||MO1q`(LJxfuF?B({6I^F8SzpT zj(N&K)Quj~pOg|luDwQ=cX~FKwXww}Ct|$aW8O;=kCZ*;ce5CB=2q6PFr>45St!o<=kEh@wrFCRvfHoMGH z`tq{<2ta5!&K*#qGe!8EfKGRngI96i@C9wU^mzxMkBZ^``BX-yA94Re%Y!vW>Mf6= z9H#eD$XJ}Zi57co?|yFBA}@LDIfzmKxdl^>OR6CTxRA}|#|6EQ2XWqWQ$xIkHI8#| z?uYd=;G?QmXLhvOOQwaq%Tk*CJGViC#V)o*Zxawlo zrSTj0o5F(V%H}QRC;6B<<`a;7{HDZVK$(2DE6Tp-X4GCpp~h+MkxNXeCOpK&Kyd2B?mZ&2z@)T@wvX zRv)LO`&l?fmfT|}7qrz!e^HW!YI+J7s+Z_zLVOnMst>s_BYkRBkep(G^9$%eubXJu z>v5x^f93SL`SjfKyorUKAQ?u>ua1dk`Tb%8_rY=2xvtR!F-B~sOVj4u z1bfOA7sZQC!Kza83?NI6Ba}pJSyij2^p09LUj*`4QhV`O1hM3Q#zYR(eerscalaX> zoun`aw8(I*eo|4Iyv%%z_Hhvkqo}}TOIH)Ugf!wJ&7I+$(VfZNLFNZ8Qh~-f22CD@ z9h9LBtS@ZK_$|5&Y~ zv#ha&z8_=AdlN68G1pY*XtNkcPp}8zBT}0J(_cK1!qjUt7sq>VRT9qNU)f2{tW_jb zCVm_%>q=gwvm_l{%@7|r;2S0!XN}GOd8j*6nOF!peTZL_sXITr-_YtB%>q6m-a2?) z^H@acM5`J*jw*60s8;XvTT`RBI$<&he&1%_r6J45>+bTd6x<26sw;OX_OYDPmHI2F8G&95Y38{tXd(8M+sms5nc>(ZWbcLs1lOPK&;7}Tu*4d z1%mjE-RUi2cJYkqBY~&@ob3#K41e+S7jIrm+|!kYkvIig7#h5?S62d0Cd1+Y2tMS= z$LbHAa7bURR$HP5ts8D0Ow*4%ykOU1o8Wrt_8-?qmWWzu{W#$qVl~cduWP*ObeAOF z#71tOn?!jauPcc5BwvaP#=Xrruy1=ga!7cVIr`kE7ep_lmr|@NhjW)Kb3%&`J;R4L z?$cDj7^ry~o@|}=9Clzc78Cd4|4=9Blw=Ke&`WdFyeM6ygeVe1pi zz{S6mghKD^FgCxmo*i7xvW8P_33i@$pZA{+pO2kSozI;knL7b~t*_GXX6lV|6##!I z?}Qu!{?ja3GMXQX{M!)$487{gN4IvCNExzG7wkVvJ!){?$1e0|vRp`_7utp+B+x zx4k)1*sowKjcA=?^%#krG4UOQy*&0;)dWCnwul)P4$zwJ`cf3;FC5HR+$RXgsE*xu zID_-OV}JYnJgfd<*5ZMu8TkYja1dNirJ(Xf34XfNLy(ZNU90IhvH=i})yybJ>;!zR ztywh}8Z0)Sfctm&R$HfQff+5kmmLcW@drU0OT0IYJp4{-3whSKuC?Ka=jegRE;|D> zmlC~1`?ZDmz5Q;aEQl}MfSq*4rjusLv&%_VJff){XJs-6F_!_PsY)f)Ud5=($$iLTJ1vn?Hcs=@pcI)2nhV?JTO%(*X`P?p$BV~WS`+UAeeL~TA&XSId z_C-sxofPQs`INt3x%~1N1dMt}Kr*9|Gx^i&1O>_t=N&w`DIfqLc_XPCSc|1`xZQI5xj* zw{zP0?}E#RQzKA4D=1SUL@KY98!E@&>7zmLso{tClRxf|?;uRNxUk1rlVT0TiQU#v z%Mz~4j@uvIZ65)FFf7-v+PTj(1wRKrK>bHYQ|!5QxiicXf92MD1d6S)DkT#l5AQ=2 z;0bJy&?X`JOLD>6Srp?TJs zQ1}cgQ{=TiG8OQS#Yc0DcC#w8_=29})gRXB|f8VR8V_ z@_aBr?7@{oOp)U#LL-=#oBESgveyoNN>gMr9QCP%oJCm!7fRAnV>%X5b=$kmr%qh> z{tU#`Q!=>FUUQ#rdH9><=j9%iDw_ykGuOYT6r;cF>z%OPOxPqrn<_!st+J zyq~si9~4n=3{rD2TrpDy{hgHkr0loi6U($ItA;Wjl22e_fpyHTzeYv#yRkq%oiP5H zb+sggseqQ&y^aJ4_6o_1_tlwwX-Tcu01O~lvb27|(Fv*)7+?TLKGqnVG1vAEd`=UY zC1=Ge) zzQ%BaM> z=eZr&f;m?YsakpD715dSUGKnq7b?AcFB@ww^BO$=f~AjJQ>37lec^;8VP+a7)}hH@ z-dc<~I*QqQ>KXj4v^haW>KgeT+KiQ&1Z2dqmLusqn-Q*^K z@eVFz4=_Zrcy1AKdEG>Bjb{HRXmFqP5DGs-^}bXWL6A_5AqTRyM6KhOaSPMM!!BBT zS#+P^2R3NkJB!lW)OM-zhg{h5^sll~%ZC(%PcvaT4zQVQZHv-P1U5HCo-ndqia>!_x#DcYtxkI7g%Bd>w9`eIYCd-!iSj$rTxhi>l3ZlpPz$0lY)8=UsTv zYdEn2SgL(zh&W*`Uoig)8=jhxhOzf-$~^AGrgH8hI4dGO<7a60*t7&74B-Iqy>8Wf zG0*q>vn?AP2a!deGVG!Vity?6Z9X78?F!fKQHVXPU5x&TEWsCokL(V^=XCgWil0_X z*W-?TWWb^hWcEFrMX^mfeQgPBKme;rxwCZ>cGGwBcgxZPi7tyRtU`w&9G7irWfa5W z?i`ykxx7(${?sS7KlqHGz@gwN*f!Fh5*);k|#Nke>$)2Xs}(Sw~$qC0G3Es~6npQZh!sR&$2`!p|*$--mA@ z3(FSq&I|9tt?vGdx4+ZPZuYbdnCZ$-YFgl5)FxIiDi~uso3&K7iyvz_KM&TN(rVj|3IR-3d-Kg#kLu?Ym9hSn!B2W6b=TpD+Hf)8T z`@PkL6=w;f9XrYQQ_$EZGrl15`w-8BT=U8kV6a4QdZzH*9Ka>{qqd6HYIgB7c%0tVyOE zdz#mczRabFekRiJd4m5;Y^iRS297Cn!fu}*Z!LWK@{L8p@u)oAjXQiGYD_1Hkz{kw zcn*?cUDsp#Lj6B}!atIm{_K_dS?0Jyanjtj#aq zU>a;nm5({u7H=)9hd~Sb!K5EJkCU67m8(mQ*_(oWrcU{k)R>Vy&z7yaoshd&pPgre z&TbR7X~MonhN)O$0)jGcL@2lHC_boE3;!NEdpgHw#`)tas-PiMk=^vU&s?Si7o(5s zJCwmUOBAYJ6Jwn`-EtnK%$yJp%=f|aRrU+sCc=Y>Lv@s2*qtvehJB$~blOeh<5@xn z^OYs}Ra29bIr*DAh6iBBp?+s#hvNNGY<%(EZd9Jk8G}8!ctt7|EU*GK*PXyv_8ZN#t=ZPn{lX(gJk7pJjp13N6xSV(!*oyR9ylsOZe41P;t3Jov;RDUfM0$;4fJu)&v`iwyX zSl&h+ukrDZ;UZ{Y<|$~`sMt&T$4=N5Q^=q1{C zPLM#Po6{T4>Z__ZPm9Bldy#RgaIMz5Z%<6VsDH&BhcPVE@7VRmk!!LJ-IcO*%cPH* zk=s>KB#Y}a5ZYOJvMRE4iQvBrUxS`nIBT%|bUJ<}LfgB#zb8!HBGaO9!apxGbB>?5 z&5V&xy2oJ~7f-q*>vwoeqd}X~El0}5Ga_)>elQO27&q76FDTLEV7F=8?Qb@=Q(6pg zjvBA~1ZkwR3xmW4VEjeZ+vL5-2rY#aCbvBdcvvR$T!&&Gp#BcD7>AEzIk|~j@w-Ni z3?#VmLeJVU(TAIY=HTw-NY}%Ax*=H7=`w=^*=shY3E;jTk^M_f3*!mt;2VULfgGgt-12S6|-K8?Z$g5#bL>W0z^$Y zOw|b+V=La#=;V*M(F)M60z&v?tvJQVT;UQx`HS+B;j@sEA@O8pg-5S~H$N09=VMD< z=4n~hc{f_4zUM#mCG=k&&K&CC^c78GFr{bIng&ajjIJU{K8T4+1!r5BW88EqY17N8 zI|umQ9dn#zxBPjRVszi}p<(cCFr)<4&p0>FQRduFG;^oK8PDzWNMecgft;y7pASA* zfI<(ic-4Vrq=S<)t6WPd^vn3nb!cqqrePjI89R83Y`tfydfM*9#NE0?SF0@CDS(xX1BE8aNd8+IYUm-#@>~rP!mK#8_J? z2|8GHhPaCX)!PB9mQ+Y`CCJEG?gE8OfAJPl<6d=~DTGyQ&(MCm-Ge??ohTR&_Z+od zb!qCDN_jNk_K&)=f!tKont2@6nV9O{$!Y)K-)8|&`cMnNAlcs_+PW4t4=5^l9vatcHAmQJv)GDBGivo3hrZ z&Fo+D9)t@M4{wPylxW1@5~gzbAke<+FpIv0%Rr^ZR%H@K1A(}NrY8e2kZG=t6s8r! zh?wI=nrNf%2zqL4=%5(h^w6f(TmiH>6Na@V=XX-slv!| zrQCQ@PC$_m8ys9o>lT^W_*R(_7n@)Z2tC32kZQ@tY9e0HOcn^&`&aA*&weki40J{k zmCA_A)WUG)!1~hJWgk!5YnfF0_K>gz+9y-Z)s~zb{-L3{D#uW=r1Z|q%$3e?CZv9& z62ymQKo*kPrf)Q!Uzsh{9Yq0hJSQfir`Z3n7($KXU2%E0gsYeaAT!fwhbFpDzDxmO zwfo(l0%4yDU~mQp2jNLQs)2MEJ~n?sDmuDwTYpG5C--6(NL*)atEOTjH}?Ws0f# zgSF@mKj^&WpCuwZr>! zR#{ZQ5t3%;IW9hhDdAx7$kV+7;!WO@Qg!xqi5C=~ zeRgUscw1TNAHZV@EWeRqIe;riNH=>L23Aevl=K7hJQydJC)ZnU z@_A(bsCD;%@8Mg+COXTs-OF^j{o*{xvpj6;>Qz6w5~ zVbw!AVDj;$IK2E+p)e$XBQDOIj9lZaGz^#LU1)?uH9UW1`wq!dgcin;b#(C3Vs0*P zuUVPA#J`fDuL=9eFn=*%v?40O)v9ak2M@vN^1v4IPjX%QVkQPcUh2}`=fXmv#2f4W5`dew6!FuE)l0C{{IVhWQHymGOM^dffO zE;k>M!=3G{3!ZA37S+Z2*krDx*;JnNbcMbUdiEE$VBG4kGgbGQy!Ums)dMb(BR5m?vBC$c++t01vR@%F}VjfFD)pA_tMFiNkeSXq^+ zx3t#UJPQG&3XAixn)|~+el9ovr1-`EDAxa%yxzABdjLeKa ztIW5XSzvFrUm5r_-7SeO&*W!b>ATV#6XQ=_sGRRK2V`wHY?A@KW0Vf4-M6ol6Xo(I z&H5a;F*VX@!>dSAPl*@@NZgYk8ro$qn$O-eOap2!4W{f!p!#%?3dXkA?Z9AvVp@`z z$YVJkEwvnG(DJVA`q{>95cBJ6|8Gy{4#`MJw@8G0XV_7_mkz7>1^onkCI(&O3b(0X z8dl_|?jMS5Q^l{P`4M?GxsD;A@i4@`Z|UWoJR)g z{UCQ$>KF9;jG0?1&}@Dt7aGR1YhC?P=RH{$O$~HKu*2GJ&XNf+Ic6r z;4|%D20q1Tzn@7x8CmVPDAHn|jJT>J$ep9GjQn&da_oBsbt>X|vd(z4RdOfK4GvYp zNpxTYavhtit5@A2x?qJv|v%yh0RJegEDaMUSZLIrcPbj$%^4Tnj*zy@dEI*P9V-8 zXMApx%sg5eKEccC4~~t1^cOhvkZVR|HhcC}?YF^4@)|yXXbV1D_modEA$d=Juk8X%=I?{ zKKQ=G3XCIJ?@<{E#`Hmj6N!|dUvu(n@~8&eOnFYo4^+-%rRzPmdlhjV`V zS9s5tO1G=p3y`$F&j*se*~h86@i_+07EvH*< zHKsw;>{_}HKky;89=c5?Su<$<&<4o_b=t3yziR%NXZg5BJ5M$W^Oh)M@b@|n7oV)> zJ*!SCW$!0tfCCjXYyA2Wm4?~HUbq({mZUkl$>1=hFZl0L>d~)CZL}n*yOE5+-bE|8 zbl5WMYATV{8rtjjM4Z(fdU&H!S@0)I5^7zfbkC0-0=R$TjPS!Pa9Gg6O*v*|!;j{- zM3Rh&#DsNjMj%#n(e*r(|0Z+HlgXiYuD{mZ0UBTet*HhX^1&?*Fu<$T?UAlL%_wv& zhj3y8nd@4ux1_cDu3KD&&p$y55YwUaQ;D(+<$9hoKnkqc$uAhG<8aRv=<(>Z{zAy5 zl+JFP;ERkGKo@X%=3ZZT0Ph)J@f=!rHk#j5E|c&iU-8HS6zP6BefW|DjDmUeOfBxL zfm)2d)lXJjN5>C$f^eEBfbPDoBasXW;WX^Z*#x8PsTDw&w$ma!YY%&?oaB30LU;-z zExLhekn~ap?KxxnD~CUhuYI}wk)qZ9iq6}~w%!`RVC)mq!Vn#=eQyv;{)?J%{}K*v<)@8$qaO#4AGmXQUMzV%eiGc9eW=oxCdo58 zBK@+797NVEJ9&PQ@?FKOtT#1;V_Y)SZ=_KY#}TU;$2%Qg|KnTf_=hnQx!IlZsme1^_D#J0PdQYCDzdk>>VHM}uk$aA$=`@rcl zyuI;j3Tj`A9DnmBdoh1QrBYfS-xE1%E6ta?mk1+fLz|oryEw7* zQVQucW_a3v3$poZiN|*{Y_2i-kd=(QBgDnmb>aoyZj_W;qe$Z@&%I|TfH!{lz@V(0 z9|j{EGh_EB-l*2&(r>o?(pIhMii4NOm=oziyLlq8EqchhLu00M(A~8dMRwfD%OxI& zyg%bQU({{c!q(nRy_?FDH6HwPy^ChAXC1eMxOc%3GBJHJY=><X;Yv{JT( zHBjiZGSpg#`}{GZ?OX6KR*Eu|<3!oA;7fu$OAbMo*9yO~d%cgX{8k|e1V}imc#w#3 zDJNBF4t1tmF85kF1g~0^s@YsNZ4faFt>`5Xm6$!r=X`Z+J-Dd$U1=)EGPyzX(iW{w zx#`avv)o!IBml!9*V>y%lcd;8WC)m}+~-2(boGN;(mRl_z#onzBtHN9EI{34Rl}0o zWR(0W#PB;2p!T$C(Xq4Cm#fi&2XuAlY}aK_@K!v9|xnXDqQ1Hnhmy=Tb4+uF0n>@TPs6 zzgcNXbIeC7S5FwsC{fZJN}x-WyNkkD<4%wMeD%O<%bZtqb>x1`zB#@rh&g0PU zCWh7eoT64T&$Pt6XBU!<)^uM4mY{Al&V&4M^mC&O!(Z51axc z1(}gtso&*HLS`T17*<(raFO@)+TC8;o;-N828+-xlX>1iWjO6$o!E2zah(*Iy$4bb z#Cea%D;XzS1c{P**Cq>`#pC#d&WF({lgSd?4E`aWu}=-csHPbDddECZy=1@$Pn`+ z4^I9j_D9?wH?pN^Z&wS4>dG@-%NTr%uO)DmK$+U1X?`hM0+y&slHFA}t_-7YE@Han zPB}^l#_@O^sq4W|t7SEwNU>%^B&~9hRJ)O*@}cXVh8dU~4n)uQTvt!DHlxrwQN+l; z4Fie`E4T^f$%2D>RXUG?w&153)`A~aRsv={zx^$zP5=ceYFqWwY){yCv2g&e3ee!lMT><8`CMtf7EA84 z^C5o4e9@?ku&RH6SFhUQDD+kuNFcF2IQWa8L(ev87wtx(30|l>$GX?L z&-}~H0{y^)CrDAXsi(zXp*T_AHAY4_%hg3&Tj+#e?u=|GI=xvRhA8#qZ};ah0)S%= z#aRn}i~!ZY*XgGMX=37**yB?xMUMrVG-OFlGc+;)Z5EuBZ=#czfoZWf;n#>}Htjju z0ur8Qd3;IF3s@%rrR$C?k+k|=0U6ig&j&ae(1@6S_h560?0L>q1MtQssjY_=dDT~sFkLft4sq-y=83(pZGD8I^Ka>oq?N3mMQq}4!R06>gHOTjz>`&^j;D)^ z(NLzQ*@^Q;QQW$ABBRA~8v z?(XjHPJ#w^cXxMpcX#*3PVwx$zi+>1yyN@=x|^!%s#UYroNM0q#SX4D@@oh!s&>Es zMvS2N@x3qWV}RY0e0#NuiGcWtp#10XF>>eW&D%@d!!xS{l(qO6*3{2gIW#O{x#3&m z$TS4NN-J&Jf?B&CUDIqGSw5Pj=NwehX14mwf>cg zb<}Qq+$-x#TEJ}iId6A}od9RXm#e0fBR+=aHc6~;%N7@y^I?m$Sl0n z!vTN%t)#gvv3}YXH@MK!Que1Dp_^`tvU>Lb@dCb?cIo`iP+qfbDT`?*t*iBntclf8 z)b110F0?r~vG z8J_|aF}1y%i_~2yWowSxuz;V%a%DM?-7T5==8Bmp|J0gtVHr-1z37+2TW*H~{6Bad z^^x2RdEtt@5*QLazRO}#Ph5##I#@(xZ4IGbeU2J;pXW%74nP2qD=N(Kmy~l7=&i=UShGI&WFz-MC^m6!hoUBVyTExZIiYXCFql6t7u671{?7Z z!at4Q<#cKJ>P}4jP>btCBfWX=(@%$7M|8WjVD46c%>Emu@wb&?V062F zn|@MX*(0B0464V6SIJec%hZLSpLF?Nif0MYv0AlSlwYZ?UzQZJ=ob5sD_l}W;pAXy zbKM(9MxjcnG4sgA9kTGt?=xJ+?KAe!tJ5sKoJT%_obPA{dAIjaJxQ&jj+%Q7`Gi(k z6O5*cswtyKfX?P+BDa)A{1JfhtL%2ECt>4$)6}L zRL?_u=i4n=^CZk~7zrtwv<_bTBj52uL5_5WYn>|Pck~XR<@%$m8UBKtSmwv^u)ZP1 z!j`@Pc&HdzWn(8Jp{>O?Usgl)JcUOK&33C=0L6xzcB%betb6$-yrkSczT+;Jv0YTh z0ma2`PakwqwAq4ti9!&(G*gYUbpTO<@9pgMDizuuuI9B0M&Xv(Di*f8@ivn zUsk3wkRGntqLh7<;{d~4qfGP}cs^dh9YD0?3-j){liUhBG6L$TEga`1CAy-+e4ISk zFB@=F+J4%sK;w7ZNP3KE!qv;kyFI$4h3Z_n0)f=sfy8)=c+6s!nhF>${KKU**{Jwy zJrMAc(TpK1694GIl*f7gNnags4u4D+UQ)^_royZdjQBlpu-bq?Nn1K&_`>jLVm)u_ z-x!bZjN59Qu*YmnBYDsE;P*EeX87~KVRq`GGYSuu-Zo$b#Dw(#tB9_Rc_J4bmDc#9 zgJ0C{%iD0MpZ!V6`8g^d=E2SnH^-r!USH?t!R^7jZ;o|FLh(ylMFtmrVbL(G4ygH5 zCYvLi*iMT&m~@7ZCW*Dqa|JxX4yf0@N>o<1cZGVplgxl$kg2Rc(d&qN#?5c zwrGRZ&MkiS^SuBygh1P^eRR^+%56s`DhOJHhDiIhR7boKwZ;LNDoykIv zuJ1h=Qq9?AV_vOKi3Q&quZ{TPt*N5g=c8Gr($(A#`awdU~8ox1}4@ zy-Xsz0(C@_@X%`0oXK^XcFMP&kk5vn@E2NiBq3~nc*QVdmXm-tR3ZT~6Af1vF6>12 z(VGLRGd31KeAf*2)KaDBD^fC%?CqRT_p@B; zxQl)j;`e&BsECV7j^Td^TPJmpfUG*>9;)08}lu!X+X7k;dJ1C#)^P&vN_}{O9^| z_-X;I;DWc6Tq8d71}}ryJNUCJS;spoPJ>&C;P?IZKbza^s!UsFx#hr=FN| zDysy?wd>I{>KgR~dnCta{b@ZG(NGbIN89 zK||s7*ZroaD*E+FDuA9zM#06E&C+k0H z1d~6c<`hAMz71hm^*hKO{E#`E)Lnzxx85aI>k6fTim5-`mh*pQ}*B#)D zq20bvjWOz4g8gzS4ex75zq~V*N`A17t(Hp|d833GhIZ@XjwUBzC#TY9^xnG+^f1$G zLb$2QPkA0!tMm#?Ay00)e}|LGa%b|OE?xJc!lEZGT&}X!>4I!I$}PJ&a;VLfpm!&f zUv+kxjoQXO)iY(6Oh_i?YiVaMbuEPFp3KGB6h(UY^zfN;xvh<#(gf`%C0g>5MG=Nf z^z*KuZJA@?XAsct4e51v#H=tlvicS|TU*D(;(U$Fdfi96D7Zeh%X&4}3boAnLhHbyHn9VK82;HaW3|`0)1< zqgQqIgVDFyTxL3_Txb)_`~TDe%0Vm{O(ldlWg}QVs4Sz(bNgOubtcDx-(`&Zv6J7U z8;Txo@e17@*KFFwi^&6}7rf3g4w4_y10v1uePm0~Zr9mZ3@=mWizH5-Q7F8bSI}Oc z0pMna&)QKUCbMouR%`&RMmxIId2dxncWcnH8ymGcfT)=F2UG!nN9m%&V=X%S2C9!T#K8KPneQN5|X#%s^H7cd%dUDdsBAQFfbBCpRky;J4q{1*_ zUP*X!pq5sUE!kJ&9t&REKpx%WPiw4M%p)wHymM96)o|BQl7NI3C>2u!3~>I{@Y3C{ zG-VqrkBh$Gyex}kOHgCXRBR3^ zJaCVOe1L4xs5n@RWHOLeYpT;6{IIggd1}AjnXl<`+z7Dg4{%arNi_wacKo48+B6n{xx6=YeWg#HnjJv zI(t3Au|h5aP))K3h6#uZGjDdiJRsXKM=|dGCl;;m%E<-P%7|Zp$cPAT5P-NI)w0*! z$OKqLT!}A;7-*&n9M=&rlTx*6(^A=JF`gsO)#!v>gYKD_C*V3DW=9yXy?*ZjD1sS_fMeK`Kx9rW?=&i$J_Ti6Vv48_cM?okjSJVlILe0NC zt+kpHUy)uN&^7Kax!xCVZXbXG))>foLO_saW4Sq58ekLUDh^lB-*yA)AA!shtDVF{ zz3AWHpA(1Of0FERUS#K8kiDaG91EjIe5WQy=C#qF8Ek%F^ZJI`GUc$kDP(KXd=Ii3 zNT>d@cB(PH5A#WMfBkjldgiVa`)1_4_+4x&2Ox)yXVc{I&n}`XvCJ9VsW$uJp57W# z%3h2KG{p9KC61-!Xf6m$l|(_6<3H+Pf3|r&4ZRjMyyAJ%G(H|r9{@@y(ZbVaJCmnL zJL2i5Von^He$#-QyU_h%(Fd81KqXIY(Jx8QeoYX#q%s0aDussiOTD?tGP1_yU=kMR^<---W~M-Z*{d3KnLCGBE0rN$g2IrMvcdTLIN?uR%h{e$-i zq4gpC!}I)pby4~tgp$WpY*7Dc({2o zrPHcjR7)=5BQ4f@HvR^jM=C#;YrP!Gf;=912$`*4;%ts)9ezzEc%(k~@TD7C(1oiu zgmJVmhW)H?7(CVbmIbJLt6CAceHJPNPJFST*S0``xh6e`%r^^&)0HNER*?XMLDto5 z>#J$!-VophgHvV|Pft81*kBS;zbjp@IQSWK`MQ?`!)r~uayXysc0h#zp^G2-8sSMG zLcW6Xb}Td(6nau)&mUC~L^(@3xV(cP=L z>oc$bwz6uyAg`JMI*Hb>fMf4`pBeb|ODlEdGuBUX%*J%mRr_SB@jGO>?shThS#x$p z9fkvvD|7?gK&tqHZ(D{D~0tV5PJ)6>@`> z7^yu*)Y$#8#q)*|P&efO-J(30RR31LybsW8uuRFjQgv}N6O4O25y@H>pElO!^G!bD zz&~I9zEZ*|5mTz69klM+Xncb8rA*jMb#r>^sI?IC#UmIR-Z{?Yy5bCwsC1f^8MpzzIeKG!LF$oRtsFjwZ+?~3vk@M9Cw z)VKJ#fzbSvgAt1yOdpcP- z%%2AuxVJOs()ZP7xU%rLz!$`2eyP+gJLweh5Joas4qT*tg3~O!_ChBmiXGB{lDx=|8-M;q-{t#~baubDyFL4e^Yt?^7Q;9wzed&)FIY>KPbdVVm9 zHd$lYJxZ}w3xLs%UWte9h^(*Nn|}Vj0;3-l<%gwyUxMO)fZq|D5$VTQje?;|G?9e! z1^1bYt4{x+_#3XAfNJ>5IRf~@7?zZ6E5oDnPH>Kp0O7SW7i4-S^xyw{Vdsy(zU9V6 zTFJhn_pqVLi;9+M{w_aQc@`W87T`r2a@eL(SYh>$YY1f7`!maC``;DrcDdBhOZz7p zh-pOix4tIr!*4Kd{T<5-57#k_3i9%}CKKMDF8)d9klW?LRDwV?lujKKNHFMc8}QIx z-Er;lN1xm?T)xz5tjAd`Elp`SB8LG)2dY#x()3cg?h(Vb3tpO2KIbHeB0rk906=Jm z*K9{-<6(@z6*5N#hq5)>p9ku1%OvU|mH2>^tjuSIN1)v?u7E%BgwUZO1x1+drp!tU zLWZUgfI!UD3$YWz2WcpAZfWx0(i8c9Wd4;m0r>tu8b7Z96=^_JM5s!N`6V~1b-I~= zjDDS14>28l{YygcBs(N@O}Y3Gp=sCF78DCoirHk-&b^fhAKc}loNLS#)Zr@&dMSK( zR+5xsshGjXof}no2CYxr3r!{UGz^_27fZJe?w))#EXjfdmRgj~ov2?s|ILaE{2#11 z&qQ~7rEA$fDq+g`+S^~Io@l!<%Q&)J%dsI}W6)Ia?tnSFyLcD!wnM4HNDzie0MMNz zQ#=&VYPt>0!y~sx)+63GFMXrMjP$_53~Ht`I*I?WzNzJQ%Y_mc^zJ-X4ziT z0+_Pv&;aAnVSpg_@DU&*gRkpe?_zAR!G0b|6^S7*6ZGO*iS`82!f*Po1*(@Vcw-ka z7a9i+<@UJ%*HbJ8D5Q9v&igKW{_NSSp1}{0jg9BzPRYc*hiCd#WdN)o?F5bYM^yVJ z{>A4hE^dGodNb~=c(a~uL7}93!u`0slKal&^B`;k1I(|%c}RSl{!+^;Xsy3{`sng} z1py8=Ovi(FH=`O7#%mdSpAVBKTvHKwy&FNfw9%;#8W~Xw5m4M~B3a#5Qn)kmZOzSa zrMOEGONzVg26&<@i?m>7u=JebgkGg?rwyIpV+5zC{Lv+j}$XzYDvk+~nx5PAyv9 z1!#s{)E^jnA+CFmGChP|kf0~xG(3U=(I#yJY-IohIi-}W{km~?RBP851C(6=n&t9x zUleYAv105h1-h96S%XUqT8?MLYiUlu>RNhh*17SdsQ#sMP5JVtEn2zFnr{CFfiUk3 ze{e8&(?-D3ICfy`T)KvQsUq;*zBMqpfb75hWq`&n0>~f5|C=joNA3Hmn%Bh1RNf&b zV)}m?+n`|l%WT-=ow>)uBIB}mwOhdSi-9UsBIX2sKHd0?(U86sPxrgPN{R{_-fon^ zGCtH?hV_jDsox2)9@@(neQD06-)QrbaEXz=8#x!S!0Om#GOmZ2zeD0*1=d(SsF%-_ zhMh<;o4T~sFwXhb_F`q+itvjTwQospx)4zvyCw%@mj* zfi=l03h#LD7P~^2{#Y`8^Xd+U&+8`2V{nKy7zg+_FweSq&?>lEep$U7)#Y%bUzM?Y zRj-UH;$ltn_5ieOCbw%bk#+lDH+g9mgwTWZ7uPIy%$IBrYLaKdTs0UN=%xXzU1eL4 z*>}w$KMc$6`*#!;Pg?&CjxhRPEs!;6&bpX%souK-v$|d`fO`9>NeXlFY?cnj9(eAWV`#Jcle({`qi?|I3sEO8i?yacm-=Uk4FulK#5iY|xjyVyFMVdFZl z*cPV_=)u>zf&xFfxGg0D{)o(2NwssGs0MDNX1Us9PI`D5vrJ7CS6D(PbbST4W?{_9 zEuOV@qw%UaY0Bx!4K$l2S!*OoggS0Nf+RIE-aI(cH_#^Xc~fesQ>;VlzWtMHeYk(z zPnWCI?KK|xOFxq@MTo=W-r%Eprqc<1!{}8)3@JT9)xXJD<2A#ePr`%G?(yeLA2$QA zsS&NqcY?Y31 zO2rTf>(joLa33%uKeB!`zlraTJAB)=RjnmgFeM<_P901>Xa|;7s~*s>VZ~LQe!q7s z?vQ_FjfU0X`A;o?fI|?%O9Qv&>Zt9qGyD_~z)fcCegqr)QbBjiwF(fmIP7+z?=s~u z-}zZC`#dme$jQd$x@F7hw;k|(V0{pMLKL56qtG5Eyp&Fng{HG2h)~&j=h!^jHO0xt z3`!lWe>|?_h7*xp7hi9Avyun$B5j!Aa?8{I^lOioEM2VNVVA9IRZfTW3K94U<|c5& z{bj{FB!@do*i)5%*fI4&_ipx?`(|H^-pUOu`9e@ize5e1-n28*!69pWX z-HLBy4KEoN>zAWxdPB9>pCk_zLmO)z=PU4BO%-DUyPsM}thh6Z76z=aba|ZB1@iS| zLqELACZKI4c|?sM?N+@1ur9|v<1Qd#8>sB8Msy^3EU`MUR5U`*&ll|#3?JhzjMP)f z&A=mqds%PQ!yhKr*h<}PF)$_h=fweDH2$w;mKLj?rw!8AkZN=Um{< z$Ee3L2EQoA?G8*NH1WP04Wk-df3ac&cOLU+O$ebkMKaExGuQRdJ>zKbNv;=;P5UDX zUvGBb+m&Db7Ju21ous!7cDYxNgI1paxO90_+k-g0) z(co>Zy&h+t)zdqQTWUF?gsOv4%+Z*G(XenA$Y{GBGb%E&AD&*5SO(tGY*NvI#eA0g zpag<3cC_00AKA+OXj}H~acRh5)^-|&o{a*k>8dnBoX`S=?kW9(1d@JmHe6IeGQZV* z`0$z|xrBThLw^qz(}AFoO`IkHM+ZA}s-y&|eFk9^dd>2;Qf`@#SV|8UoKms_+<47J4ixVC;=1?^}2QJ;^tB%T{i~V%U;9gzgvoO;2adex_Eh zQ6wR>PoDAlJ)Mv0i4PinZfA`_+WCNhY%M(%5O(el-73NCm&`FP6DqwvCQf~()Y5+X z+|Hp#BNCp%%Lelj2j_7JNEV|<*tL*z{lipVh04<2W*nRD%QpH@`iRVx>W+VCdT3}T zn+Jh{ZG5k*POsbDBDSW-9xKpASNWXQ{+t$PFrGAY`%3}#^k=R2ngW1>_9qZ;pAV{L z_V&*Gx)(Vq34`CR%$AGgWjW77c7@kolAx}ugUJ9 zNOo?!J6{LE{wOJcIAV0@2&)U%G`biTwWt?YB6MN%4z$U7XBWv%pVAcf+g4QVzg>Lo z&DHW3U6X(A!8uxev>0FS8S zgU64tY;z_ZynnP7C6Q3M8gDIcG-RoqCwekvj86xRKFA`D!xozbCHr#xG7CexRu@BX zdg!i01|-7ow$dam8(?%tM1&N#r^`VT>*!R!wsqF-txQi8hNq6LIwNCTvQMHUd|<3) zmbH~sqpVSNp_GeDFTapZousx7HCXf=f5Is_&#~(Ze5O<@3cnWdPyLmK$fSKmm z!nUz-QVDtD^6X>mMER^jqYp`Ne+FWlmQutLhxk2T>iLI$v* zUV-idFW2%8v|}KQ45kO{vpG7Aluxz9R>R8{^-pwI=?eQpCT~Mz6SS{8Z@y7m;9`@D zHDb|Wv5Fku7RwIkCft=K2z*g@e4*JUi z=lKLfJT%3@fM1}U7CV96OYU8N?CpPl!0Y6^QRvJGaJ4A(HB9sh_l( z;$mAIl+`wRWki+g7ZbjPi|!MSQ63LHW(o#Psadt|PN%ukK5Q>Dy(|&{b}HxqP(;YJ z$xH#~?T3*ozyrfGrF(MiZam`Szdf40u8V3RVCh^=FO8xxTd2_CUw-Rdrkg&$XU=(F z!VgkTcX{heVscdWDwnWTV;ef{l;q~>$WPGpd^9Li=k`prtW8^deK=jFn^$6(9LJ?!-);|HybgTeh0Y;Xlp2Tq?I9bImn!NP5_k z@LU#b<%82hse{>qziR%SjegsbaxTe5jC^e>GMtVCMuxRR>I0a#53ygQf5tMLTfAR+QO9$>uRV)tq+*8H>O zg+;=n3731Vkt%GRYO;E@c)Di4d{>jzfVcQbuLk%;G!%UMR4 z7KY>Xc1VNiIf=^N>-cI4nD%uvz{*RFW2ifEbIma9+Q@Efd@_j)Kz`Xd)lqMmbr_8W zZbEvweuVNg_ZzQ&;7ZWWvrG^M-Oickn@x*kc1w2i6EWryehaX|vBZR@7faqAEja|_ zElq!~>F=qxz0WnhLcO`8cu^2vI!!eeU^pRaJ2{cp1NHS&HtLs9qONuxvZ3^FPkcS9 z++D(TSIPR>UG-*8QpoCkDm#ubGd5F3g5E(EJE@YL8wE2Gn$?Kf^d|sFJ!UOQqL0Aw zI@&cw+e6mz#dy$37vZQ>Dz*tSxgH)Z+Z8x_Vk-Z2hsKnzk|e#VOSSW;_u=XJ%+v98 zv)2+x>Rb*3KH06fW-jwQ*;eI0)7x%CwQy&e62Dzn1g?Hj5eE8hU^x|gM-&zPWf%tZzpLOAa!~)WchnSx0bUa% zU?SZqj;9`E$t{*Wx12qc9~R4@POb&>WY6S@Rv+s=@mu|eQFo=BBZ3M?M>aaK+2%3Ctvd_AO7anN%LHt;+VNyGYMKdTVcDh$!4t-t=89pWEafjqP zWV?Eqe4am(X1We8ic?+D=L+sd&5Ue?5%58UwEbGJWoJ0$0*mr7cXSZGd3&jlP}yk< zODsph^@cE~X_F>)i-_y~to@Bw_A?irev&M01;6an!{e5E_{aq~A(>YYhrwc3TT<+A zr8Ib!a&!2*!MfrowtUOuzC3hNFaKAWd|k@Jujmy@*HBd3s>D!Ra_Pcq09Yb&$}-kP zG{Q%HPX`R=lT@Sz6A4GMMX_N(i8AE&Q{Gp=C3YZ&czKNT>LJb}+cDr%ldX#bKcgA- z!{`mv#h1))Byb*xa4ijETzJ5xP85EBX7Q5)F@S;4zFHO8!GPUBEH1+bzqsO|l!Lp& z@_T}GZ#@Iy5m6>W^SeC!CgwOJ4NyFq`b!P!)s4O3B;=BFC`9i$hr{I3v~n$Zb01y5 zf8iudgYcNHr#;b1e0K_CNAd&HdhuK??#G7Ls?#HqF-ij>WCFZYu>-djGs9Z$5(iK< zGm<-bBn1R~D~mQE-DSnbp?~AsU|E~Zho$XH=qxb!oOgUeLB0`5l$NL&pRe|UxFWzFB7i-7g8=y`Nz`Y%1HNNxwNj^7o#l_OGvQfsz?w{x)48PA%WZ=GY#O&4Y&kZw<%%*@81Mg9N_Yn@1gk*$ zZ~oVt5AWu=9vd5&7ccey#u&ktTXSEJFis&CUNu4~{1;`0m59jxzf5ue2fu-@;GNz8 zjdJhIH5G;S3_32qxt-UN1C)jiX57*>6s;5WbhG5^Ugwot^)$QWx?a_<`$jMm){zFS zZ_AZ<2ToPlSG+?R+bz+NpbWvZXh4b|t(b<+=N5t=_vTg!e!x~$a{tB`520a!OoIEG z&S)fg<;)fM=w~qUhXjUuMPxIleiU%lv!q+zoX3INB5a`U5MRR0xbyh4q8BEdm-Sc1o3R1vJu*Qy7XHt~yg*7Xsv3Qb_TV|CL zjs@`#>VzQb_SGQQf_j1TlySxpa=Lz|DuqI?MSF#fSnb>N(5>w7ciFm7mx784v)Ah& zp@NFLe8HMjAVXo%nzZZd zZa+BeAjRATE39<*74BxSdLsid_9kL{KMjxK^0o8HsUJY0N}h$8#~3u{t_ffnodaI1 z{THXliu>lbTxaZsO ztqT(FENWwp($a(?Zb{P32Gd~X z@!7c?BkAMY0s_e1rSiF!qJ5=r>okv`1q=xKMt*u#_MPGa7r@g2=FGN=vBallxD1Dm zk$Lf0LCE&Em+#`31SQ`~ECm(T9}H|V=YMy;ewU<9MtN5NM6!1l6eY0G!YxKu^8MF; zg#m!o(t!h>75~3&p&}G0Z?XojjHPlOj&Yuoy7#YYqj!EqslWvzminLD_^er=wS`LL1EEq7z0w`zIpAim%ZB{huhMu&~YlAK~i#Q2(W+^?I+BdL5{< zE9Hq};{bFZbV}Ksk3x9wADt&A`uyqtxAgw6-T&Jb{Jnar9{GO!);?khv=S~?JDawK zhKA7$tF^Xd%miG2G;g+rUXXVJK4M53+umec6KH!R@nR`9Oqh?P&bq6TIlvGQ}R~;#yqfW zyt*nXAn>r)KB&I8XL#;-?nvj9u-UI~2$)r!k9rBOjSLZwcQ?}@bLdJ6x{LCp*6;5O z#)#qZ{lGpN*aVXD*woZhz3P!|{nvp%B(aH!*r*=H^;E&iTvr1mHQu-ID%i+i#eCYDZ8CFDp z2W@@JaE2uZb{VV@QJgiyCk@dtGD6&o>?!64E!9@jg0>S$M-$^U*d#ECHP@FIIoEz zw4jz;*b-E~1|9?UW3(`rDn_XW&FL9wvmdy;!xTK5-3_lGbbJ_8qL$e*&NGpRTvJDq zZ{ZKV1C!?L70V80s5{4FA1%E0fn~VOjbNKV@8c-PV(@w>9=2zhw0fMNX@EajGhRgd zXZ$Rw_ZS==9VsI-{F*p0%E!BAnKB)9Xtwri7Q{jkp~hECHF`&A?~t9gI)O6 zVIk{Y@1wMfiJLJ=RXnDR(=l~ zbb0!B2O&Q_!YKB`C6M)Hs*^Wc2=Vqgpx;7^Wv9aWIQKAAB8qeahlzcZsddG4r3hgz zP%$+Am;uk>vSxbngB!R`gWHgI{OJnI9Y*&}S;!ekN2-V&xSdqI4;c_mzcBbGtQ-} z^Giw-mJzICAKX$P%TOK6aF8A$2<8Z8I+LouR$hFd#7nd8TzVqeGr;h-5bo_A2edIXcbwMN5Q(FXz*r<{ro zEFW5x_86BnPno=rFcQ^~-aOXzk#W)008^GUkZx+q*wmJxG~pnj${iQuuDav#4>Y1d zN}%(XZLk*?43cq(tBmZFX_V~u5+WCJ2Jr>g)}#1WW8^9<7Xs)?u7hB9#LLk~`?a*K z-Y{yL52ywOBticEkYZ9&`o5{?C{qFmK^@SVD#UM z=!3i>{{qhRuK=XB8FLJw1er)cgRC)u9WF(iu>39Inro@_BUNezq0hVnN#Hk2Ao}R= zf{%v*8~ZZ1c_>{Lvs%~0ogYgf_G0~@7Wtie~pc^nHlsMrvO-_V4*_2Bkd$W3H~wxb}Zp$Q&^-~DjTrI6}! z+ExKdd#L^8>KHVHNRj^@R?uEdf4Oa4*enF!_@49=6|WlV6d&{n4g@uT`*HyJ1m#DP z+MzW_iGs!EE_DEsM!R->mcX{Vw}2 z0}7qsDFuz68_trn9&9>@h**s&JWo#eyGd_5A;a+tXuKw~mOvFm%r$KEZMcrGN{KzP zff*^li#}}16`c2Ybdvh-cy08C7dj6pK(F&p37)Id3Kh*7Buk!l#`f%$R0$bK2TQ<&Mv`m{99Z{hi{jMkiEyypR3QrSvxR+r1+B z9uXnONRyx&#Xgtlwc_4ibT(!9ppI2`8br}VwND4yA$Lr=Q>q|uiZc4<0|Bq=vwNTKmWT>4SD=H}x5; z=B)H500G8fPwc_LZWW%+d7;H&O~dJk+e6cj+)*)b=S7BrT^SKzfpSG{zUUSH{hzaF zyB>8N;X>BVmSa3|k_!2ce5YM#y$2C)SVX?*YWna7qj~amamS%=bCNk-BFcZM!d_d> z?RviYU|ZDeK#=7v{cY`YQnQVhGJ{^_)xoZt$hLHYl4N5Vq?Q`|`~gaBce`);?PO2w z$iAxHgVsg2z-P?rS?idqE#&+uw{1mSR?2jPSA}#dqkeO@6D%H+UCXA>Qf$IX7fdjd ziIag~7R}bQh2}5tbp%<%JgEjHt;&9t&|rdYvRhHOua+%OZOzC=*!#%mQCb!!fPbrt zkIe;vml7jLb*HA>=XL3=e72_6-cD~l|K4=cX%v3>i^qoL_Q#vU>7cTvqattSc&Wu5 zxwJnXzLG8;;HmCgghgFQ^!J}9yQ8%Xt@3_KMdWZG1pVSk62rYqdfO;K_NFy@{o5WP zDH288c5~05RP&P>+L$J7?k7#)dG>RkAX2lXhu2@D8_FAMJl`N!YnnPvX&jH;<-;~9 z?Ne^s6le)GI{C2Fop1-Y!Y4Dd0?RklnaenvI?JlRI+xQc3vR!5W>KjNXp@sCqAc;5 zk|Paw7utda_btgr?sa>e7B-9j)+cMKWrawg54^cJcH%&A>d>78z8D8dL8Zclen?|D zy`3Y~BQUw%!b+;pRhrb84-)nz=o?EP0Z5OjwDbV&f>Ik3+#RvRMUww& zo92x^@2Wdx3bWJ}nvvIT^^AmPFG8y=ERukCQ?NS?%ne3849QA7H`DI<^12WOBGG4C z@lnO3H{o-o@%_?gkV6`y)$}7a8u(_TfU;CuN>$_$FMHQt;W9(kMkj(HgwCt3!mItR zRL@WaED(JnN>7^)H|t&M*OK@_c5+*|Yr;MP@I9fCsCX#<4vMF-s&ic5fr4TN|51-1 z29JB3bVdTnajcBFth*Y8*KcjZa_`^P3I}5?*~$TWVeB zIT45aah??$pVV`ke`K`~E(3-o51$i4T38M$h84HS#N+4;qQ9WLA66!B;z?j|2^BTD z($|30Hzyz_&u_=H*jMS=9B|v7cfPhHwFRCKf&His3ltlo<;Y)4@;rp2IKNDbix@i6uHM|z zEV&Y$S1UO$Z3WU9sm_@N3e|WCZQnntMR<;+e|`4c`wDv2+S}QK2!NRH5BfGZt`cRt zfJl^xt6X8g|5a@$o%DthQp-^WnT4kU6OVk6ux9&}a39SImju1=?VuaD<0N23V9dB^ z7fb#2CP3UStlpP-A1$@bSKMfn722;xpJp8{hAIf{h(DcSaRn*vjBoZw?oW93a#iciaS(ebkYAfa6qu zuu<$p{1J!5us1KN*Y%%T0DtI1yHg?|Lb@+?VEN_Ng#j0?V@vXCK|+AJ;)4!D)TukM z5>~5ye&yP0t+WS)`wtH5tv!Oc1E&gZh&v>TaUPp!0wY$_4J8u7V*c8(l4XzBH9fP1 zpb;1@P4#qYW$kFb@bf%M;G-Q`~cjMVu>5>eyBicf*J3E1}OGT8%Uq*KCZki{I)!2I~a- zZr}QL!gpvL%X-$uAb&dlGG4KL!)2$^5Q+$ta`G4+tDiZ&Tem8FbT4d(ykdrcDTC7G z1iQvuvmekmqAjTRPmNlo&)H}}U}6<00cBWfZ^nyzY@88Q!4V)U6v%wd_#vKxl>(Od zv9MxiB!cN_+r(T~OQ-?D8MV3E@ypw9F1#2F%S*2=pPxl!QGSe}!UK+;h?G7rnFelCH_+u<^>TS!#KPFkJlC4JNJB%{)#6$5m zq5B3&%2sB-TER1+?a`RC7^tuEVM1Rdut^Cu=q5Sgo9n=&f<*5JRVtjx@BU zr|Vy5xkBsPQ!bo#>xVv2AQ9RahuPNz-PJztgP{s?H9kLBg@rTMu;TJsg=?BDk=BFy zI&DXv?UPCqzvvaX2|tWnqzb8sgtgIKRT8Kw-mkN=7`$?iMLRFQsyFzRJ${H(qeoKmNsL<172UrO~|tvmwp>2aLfEjImn@?y~zCw7mEFjb7Xp} zB(}eo1 z`CKm5`PTjL^F2@8pWhpqp6#?Zl?JzCBsW5^95w??ziSbtrXOGtq8sbwpI5xU6jf3#`sncuZJe3=R(U)I8*GgpWsU~i_sL`8%-$v$2V z(Y468vUK((fNzVO+x4#jnzbE*nfjlas5FS3Kzcj~R+@BR@z@yg_NJL+2@ zbbgFkG4VuSdcWuOX?=_7>{KBawqlF@lMYZy&-$!m>HP-9OGDF%L8X^+Qo0n-_H4yH zXjc$$6tBWk?Wfm*PNev^$`yGK=A*y<Q-K)7rO6UBCJ|R0yBXQH@HmLV5d~v=Fbn46=_FPsHrAl0}i1Bi9!wCh;7ut}Wxat3q2{Im6NT zcwAz3VTXv`lSiq5#mIbqdt)*~OXR*qzUf}=&u*_9^148}+G$Nv7(tULTMp#z4`<(m zXUR)Zua{!zmiGkB%Z063VKY#uzYubB@+&1{vu~!ws*6df{9H$9@Xq75;fNCvy^`_N zyKh<>oXzj(ML?>!IPEriRTl87=*=I>pQa39U(OPfdOfE8f_S)Me%lqvP`r8Ms8AqZ zM29qQUtr?y2~#&{TP0!s=h2x!YINf;(Wk`1IcYC5^Jw(be!{lVg3fi|JZ;A9Nz#k0 zky6(*GlNvaBW}~o9YK$^N(a%TUtyx$N4mbg^DtaaEUXV<`?RKFMlFns4`7(HK6Gal z%^T}(VAAZd2h^}BhdybwE>pN#>y7cOr}DbpYuSD0-&=T1AX-^H5mz~kk+?@$#180= zp;M$-8TJ?8G!jh|o_jV%gOA((@)Js0zsj+vE{^8bF?*z!nP`@N)+lin7#y!~7w8^3 zWIF1U8>FP!5ZSPR=0Xg+4A0lIx#!l>P@c4P9LW4MA#fQxsAn{*R0*BC>f{Qcn$DZ> z>|*6qBva=+!O@1$#y%5-w*lYyo6a_aFw}*;mG(`Jl7U;AKq_GS(3*=Z(woWH=jcb) z$+^(-LCbv}3J7Ygu2YTG**Ek!o;5F{T$j}vH5m#o!=d>63DUJS)MSRUhki8%pNYo( z%sd-;#Pdiz+8}umm68LgcFZuDOGXRbF_^9O4Z9DkZ{-byUfQ$uds=10$(xZ5zGIow zSr&f&vWRYP!n!wE%r;fqrO`_LVG^NBN1?*CMZMON%Yk1`^F-A=P$uu@#dID4R`5cm z_go!sY^09t(sU07Xn-?O>^%sREGw;w)OM*J|38GiWk4KJx~&}~0YZ>KaEIXT?i#Fd zcXxLuxI=Ka;O_43?(XiceVcP;=9@X+m7hQtRo&Hl*WT-0&w876hY9h*U)Q4qgC;E}!*I}*%cV+NXZ6qh(Z;Z6Jgauf@I;sOo! za@#fF*+SUz{Pms0CTWkhh$pU1EFx4a7hV`Wys}Maea2G^^xq`9g|BSu_h;DMTB24Z zSSmVW1Iq|_pFq1tgEc#zG8LpPk(*~QG?}bBgDxW=sg3f*r8kyZ0_{PCg?6kQl4lgd z`Pm$wQP?t9y-$VK@@VJRB+a$#z$?LK6}&5In=s>i| zjfYGD$3-~Nax6ean7fuV+JqRA3RH7II^`8ZFPn37y*~9%M;++Z%Q;Cmy`-n6$ra@W zcz3+0_vfd0xWl+IUX1sSR%N0vpw+oj&@R+>8xqH^7gzU8<#$!-L@%Di%lcyB7_g;k z$=6%S)B_u^_(K6uV;IF@{9oPQ*X^Qvy-R>v`)~U=horH{hyL59xwl_U$>1sDC}Sjvd?4(9Tb;-zYPFRTw~bed z8A&6tyi{MB8Oj;{F~tRpY!+d}=-ys)djYgU_KZw57@NLjt|De~B#e~pUomxxIngaC zcXyh-iCx)#`y#a>=G)F4UJ%VzfmJ_8bppI)eiqjg=z0c1BgDh#x9gP#))#;^REG|C+L=G2AN3e~JB_?d+T@I$>qe zx_8xy0e8fj@Zj>5jwB2yP?!@JPRe=pqf{lh<)U?uy{U9Zg>c%YXxHf4ro`-lK*Po@^O`Y6+Sk)W;(HoB zvfE&GIX|Whw7jfN->5ET9YfY!lp@Yx3F~MnW4z<-D5C#zZmhpK(OwX}ByVrTAjDxM z)E$CiIu-Z+8hC%ZDm-??GQUto&bL7u^XKr;;shWFa5bT8;J zxkjFieJiazY&Grmak|{DF?z(>>9eP?Xy91+6wv2TS=P3WZAy5ol!mIYl&;@Om88#y zd~WKFCvgFn=R9fTVUZ@dtQm#@Nm!Rcgatjcy<6WW)I+X%b6)dtc`$w#jFrtIB#Ppa zCJA2krYSa=(Dv7%yu;UxP%Mq3WgI48jLx%P>Q4ByLEIxYIG6kaR`!rT&XG}`Mtc$_ zJ{cQzTp+J5y=H!NqU7h+0FWKLkFEU)G(i=n=i|B*kc|f2BI16 zrClzO29Z*`Sn7~O$u^uq3IZLqbd8a}`F!$W$Uoz@jo;<8n> zI75=G_p3^7!l}+>jOjVbvz!8|#ecN6f%O-7X_qzw0twam=cFl(e3n~p~}QO~x^S82HDj?D8}gyZEX zW_EMvJ1A=K90(20`fii(Z1qTgL|(kM(2%Q9f3<%{W3HZl48q5@dgsIorgKMOx{;IF zer{K0{>y3g|J1Tj$ResAHQ+PMpvP13AzdlN<9_*^eX zix`FR#rOD!l4>RC+!w92e#Mzds7bU&B(5&M_U;?5e*RzHPRJ)PsLgDzWxF8hRjwtm ze_Dsds)+};0%2=NS8IXF>Q7bNV}Y3hm(jw1sZu2k=iNJZ%U=MIe?=@LweIG)mQ#TG6`NH^DN0fW1px(0 z+@;gTtPc3tEZgJ{1BKPh=xJAFTuAUOhcFKW=387)&a{m!_^X|!T*HZld&?}Jz` zQkFuo#BD_O?5;@Ufj22gmQA2TAk@%DYf%k_ zGn2hFxT+Vf#{y+yjYVWn(E2Bt5_zCdW~1@HH8@o0-=b|IpBrg_#`zYD+2t&>+4Cvc zGOZ_Ghee1%@*3M@=iMD;r5N9uj%QD3A$*;<{6s&B>0#QK!$EYD!bOPpU{QlP_!02X z`wSWoV2Ast8EN&YNhfG$J-t}Iq1muijOQM`r^P? z#C_$1dCd-Qg){2Z;_T>E*hL}fb2 zh}7?66nnbQ=bKpobPLL{S|2Sww^yxQ7RC76oMbKad!QDVAJAG!!v$Cb>_x>>lLA)Cd(K?0(E3dQ~o zr2Dzez%L~;b~js^DIC88M62;G(T3)Q<|=a>j$BjXiV(I%_lW>Ny&K9dDN8lh`O`1! z-QEm1%ZIO{fXlaEUh`Kbn{#F4Z7Mm+G#|Uq9sH&~``o1@bkj%m#epo~&d1PR|0>Mn zdk24GdqHcQLU_5aSaxLL#5fd3An^IMv`a-hd4t_*NxEAj_>E#cOZn_g5rNX*tb7}FxWmwpU@BdE9zz%ZS;`i0E57Iw zPKzQYo4=dAKFq$JTX%FB~rGM)Yrw6z8@K4M4KbApT~is%wvyB?oB6k5KqFi zVA+YM<%qmN{qFB$mMNA;`B1fG(BL_1njyE5s|B56D)be32E!>G8o+!<-U?dG&xmBk z^!fVC^=u#?qx#B!j(TG>^byN)Qd0#ib@|0B?Sk6@92EvPCkEk`&g1JGDSL68G_l5p zjHQUC;|7_LgaJ+Jtu^w#M?K_ZYzHk#P3m*KKa|e-u+^I3)%cD}d28z=n9OX{K;@Gf78Huq0w2i&I&=F6J^ znZGtR=97^YBiI)iZ2M@s9|~eb7QN_VaWU$#hqAhck;C`{{0DVdq>Cvt1W*(=Nx=5$ zM~$=eCG|73$M-pRAp*kGm2(woGmT3d9u2BEFT%{*3VzHXWpo)s$P zvqg9|lD-W*uaA;WWa)yIDWDChWwV)PV1_h*##bl+8Gl{{>`Fxdp@d?A-jH5kM_8TP z7xNQsPeAq`3vG&zj=ID&aFe8`V7|0- zz>;rUs$FWJ56Z5RU$pH5gM4phPOo0d<}|Jf`)q}{dv*oL1-&HU&X3Dbvk_IHs`=9|AG@u~Sy8jPi#6HGm9gF8Hc!MgXE>jKHyu@&aupyUn%T)L zf(N6Vkp9fp$kO7c(I9}?=3xrUxovT!HCs%v#YoyJCoTu>=_(JU*W(}CO0OmQV04Y_ z!a=9*g2I-Gjr=_W6ev)-GXz-mRK9CSK0)Dqx5$p~OSTWUo+$X)zj1vav{K4Le!k0G zWwQhg5ZT&?J?M*-2cBre8n@BIQzN$eLlZ0TE=JTD2=~rMKr=J>U~;X|py>$icz3y- z>}UVD{UP#bpA9rF>4kWdu>|c_Ar)!jkL7X9F*62#gba>syr7Kq{8GPz=$`UzHc>_? zD$Baj*$-=BrrqK54gfV0G<_) zL+DG*X4fWH^j@Jn!X>?@-O@@-?FEYKc#D}a0ZqzsN`7CZLs$}#vyr%%{R)gPXDKrB zn<^FKE15`1^;~bzVuCS-GO-imAonr0iasWbqnl<C|C*Yv_)%QA+3WVu5$7rn0lY2A#_gcAcN6PdiY3t!FJ#gjms;)0v3 z0=MMt;Bfr*CZ?N^jM;i4azEU0ye4apdyuw+73b>^XZ)t6s5S3jzCBmV1*vdiyu@_( zWub`G{+g);$Vx2RRRN4cdYcqOziz5~~m;g9ax5Erj|gS(E@gM0{@(?=l zYsv0Zf0x|L9rKjfft`>95))1;!mN92YNdIL`R`(FqYojAdcQ&(g#ERRe;Eh;ji+RQ zq9=I&Lczl668Z%&qtZcPHV(-WvjtV%EB6{~oQZoUBo`yLb5yRJ*RD=T98!KR^H`zR z&c=Oi!?ew=|v^)h4eMkQb&`Gkfk{f@^L2w zecj=f^_EjMbCtG_Asrsi*X%Uoe9gxK+6Pjy%tb#^2lxF`M{rS{Kt)GaiPu^h5v>uFH3n1lnW)R;Lo8KN?as zRzh2)hSHeM#szjf+k_DTQFf`x;(2mKM(hXHKG}fn=btK>*OqFyNo`+l3O1EPG%j0c z4Br#QD2Gi)dvK#JKD(Xg7{&dGLsYEHqE)@(oQmVvlR#W23org+qEAJHsL4H1y;L=j zG*wM;)>uQi=3qqRwizCH8fgwNQ&FxXlU{$faERRm0bE z7zt@~qh8@zUkD)VKCJzElg{M`C3V-!=SPL>i=DsFSX(}Xh{{~>_iAjCQrW<)FPulk z(vliz_`puAwVt;7;T@DGo_|;aCpRW9=$v!#ylg!sx(l4Q%hIc6ai3CjB0Dv{OIX@W zE3x%*CpZBXmd2WJh`1SYo+7-VWmQ z2UxhEqtHj`@(8-qcj#vHc%TIiHWr2oR`4!i`|`YZCd0vWu=@K|G@5AqVBWqPNtyDI zNI}1W@vv<;FnpESVr6yy3$>I1#hbwOzBN;rb8A{e_Ip54z8FVU3hl4;v$CM}c$%W0_daeXri`VuSl<^Xm> zHtZgGi2U$odzjG&t_>8k0?6p|rbkt~ROvNnON|HpRH{`@>Atin}nQl?e$Lo0G z=*?>3EN(>Dvw4qu7w*a^w~_BO>@@iO;MK$(^Xq*Ra$4e7JhYw8q>AK=lh(lQSQRef znCFc3&chwF+F~`AKp`2%eMSwysCCi-VIfDcVqLjv;N$?FUQmr=9xGnX@+CUs`JZ{$ z7y8HTn50B^<{}}4YVHZY)8+*77;JqLc5|ylHDYGeae?Dtrbp$Z*e&a>3p*hbY?v;O zS46B1geu!`SB{j_{I_wFc8>AIe1z5XE?J2wkb5dkh;L;2f4Zpt<(lJ)Nh`8X*_5btN_&-2~D|fQOBaZ(vXJuU?PNp#byHV@k{z2CF zU~fnVSp6R$qXTX(nsjQ}|KHbT0{ImRtW5Dgon4*Zd_g9fcD=r@%_rq8hreNIvIg+H z(-;^S;@CcVK#y~rP+2$bL~_P?Oo>P?d-_wrX9&V&VEyN4 zJ#Hk$t;SRgkeIpNeImC7((h@`C4&Fv2TSCMFN_pK_oX{MZKek|UG2 z4z!7g>@gbS{8{b@Z-&U3R;oZ0oVxf+6b?eLRPB#)kXgWrR>+%9%_f+bbCa=$wb$ci zdT{4?m@IcAXM-UH*+Fr>t?T>mO z@;kHeS1ifx)c_tP?VK+JRG~NU{iA&qk;nVffq1(K;XXsu-|IxiqTcHCxY$&Q*d_j< zx=g8p(bGX30Z`i`E|3#VWY{2xp~M*{n`dJ@yZKEN5gs8bb1;IW@oOI{EzfC+jYodP z%1IKnI)cF@Xxo?10eBVUUQZGOmam^BothxmTC5N>$E+!+4eMcpzjGNgn!ivDjIKJ8 z#o|6Xvd`(WRx~pXIB$zPS84QEC1?WszNyvj;cxYiR*X)yKb)99u`QCpMFAK292!Rp{rNzM9UrwsHTQPv?59d4^sp&R3EM5?aQyd17!x3`=<(tIlpmQ>zo{B z!q&^OsMqW>e6vDligK!c>Li=>CX4f;|B#Fxrd7 zH9jSd!Si}&cEm4NSNSuenp4lOnpi-;b^)urxLAa|ZHDIk9QsISzG;I)q1m&ZNA(-^ z$4ddr*7ZS!cDStuAcHk0_vJ`Vp=s`t2RUXTCM~PSUYa(^u^r)A;KrW6X3n=#36;!B zY27xCw4?J?7;Q8j+Wp2AsEIso(a5m<#thsx2PkeXhwql0Ny4Iw99K)AnC2s1)Ryvw zN|aOmps)oGmJcuCyvw2y*2;wL1((OxeK*UP?VAdqvRud8aVA>W|E?c~xWR)ltP-s^ z1JPaZ^m~=EgMd>Z!zSl;^SDva`O;{CzxC49o~=K9U=?cds!K&f{2fsJ3vE^h+69w` z?IskquQ64f<|<&&vXdi<8{^(+F;}+&Rl;(n{)xLwV;?6y_02YWnTxGisj?%xl-tPyi43EFSq;je*{ZjJj z=?U`I!bd|X;_~AUL10mp2D63bw8(6Ng5kOnFl$8YT8vNCYQGn4!?2KjH|J@ zts}L5ZH%pwm4r6GB8>K1ICT0oIt zPiQWaeuMU=smm=pHd)rM9yH5>mX6FIgV~^seM{#4h+&!1Iu(0G!vLwCeybP$4OX_Y zXTQd-rI(Uqf5Gpy5Kw517#>U~kkuTGKA-lJg1oODVz%UaoE`Y{EMtnFkN`npzZG^q z2bo&oA%(Fl{%YBCUaBHMq`mBG_P>L9`*fnXp`8F(jHHC&v8tX_0h@{TyT4*l*fWSm zkU>v(mBG7XCy21}eSP>In{nabj9sWwls2LQ!g*Dw%k8)0=QEAUJw)BMu4X@vLNIsU zQ?R|~;ou4bq1Uv9(vC|odnZlLuE;>ubCEIFu4Xt z2v`@KPwl-Z>6f`2+B<4^oQ|YtoK#{cZ#s=o;2hYq(l<-g$@u9DY(%$b0DxERzK`W!8+fEWl#bgXPH<>^; zu@dlMHUt0>Z6IVU%nyfIe#ECfrv5%({dR<$%@BSrcCzcGU%5C=kLr7mimu+ISWD371gSTj}vH~jiwBW{R6OP@Tt%x!DAR3E}b0PAHgtx zK))f}g+P;ENg7kSO}esqvTG{hQ35k$;3dMkx8rc(ixn*NLff@nlJ1?EKTVLzbxlR6 zVkul8;x+Qs>BD_&6hI+r@)-Ee@h5rAK~4Lii3WP}sFkfT98yxQkPI@qbbf$&lOJ&_ zcDI^u*R;i!%~3bAke2cVl3K_9lff{7Z@Qw5R@_x>I{LGWGKvhzumCRqU-sm8*Lji- z0J0uvWFRNtvH*%#4pt5(Sy1o_hFE-PW=?m9ZWFkFBI}M0UCR*8tPVqU_ed73+~csN zLT?pV_?j3bEXbU{5xS3H>_(p>85rd`VteXka}9e#9lT+ zHg$3I*z>1@o?d9J3{i_fz``=IXF0XY*%!&qCDnF7jV+dabyN_wc74!Jgp(b&9o543 zn@yA(r5U}pnUh43c~XZ8?MQ|woI7*cOLnKzB)m0A>o2ieL~OkFX%X}_9EaXd7GB?n zcije(xGTeECM@L==tO#lam*95PbE*B>{Yn}Be%&za>R(z|JY13plT>(p$qic-Fi+c zfbBp!g;=7UT;CFd@(73Yeo=h?0;giDrTFb>GM7Sr3dE;D^DE}(Y^CU77Y-Yw{1=a6 z_hxg=&fX4X{Ke%o3dO^1R?0Z79q7(X0Z1AtUG_Ksq?v}-_#{p>_#eQN&GQt|6JY#D zA*BvI8U~X2 zVb>-W#GncGRR2Yj-L*javjCC(H*0rg3)!ge7FW}^3G;FPdRi3tKwUlZUAv-#4^!Z9a} zC9aZ!<8}%&Yc0=`2{#Q0KIrQ(CPvkw+mubQe84JUOpk~+o3$IC(+~YLyc(;P+Tm47 z401h-@uQFxH79Mj74H}$pU?Tbu&De)g`=ADUL_CLs#5mu(00Cc4YSdoC|iLRy;HnC zaMN7ahA+k)A_vIQ)++rgPSGwnob$9C|yEhuEO(=WupensTVqAEs9MAGi$fK5jS`2vOo-+)4UM z0Up^oW9xaE1`FaG^Ylc7l1o|9QB7f%z#fn#OE-YX-Kt0nP_5Zv2W!EuFTzV+{ieUE zAwy4n-PP1E4J&(Wzf(JG{vq~cT_B^?Zs$@gQ;Q#tBiHx1X_L(r=?4`Dm6{z)k$TW1 z&u4cH)M%$@4WC%3PK|wUh~O}X+2F2(`XQcg@+6S2x$qG9BDGS7gWx^h@D% zpC=kWa7g>}N1&Qo`oxFJBUCH^!lV+63mVj*+utjo7M+df%q%hQMol66!s! z-gvo#?1|ZIz7j_B&8!>K;r#e;J;~3X=+-rmf2b1_sgx6>%}?EL3ehhmGnn2)8S_+lu75^`Y=b=X16@M+m*GoLr@u`P?#AArviFx>Vwv(*CiXU*9EmA6if{G8xyq_0j464=hw$u9pFyG1%+7n@cJo;4{u4F2z!8sdNO){jb4J@G;o8t0Nup=SekYs`BwN zlm{4xYe1wIsV5XE{ z2>zcSE_1lGh~>ZyH-8ywVCZMS8YnyO z$1;^2a~{moWQwS;p6Y!|?R6rsW)8ml3EirygFo!&X_OS~p@(^c++QLF8~26w7;-yi z#E12_e4ohURyctg%kn#pIU&e_*=C?m4|8`4)Ss3;1>-C!nVQ)AgyCzkUjrn-yBvidnP7z0qq=cH{bGvsg-Y-W3#Jn0cwxW-InLadHu zg5K5dGBnhEvN%&eOXb(>Zo3>Uj}V;jr-85eacPIExA!2Q?oqkC*%XEp#Z-hQMgpi1 zI-Dn`X~|>N+v;qozSGPNawLlDj;l0&t*}y#UpKtz{9IN%ZD?6Cvj7q`8B-PEl`Vvh zS|AP2kltrm%h!Cfmus11wxHoj9qXIWnoZMcY-}NI^Dp8X zG^cgAj*%i3UG8qse(p%J9wZaE?NsMWhdjjkvF`x(Pr45RE?zzibABZ$PghM+Y!Nv1 z-gcUlJ0x407Ltu+w3xfzPJ&QwyQlsA?`_VB%S>sSLH6nj5npDo>%e$^;?i_CPnXyV zHy7E%?QD^g#_9Zjiq)b2s*NENC?{#%$UPb3Z6XV5+yZ^d)3C7~P0907$@#8OuzJIV+BecqU+Y8+Dlcz5$m^=OH(72I15qT`@Mo~uc0c-$mTR_zJ5i}rb_QR8(iGWi?e@gY7Rqs| zWpN^Fdg473>;BSOAM0>M9A5oc--2e@wbob)<Gu zu=!d+_F}E2S>I_eFW1P)}H+_vS*i2t4 z{6wXNiSw^{(E&2D2Y3wU0yUtbrs>h11#M%wO&WimP;vjtCEO9|WUs_xZ8oypJ+Z^{ zteVLO=h@3c)4aJ(o%-QN6BULz#k^8!m5O=QesgKHOm9H}i7fCYb&|Eg;co%0iO6-V zYk;0Y8f70=$lCG(CO56KQ*t+Ab{wm!`$IqGw z4v#18vdn4sdcWDX{nW!nFg&;J`{{?N#;qI|5fL4QWn zg#OS^51W51WB!YF{)dRpr$LZ~mHR)hip&oB5aNN*dC1Z4LwP5R@cn6`OiQ9`22Ce5AD5(75Hf)LA2>UyjM}$Z`$G*s_f(H zSfWUz<%_}}o+~$R#wecDYJx~L)K>DDh4Vaj?<7E?Cs)K5X$?RVsow(mS8R+W(!;!t z#3^DtP)B5MRWaBGY^twg^=tiQPz;Afya|)S7Ulfmt(F9`8elzJZ!qRZp@96Ubiw`U zUB#B%#pP~R%fnUbS&*J5!qrw@njF9 zIp{G?3aXw&xD&CG3guh@%a#P4y;&1!jCl@L^p&c(Rexv|h<)11id5N{K&gA8)!Hw% zX}%0Xo}Y}jfbU%TF<#gmlXue3@^SmcE3~_(c4`xFGT!^)c~C96#Wp0@_+mSfzUR%O zwyVl3U1WdAv$iA7)2(ArN9nfahZs&iDvt?G)?FYE+9Ah0>$_@g#J=@1KwD}>($ib* zuzeeSa`I&)`F76xWQqR;43otgRM50S zV7}pxs==C}UqBD&x>@A;<{lLz;WWv$Z|_B?%e)5M0smY;vc&%>Y50YGwXupQx6&nS z`L!UW5N>zVoUtL#3z{iuMIx6#a6Io`cgkur6GWGLl#HDMUljORlSLK(VMODDz|I*V2 zo7viMIE|g$ zvfQ%6qN2bPbyPB>JK?pB0?oEj^AZ+LYGxu)^G-s8>$z8ln}A_~l>_QqbUOJb9R4!`O=OdCqDy2;|P79*Y@f`jMdj3NK7#8;Gb z{9IHJMil5Xtn3R4RT{n)uy|)SPsCUoQcB^b!-83pt|!7ZFy&=_EkUQ9ahEQ?=rO=f z#;ySy!O$a7syH)p|C3~@M1YBTviPr2+4>dY%-!G5#A0C%>Ri_84YW#%B!Xf*6br(1 zkW;IPQvOx2S{p}J!^Sasqy)-xAW*KY*b-$V(m`5vB@1JS%%syNXL`;Kw^+9SIidhO zlA?HtPhT!1{Ixa^MQS0C1itBWs+WXk4|8)n`_oLetu`vYbN7$ZyUP45zDh*p(JF_qt{_RuGItUeynVe!R99%i9qu<$&MS4aaBI>isgXyQuM*(hIF93#iH%B$=;J z`SXD&3yQq>`XNjOjK*71FqV2YuvdO&Y08og`{u*f=tbcLrE?*BuyGlHfC;zr^OM6m zVf=)hQ|#i6KF2({sG(GqZ2reShCQ)xT|D zx*piIJ|hvH+dEZ?y*%W>TL3>ic5km-TY`&R7{Cc+pA#E(OuE@5@+X#;#W+yDtg=rc z%1tQ&0jr9#lwQA*CU)nG#)}Oy_@35+YQFBJ;YUj~k79ziXB5_Pq>KOgj>r@q&d?0>`b9bJhU81`9!lPHkuoiGK^!ey(YEyzA*_ez4yW~c zB@9dlb5b+8ydQbh_1aVUUp+w!+=ek&iT772s6uXYdD1}F2WMkBQ1nL-@kHr$G*9{m zx4e|UB6wyNpNDsGC_XpxH>C>gD~?JU@QE-*{YKnu{5exyC5f3P00;WrMHG!A_ZP9a zo;{r2ZY+`qLcr+p0QlQn7^Z9ihoPtBo4(g!=I!P8AI9vOJlX%$0+Q8R7VY+_%pwmW7W(jHN_9k7kNTSUyu6KX&2g`xgvU7NID@R5O7vrBxefO=xZny4* z`EC_}LOp_R`$@oQKh1KO>*EU63X+Y?RiL>19A!`Cxkf=aV5+U{_+{6TgaLZc>)0{f zYzmFl3A&hzku#A7Xn@myLc4 zyw|-rM_Jtaah9ncv=Y%d@9?;}OLiH} z+y61y*{y>tFu0>U_)b#HaMVYoqVAwNZmk+m^1vCff6E*HoH-M{IjhRQGfrSn&iLY= zcvqmBdUzrHzTt7tAVfxQb4rm?quZg3)$aOOJA}}c(T{y4i*TQXLYpozp*=as=6|IW z-rWnqJ5k`-JtMx8c#+dJ!^&o5x`af2d(LcW0y_0frF%0*5OyS`ENrc0#1B;8Z)OVY z>Fv!;L}j`kUvh}60X0><-$C=I_id_ooSZgzs9SyuDqUywxOXP!GsYNTM>41FiI&Zm zamW?wDlXQX(fn_LG`mLVS2Nyae?14PBOHFdcW!xs7_{2!y_>_#7k9*UzOTyGN8y&U z6>~6x`zNRS3=aO3@}*G)aUeIw=Pej#X`stC=Cifq>uWuPweny6)z`O>wb!>eoQ$o0 zjs91H$rvIItL0*7fp4wo8zZj&&XZxQ3x*E)r;fza9N_%< z&G(1tjSYwh#?N@IrR$21jV0x8anQIYwtsbiQj08JSs4fL5FCx_~!#|Ib`x+cGctche`TCJ3S}5EK zCPT3{uj4d?t{Xnmu6pp%L>9mHqO_Rc*VyCNJn%sx#2F&mK*$F?eCfmDu+uEKA@U!~ zBy&H{UtAjvJF}r|)18pz@D=8hqchg;lF}&(HY(dN4o5DvEgN45Yrwws zgVZ+$R!#Dx`%WN3ssZRob*#___n}8oyoPteD{Zv{wZrIW!Sp-8u^>wp76Qc*RoBom z<2`@#q}0w|%8F1iZ=5XF8El~fnVqN2Hd4u)4At&hMt8SGxc3_YBo)M~KN)wzh&gze zeFd#+&1e7ohL{nn1p`_U2N@=@8FQdrwvg3}fFp&r`BAILTop{(p z#I!Rdi>;C(kfOUKVGUKRjklTPoPpo`b#oZ@0aY* zzY=@I?R1c#QuqqmaWJ{pRBNq$C62pQ+xwc)DZ|i9fAz5^qy$p2UiMJBGNMWxO1Sy#v130K*tK?RyrObw7}5~wj!7uVcL*-)*S@zzFT!l*O1xp8~BjNIG2 zo|~D;J5)v?gSt9BnvQg*?h9Xi!fN;a*HMge2)W>|3hy{dV55NS6k_cS#*L?i7(kl8 z8GvcF=R#lOam)L5zYxX0Y6Dmie|wuLfkR*BMGR~pz*PP^fl$BgoQx3#$mM<=5y(xi zh|=IsWXQyyM?kJZ&3HNQxE)_q6lpnsw#tZM>FG3eLg%fCD zUxQu(X$tg@nByHUe-Rt{k}Qkx?ICYhzSXjlV%Q_Uo_|CQc+*^VY#FL2ub_k$dVG9a zy772ClH}y%$f(OYyGqpRD9SWbAH;VeaX7`kB~u~91oPr`%sxhFT*z(YBaB@6bl)jlQ(9AnQayA>R>oP7( zY8?IQFEYQMT%A*YyR~nf5&;9x{7VH4nep)UuX1xk(p;q*1Jr{|xIxnuGMNiCD+4av zgV3nppd{8RFFGol8bL_p3KK7S-6rbNMjlSfO~=!I3Y?rbJxrA>ppTJgl(=ZtbBpsu z4pfVBAf|PpI!iJQ6UIR$%vLJ7`D=UZL-(bj*P?!_FK;wl>o?1LOafvy1iecFd`n_3 zVB!VXz&g>u(TweTeX+qAyl$k@&{l1_MVrf`!Unz7=2|6NNb@8Q47fF_p+<)4H&76` zD*K_Le08Cu8Hh9lgsUF6IQg-v_|P1F>o1@{TPdS}idZ2T0Hy2-@^Q0vZ@sx6hUT|J z;Yv~bm6=E(_j<#7&NOI`Fk$sFxO*uwk89l&{gePLHUegeycc4ctUMlMmtLxYCyU^K zAI$W3Y~Q>V8H|f7O|=1?nd0K);qFKwl03sSajSA#kIyrJ?Q7L*%aIaSA z+Q9f@&zfe?3wS?w??*4Tsuk{EmdOJ8hx=TZY7OdbHxR~ru;Ca^KaSso7&Ai8m7IMK3CT0Su>xNat=Ij>a zn|fwKM7%97v%hW8?LYuGN@=dSvOxK+1E#_Jf_y1Zv!CIrK?Z_tkEP(41O5bVgF(b9 zb{^BXD>uE@)0&BC{V4AJ8PqC``1kDrUJrvCNnqmoH;Mz0P@hkl;X+7;x6pE#=v>s} zJ2V@ zbzH6If6;Z;aaDEe+Ln@T=>}<#?nRf69+%TGTgr-?R7G zd!PONiT+^0iZRE0#(iH`-B`2q#7PDU!eW`y=?=g9LubAC<05PqM>*={^!S;SKxYn; z_B(LD_r+`HWu7r}_3Dys6|-LS%VlNo{ou|+(JdgotM45*vGY2*X43@^Bfc?WDzJNn zYGSApCD~}rQ6PCOgBb1;#0PWL!)m$=yJX#uFF_=+V)JwR5X&l6-%8)U-UxZo|5~FI z=1EhyO`POfkrSdFzByb7`A#wOY=6~qxfQF3)%8;oS#mz|vQJR@v7+BA&>jeeA#e6X z3wvCei&aowO!_<`WW=(fym^Ws6T~C zcB?`V)1&FcnEz4>VY_REgM#Y;FCEe2i z1KEA`ch!iYwxYKBn#08%;jsk9-94LL*;H5O47+8hzx{onviWw!4a!Ilw?31d+%~>R zbf{1Or=H^a__xEs`7`XTqQ2BgVc)Vq6amp1mZ_@;!taW&US~6p3*V#s(%=vJTyaP0 zrvH>NxI-Nytx#Ofcye-ZC}1XOX8zu?i!tV;>`SdBe`E>xM$e*#Gf_PwfeQ1pK~F_RF2GRgLei2Xd=#?hC?s~|zj zw{o(8caeK1CH#C=UzL^>g{f(q*`nDlLZZir>~PLYz-1~YnicKQkWua%bcY5ZU$Q|6 z?u|jr__Wl`5qUTXnTKZJu#Lu>)^~*jh=XMCRDc9FhuIC|Y|iTeXwsWd^j_GXBe%VgIMcYx$E}mBIBII|$wn1KMDg5X;?g5m5zF+UUqnJ^q0nX$U53ukZEE z^u4{j*};|VeL_TzBoLD8wL}<`MgZ~rvEO+7EFFIZBePqzA`Y8$++)m!3(1Qh~?zQUkqzN9= zSJeqYzcXgJh9_LtPz^Q&Jd)1jObi&2wfpo=1V6a8O#ayMy<}H?vqvXQ`k*f3Gy_j^ z-q89_8kx;Utv}bfX@F2ZAw?99=Cgt-wAEf0>T=^Eg?|&Ys zdvr)eM9}j6dTG~IIn#sg{&zUb-eGw=+7P@hsn6pjDq*J`+0!4ROOocoj(z{%BJiOA zrvB!@b|Mq1^|T9l)r&mIVF7*3N1kf6X|3XTw_K>|?dG(iaIR?JYt7&BS7#6CFr?61 zLY>_X?LOzp8QM`ii-Q_*&yCt_q>#I2spdA{I&^R0EiK_j%5sLsN$J_s=)?0T^Lp@^ zM-@nw)JPN&mMUAW?4mOqOoY6@W-H8Oz!t=6R`EsX`K0xXVad$^B^$NMCja8x8IfB- zDQaz?!U+Dam8HACr#z$89AP8)LgB2FBuREr<))kT0=3T{$Fn3V zma(iM0Hb8!A!<}p{!O`_u-jp+PhHX0La#ElxMb{EA6MYJvGB@QasVzob)4z-PRD9V z>U8nua7<34N;zg~hwjyc6_UE-QrVzf(VwQH!9sZY1 zNGJYz@821r#QmY?(xemSp>B=Gl{fhmZ5(}!oG|JW!}@J~(Qb&S-qbgqB(eunJ;?r{ z;=mDM*7H3+g|QONA!9;i$OKD|J>|u>yDU9lIg4JewM4(L8^~I&m05w2#0&wG^(>1L zdR<`vNFlxD{b2VOP`hDO9@@sUwSs4LqTWahEEeSd&*k-2n*x`8#_gs+$saJUTbj|Tr|VPV1PXr7H_w=a^YPzGmhJlYNUYY#9o zpX4I>;z8ffm_Hpm2M}wVyNLapaHjSG4;Qh}7CKeG^EIxmE{1;k?(_qW)Fz}TS9!mB z^_ZTI4gCZdGID;~AS+%YP}#s?^ga^gHsdsOgtvv+c{9QcDmS{paN8@9a`K3k(S^Gu zy_Nk@ce;~9?|)b2f7-f~(lndJxHR{T20N{i8kSyBZz8UVr(nHwp;3XrW4(rdwM8Ka z+>xSQmzTgbpAHhlFaMSId#fUCH`8Cqto?Uyg zJ5=%^jI6Beig5w}&s=a9h<#@F_7R6acRNiC{y}^Z3Okz$WJW}`r_P07daEuEOqdI; zM+4khaEaV)!i$`q3E+5g?e!s(&x^f=%EYw`n`aZiAoi!ses7Dz5cU%*}AkH?7CjZ__{kub9l$-%E3ggb+KnWXR%t?YFkq+PdWDFSCLhV&rS<( zRA=2lqyU`wVh=3*#Co*Y;?7a3Ssl#pw5PvyMyurZIHXqN(sAbmO!Lg|fxheZxrP6{ zbCO?&WNGnaviev)Fn^Sm)#VLQz(kXSwL7F^`ZPBa<>o_#H*ir|xr}*C z`UIC_)vDN&eqmOvG;OROS)V>_fxOA+u9$i zQC{$D#nTON$RNNVtQI7B;T6dTg(Wi=>D_uF9;;)<2 zJez9de0mz2$#StG6HD2ctJQT+z8TRB)@%7wi%bVxC){pJr24M31|LS~!8h3e$)~;0 zCRn;@$x z2g%lhyhn^9oSNEW4J8cDlgh&AQ+5ajWg$mb6OsweUr1vT<{jBohvQ%QZ0c|W1&`wf3Fi*bsv814u}ihlKHB_$Y* zoV!i&vx*N+Hu2^#;Bo(j(tj zpH2B&QE;)`hydfe#=285H9dVO);x)@+0U;maKbGCWK#%w-?8)3~&h+)g4P}2b`?5ux3Bu5)ARiJElft1xdj<-WWiz+cEM0OIr)pxsVSB z5ZI)O>-;|BU9vG3T@w*mEY){qTB?Pad(~;vs{fETM=v7TZ0+o+aOQS&MQ}@?=A-pK z_|+{HU^2N=Vhxr9_vY*FqxMa8e(szA#>2|aP2gqp_VTGC>QJqJ+7R)lN z)wU2;-UYkF^HZ-`6HnYsz#rF*qqWCAQYPwx`+f9w*#*-l4ub=!`Us%wsgzL2h@Z^K zNmY~ju|1Y1geQdJm-RWDE!9}viyVM`Y7u)r!0FrL4K|den{O608#q37qYMu%5!N6D z#4|Mb8Q9xd+T}`@9-u4(QhKJ;&(F{X*z_eZ3mCR0h-b5zT{h!XN6}lo!z{FSN)I}e zkYG4sx9WjgFsC^k2g04N-2f^?{?470;$K4O7q1AR$Eo`K`OVSEse)uR2%UPE_8*^# zW&PjPhr}>Hv*@gV=+^ehF>?0xOJoQBt8w45fuTqzt$wU!It6;Za?TS7kT>s zvV@@2rsH^3Dy@0ntf*;-10gz45O)w$hoNNi9Cch>4v?q5f^ls&g1&$c=%vASV?!%B z*V;JjvstFp*g*Z!|1Lf2;KD8SFB#ZUExa>^SRs6x%b`1Htd0mW$%7H?!Z=Sd>~h?} zB~qcqf-h_gr1e~u4z5!JP{C<1IK;5)6N32M4ty12(fgg}1x9#A12s$UW<(KkNsj{4 z3T(ON(~t#8?~RDKDKu&kycoLDbGq*)U2@gNHZI zf>ztbCP|R46~+kEtkCjpHDk!$p#ugF`38rQ8T4%rO`sPR6z2Z3!tTps>=N@1)z{hr zj@4-(XR}&fVUzKnp{WjHD4p#88-n8f_7WGvkYknsl2~?FP|ULbzeEz~=H|IJn@Bbf93pMOpPzQZ-e&%))e6$Aqn!JOznVt@bg<=0c^kq{H+F+31$(Q3HSMVkUf*i z^ux*XjRulaqhN&9oiE_TN&~r1vHLbe^n=OrkB*M)dU@4+0i$n?=_q0U794h5e7qzd zA7AG@F(W$OiBW&lS7X_NE3sp6)@=1u1C?~t1Z{?w;a4tW(g@KS3S%f-#>LimFV-6o z&k^}^=1Kt?R$ua48MbkM0BDff?K4oXp(UNwJL zf~Sb{n6Ri%pFR%u0mcYFSCCx#t8@ea!`9I(avyq5SP>BEsfncbntyred;DgZkKA zUlx&j1YQIYkMS_Oc%yC=3gev;8~6=wVj!DZNe#71I*?;4^7cQJG%ExINOn4TiWv$g z?axA7){C5UH|8$uPqa&y10id^70H1b82j(PTvNpUV-^q?%&xZe2o|@WpmnErN8A#X zb|;4AWOD=ZdOb<^M3Z2Gl@2)!?o;+1ejLT22_d=|~X(M^Ka z2x9+30q-o{i@Avc>41SWXIj|N9y-=g{auurf>B z6N0ze;mb_Fh+DKR?9Ut2y5>@tx*{jPJS1Y|xU8~YuY79y8H6v%8wPEqxsTN0KE6JZ z#IUf*H3%mGiPysLXNJ#7-$$#%#o4!sRH_Pne0>0%ATaJL9f*`I+f1m40xd3v)=Y|m zEndk$n|$NKtqvd9YW6*KIGpzP9I^E00~UKR7XIfG{utk+nP6A~0Ds;NcNXas&|ex5 zjqs~U^W#TwIq>5FG{qr)F64DYKqJ~zG{Is{VW8J7emij+sO6e&Gw@r9Da9vEc7Vx$ z1ipSOBEL8Xxw$V!;-CA66ID@6%lQDZ!QduCKVr5Mr_Z_5s3fKy6GGJ(VI&QC(ReaC zGi-&2)fsRZ#3PHe7lr2q!!Vb{(B&cQ>2*XQ%6Qiczu=#goW;lvilB$cQ{cBS-Bw3= zmtV|!<|#<<3b7^u@1~c>q(7OFgGLq!Ebd2+?7m0+byULOU67wG@F5T_0*BV5$av5? zNS8!R8o1RBiAwu;ak|m{HrSG#y};9jJO0PsN%eys(>JG|qT)$(If9!oj|RBmPFte3 zzFP>Pe~r2%_{|Y0N9C@!;$X49|V2nD0*_r>Q+~snq@{j^j@Xk$YKex-x8xUvs5@h-m@p8Q(f9cm$>nL1&`yBK=Xi#-tW%1F`lVHO-l77o zz6QB}arJ3$rL$ zw9jAGwF<<)tZQXg&FIs`BkDnVtX2u-dL4IL_*eSHa_9+ohlO^pO-u?OV(^N77PRrxbzf4;O+q0|Zv)z<4sdELIPl2xbb z>U)OOOEc$s!=oktHt)xMr&kte8CmyIvGO?`1f*>fp+e@;JBgAhEkf%Ns!IXCO@iT^ zvj1wSo_d6Ro133s@bu|7iqVsgkC~o7*h^ zx)dpheBC{dSA3hAtw}(eUG`p=!>3i^(Pc^lyh_qK(}BfyUIgh#J?y$tgF78?ruquk zhu|~_=^h*wqO)zMQ~ny52e{bD8npUl1~vb#nOazIa`7e2%3jK9wxJ^5Ypy@M2QG^W z;-Hu_zb8<53`-gr6|lvZ{HyUzNx}&m!<{h*eJqL_eksc23;8*Ec_3VDF)>nl*;~Wx z^lJ`zuW1Vl*5`k{f!T8D3h&=%US2x=c4vDsUUc#J;^sfb*q*A`kNqjW#jsUmKQ8VK zdo{I^V6%xiHsI*1@E?|ykzrqrUI#uRK+ROf=y8HxFvL-L@0?|a$oqE+f!6++u=><` zV{_{qf;AjqsYF7afL_REkR}t+6A_m1l>k_&nA-&h0GfPX|DBSYECUD$!%Q0T%){Sv$O3Qi z39vqm^v@p*s>vmF@+JM#E@xX;M|};Z6TOE}JgV)$vDIHg-BjDBs7i`Z3q$xn>O!ciWuyvf;)N5rMX_-iq23QW%63VB(QvnS z{(u+r@bqtiDqH@%rrD$dtPK@-l$GIQHY^m(X_ny2qVYQ2c*pf$gqSWS7&>DQwJb^H z2<_{W!fI0!lAiGw^yPsXR)4uw6@g1ghe%wAy%8Svh@vm^k|H{)mZygLrznSXA3D#G@Rl<0}jF6JYh z^Fo!!`&l9#m7WfPe&0$iq*^B>JnA&_iV30rQ;ZllS4%i-4T$Nz_Q=f1rX1+f6BJtE zS@Op7ckW8cBXy+FpDTx!$n31Q`PI%RLYjap-N)Az;uscc)1B8*RjE!c3VxR4(JLU-4=k^b5}Cr46D$xuN?0(7z^^y5GRz_GC2QC zA*D+l0yc|))3yaZ)7m_LyA(Bj3*6(;Jvc)i#wJyG&6AyBu}Z4Hj5SEDZ+(!-Xq(Ir z^#l{=Z%^~wPNa^o#$WDl)e2Ffo9s-ua(Ew~8cZa8qdL7fl8=k=?vg$cFj9kTrH!E^ zRmM!!sZuH;^pVuay>@d^f@X`-!)-m;)a#p{%Oq-(^r0Im!o#ms25SE4_EA z{N$r{3`*UWo(`J8n75}>*0i59;L;f+&h1IFU*;~3F1ATM0{!d1SQWE0=qM17oA<3X7;dkbK+?8iUmR;1B*(o#DTV>!w_ zIQ33McF#)JeE@FVtK6hZ>ta73#_6z)j<+Fk4c|_tQof~jE3i;~7Vq2nB_oh4Hf;aO z-!#l}Ciw~(9KK7#Tzr26br}!K6VLCb%1bG8eC1t)R@F3D?)M%Z9-|>!2UVE95D3fX znQ97qlwiICZ`NtH;{K>D-Rbv`ff4k15DCS|()dKlRiHAZsC7vAvqYMZan8PrZ0C7n$^0#|)f;k|Rb1A@5I{&({KfU;I!=dr zMJc(1Ci_Ld#FebVes1%47qo8`7dd*sy#;CU|u=S@y}9bT#R-VfO;vCl)u=3xUR-7S*28t z!Q0zWnn9CkkTuhx(C~#|5SN-b*Ndr=l1gPqIUmVFceS=vrju_X;|B|;|S%i z_%s)l{9Z_s<%c&CUh+oKfJX0Lb^>q}vf*l-uPN6_5NaqZ(b3*K0f~(N1AKu=W*w>&;H)9e*{{gN_~%^H~Am`(&EfM z^gABQs?Pye>kN%?2-S-yE}2890MY4tTSH}_|JmzcE@JED+c5B~q%@;~S%^1qoYB8G z%#i_#ZR(kvHac78W^AQp>lAOGuTL+fdSQ>}mhITX`v;HYt_F>K5#!aQAn}>VlIQM0grJ_d$CyGk6?J)7mdv% z?bBZx8;6rpN4?RpEhM9py@>5eid>h*-<+3q*L_!d<6c@v;W^z^^VQI{En~jdRz`wi z5ne~NUGCvV3-HdQs5fs9U|er1A~grUZmi)1k0rK>d^LA7(5A(6#-;qeQxyK$b2P@T z{H;)Zg}Ym?j+;c=0bT#rM`nRKG^4L!=DS88U4k{b6W?a7j{oA3R8l`` zmOWE7-Bok;%&c9LRmtX?!|M>oP@r_m{(T&WVf!)+bZgFT68vlG*MSIIgYw_L_wWAYU&jdjn1J0pO1uc}zc*P$ z8W8p%|29H2#C#bBhO5gj{bLyTHPmnRzd|hk9t1p4VSGXct`+Yq_GSL*QS1zmPiVWDxf1{y)z|Dpe->^5z4ymSy_Rzjb#1tWbDeJq<-wt%gUN(>YVy+IbJ z*20Md>c>d+Y$?|y91t#uYeUuV+O|IePwI7aCD`!njuwuCG_dVmWKi<6(iHvf5tyrRnNp`cKfNLBfY`MdU?O`T33Hp( zm^tsGiT!kv*e($fOEed(Wr1PhK=gK@Fp#- zQePmOO}E{JPN^j9(mACubrz##R5K&iR0rD* z{RH=bLd0q@%ZkAZ6kK=PZde2_FQB_mY;MkZliOTu@v)p$dH#B@X5SC~tgTV;V830*OdkOfMGuq75Zh!x(z)( zi4Zy>?cn#v#XGjlAhE!1LK` zbx#2?mGUBeSB!a@kCxWlYn!unGAHRoseY;baM()-ht3bW0Fv6(`6a93zRb%z;^DO@ ztE(x^_U+&W?9LBw}=0DlU?;89_eIM+H1_qRLQz^uQCp68{ zwozS|?L)pR()|7tE7xt=BDoS8!}f98%yvGXaysl7E;jtTC^m`cx^P{n65{77)u)<> zFh*|k%87nfb^WnuOx00lcJNpT_!XM6F})+tosHb~dDp_4g}(nfivv4LgYK@1&Ck6L}G;OeDAh@>;pNnybK>m zXfmgT7@6-w<+&j-ubm&{=0p)Ve&Ol@SfgcIv7siiKL_3x>E`jegGhy&Xl^O(WCFw5 zf*!OlzT}=O^E+VsPp7DS3bWOzuK7+H{<0X7g8LIWjJ;GH!$)#1HmD}Dn|yswY}k3e zmNPpcYJ6nK!@Iy%dN-P})2{-H0AO#9=7wBqhar=k6i%?oYFBzGjB%GY{$g_&k6eQ3 zduipWj!-)hu%?ceRF;!sKNdiwS69qw$y-%Bd$@Y-VjqNI2vk(^B&x^+6A){M^XW&` zN4;hG=&02`-JW6^W*vB@w;MQHA|@AX%4tNQ+M50fFa{I)!sz3K`gRa`z zmev`wZ9vb8L3Pr$s`^sbjZ7o4_rM=lW#69Vu zT~TKujv(=-p3rrV&>z@6R!OIa)EZiPFl+cF-YWc8_pq^rY4&$`3UJ0iq{%2oRxMH1`3Du-6 zcnv-xEl6DVuVTtN|H}ts{mw1Q(LoVwhk|yIPH&ByOLlrxr$~T;-_%5VIgc>y*T_xY zPCsDul5nBhRLQAwP*9S(M$GSV-yYcP(aL=PlU4ZWMb8wcJzvC-HoaVbEQG=qy}y#n z4Va%gE$MC6eHWWsdB_T3>sqA~eQ}v>S2CZ6cr!C{+C#!Wpe4qudNrX+9UbKLle4v{m42^YJppdvSW={)+oMGx_+CQM>+xI zF0P;>Pen_S(yts+%X=OdL$h>K6iArwzlo(#8ctmwFBQtfGwA97?{!|cwL0sRAAQ&a z1O%M_%2q9Xe6N7z$nD!+FA(XL3BP^0FPD-boRU1lA>8l`*u{&Uw-5+VAMlIrj?85= zt3y)O-$%eb;VGBqP&FKa6VlHmpC=*DwaGDV_N0Vna^OruV(;IukE0 zlcGphHX$qJ7?I&VH&HL?qMAMrYpuQZ%NF_jUvq?*n&Bm=zfu5h?A zVKjrL8AiqM4B?R1H~Ypf;V0JmQ|=z4)XjA$#D25YyvLdSU-mP<8z-$&!GHoB@rn7` z!2&40cam}*rQ2L?lIWPfP5~3Df7qqWVfdrg4r2D+AckDeDgfPhWs5x>ols^`ilxLs zG#(5w99G*+pCvb~N$1O3#NTN7I6kLL3ohU4NJj1-5$k4@+p7tcYNrZ;7vvRmH8<(c zgb^}}y9e`bp1XtgtGs1v%Xqfg{S(_mIp3>e1>d!`K$)Kf84shTj{BG{6^0BM$`N|!^$2DnBdb~Bw@|u; z(=`oWgkE1{(>=eBjFESw7eYI}BeI6)@Vp0Xm|%-Hjrsb9Hb$((j(%#7ENzng`4DKc z|6W!P^uvRD$a5H9=v6>$lS&m$>9VAJI)TNl+0{Lm{Ep|RiZi9CK)yRp_w!TomF1=F z<%QjqAvmN$noM9TaA8MqiWubv0T@ShFZu3bk?bO&a0(VQ<+ znvrg^15}LBm%*fhGSo70r;P}`;duFh@Q--G(q!IouTk(t)_k7@)4Z=2E`e*=)M~4H zJ8WuNnl%V#e3OumPbE2WkJEp(Ld>4O)P~@oPoasA%<$C7>|s<>qrrkq@ao>MToCc7 z!f2VNnx5*gL0#y!L+|@pju86Gfh8EIfjpH?&O1f?^qlW&>>D;JoLUsrZKNw7GY-IG zI|tdNRp8WM(<-=G$6@oyy>{DrC6r{!rI#f^nYNh8l$-D7b%b;H%;#HNX<*&C7#!-; zHMA0!l43c;GAjxBbFwqFngh3%{HWjcg|OAwa{^+{vY3a|fmnrkD#&w6X-(V0V}m1a zXuWZMmcyv{)b_SOXM*;iK1X@0HGIQi=nxx0IKp9Nm&5#cOk8HAgAmH2vDATSND|^t zwi|mZIFjYaJ&n%6!>}Ewhm$ETi7o{Ym=BFK`>PRog!tRoB0qzK6YMsP?w@j?tl^#} za*!PKlnm@Q=c*%wR=!_Z@Um9Vo#d7|4`J+l*FWZ94AIr5s&>fVGq0vY_ISfnuknvr zfanFfL@1&`xv-TGi;uZeMytb022F_TP0%)?@9(t#31X z7rZ5Es%7|_?J16~B<|ja@Jj(mXDOz|zOtqFn>2JgN?W54xPu&k_sLK9L%g)Ax4^Tt zD(+~Iy5vsdKBXds7~wtH7_Wk0DpQpO^@y7f`{_&>+`HFNeWi3S&JPXPF}} zuNVuo6HynAZ$l~F_j|;lPuPltkA#mz?tFH4>^kxNt5}|Ldt&pxOev73h7NPu+dF)m zN8$-ps4LY=ea`vtrXuosvKE9+t1je$e~j*1^{+mntu!dS55cZF zzp>&)Uq>(Q1j^jmdK7Mv@mLI6E_1wGdrv`!XLJv*bWOQlUo!}l%R6BU8jy@Vey6R1tMA^v~eA*(^vo`kLk{wq*Wj0SwyZ#%dh(NPZ?7L zlk>R((2Kon(h=7M(2yc4_*?%BIdqL++XY08@HDq0q=>Ubsv!{#sa-)Y!cOmpB)8N<5MT-LkGJEMjU&jT~cdSG!a#=L| zntp?@%UO=<9Z{uy|;a+lt|x`uL>YFmKPaAvn6jmN^@&y$=lRWEANR2RMB6;FCS z;U-N4lk4(%n$Vm)HF8sT@BPJ~rNzv565Xp8j|PAS%bXd-BdwX%5|#PpLTdDgfBqKt zbM!$7&L(! zeTQEO#mx(xOJ|k$U&-UxF_Yt&e0xr;5ADe}zd(EMwaajtm7XS)ZVw8n+ZEnG(E%|n zxrn%vOy*-|4$Js4R}3PtlnKwV^c#BbN&giu5m+ zf|u$TDgj}Tc)-Nxpn!@pr$XEO{XA@f;+L*H(M2RuXqeXwidnwZp{BLQoYIi}sNbBh z_b}hX$^{i~!kz$vrx@ zu{iuKP>>kt6AfIc#ks=B>{q}zMy_40V!kg}D-TD6w=x$%TedNQw@nl_PRbTKErNzb zXxQ=zRK(uZk&TeYd+DMlisJ#Qy!Jhn+b#5(~EeP4%62Z2O$ z*y_g*I2bZML>i>b9^U=Az&t8Yvxxola8Zix@Ni_OSJ=z zjhNce`H$$@vPT(8Bv<&Y$^0oj z*L6!jb1hcptczgAq6l#)H#%%*(j_o!&3dwePujybeqd3XfB1w|Dz8Wz<0Cw*H`1kx z%lil`8|Xq6eyIA+ZAy$YQ}pUwmrsvF=oDmZ_ZFewK|!!xsAxaa&^Fb`RFcGGUCrpNW3JTc zv}82fod%(;w)jDMpX?ojk!2MWt`8IqAE9g&Pd(H&7jYh~i*@rF)XS1mfkXn5WCoq> z9NRMw0j`Z;$xIr6&ThCir?qV-4zH5^!I1kOUs` z%@<5!I-ozg@RRi3)Fqx#Sq9f&Yx+}oO#kNDwdlI(8@i`&)+{k<-)B#*gge%1gr^fd zM~+^#>a2tz?Mt8*$6YT%2{A%le{LPi21P)D^D|crlM>YkhrThSb-;_3oESIR#5>4U zKR#}I*n$}w@hT*J27yr7} zC(GfEJ&22#zXR;E+aIU6&ORv}mY=t%tM!o#%Hs%j9ySdKovB;R{j3c+*ZPQ&W<1Ds z@Ay!brU9;`d(Igbfk(Hn@=<3?FuK6rjWM!+7dNcpUTj3Dr#7 zz4)g*8E5ngU7%oA1m;Y9caQUv5u9~u>scn7`oP1$%cjOmiIlG3!B3M2{jOxq|6tf; zuX(SVo#d{MYp8hSXI@0qxt(2)v$RM`ybL}jKgNXZ*^a=Ji&$pepo2{AU7P0k4AFBX z9`oR=Xnckdx75dv3AWVeppWV}e(`iL?f`O}t~A+EQ10XYr+v}gr0-UW$7irNvC#X{ zNxuY%)|%Nb;+`kX$ieW%_t;}65?1-Pa8n_T@;1f*BuJ)`gS3)#k?G>BWuSlB!oos@ z;fB@hEcEVnyJe&A!DAuD$VIBg>c)QhX@ISsLqQ+A;?%9{q&=EC7)JmMSs&uao&F@h z1duYQOS_T}f7zQO%=6iy%Zta&ewnYJ*ocCBrn0 z{L&c!_Zt0aB#9$LtxWsF@gmOhHmo3k1HLDm0UUTR1D0!f{PBviqU#34E`7 z|KXG3uto1f`G@(T961qo$5*N}Ne0=!RVT@>V>pOz-~1|#mhx68JQSZM$lm$&usg$# z!YDBRmNoyP(vj$11rgrX3I)Rpwo1;y@RX~>apiobHvJ^H&FFY)rr;A{Z02(cMRahF_Bjsg4^#~!;`r-ABn|<)ev|=QRG0{)h!M_&-feRQR{gX;D>`3LS3=r4l2yN?K z%4O+854gx1P-#EtDrUP|m+BS%toi_u>6E69u{>Q%WO!3?4h?i=^e4j0Rxnuy@GWE5z2ub@arsrjUS;=*iu9oqAUiZ!PCrYAxLxQPE zAt?hY^wUC18PB}kcQ#|;R9MZmX0mG9M4WWEUZ_Xq8^|5Hq+5K^)5m?PihpvWoQLjI z4i^e2e>q#&oPT`t7I?E6yDDN!L>BiJerP)+i`%d|4KAB>H-)};I+gBtW`JDuFvEo$ zP)S9w0>Ma_n-DUed2>b~W)2{{&2P8v7bCrZ%Cjtjr{jeAcsZ?jdAkWFQv5~mRrHBz z-peoj!JBOxC0#uC>v+?^FAypCtlMi`XC}fUeKPu5dns6^lKkT9cXj4dR0Ugorqiqe zBzIB^ zK-mC602^z2zO+2y^MHlQyV0l7+zsS<(Br{Nj8g4$MZh;irb^b z9hJigtQY9^%h5B5P!OipW=bEp3Jt$9z~;`h?u;tC8QtuTU4qwD3+&;euxNC&&h0-6 z-bi*(ANRN%9VLkrnmbAD<2>k8E_8c}%%v~B!C$Lxy>E8E+$@pbC<-(8o=0vz8&$5M z(%wd|xRV0C5rfQP*vKtAeuhzQ5wASM$w+aMmT+~Rn)6wJB zU+mS26P8r!6QzNs)5zUFrV<|eTTIRpJJ5YLq?b-3M|YpJWh`At*sOP|cV~Hg-e6d6 zPUCUr2>;nv*oct)W%{s>oSb-2|C#(I5-3UTHC?Ngs`1>?l&zYTP`!A^@Fjjcuajd6 zdt7bZ$w#{H1FZdh%^jHF9Na@hJ*~?0pr*QDqrhKHyh@e~f}Hk%-nF<7ZM|d&p+_CW z7xUDV&uGvlP1g4ScBfY&sYDTi^Fq#t1odxH+?^tZC@WK=c^CVNOxl%(KF^%tjo&%6mTi2WP(C$${y@Wh2pz^0PtszDwQs)5Dr` z!XeIUsu%p2VRHcc8Cu=8I)t@2;LVTU<$b(Km3_+^Cpr}YqGxH1xYn7=Ssy)LPMHW>d&1IDQa5v z!bfif1VD?&Dmd(QA!Ma^{-;6pGR*1vQ=J6+ql+s~K*nK^5Hl4!!dnR`d8aR(hq7S7 zYy8KnIlas4C0p#aX*Ah0NH375E(8oF1E1P`9?b`$DPR}1Y+EHuKi9JF3HiQB;%Wv@ zn2;&vkeS+KOSs@`m|n_w-1pxhje)SZtLmM~Wn0I-NJuZKj8g^Q@mQ>}y#RI}$GC?y z)>#bT>zfme90N#>zS1u`T$RFC?|lmHcIDv4Y7>3BPKZabo1^-aO>@ z{V)H6IXbNXnk#|GOuUfC#N}~Yi<4J?IxEh(R4?7{?s(-3p>P#ka@y(KZyl#K@C85u zT-pcUY3-x!Sb;xRtwbTnwmkIpGwXa&`r)y?Kb*qP@3WcX9Ipb+}VdZmWbp2bu^G{Eugi6=sJhQ zT#>c;bW^~Q`-qCTZKx&fFd+vKoNh{Nr+-9+nml4gUEZ}MBZz~}4L|=@zuHe8h8ule zqQFhH#!}#yv7-f**wL9=3)7sBP@oVH9iSskWScd9Bd@$JSd%#T9gG-XS;yNJ4N69^BnR2qD1p%U%vz`agN9SGtLmw}pP!gQXyTIlbZ)ob>t$&MgimjIwtxgPS(ntG z$z|4f&rKA!VG6fSl$MgO6E+q7oVGUf8A6>9fVyFvP+BsY=r{kdz?V^b9Tkm@y&tZ4 zL}0Pe$TYq71>@6ah5k8}5?bnz!ZlkZCG_u|^*j0HD^jqC#M{{4uRr*2CFq7aeP`sa zRS;(*awbf+7{1-_N{A>y``Ca*i-Yr^tGh8Uk#@e8<>~3-F53WZX(3aOio$nR8fKhK6g;pyy zrVU$fYV=n3fb&q*UD(#od#tYZczE1+FaEB*TbXV5%85W7 z@?X`<9Nd}@dkH-a=lH1@C*Y1)48g}Z>CzmeG5ABf(W(-R`F&oRA1cDP{J9bTDcLl; zIUGrMqb{J(&as1`8~Ada+2HU>&lF`Gm#S8-oB6G{GtQgjd6xhI*?^HX6N_?X02OkV zvXrflD3xcZomgp2wgF9yqesx&^x)1XQ(;Jp`d%C7X*#^rAna_jUL@TMPX@qFbFGls zm3rcS-H|lUNtCjVs)F_QWO!XV@1wN{Ag^}$uLSN;?A;pNTAomb%TMJwv=jy(0ITy~ zvjIB_S~r_zb3%wM z(UZNYs-fHss{s1L(ddm*v6db6w0|yDCkS0G#xJ z2pcuf97uhTDov<%Bp@mwIJRA2N~Le?TIeVMeF_lRF6tsx_GI9!r*&uGM%cV}T2*QD zmCk4TdmW(*i3W^pgUj>-i?oqK^I_lw+G>R1c&11L>2qGkzN1vQMD)z_ExP2#8h}k2 zLN)@}Mk7K}8)Mh;S8h%$w`|u?8%@}kdHuZ0u00|YZs+=l0xkDid3xr%eMaHI%loRk zLFXX-?w+XkEu&3`zp0X~E^UZg{*Jo4plLr}DE*^_Ce@pH_2)fzr7$;Mn!eoMG9}Uy zUY@Q0b9*3>DvT3xZ)Tb<06#oYW5K&2iq6I0{}4+vVh#Sn zVWHI+IP^H_4u8Chnn&QD2wmHSmCxCPsUP_5R~Y*((w2NWRVil_ur0SJaiIPg6{8$5 zy7Gl7ok*s=5Fd z9E*kWHNfd)-g=tlxlYe+gG}0-LPV%LjxlrfI$21}<4#MJth+qWg)60SY)ExWpbMj?Fx! z9`uI24pEj_==4+@k+$s|!0v6q5K*cXVJpthlGA7mNvh)efaU4vVfE!ZY;ZaHs~6M! zE+y%nEc-|xITFWt=_1x$y!D+)*@nZ4DOAum{T(&U9hry5#We*S!Ht1wD~x5Mx2nKq za&W~@PS#Mw`Go+ZP^oCq^zG5U;}!Y(8Z>LH7r!oO#1HML+Ftfk!Dtkc+}ih^x#J78 z9&#KVWaxW}gnl8npM^|6c}QahnchcKbfNIF;V#H5RJ@O-%Qa)ixYZFpjyl^uBQm-B|3)ac-bumsdRcVH*nT#uO`zqT2cG z6`~oz084u)pI)D<+g-fB8;;mxh{bC@aut?ob611j;a4qmtO=#rCOamM#9+Nq)@10& zp}0?4m$gdaRggn+(K0i}B`X=KVxDTZ>Px99^07zj{cwtw`+C0HDoCG7>4|4vkk_O~ zr!MXEJSikHhzrl^_WjmJ?|QOxv)7e$t|M+cqm&ds5`{<0n5-{9p%W-vtNae`Rik_s zQA_V17;)M*lUD9JH}Yu9gg`Gd2sF(iD^3d!8-H|x0^Bg5L|1wu-i>5te)4-#(-^o) z&>)3A>{TM3fH%m`dL#qE;}A?<1{r5K^t*<0r$*snJFMrr6zOtgQ%CYR7@4YfE2dmX zB{sJ~L}clC`U58Dobc~+R!Hrq6L?Fi`^No1b*XzXx`3@)TJ zCA1XSvqU8V6ilm=4Jz}hS-Q|VeE{@y0jj`f-%hq^k#!snT~0bTxKlbW{Ys}Y#=#0K z2D?tmu-4&YEgh`_wi^SJEwtxvnS}YVfnh*ZGZxVo2RQ8`Re4-)fSJ8f#ziAV?F-+X z8u*AcQ}O!`dIP*U;~!ol``_`F8^~vjbhh4RtG)ly7xYFXS^ zL?-aLY2JGC4oJWgSK5agr7J^!pihfZtJ%pYl$n~{dt&w{5Ub2VXv)hLD2GovsF9Rt z6BD?Yj?khVcPTK|;agK=<7P46fF+e{(P~`A*B5V?qNRmiQto2kkPZyW;e1WLB|&$C zA1O!u&s8-Vm4sK3elBN`!tCSBun=0y>)JzDVse47CJU=6ry+F5t5fFe^EHKXfZRLI zqLkD8)2!JIuUUWe9>sj%o|tuZlx8e6=Ldt!1qJ15X}jZICS!VX7gDx`*CS%_Y?xT$ zf?qQH^RnBA7N(eZ`nwRW+gHtSYM=i+O+U&Ua#4;abDmpmY;n80=Ul|CG{WbPtMo8H zP3c$bj#qkK%mzC@E6mVZ?`sUP?wqg{C+PA5InO_8tj{0IN%tN&`!Z3jIo6mCSpzw z2t|Z~-MzS?t7NRr`7>Se4RrfCVQq<4$^`=Fm-iqo*%>?mJJvDkXo* zA+AZ*iHy4;?dlKrCB(Cd7^d}tN*_pCj`(*en@OZ&EK4> z+5d;KX?E3anqiT8_bFm^zoJSpSk1;EMtmv6uC3!F{ z|5dzXv{hs{U;Fs&Z-(yM(ifd=*di`V_51o_?KntFA-pnOs!M~fO)c2dp|7Qg`H{+wb8qo%L^%N;R85QGZc7peaXpcR_AU9rBg& zv>r1_CU7A$L>)(9ErL7x9WzO~ar@D;7AEAyS@-wapI_>wRHoOx?U)3Nha$_X)H!Dd z*^p#7BE~BL4ie?g1UY6i#Z;Z99RCSx%gM3>`Di4q)lO+;r3u}(D(ViM`LHqg3=+Kh zG86M`bM4O}-#n)zX%H{DI)GHzPCp^~0if~$(wd8{U#dcokYu?cu2FUU@xQM1@dXP# zpmWuqn*XN#g%VOwLmG1_ug$dvGG-Z7eSi#>uh$F@W9Ue}BO-U!``Kc6?pR}$nJvI= zz_7XP$DM2M>agg^XvvFS${4l8%zOGzzQQ$)?PG>^P2<*Es64+tQ%l8AG*b&D&3 zeAF=Qx@h49`Exp!wefJ7H_g&$+`P&(pa?%Lz2aX>`BLn^9^ zksscm7pDDn-eW_?9ubaaQxgnjCpCFkZ>mGktPE&>x!?9W>HPWh3Yyu|#qwBTKqaE+ z%ZCijTn>uD6{aQ+kEXY5`{QZKyS2S1({u1OxZLYEQEmd6G3?8LOIfinKDVaJmx*^_ zPOJgrx ztJ`zq^3Sb`M3468Yv{{MALws9v(@MV1*svpnX6r0ERcT(r48q;U02PQK7gF1m4&(~x;4}ke4%t$hy zDFXi67x;^u!zKI0yNf1Tpc1#6uXht*l#Sd2mg@PjEa?(=kVM7KiyY<$@5GjyH$y~C z(`*dk_?{zWUErp3k{iqD{E~-M^@yME(es`pk4@Ga0zC*lFaLSVFYeH?qM>*{Bx6Gd zFpe`!2hjJ%AK>uDk5uancQN!#FPQDiBcCUvJ7`0tH)nFnp}-F9%Y|X^JlYxaw*t8D4itX?kyU*gANB5rfZX` z@u+brgJN?M&x!WJ&wTR9Cfvv{(9dvP~O2@ zYJ7ATa@o`5qXk(sojln=87syqiCAlI1MLbVtvk7Z0$4;H#Jj=`UFDk2itZrD3 z{;Bnccg`+Jk?qE*T|MUZW=Ez_H5-j$ppp}$wLlBH@BG#)8fz%&gTfB&>2bTynw|Nz z%3(U;URUp)UP@g=ge^Ml8gg-uCMdX0y-hoN7Pd@OngEY1306-|GTxs(b%K_%MReQw zJki{w?k;;v+2R*;0+TfH^<0h4B9PJvpe$z_yzjTvT)t|wB&yZbC)UmfD z2|aWuhWY+lzIeVqwI)vt8hhK1qbx@^D2Ta(F8&5HOF5Y3mvXFd3xwpUx57`cWb+Rd z6Cc}z90_Jd^!xL<@*oXW7IB9(;pjBpa#SG?eGWsNcEz&ilnHT#Yo4niwFJ2=)PeVa ztzGa)4e=On< z-VF&aW#@dF;yEpxavZ|h{k5|bYrSWtB}Xq;8FYpj;yt$HwsY<;ywKdO09>E;2OM-# zs?Ecm#_*|>;7U?`?al{3C$zitg|D93u04qFbZ~Kkzm24gWL7EV%m;?sYr1#qApBIPX-vR#*O< z8VYB}Lf_zgE4oiYyH8(u3`n-fo(F{pX_6-w%n0~>_7StMN%)A8Qvr_|iRin37|tag z1vTS#AhS>o8?{jIKTnE;qWMU5*9-ET4t;z?`Jl6Muv9FXx$u5@Q7{}KV99Wgdvs{~ zrBstV?1A^HF$xs<4FNQJA}k4uAmO=`eKFIbPF?Tza{x~N4q4g_3XYz88WeQqlXq|g z>xm({E@)jvSJOsOXK6g8QQrV^Y5=oQ;HiF4oia{(je0W-W#b37viQ|Nk}*1Fbvtyq zXJlZDZS8R@gHUd4BX->2_#E9SODLl)bM22aWLPbY|Ckr=~l*k*spQ_kkI@)uY8 z%~#3Avz5ZA1eaWqd%?ecm6H(JLJyuf2q$+=ieRDSf*XIt$dHCiZ@fXDi$dS5A zhHB1!l6g@qagwOAM_IG&oAartGYIR^AcEuQ`ssbfQoiaozlSZNg1Gsk8+jp9^A@Qi zJ?}|3ezBKfDeD+63X3tWM>c7HR`F22YmnMg8nP9mQPzSpQ)fcZRH#YPNr>VJEFCTfOccNwj{G1yvvNyr7UU?y)?=zxidGV>MkThU#4xcV_LPkh zz{k8{^u!`IR~rtpb{5KA8{@$rcTH!Dj$Xoml``>rQAzH00?!)Bqr=Jav}2W3OI>zW zWDtaM7vnUT|E?FeH$nOSJbzvF&!a2yjLRfRo~qt`WhC1=sf3*^sms#CX{c ztyRMv;G7lJ@~G)ZSj(~LHw1e;bmsX#Yv=jxP3HqmO zn|}{%34e{9RS^i*`TURI)Ly*<%{F^zItS~$2@G^SeC7G7Jle}kk*Mxfz%MP7836i} zaGqUi+9I@Y*P-!P5zI(KViO@a-F1h_d`vu7H_HM z5X0y7)3ZGVB5u{x(T8nuvPVD*Q3`Bs( z+pl?{m3=^qAs{LM@IPW_+Dj?}L^fY5b@d!V@}Z`$ZfS=dzLyA(CLr??7{!tz2yQpHMjh$S}jF|rynf$E!YckiaY-}&D8eFSOUH6;)|8$r(0hmpfg zKqZTDotVlO_q9Nou6ZbQ%)OrSF)eiF!TIjItNI*6&Qy4_@Ju$_AM=H`SXq-bqP1_A z;|@PzjdjdT5VF-NjZ4O2TEWff;jAVann60vtS{C7v_Cs)f`LQ~KX<`MC;yq@MA zxV?6&cL(F8Nr?P#AL&~U(c$!YB7+G0VB-9v7B=_X z%6wlr)V24*dDK%`+IC7#OS&BRCZ(+2Zm?P zHHl>oFUCx#=7_uT-S01mU=yVG&z?T2Re;?)(IUwH#(GG&MfVbQYQ^|MY*DmbZj zU?|{hV2#hHjE99rGKY%5^Mhxt#0RgUA2kcs?x($;|I89r&0QDI!aE#L6O0D4|Sda$`B&E?`nXvp=@HXLop zk#VAyYk8;qWN;JU=@*8%`XQ+H1}O>J$F%mtHxK8IHNndo=8UN?9K7q?N!Iex*Z<&q zZbxRsqs_`wV*;_^+%lZwCT?1rsZL`X1*|Yx6YdAM{MY<>|3->oy)^Zg6^36J3VQ_I zcO|U7m&RN&Hr_I@Y?;4kcGXN)q7&cW!m5JkjBHmMq^S1Yyt@N3sFTPA1%1haLBS`+ zCsI|a*%nWiS8tEbZc|r(0};APb%FdeUtM7CjPEd(+q4Tz$m<*n6pwrjOgiun7yo3{ z^KXFY;CXyK#&LtN8r+4G$!TpVW32tWVQcjleScoQZn`pGi>aOx<@-H!)!=T^<*8zP z&&p;UMR25~7xefs`M-|y+*=_ZNUZ*rbJ>V}Y~%QOVhQ-=~% zcE3n~KfCbjy<4CXjBVesSvh+#%xNk4)I&&ST7L6QT(@h4lvqiin2vo?g#r8qr<{*$ zbofswoI;-Qp!rKZ&iPCRPB7UXw)ET&O#%+7rs(qza9Q(M%l?cB`?#XC0% zrRD6p3jKJw;7Zq!7c3KlFuS8@TiI)}>Ssbaukk|X57d10x&*>bHEYZ7$`wk&@J?L* zsIu@+TDag4^E!m=RuDA_l8jw^=n3;Yfoe2ws>N3#$22N?h$r@qw3ssmL^Q%|q4I~nf1UQpde8E2 z4d=d*6af)wD+y89m6+m{c>k>hOa@K2A1p`H9wZmKK~~by>yS*GGd?_j)KSM37hfd% zDzGsG7VxCp2t59(xhyTFN>%Ax#B?6J!4Yz~+A=wpk2{pbR!Ydya1Y(+p2=}{udi5= z#|Ou+aCf{lroq<|SuIw8UF`hxt)l-)bS%VBOXS%Cd|i)ULZ9$Pt%G@+AThClY0^795Zw<{&PRyizJEwE(bLndNAuJ_ zfASE3cC5WN!e#5`)NSA77e=?-AAIv|OOHf^^L8?qDfDI?+3q3b=NwmcIShm(#Af+U zz*g6)yT3V)@oPu>dTFr+kt+x!MTP^!7TVG!hod!_2)66%xCX{iFs@RLi7w^+aTuuQIGny z0wASie3bl<^XX%TPcVi;Qt+miSBS&$$;s-;Fz`8fx??>%9UX=a3$D4DI9prW%qC%l zAFqwvY#EFp>ysV(way80=pu!tQm^Y71qHkvDms_UgT`Ky@RG9_kF@x@# zgDYYOY^>eHt=;suOsgQbZIKtUG;(4>6t~sKppz(Hre=X5@mWEHJx!kSv&d@ptQO(1 zrz$yEwEDr(OD75w>i5JbKwp0P7~io6QJsH7(LB>BY-Y%Ra1^5NICRh~Ci?D}jqw z-;w0Fj3LPRsZ{TM9p-f+2O0U)^iY}`rBQxM?zw_lTGCNiOZ|KAxcVN%!B5hUD|#g1LU% zEfM59Jh#X6ye5%NBuY98G^{;T%o$=#O?tjj!Y_ucFrqb&LN~nNZ!}>C(@EE~6By zgmhb`iU&$m2&@;@A_uok7pWEpq%^JdHlELtE|nO43hwAhC?p%)TYLJe5Zxw|7Hvmz zWe}3*RLbT-#CMb-J6R#?BwyLR1BD3&>Pqjhv1}Ea3>htXdJT> zCs{wI#?^l@USQUGb26_ro@VD&MRLFIcoCfFs?)% zi`+Kz6?dn>Y~OamhByX(c_Aa+P6dd%{SZvE=Z0KUtrWYf(ha?5dk6uzI?QG|#aOr3m5v-Fl= z`DqYsiu8~^w4Iir?N;ghV9*F6zdFV&f|+LfhEl|V$(@di)amCB!EaxGL#I1C+(*MDjdB_;g`-yF>+Sci&Aljh>-TanqS9b-JcMmNn& z7Fdrkax~R31kyTG7m=v@dD!SGkFSy>6;4%&Sg-LnN4SO&7~A|pL2|wCT1`y~%xGj+ zo-R}u)9`579%&_mU;^crY0lyVpQI$Ppt$MnHuV;f%AdgGwr*yv79Xot4MazDF;DGR8Kmm6#->R8C@X#M5kIH&)E z(6COLp)3(jOvj{I7ZXV8{#{n^;wu5SrJ8JEdRsYdw64ZSSGbMAS`)dP7rm9QNyK%Y zO(_9R=90Yw4m)6@?;H1v(c+$C*zQ)GZswMuv|Ix)HHBSAlS^ zb($#n+AJr!KlZHu#!4NHZ=5Mr7VAxE3A_nWb+Temeoo^0S?5`yII}Uhnu;Mj<@Tr@5GL4h**R`@blSlTwG*!F> zhoV0=EY(}|J7bSyssmQDtt4=JjmNzyJ&hzvu#v-|>)Bj)uo`)H)n zME+>wS^W|C@=>tfYwtJ^dkba6=CO;VY=(4=Wt3s;md*9zhOpQgy@6&cmnFD?b&s%M zO*6eDHiGCRMhDhK_+d8dZ@_OZ`V!@hl*~&M%a$eOv=wirUa5G%McZ0rVYNVk@?f>K zxyEWqWq0^uHR7ai%%YzM<0fWcHVo>_@VGmxx;-?ry41B@{B`bWaVX0I)_>d~RB9V! zIaerX&3JztOz)Xf`>VlL%_fm;|CQTANvn}XME;v)W3RhwLca4n)#G>#y)%QB<=u1+ zbdSow=1>DIU5DxL*GqeE4(M3Ys^gF6X<&a=wXW~Zd{}bFNE8v?1ZaX`OPac|Jn<#{ z)IV{}JX|c9tIPPi4@HDdAby^2(Mx%C)SMpf>Jg)WD>w43X2^C5JMOzrk+2y10EoMn4Vr&c7Ep&4X+1cFwr4VGzgas9lV z^hh6KbFGZtsm7neY`Mp|SXAl%?nZ#x+GHy}!JAUC7kBgYtB$Ka*>t7)R_bmU6L4vt z7x4Op#b-S?o0j&j=PBpxRI@wk`l?44eOEof2BZFgbXPYa(9P$^_Z){bey8z{DkyFk zqNWwG)7+7LSM}M_*6w}8SQL~rIq_|XLo(a7Z+T8Wmlv`1%F;XA@CL1)3C((#zKz3P zz#fa=nzWpD*>_bAT&<1n!OY!92!FwMd!E|b=cmQEnc_Tk=3KWs=~=>O%93b*AzI~W zai+`KS`VtdYB5YYfpwMIy}C7E4Xw87DInS%J#DnfkHh%#BB=UCQ;Fd8!lrol`q<+Y z#Ij@gXu6VPTjwZ5BDQTg;V*Jwy$3@p#HU zm$bD3<(e(Xsww>G7+;*KWji)yU#wCZrBQ4Co-crshWa=%Qd;x>R7H*-MSfL#xn96_dI9Nb8VZ*V*$Po-J`p}z{ zXbd^!Z$@4p`fIv-l@#SBEI3mbU$c{RpTM#G6k; zAeZB&d69f2NBeY^Z3Avybah?PkXOIzISj*_)eRk+QQmkeYx&EzRuum9ayj5|lKtR| zSRt|csHUwle6fhf-gjQWSJ0?UkCP_S-B|gPZdtd;^Na<28_jxJYG?Fxt~rDNWi(B0 z+|wVe$w_JMV|;wy-|BLk<03qe6yG-w-YQyozU*XNm?+x+YY<$iN{3fr8INMzRPPv+^M00%Snwkj+&rl}lX~7*yRF{bE?>jGK^9UL4v)Q+g~?&bBR&6o;(NPr-W9HetW z5=|VWmqCHTrh=PqQ|uJMGuk_oPnAw#Exi0tO0rGzz`H`l{6%MvCsD%7hOVs$5$3JF z2ssD){6NpAe#(gcE-Vq^f);|amSp3>Br-4>m4Mx5H={bvMF%ojjuWFUL`%nY!yiol zSCLcN^co(IAu z@(C@6sk&iwAF{%-Tt=UWQ5+ssI`h~^{?^Nk5&1YtG2MQux&t&b`t&u0Fd^^(_~I7} zLYrfoYk!7x`ISVvo3Y{!iD@>O*CgbH@8l**B1MdGYuZgjRM=0w+649WC_3s;n|8bc zE^}U+z}jh7o}uOV!*5z2)#r?-ZYf;;r^NvVkxhu&6Q%SRN-+H73i%-$q9%UUo0t&D zUj?>4#L2(NSl$H=TF4lB{%<+k29XK0d;dBu`di>Up3)w!9>zE%q}!pTD?HeKeUg_; zLB`n6$ItiKmC)%&7>NKCOqF0&)ysAWzB$l=gS#*AxEiQ``PnEDkz_LZn zg2kF~$fuUDnjd%F;BV)4$%#CQNKKT#`|fb`B}#yK*rJ95G%mL{Os$)NMxZ~NWejol zIJkhKZ;!|yH~b#^sLhih(;*z6vi5`k32EAmx|SO1n~=l2_$&T<1QUTEzd!IdAMb89 z?;NWC{LO62F^hIP>-YP-ThlB5H?P9cbNGgOiQzj4@Man>S%wqYT%47LgfTo$Lm;SY z6|o+V-eV0`;@mDN2iF1|rF_C4_+QsicWXpVst4K7k?>2*9~a2>7RHla;aw4x*HmmN zdEgZB>}$b$lEeSrdTmxj`m5aFu9zOnko6(BDSUIkXHj2R4g=+bX~#;2f!#Z^`HD=? z%hN5v4A5U;oWI6DQexuW#X-!9kJE=8e?iR7^tKIyu)LWF=SGX9=a{ONSQ!*MDQP*1CdZN8~Z#P_%prOI_9vHh7! zBZn>`KMq@K6}K!Wb)Xf;S_8ogo*^=Aq$+V6f7*L%+1!f~j7V?IQ-yXd*BEcHC+uh= zokS|>hwY|))}dZUy$k8pE%*;XwCsd{(vZ5+OKo+!)F^&4Kc`>)0BL*e09~&o@UGY+ zRD%^GcyVRR(20Na$Wf&eTtui?hk&2l)tjBCLb`2qZQYXk=)(e zoaA7dJyDD;Emdw$=@KD!b#8oL>pG;v%r zacDeC>4HCyZ_zi^@IIo7x9THt(aNx2=9k`)eo`1%aq2812szz*&a2k4|1$Q5XdF)q zWitM|!;(FK8(z}gY~1Q<=|xZ17fax8RZH=>f+JwOyvD{}(nmfQ|fpG4E4&7z|k!!E{t1DU6RyO zbYWMRLS_dlP*mB+vcf=W2Sl2bBLpDOup~yqNGU1hmSv{pB#vf_$PHyz#gNj@kzvn! zHA_;YcGgITi~nK{!X5Izh~tu8lm4jNOjGoU&j=Q0f3_g82)5wwMJmN|rEuNBT9j)s z%A6`sZMmd8?cHj6u>ag7@Kq>poivHc2PfioMeV(a^C+biyLdc`uFnwV@yG9TS9C0=le0Dwf>?PWEA&D*^TdRui z?mNr{xF@sDD|~mD&BlK&8tlRkg=Cdw^SW2oVeF9^z6N$;zRaH6phd$}B^s;j#Hy`*FVW#P zo=GrGkJ%1~k_D1h%X>ASejDcx+<5GeVrig@n{Rx&>>Mh2)v|9fNR2!I3YpnFdg#9w zs-xpT?<{6kH>&D(ZQEZIjfRT#j?RBD36h7s^3QH08?{~ zXpzBClqn9Uj@}=!Y{2w{0X^`#^3>OJ8v?h|ophr{7kk}i)|&JMGuH|#*_5sa_IJbG z)l6{FfA)7%GtT<; z#%UzX#O;Iq!Ig!X?KZo^`wDTu_#(dZ~la=Yo;g}nce|rtm<@X0*5CO^`7O9{b5(c4B z+jp+`Un7S_@;Z|V#c%TbB{G_dB+u<5&N<`qY3`VWQQ}NbLNt#SRml3}27)!s1*IrM zWKMj5nt`&iN;(QZj(y+Nw@M1)-3Wl57qc~FVln&uhm$hB0sn=n9A>Uf_9Bj>O{sde zBqpVL49cI1U~OvBb4TRuet7ULI}i<8p1W1r?YnH(=(bwzxQI z4S1io%f%&p9%{-`R(Et4&xE+el2cuzq!~Sc!tfMr+mc~4U7%3aN9uv_*C0+FMIIIP z@2mgo`Fx2w{^k8gxcA>tfM%f0AvZ(%A3yV%6QLj$;rs9Z-{bRs-N!@zCmd8}+08W3 z4mx6=Vf3tNp#5y%Us{^+yhUvHUD1yBdE&wMu1!;7&r6Gv^kCGrpOW+;U}soZM4whXQ>-dyJ_mq4hW4ufAsJqWA6pbP zjh=|x@)MWE?3Hu~MV0)jOfolDQQW^hVbUNX8zxH;fe0A%x1`r?99iGD(&x8N(}{tB z!0~S(xMHd%&n($gejgwV_Yz(CX59O3E3$N=M%9lCHVMiMi6v(;D!SDZC-}As2(NK1 z;*#qMyYLTwNj$v+&FL?NT?TKEHF*+TPon;UM<7Z3=q9uHV{W#f@56GJ!nd~`k$YJo z%u#7V9-B%GzeRlF{>Co&RZ^Rb$v7VSyzybi>dz?8O5?>MWEIYALmG)_`HPxFcHd3} zwSeWK9yAJ5ZEXGvG( z2jMwgOAg_wqDWkE_<@W+k~r87OW2iRqg7%&!@(Q}72TZ9)Foy2)I!|?isZOd5{TyXu$KrR>9=eZY#Loid9JEDMZ{d|%gLwAX=+-V&n@Rz;aO|Ccr_q;U31)GHMKUFq>6>z$Rt;bhQ^o6o-IzZ} z4~ecn-LAz0tZQvdp)2{u?IZ#fg^17Nl_PSiEW-N6C^P~ZMD+?XIVG{trEkA3$$iSK1@O2Gffep;%S zC+*!}hvMsRxA8%m6WDbT$f}9LbU&mkCPn0@*koI}dRHNKi?hUQDtTBlNym{ABV|ahLqyEr#ze{v5l^@aiF+$u8VG8foh;9t~UG9^p zlZ4qzema;QPZw0_crZzgg-WwWVLQS#H%~TA>UpJ*Oby~!eFm9{UT*|E&l^VM!g>KH zXR4gj=oK;KvexLI-(rhYkfW&2)e95X_n-wlyOW*$PxO&X! zYJcKJ3tuACiUk-eDg&spWa9>(tIAbOMt9j{8%US1h zY(9sRivU4#&$OEu2?2b+gO@1m+4N-Ok^Lv4;0=cIlu4xp_PEtF(qVe`aTDg6x`PxCl66Uo#qR$+>mW)Gp)ck&Il z;#UssN)UY+H)DHg(SMLA>_uM{cwCC7qk4-7mkLQMfBd;3w^(aID;9_uJHoRjsEgw{ z)wTWm3oGgE@q(iBs+(y?gEO!MqTq)8-F?HLQt}sYwH3%ln@t}NZ@mdN;Lp;I3ByXBsCdF1 z_C|3WXTNM!@?vO@|H<#R>vqC#db+xcMHO(8-!Q{uY?%S@?@R$b7l1yMTaM0m{|Ft+ z1sc!{2i#OC)CV0Cv9WQmoBTnG3Sp8%7k7Q1`^4XrT|;)VRB0$-6?{%z4)MOz8vLt+ zY2RpRo4+xDBzT>(39O%b8zgJ&#k{H6;Shj|sKZ*>5hv#bTUy%&bdOm&dIlEo!C%ST zs?C*mG$#cN*!7RrNR4GcH#9mnOgZ+2F4?rLtZt&TxwqrxTYJ*Xi9S)rTdz1PHw}u* z&hX5!NxyuWan*M}JKxG$f;8PLl$C{AgJUwWrLSq#N4vST3059|DPj}!`x7`mxI^rv zoJ1B3LYQ(yeUa{q;yHw*F+ZWSmGtakrBJSe2BN5WM^G&0%5b{L00(RPRZYIB25t>M-qCaFA@&|^tw*d$?2j`4$FkutC+O?pIZNJ{z&_`+J`oA6zgnaIS1%b3t@zqZQ? zbypx(efn^x+@?G@rXz>M$#^qPH$J}^V*^XaFgaW&l@0#()s+NjzymlZ&dYrO18*_9 zDQRD}R8|zVLy>=&e1@Or)!>wAd6ztQrx<+k`g#D*aY>a&WNfp#){nm+ZO|EnM6|=SHot96&eB|z%d8EBwBAb|hQL?P* zkltGt_@drKYL&eLGSYrqFG$bwE7;85gP7Dc8P(FN1;vkwUm=SNcB4VSC`GarB)3`Z!{HbSkk{~ zK;%bn=RkGJ_U>PBm!+os>X+?9TK!+&VD%Zy9OS1n^KPOBa*PQoo^R8a$!uPHfC15h zk!Qs*`l+Vn4`xiMB3>K2{u*_>7DfGvv!>p-t0dl9H$NilC!7bz;K@MRy$g)|rU2{i zLJOx7?dG}~n>C%kbwJOeg6pn<*DcuY4_8<$&u&(_fq7paaomGSw6-6QZ$bif`JeFb zYm^E_u#MhyQk+b- zb2PZWD?y;653DG)WV`KOiaA!4yrOobEvNop}^cZ%vc6uG?Rls6S}8t0@N4}GGN z#$4Z=4TN#seH;$>0dadbNn zO;JtkKPyAtv`2h{KOaa)wyF$?5Ps-?e*Z-q&%QgJVAP7o=dc%inirDDe;qdY{KXM( z2rQy9*w-@YaIe>^uPN?FUk6GJqH;X4mrOTFK9%^zpX zd7g9b-@TsuKF;}F$d&g&;drMu4+NlXwi_iAQNphWoJe;Ji)@U&$6L1Dm?r*Xiwf zInFQM_TRp@35yIVEpLwE?-#mqO3OqsQ#MLIO6}n@;g4>&U$cNSS>p}abY;2aU%vkG z^UUBg8@Q{GXkcJkXOxqJi2ahp;QSR7CgazB)I07j8uBxC!vUg~asUk-rdEq+QfP4a zyr63rP2SSt{J3~dlmI_}n93r-g(Sr>3r_DsB?>geN+lWZaX%ef9U@+6JBGYYF-{2T*J7sFXkt7AJl38Kb@VpQZ4JP^T(rY_rhP*oGGS|=3?(CAbkQTWV<4t16a4hu% zp~uGdU98IqCHwy4ytpuzJ^CuYCp$^yt;KQMTF4`H0*_QBZ>c~{Fx|*6y3+^A{;%tl zj-v9% z>{nF=em$=Hh1#n{?mP7ob;R`PGcG6Gwki(rs7c<_K@|s$wrRF3-q($qpuP#ig*l%D zylg0QZKFq2lkJ2o{d@yuLR`ye&^U8&PjeUWM80EwOdMkxwt7u^&IJ2dA~~wH*vo4^ zt-Tgqd?tu%R~a*V0B9vFHxtLCr13;iA# zrUK4oe_SQ5qG1_&L`#6{Z516 zZo!tmnK`cObcYKfN2je2pjU@J|^IAolO~@RA>A)QRr(ai@_Ej&HNNHJm)v7hzZf#r-XBJ;AzfRz41n76qj& zkJ;9X3^Ypbo3?qTKF$xp*)C4UFGU8Si_9}SU$eY2m9#Ck=d|MMvSVRRQkt5Z`dPfR zD0l1ErP2f=aLm%@)<&+&W$qtkE2|2B|By1oP;)%TzN8o`b$*B#T6|{Q*cz`pH;T%o zlE2da;AZnnvWl-BwCUf??dN@n6~_{==&u}D$U{>37^^kdX4v^Ne*y&#|BmF5zpNd^ zC4C-TWjjO{M#_$s*~G zHYA2Olw_fiw1E#hM<)gLc9{L+b)+|VpQ;;-$#zE>?ac43{$z($Mh5FcZtQ~avV9f6 zQ8UcJ;?#oZGJ2u-rlG~466LF6bg;pr&Yi~gNF|q$yMghY-LHLlMib7omtH&{+@E|N zXzI_!t>7vb4?@2$p9gGSk6X3AFm1 zs}>72>inuD>YSoNU@b5+#=9IYw3L^^35BsXBCn{TF73)!=cr@n3Iu2XQf-hmi`F_q zyX@oNG%iPIV}v=z-U|)?>`2!iJUm`c^cE_3Gq#E)Z|vOac&H7a#Uz=N)`$41E8c)LWoW9_j65~Ic~ zC$t}`jGt59evP9`o+%9L3XLvMn}b|9GYM9@23F5GVqIek8U!_Q82*NOEbUn~nVBr7 z`v_llm-E{j9OmEk*XP_edq(fvemu$q<&<7@c!a$Ha=WSbmKPVtf~`+w#8maGpEuTm z1ST~zkhyQCHX)LJE2-Tna$5~?M=q!F1*80!&}I6Clt2PHG{oV-fUM1jDku`?#MsvC za07L*evnhC)_otuEC_a*IWJ_}*7gC_)3(Yt1m77;9~=N$FtxY#q1T7tT~46DQGKw} zqc_+fK2f=0x>`Iwsn=DN)}L*1l&&G~!Y7`3W&D25%x1;eUbAMEP$jDBu=-NWe!FnT zCAMRVZo%RBwE7{+-H_0Rg9-NkIDUVIBjgNIe8azx5MpXeMxqIrM-=}+%n(_X&$A>l z>aqsMg|M&Pw-?~Vg{@io%_s|ZX9sU8v#60St^Y6a0*Dz=;X!*i zuAK#0D|iIVH99d=`4kXp8O5Fek-l%I9XSia20!krkMyQv ztnpf!w~9LAsctbz8~?TwcRGwU=w~W#85DW{?zkTMYqYr@_jGsN{Oq_Cx_H6qRGhe| zwJHpEvy_4R{0z-d*#W(D)~+_GuG%EG>4D^VUo(M=9W_x>3}|})C8c?Wg^uS|5+|ED zsB~1rnb5{Wt#&Fmwf9Z4rO8RR;22n2S@}gD%H3C?1m$1%0(ifx9eMYd>}|~1Bxs7W zC^m9R6{o5-1}wsVAaPH7S&2n>rHV#IBQ(c}bWWET70qbg^K3?j7Pv6kH`1vV$XS9V zF&FQBg8*al(}v-$w8fjs`^-v332H?sZ&9RgQXDC|EeFm*WJ7k9tz-_3P644p@AfKq zl1wC?%KRQYy~kzmqxfrOOe#OXe}2Q*U^?n5rc)VS)Y?~{qRcGq1W73;UY?pYDK^)} zEGg`oTR`$3T~U#xmb z)Y<^%N$^@)^kI7bnibodRVncJC*8Z*t&@(2>1;3 zwzwHvQrYR+d(YW&FmOar;^<5$1A?o?O8u!9VM1Yg`tW0{x$HA#jwUl_ProAe6SX75 zvNLqYb&b4?=3J<%)s2`PfjxZsRMkpBXHVf*%GNcyZ<1K{RSh}$GW#$UtJ)(jM+Y83 z=HhASm?Fcm!c?8Fhb|Qx&;7H1*d|O(Leol$AzC#CkD!Ax_&XwCwKYhiDE^8VRi-C5 zf4KE<9{+&0@o~y9XRCe!0M5&&&M?;K zO)-e24_Y*Tr^TP!;dJznK=W+iOp43sw`@>29t~d7A;{1&@?FDsA&?gZ@tS0j1=c|v z4VA_&9b;YE(JBb?PeV3G+-LQ)(r}F+f0>U77Q`sW4jd+p2zrs<3ntwdZ}VAvI?^54 z?dD9c=b`!Ln6g#l3_C^BdHjjt>p($?SQV;DfAb7NObZx@yEpff5d2;ZGyV$mcqXZ@ z;YuHc5^J}~!JjSYIV>akEEi9wc8NZ<3Xiw*GS*-iH~|NK;qah?cVmQ$VL zAQWU=L1(I6{TL(bLrrSWu@h;jq(+(;WO3J7xpp(Sm+~P3GKwgd+ju$%qhFtkyQ&Jb z+u7%~UhomgO)0&>W8PF*L}DvBA<%HT80VR{NEu~l1}hP+G3iieKM_yl;f zQhE@1-*066;Wo%$n!mMyu^{sO68mH_YY2RZbx4Yw4X2hKt;?_yLKhjSVoLH3b@`To zvtuu5C1MC(UEq{h%+|OBmCkIAxs*%vJ``pTI^ooeA&Ry_(XsvZfl?Bwf)ek$5paNR z^)SUhJkd*Hd&QA0GYB%RPY7m+qT1mpBq8?ZW$MCmXbEq2S>y7Ox z=gPE(d|tz_VS3z<30!49D*Sz8Qm6{c(-_Z}F=w`(rA0BXlo*o5GVMwWb7r(nhb{7N zaAv?njxT^!gh-3h7Q-ht$N1)T&?mFi<6L`~+})$W4NSGK>y@vd({0c*7B^Zo*fPc4 zzdX}tIQ^w7@U(rJcZH_Ci7yiilFya62vQI^zb|M#gtz$6*|P4EE4MW51QC8;$MyO* z@%EJoOB&o3qT+F`2_6fi%GqzcVR-|OuJi$e^t|gR?U*oQVZcQpZyC74d`U}|4Z{Sg z1UGC+?4E~{85l$AuC>{vFclR{g_}@m+rO506;k}8`JBsslPVsL2o}2k<|@Zfh7xZS zPlnr^$)Wcl2T$E26eWy`Owv#^bAar+vtf*soHwG2*+N2aK(gyJ=`Hla6!A#L_XX-; zmC%kFbgBdK#={nqROzl#EGRrwB_6)yWqjFr9n==jm*$&61(ku_Qv|^lqvLK= z77e!;^0=$n#18|Nss=&**@^rjur}PvMaeV|$pl%O>ZgU=Of;l6@56DkO!6wGc*N5a5VkZ_S}~#r^w1>A%}hr&DnB&E}%bN{0?Np$8L)E zjc^;d=_Lue^|9xTq(2|?Y(KtK5`Aijx845ry?ux3MMMds`z9IumJ$2~j=PvQ`)bK( z0TAr^LqruvC=4DnDyvo%T;A|T$W?e~70H;%eOcQM2-Cl*Ef?T8U4r+f*VQRW!lY3W z429{(&2(9ootfXcUvG@B?eSxJC$mySjeG#(?(ikCig6=_aCavo4~+3B?G*MiG`Pu zlM?Rf`60o(>c6y1ie*TQ{8j;ptTEZfFE5obXDfAt393X}3Fi*CC0_}BC7l@$kwyqx zOd5IFo)O6xLiA*ogR}pVPu0I;>?CU&{_3#dO3_bO6-4J^rFE)0YlUBIG;A6a`u->& zm&XDSdVi?)8)3fP-%!X~drWAK{*v(WQ&>xAKSNN!u8noY9s~T0$R9;RZv{3`UgkUH z?V>G5)26w(Vz?4Tgn7{Bgh9jEgLl4_on+lKFVQI2`0mXwmEZzqn>%QKEhth}Axn1t zS*C=lmfn3F1b;g;IEDb&#jEDYlxSJX7<-dTiIJKCk*k^w&l_b zxlOb~{K48WWje1vHMtv3IqgPM3VDll_JSdm^AY5r@Y}zpiH3pPAUCi^q;gt5N!~TY^Z1J_|efd=(L3- zXa@e24ls`}fF^=on{*FbZ@K#$02IPYg zU%pqA?IP_9-oGG)P+i$4;XMWYug%mY@o(Xq2Nenj~5xb85r=p9}=J>DTd=8SiEC-$w z!T$nJSb%4KSQ~S#5v2zS=VwYz#J?Ta%+Y3%(}BbziF{IFog7mZnp1ylbHLK-hyy5- z-pY(4RPk;b*|FA!v^*RVl0InFu6T}X4YlRQ99$-L^IU|OK*u=06G_`d*~Dl@{u7#& zy%VBrTY+re@wuLI2!8~m`eG5*r@t{Lb_}_X*qz6wKn~z z{b!edL`o=YJOz#NKp-8xO*}6U5J;kdFo*xU&m%?!;J!=2RprljiiYi=&GB6a;I2OC zSb?mYTBQi<$NUFvD_^&3m%QnU!y@dquQO0H5UK3Cti_87vjht zAM8W0cPU@Z@kMWLCZ-hE-* z1mC(*T_YaL4sEP~hn=JcGK!+rTPJFR$y%8w7!YVrV_nW>`=(tI3hUi8O(9WWv{;!$ zzd{&echIN)Uv)d{1Qm-F9dwRvnkS@;_Owk}8^nbG4bGDpFgIxpgTcI@TtLjq_A?;^ zdUNjoW9%f*h`cUK%khe~zmY2UhmCF!NEDd!O`2}8RR)N9!yNv0uaL7-_FiIy!IqYY in2GOTDqEnb(807corQ9OE+l}zz;rYW)L*Gu`}_|$9{R!n diff --git a/test/image/baselines/splom_log.png b/test/image/baselines/splom_log.png index 9f022f5212f88ac8bf6314faa473bb104d425f77..8031034e14d0f32d75635ac578b5529b87eb7da0 100644 GIT binary patch literal 31588 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 BvOfR- literal 59832 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

  • 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
    };{7W)+h)I|j*If0cpv%PTf}lTd zjg8YP6pT)y?H)aF4DQyuw@X8@nI6VLGI{!8?Xm^dn;(6{@>y_fM#JHu?d@}r@r^X8 z+~UowvEwL@RR?A+ZxFgf#%}rP-63C4!AFn_v0*GA>o{X;s2)cLbKV`lZXB2HEf+V; zMj{*x;Woj&gsABN-hNI{l_2KjF$h2ZH8+^Tg9YfA;=uWU2^Ux?1r%g}9l$PoJ9ov& z(~q61)l8KMTsjK3bOgD0V3^Bp_L;9${KD+hp_UI(g~qVNY&{lAo(>(w83Oe4BRans zA!n-}n=eSy4Qni*+)X?uO7-IyM*@SM}1vdwk#bzjd*KzWf8{SsE%}e?Soh1M73h`!>KJP+Orq!zQ&ba^K8mU;JFH{A5 z%_s6pfa?Wd>JR`P&2k;&gFpAm9`F6GM?t8nI9c{AtWcp3e=VgTt5pdET36B z!}F&SI;#>o4lZ+O4V>-;!HIh9^Ig1tivinkGOp8{a>IxEkImZhx^9sSc#)h;6Ll_C zhTWQ9n%$uZv+pi>O1~iN{$Fu}zc38evE<5aib}jHn(0GE!?mf2Z7H4fFWre}zT4Ou zzmPrus-iW*7sd}dO-d`3>IkR>vI05qK?{Ae8?+hH>r+DxqtH9oMHwE~3a`HNor_J1 zurw&Hx=msp=~B6K9%99^_~2%leaDaK*4=Qnk@qKvRm0fs^oxu%{N^gx>Vq#QDlU%D zi?>6?|Nf9nLNaqv51UVZXe!Zwx0y+L^mowpMg!CM>HT49Uxo$sH5 zl~x2GO@0t~=L11lZ@(bra~cRl8m6nlpwc4;s{|PM1o^E`p;_g(FMa6@$^K4r9)~qu zDly3edu)aaJyQzSBK`3Q@y`wQ&rT$YqxU0!j156qZ71hDKE|4 zowbCzhZG?vJ9y!%0mN1ANG)Uw&-rS6bR<*a}S5e2L`)Z%FAC%19de9Y?z!lm2;q@?% z5D&<+gQgT0)2)%p^+F~YceOLe>>jhEUPz;8V4@*phvN1yNmdkjTFpeCFsOzjZVWml z1=eFbv(b7;TCbHv2twvO3h|B3Tc+Usv^r<(wxLe*42{C%u27Hj`vgTkJwjZ{d2ZURw3Zdap5KVZ+r>ZToe zp+xZ=SwCrd2Kfr$5K&9}a4m-l%I!^!sNibk{tzr}K{?-r2QmiWK=QbLS%nh<4LwCC z01VS)b4CRza+^gCmsaD~c9%TPadJ-^QeQY4NW~R->jV-cpql`pXN4vd6_Rc`J;|lf zhnXO~P{?Obvt?M;ZN9Je;IZJq_NwRpRI5cxNGAW|h|2fP!9Dz8CMe>Z6DrA#PL)-?nhntQ^KOtYSi)vIZ?Y*pYDQcqNept4dzM-s3O zvM0HnLjjlT?qtZf=`&lAyFj$9w2TaLy&JnWw;Y|$Z&3XkR4%%@&6xZQdlSej<-$W! z#VTlk=LeEj)KQ|IM5w5ukm`m@C`Hhd*DVj|%#sR6@*DZrR5sJD$G-#MQTNw>(R}e91uDAr?eE z=posYykLCkYz3OMx4-M9_0EiZm|r2yw2-JZOf05^@6-ulrE4!Wh1;@wm

    8TW6); zC5_H7YvQh?-qhRk1i2NeI5Gy!3+IvQCL`_2z|y}$GFh0RK{=R%CPw)I`04%I+uuG} zb6Y8%3=0jJZ#~+lSSy!hoU#84-1{0X4AVu_)mBlJ=&sugIQk~@HB5ar%z@Mt<%`M@ z#1mz?VRQX)Z;9N>F$B?UuzGTJEZ-YVGxHM*5@WD8TxV7NRzD=>+>|~^b#FYJ?{x`OS~q1?-R5)ex6>QizZjIK}ZhdlG@>KREMVrJuG z=yBRA5lmmqcH3Udmc|FCGt_(n8nJ$s6SYnBoYm{|Ch0r%=>&hoxhBJG6uRNXwe>|-V zuu^TLg?}H==fn$6RI_6kA)D-f{3S?Kf=vk|pJw#EX9sC!OS?DL;v?5dASLv(t!Ghz zc(jK!det9el?0Io{LPfLkIe}+D@xhlPj?ycNZ-~oRdCVl8)j<9sv z`amj35KR2w&2VA=G-ef6XLUkdaBh|WLaQ9%xH=l<~LWc7ZA zaXeRYWemE@yt%s@CprpmNdAEQSLE#M40fL22yG(Y=Yj@XH+6UY-EW1n)u z^@w-`ex{h=fZ=UZc?cMU$__%Kf^b|)tm?#u)F&W{BSM&e0MhqTkX8&eb;1}f=z#ri z3lj+h+&?0zQrQ2ORtHqaC_sW8dP*gR{=a`G870hS8I7;jd)_Wx`LxA_JPN+olpx*w zzC8B((~r`~$qgZp0wkdSjzuC%%6qyi{^3%R!EYgT6I_UT1UaLm^n+TVxz3f|=YKH% z4CHh_5Mp3J%k8=Ree{epT&S+3Zx4F0R%&>&L*?+k4tPcSK@DTYTke|YY`9cG=~Bl z1xyHsH;9zpo9-rPNwm|nvy4Bk5T4)WlRD!#?7MfkpUzJya3)V&G@MiE9p0Us5IZo8 zVN_W0rsjz;eLFIiG?L5=PZ0d@dt)~hB#8`vCCUjt6VtSII#6vOuK>2sJ-z&k1 zslU|Ida7xx7QO=RlEG-!yC=!W8)lKw50J;=zw1{6nZJTj&okg4sGgJ+Ig!=d`arJD z+cu0230+37Ej|rl@k!xi^qo-~Xf0(48u zNP_e3#`OoaqQ>C>Q*EB$v**6Wn!v`M`Os2j1|Ld__CxNd)C+H1yst#t?_OFAZpj^e zZdu_Gtw$CFkEY;u4Aoa`a7r<*}GKI?Ry;Ot|w%HpEfQEygbm+{-`~_`;ecN)= zVMK$H{)T^CUeP;Smc8wy)`j$!K(0JYNTG5e?oYY&@RgMn2tL@^K#*eH?BebSgdes6 zI>TV{t((_HY_`YA+N;^aMFp=A>m!}B{${)~ewB4T(<0D! z)aQImetcbCh>f{z31d8z;LWu?>^$KQ0&cZP48*=`K{|#1bosSz=AZjwkin+tNx?72 zjQ$(z;K!;`6E`T4LJ458UqPh^9;n&vPJ~w|tZMH@UUW%Cs)DK-_*WNYlOkaAR?BQ_0V3 zY}XYmtp=0s{Tzs^fM1JJ0_NQ}DAf|E`!6DXbJ~{N>_=7_lJRA5Cc^4oL9KsvTCGY2 zg*;=$l6)YIwjCKGXBuf?n&6g#Gy%)xHqxSZAr^+HIda2=#UP=Me!x{&;bmn6i!E=< z`5hg)k3x~!1?uxU>ub!jY2BJgP1gl z56@*C4aerB!}xBuaO*~Ws+ZTnhtnDHbod2agLAF2UxzQ5S3ADy`~URC?{4iSTh z01RH63UakEHUyL@pq)jLU^JsVCwJ{xWU`D4KFy0Wn^ z9yZX-Y4!up?eDb=i?vRruP|(Qvw+(UreEl?o~hV(2|aS9BZjujkB@+Xm~MBer&Ndl z;64!`8ru6JjuG1Am2LZ5K(N%y@T7xEXL1+ijtJ_)-#)cL`et8EtQbP|9BwTpwpHj7 z{&*O)0xv&4uzKhIl$(xN|Ap=CZNhT2J2{w++|vs8vTgZ5qZ)K#L3nhl)FnH}ocDOB z_G)?`jSk)2da7e~x4o}8ozExykaKgho$jbFwh;>QNW)*do{IHyiK% z6B!aJ39408P*uZB%y5_B{TM}S%n&UVX+7`{Z1yMU*W2(@L^!%~n@rHgZX5V-oXe~& zC|>!NCv+;x1KM-o%XrL_!&(IoqZUv@pNpk*X>6#LCRW!|#anG?^>iBclaYnLOu;;& z<*f1T-s}nqe-};2rw>4*Yjw?H)1_@gsS1@lZhQ_fSZJ^ak+(jnD4r+B z=&d4It&`T0mb+5b(9V&8Lo=_=)Fvghr*1||%{_(m5*eAo>4wuKUA22jR!*tA0Ri4l zqW>nJ)ZnWtlaodyTrQauB&(MA3yZ{A%8SX{Yept}+q%S?dIHd9;yHwlTY9A!Oxlwv zXd%)`rafddS+rT!3YEq^)Wzs>O3ses?K{@JkDvn7wv*gPk}HcIKki(Qn*#s^^EqJx zxr;(_5(^J$r{wj<0%<@Ivy z0j^Fw7$t)vWaX{gCuJo!EB8D=b`?gM#oQwX-|V%n#NDVrSIK&)1hhciCm1F=X26 zTA&am3rN@j{{wjmi@oj~hZokEGR@cG>UCCTi-tWakS^=%##py@ENSjUTRd}!-Q zMtbLXgc?#*vQ(Kcp%X(c7HljaWR!RA2#Aof zl2dzeeY|{~B_6JPPFS{QFdp8r`tyg|X(ONWLJYAD$FI8JZgmm=x3vKIe{geiDshhD zC-LbdIh$%I&{0^)0JS1vO>wl-DGGRyqslGPN07Zy{hy`{$X zwH*dx0-Z*JC239gdhMO#6737YId$f}RZ)&XcnkT~92&~+W;_+H0W~;s-_X~I+=O6#bhysxjZDY9# z;Tqrn{{a8ub$Rl+Xn`XUx4?6_>S>a4E5B>iPTinrzRUR7@mt)? z?ywmp94+Ss;yL^%!~Qg50Skup3IbP`tcEW;wGNYo0&q|HeDs}h{7S!&l6Pv%MWWta z3X}}ds~&-DTaq^n2PCw$k`RuJB*=tOOGSWjZ!{8P>+f)!R$k=`RY44C5+g^)8}&0% zK{ryN2LlamnsyJ!D#fQ|6x<`d%|3~8ODtP{mkZHLuQ6O(kQyOU;ub~0ja$cn&>DPris|3l(bOOUaVhZyf;$xKRyVsZs>XM!C5Zi2078&=ua4y zO*(o12)!MCM$}OZHl%W3fYl@8TzL^ourT=tNOg_r&C%}jP`@edn{dt4c&*tqLwbPi zaz8_Q_0He_He01+!f7)uc4Yxvqq{rEsUDudJ5>E{-`R!fGS43|G?sc>GF5I}!SZfr zl6Ak1lQ`c-3b+z{E=zmCYx_%K`QX!+O3H~AX-Zzl>%v zZu5pR=#55LY{(ty>fjB{7WZ3CwoC(lz4X7!6wQ?!KV1TkmdKu>|Je=%&u$kSXBw*- z+7D)(7NY*RWG-_8YT1-Pu)FDW`5qt|*$iJO{*no5(G0N6MRQEbJ6F;dx%UwU=>tX9 zdBxpfKga6tHgU0*T$zR0%OQyUidz!}(1jA+8~oY9t5J;lJ-3D1D@AD$WrNLz(n9&I zr+6HH8IBibF&OTS7NIT1|ac)W5)GJ{o2~FO|X9skShm*S-^ds|d+bqH%pYvE2)Y{%NM?grPAA%U$7DXsZ&= zRfEIPfvHYt%_};`Bd@<~5PbW9F!$L}KebYk&37=rLQ0DhyU+c)3%@2YQ}3z;fNb22 z{DfLHc8SM{{-x7v>khc{;{nmjP>JvhF>ja_`PBX^NiF{()oc3#4Ev2L|Kz8{r6tzq zTm8=Eq5~vKup3{j@l%;j59!qQ%>IyRj%WEE&Ad15_;fv@wa8%qS77(m39Hojvo}>N z1cwY%8Y}!X7J_~CvggXJ=4!HLC(&6Pr66j(5MOmcInC3oDJOUwSg8D5+LN;_pp2 zkW&=%11}+eNQpRF)yYpIC_@SQ<^jFZ42|D=WQCtAh#fe3T%KGu0$b2Qhb_S~=Vu6? zl`T({N60#VxM6>Wi$$h(EDm@)f{ zkj|z%6PXhNU=na@t>7X*dRU_%mTuX{N9laMy$-lttu+sWHqjX#q7B#BFgNg(5FeHS#jkd#bEHJVaBqWr}!JO@=Jg21M8nlT^Jw zTlSQ1ju`=)ZAY3>(@piRoq@&NnZz{pdy~EHT^AcuY)1-)tt(zJS(6gd?ln+?+|sxG zPjG9^_0x>)c#D$~pOb09hR$^)^BErYn;?BL-QF|Aoq2XnCLJUzdLhThty6l*rgt0`?xx&r^RuvwoY8KWq|1Ym$>82Wy@5hF+L>OaGmvmF{TVw+@* z=OtpMNjGrEcbpTfyvpCPxuejwk<8NkUUL)<_vza(f^lN~$7tHDl;7;XY>gJan|(># zueUymCHuaX0MY|S{A(q`;T|1n9a@V{i!x&^$jU9&1)36tV7tR)^vUOzEHMR(1<}fZBR_9dOifRk*S?(ALBBoU zHt<)Ro(~JHhZp(GEif^jQh&~lZ0O^Q*{80-VoFX&c1KwBwJhWloykwOF`dNeN-d6`QNDOqc4e|#xMult5~A>|7?R~Q zs@^IcW7Z?YfYO*d2ea5*TWn(;VFr`lgEfDT#WdT{YsE(wu6 z>Dt%OmN0hexR6pWdg~zp16GuM96{-~0;BvUiEpp3y`BW#oa-11?XtUFr{0c@)T1Cv*p<4GnF$d_Ob< zO15*OZ=z+x0nnC3wUBa#wvmIj^5UJl8y=avZ}{Z?hA`rJ(A{t8cTx|WF2@BS*E+O5 zxK8eWSTjacg_oo0KAB|f68=qO!gg~v+eXxCML%)E+`p|VGT~tW+vvYJtnZ`~rl!;B z*>oNh@v|5kp!F4Dn(0<#CS4$_7f&bqWl*Z7{(jKB{SRguZHq*BteZjr(lGE7+e@Mr z_O$)zcb$p}<&jW*8NO2gV=Zbe>7uxkD374vS;aSlSsZdQOH8Bz``HS0B_0+wVoU=? zU~4^8fX9ndQ5zO3=c*Q{NniYdO%LUP1LQel1v%xnJNa?t2) z0{dJ@$jI#=a~bq;Q9?-s2tY;9vDyF5bAVr=-n)@S7PMORXNw-YC#1}h|B1w#^)qjI>dI-8D@U8f{}L_Xke z##+A)@7eOY5?&pw!LBh!gV0JRjkP8vdgeh~FFP^caKK-s&ky4bT4!;#CK`L^;ii2B z(ItD`E(Gx!2S_q%PB5L~f*o;6d(ycvK0b#y!!FO=VWWz zGHd5Pi?${MTWk*apcP4`689g5L*Oe{@k$!v<3P0 zR+`5hma;VOGB5gI|G=Dl0<_w!cRjN^fHPQ?g7DdQvRvDkZl%Y&4Y)-yCNML3<8E#@ z`OhDAFE_$s8-zsV3Dy4NL^zy~t=D+(?RNP0(!o1Vt+!r_e+TQU4v;1n0QdKP<;iFPfnG;~DH zI-j;3$*DH`VN=p^-^!C%yq>Sn&p+#xGeaV}-$(sXTae~r^wXX6>yB@KzT(u8Wf~|& zaAB+|!G7dEpx(EGF2-n)D)V6ZJNH`-!0YitBjhp`@dMnmuBsG!;vRqMtpg&#ugr1Z zn~=T7VP0lFN=&CUMjWsGxy0Hs*rrc9o|@KagnCjMQWt*;`_R<=H%>zx#&(LdBjder zws@hBQU2{22~jqAQyOHh72n<-atK-cSl>(*g0ksV-!ro2w*_fAPB`HkeSxGZuI_6S zRiEb40pqn7L=PvCyKV^OzLzlXwPG|;lBsk0@E+}KK1xy)CXwRTF5ukv{|UK42w9-^G_uG`Bq{=!ElA*i8#><>PoAeE`zDJrA??|#ddNit)_UVa%CqPPC z)vnpWwvJ!1li;cYW_eCJ3r(q3aG6sHfwg)u!udertE<~);k%*wA8ZCiaS?1yeL~p{ z#0(rWN|(DhD{~=9pj(OcK}b2J3>RjM7oCyZhak(auQJ5jp~M?!k5NMxk*XmaVbZ8X zsIzWwy}bB_t=O`W1b8kcKGAnT$VSYSxZRu;FJ%kX7H<@@qoM0PrYu}=J>*hYpue;% zaK#I#9v2OFZC`}|R*n*&U0BDVzyq@_u zAhR~>bAjSYnrewgZ8zj}{dACfd4;L<$T`D1s2K^pSF6c&)R0|z<79YscX!jZNOO##_BM`_&4GK?DYlaLaV?H`KO4)w zM4Yidd8G}>;6Tqs>47+^4pT$wjWqV+21n#Fs4Iz0RD0{I+WJF=^?s*+j1r!_^Lmc&+V(RV_4on{k3 z%NU1xZRW|U;qIEOjpVYK`>!kPbJpK~Gx_3_k@m=WKKKY|OfGXRz9xSS1CXK5SfU^g z4-WuHM13ZS9ENl~l%H)6mzl4QgvH=6Acr|b7`a#G4E;cWC!Cpx7Si{)C>tS74!5j~ z+J_h9yTU&+90*9+waK!gPZbi!7J?fqAgK&}*PWp4EoXQ|zn!lS3|VseSjUXgx^yWQ zi=jf6GglB|9#5zRa=q={)UEDZFty%yAJl5X%E4l9C5aRwh7!t+YaNvA#L%PhxVHzMizp4yTihhSa-VS6c9S+#gG5IQNJP zKadG;szIqDUD07cx(?vA*jy!1%h-sHr<`#`bO;LTQ_BuT*FS`r??=lwVb$HN{F2yP zIo|r^kbI)vJ5AJAq(h2?u0ovL>6IzsZ5bQ3l;tPF_HqYvr2ygkuN-LCDD$kwDL9h| z;o10Qy^(T0$SG7Lt35(8WiRKO!z(6e(qk2j6NV2*wv#RHt_&JAs6clP6@Un0nV~Ia zSwO3pLuL!n8stR-&k-K`{_r2*ABlXcOr3Kkw|SL4Z|i{3eM}s&H>`|UXHrsnyDuxz znw;Addq*Wx$ccPB?Md3)cQs~*r=!nLt(siC3j!+^7VB^`|7VmbyvD2=Nn>~GCnQa-{;feg(7aq;u#0*h60MX0SEQU z!BriFMLHr^>ej4CXiP@Cq9kG~MKL#>=Bl$mQ2+pB<(UUUEXCc0-BMNJz@_2edTpp}FOoe{7uLuc6$ z3~gPusLaTAi)#m7F*^>wTDhhUdQZS-PLc|DI_V0?xW}?isQVa39)2;07!)ndw+QT*{ATxD0vZNipx` zs9rvUuyUnw&83l>A&^MU`4O4qzxB^?RMMGiYr#%K~0{^>#hUl9NcVfkg(3bScyH1+?6W`OC$eI@ zqFFps?f!9->~9)%qsUZf0o%L3qL`j=NoD4x?rLiH{a>5z9vW#I^BGDP8egfcN_-L= zOLLvvE)?(kx-R+R{H6Z5h1?de=Qe*KQ&}M~sbTACMQ$2r$<#{k4o#w_Yo!>aBk;UD z>npwuCc!(VatB#6%>Xth(19@jX(U)!ILUkRfEgy>cRJ1Zku$ZhlZ9&X^t{1p!} z0M@Qeu9aokM@<2LN>qUi%W8>~rMCbl#|(p`G|XMO*b%@I?#|d=?8oW6Bp@-#{svMH zPBhrj)Q)(&aZg9-CCtbEa6~e*kanw(7MZ^`Nli!&x}sg|RHuA&qCBC!cv+KHzQ~*2 zYN_uK(O!c!U%j4tmA~2?--!BeFW|yb&OO9^`>IPlCiE@4N#{-llQ7%YWuZG3yJ2}> zF<;(X1xB!K$vj2k(c=)nm{D&Gt|jG8Xk4)2aNbKWieSvP&}D zoWyiY1xRU}`KpLINU^p$)Ju!j*tW`|)1S0PJzYJ|abW4jy@Fv+RG(VggcRu#i#^m! zO#O(Cw}rzvIU_yPT@D1RG)$jPQahupUBo|s(S$C@%MrgV*kyIP(`6h=ML|=PZqVGd z`JU`6Tgr(qaYrO}`+9e@*oyuB;#Lk%$sSd_h2vEoLJHfl(zjm9YbPpQOBoG1jf;Nr zXAj=b<-uY`B;a<;r0UykR#{S?W4c>Fy825faUya}TD?8!97MAW?l5oX)U7zAX}Ch> zqHvS`BE9+Lc{{ADq7jT|SMyS-tNpqdE!@JJ$TyO1uX1o`;;f_*98+V+Ux^N6yNtb? zO-iwS$Ga zI)6cr!d=*@I~d@%K+Z${rW_QQG?#Kd8~k>cmhlgVKdr3d2!T`u6;y*0n#0JhM4SlU*pQrkZVZC*F z!YC&4RF$6J$V z820V@c|30FL}ZU#T2E)h5uG*RC76jOC%q5#`PTdBxNdInH;p*CoV7Nc?;#Z$b%{gD zycI!>w%g$o%FJ57VBWyMj877bDVGr0FP+Bz5DmkJ`Jte};pP z*j;ZO<(TC(4ID`q>R#TVD9j?#5lEMF9*BxS-#9!o-IC@oao0;C!{-=3t^Sry&HU0vo z+y{@J9;r4v*_Ttj`TB7GiB_YZq3({XoTXoYtzj>MCY7*{y$19?)=R@E6tsndM?Lb54QlUOaJ( znTjp1FEleQ;OoaOvbkWc1V8H2k6`Q6no8$Ra+pJ%*ZOC(zviWc=QByWK$Iqo{dmer zyYC^IdYcQ+&?bKLeo@MC+`qVZJZQNNZYHK{dw@h@iB}=D)$!u|=Iq)?*Uvl2+b{~h zmNQ6)JuO~%h@<@7>-|UwAtmF-fApT#v?n0VcFu?P|Ihk(Cy=AcKWPJ26A%?TCHIA)ZKqQz`;qbx9;E|8p_+=U-xS7unb*(kdyne5Qf z;I{@?YoAW^aFMC{=t{-GAfUtj z_~B)<=_O~TI!f)WLfuS#5+a<&?{(V|YP}A1>*Eun&6g|oK{((U&P2S(F$xxqk#Ci# z2h$mtaG7DG6Xv)$d1ek13e3fksqkT{j9~NR=DG4h)~ASTkfY^|yHR;A=IoEtdg z)z%WXpKdp~9w{GVaJ;#fKzKlv=_0`j)2^evLtTqKO7GTkXF&L;&B)cE)Nq?9rvzaq zo{<8q>fw_PKPw1`J>v}&jbuQgY!r7{Y*VlL7FIK??2n57Y?Pa;`^j!ps1P}54AN51 zoLM&e_iN)sL;ig)NY-4X9_&b~5O8=Zu!Tg3_~Upgwr=<5EqC~% zdAnX;tc&gu!*u#X7pd}<@$tIrImo{M8V&udx;N0wmnR#L7l8t{D*xZ~+D&y1_o(BP zgbCDWZ3%R)EEfdkH=V%A&SFDZ?Tj|ntgYi|9uE%>Z8W?W_lAuEYvy;qLZe~7*Z#D3 z?Az=$n=Lq%VwM1BYD$`x2x1hL!yHMd2U2%9^AGp=3Lw-DD!^!fccHOV%anxLjX;K^79J&~6%`gXv*BXk91k+K z(MMz$xOUv?z1a^U%QH%*R#9p{zFdKvZnQHLRI{0?^u*IrJSTz^QLmqGd00O^7^UqD zE+s4GdI9n5ny8mZuYPypL*L2B#(=bblZ$;%WvZkaH(Qm5fQZq3pcAn)Q zG3C;r7KXe<08e>ywbDbHIp78Ld3qxE@|g_7FzpuA&US{vAERtsX;?`)i>T2+sdSRL zdz^evQa4=>>$jHGLU&i~+n!G$T=gMr)jd?Mj!k2XrH2D zMTHcadmODohj`i!%)$2++3qxXw|*S2bG_pJuVpi&p2CDK)$!v`gWMn>;v&d40Z8Zf z@;0~~9`L5eHv0z&4bGCA+@)ltwnvz@@kTSU*7=KoknD3=sk==wi)w7CHd>vnijgps ze8DT2?r=Zm{mLf1$zwboHxc4G{EgqHTXcd?M6{YS2de(~kSv+N$tLM|C?bo>q=4@# z9haP;MV7PZ)4h~aSa3W&5y_{jx+XEg; z=1O5=4Am8E#zOqL#}J(M1d+*<*F!nKO`zTM6cIg;S3;r$91Pm@-raupwZ=={T_3lG z?R!qbk-h1}U@h#u-cI*EoY#+)c-8X*N{E@mz{ls3ojvVb^d?u)vfbZ<9QHhYtN@N8II+Lk_xFPU7@>;3u@?*bHHAQZQXBj-h8| zLpE6!;Qv<+haS zE@@RO+x&@fagcsj6AKC1+kr#Dj-GQC1?Yhr7=o~2dVQbYmME4-?w9{3c}47C(iM2| zok+eu8@rU;I|T<5BKZh@o4}hxx>Bptq(s(*%NWu&f6?In6oe)q(TwA=Agay|scTL2 zkeXJcz?&WtETa(L*)Odf&=$(w&PiLzacLCDi;OiOiwqDMP3bQXf6c&_d}llSe!eKQ zd7tQAbx3maFuXCq^I6BoKZSvI}q?5l%8E=e5+(vWladcW+suF#p&Nq9Sb9fN@ z7YQ2etPM|a@BZxtaOZB1RV0MoX?Nv{$`*!8d-N7buT17j+iymFAka>k#+}~ARm%X% zh_N@%=5>%!Gl!53_!APimjMsp5&F{ZOogyYnAxI6%I_qY;WePuNtPHWK=y!7UDN(dSgO zV=32C;syVO${zT}7}7f~T871Z|#sY(k>0k%thdc2;cHtY3b zwqWk}$Z!ZS3nC%I5tW>a7@r2~4 z;wgi_9#EN(i~0n=hpo}Y6%+3ASD41b4&vkzeI1#FOdcpc@sT`Bmx??q|06OI!S0nV zY);^NsjM%o*Fr}Oj_GBscXLNQ5wotxvFt`I-;IV+eoCaC3mS$0w3O4l{j2pIGMuRA zekdDF2@>vzMU%v+ZKfg>M(F7C`#aXK+L~o)9%KV6V0tbitZY?YcrEd4 z5Z2q$r-E6}M%H;uyeC2qk3kMtv<9S@bW6TebX@69YH1NRm8t*k6Wlg>U-%$(BiuF@ z=<5AJ#*7GwkB{NYs%Hw zKe`VyeqWgJhbPFN)h1LX)>q4z#KS={WpcNF{Mi(N$J$}_^Uom1PFTRXSq0BJ!ZJe^w3>PSjK^w3{uRpNQ*xc1zg7& zJ|-3K?+9_KJKfGcHLm0j0lV#z8`Dhq*}Y9%KScz8 zbaZJ%@;=r%)ZDkyU3N*;Kz^Wk#Pes|y~EXUi^3H0_+=)u0I9Bd59?Z~KykP9CEjQ` zq6ev|opPxaZ@CMPFj~bQW)BsH3b#CwWfap{bQ%Q?k%>raaJbuPxPzZPs}H%`N$+@E zPKeXV7fK^=$**-9VH0n>x$zT9jo@~Q)sL{F#rY*Pl|?}d2=8iTzuA3m0>LTfFDKce z!pc!14UE7c^ZBW?-Kjx8xuc2RZUhao)r;9C#0`dINWq%8Bz=n9y9QsQwGNJ$W)T{- zFB6X;NnF2a?k*~359jAE91hLQrb|m@3yyp4u4@g2o}3NrV?rJK_^6Cyh7k#n&T?3!fvn`=x7dEH;$=^2b8k@#Llht$vcfrSvRJmKtaU6P`v#6qZ zq*%>180{MP`s+SExI{wBrqO$DxwW_su*QS)*kb;MnwUsxHfh!=7YBE|FzLs)9?E`D zJub_>WV$eGq|r|%Vs;!waR?EnEj$(4FP=O7aoqXieTdT?oQ5mE27-oHN)G?|0K3-0 zRI>~3J46hUgBGPxDV!-_YUO*l7`K%rmBU?HVOA9^u1ens-gEWJWJPHD*n|sb)Ywvs}OB>w71+h=b|j-!yYtuk9Q=YgoRU z7o$L&--!O|KfXX=DtCwd^sP#m&&6bWXzFOrl(=lg*OYKNAzx&Vjd;N`-~|hc?26>|e>@ z+N^U}{FEiAxEVtB(B9D~Ur^})d8De@rv&;K6Q*u<(es=Ed#2*c0N{L@%Y9xhY_?kc zpq~u;DAg5n2I4FJ$4cBs`24@h?J8fWOJiBmT#xE&fXavOW+SEqga}N5et!Sw7)7a; zxLVBoGNk;4f2^{K6!JFEMH5g4(Vh%Aw%0m(5FW~zvw6TTWS9KK^Y2&t3JZt{!>EX2 zM~KtA#fiK&AmlPLuK2?6LNOe{0Vl=Fj`Z!50S;bB7b*#RNU9nGItB+Qi>m%QcmKHl z!tl7C*uHwtZx_Xw|hU)dpFJ(u#3REC&=YNL02M2@w8439d_Gh)P%Kz&> z%}0f!)KwN22$FvGqYA%93iJmiYp~#kQSlWXPGs#2=RfWmz zr2vW?PqS%F+c5j1h1o^s8W3;TWNU*Va1lwLw>>PhJ(QY^CGg66c;*xL;)ch0)EPPn z|BRNw$1f8W9lppQ1d0YMEyA>%H{-6BT#v<4#XbP<%AoBP15K)3w6!JH=H^hXZxqT- z@3E(iO|6&OYd?s8N_!)h%r%IBMqtni z>0%C!P9M%mJnY>rFj^FUz9}#Jy}VZ1-PLZQH?Hw(XTFBG^-koF3b<7NHk%zo=Rav9 zXrXX_0?4qeXNn83tB3^}F!q3`Dba(~_p3cswRcfv{elQTSe#5HSx#kUbD zascWm=8r83SI15Wqh=les4we^O{!9O400FeM$ zxuyBN(cVOXe_IX6L|Hd_XOkW8Oh;{iU_-q#ptOk_6L%K-Rtfb`nYC}HUX1StPRyB0 zYr{nfyHPl&`5ea?x!7XsI=&kif3ai?wMAo+`F>GpL!TgMXF!a_9<&?m3d|c1YdD?H zWOWKoX;=Eu`3~gIHOk-zs2O)Z{LZV!r~i=p9{gr$%JnXnCY`@FqotX8W5yabX5jVG z&p{f}oPq@Lri$&&jD5u>1jH(-0pQv}Y2%TNI#$ib)Mnz{e2!#HvGsa)d|9_SI1dMK zk8Xk+%A$wF)vVpJ-)O%YL>&$J(>TIaO5aQ<$??vYr3tvcEBRXCfv`8Js$)M#40mwA zQyMyhw1HH7KldS)2sg{K=Y0E)CTS96I1;w*2X-?EYO}VE?)l>qH+34ZI@5Y+@7pkZ zc2!UCS=xhzc~yQ^YKmSXQaXh6=!8R?=Lpi zjuX9B3i0*-dN5NlRO(l-3NF&9EfUcPEUhx2D#k7^oO-|)wqC>C~Nzf$>q|;oH3$3kK<2j zNgAMJw`_eTrYAl4fQflVsTD)yN_+ro!e8n3p3gUOGe)oKRmi5N&kcB;uO1|nkDpZA zx>s@nc9BGO&BYoW=9yvjf6EXX?ANcpg2v2gV117Ts$w}-hs zL{qWSjh%5A)i>rCx(5{EDqhwleV^T$9afSbcSe`MAf|?;YQ!F`RUm z`y9USj#4~P9N)0 zAy(IL)UaQih&5ZRR+Vx{=-?uwJ(Gm39}?Mcbr?f)=}#TwNIj;xUp%p!h+6Lg*UqX# z*k)h|on0OR?w)PGtG)E6`@H!Ms)LFi68bywWq5}L zudH7V*HgTKrguCbm#q&cf_>+Br_1b9-c9-An~_%N!BP^pr3GsE!o#1dH}kZI^R>g_ zA2kmQ`{VIpU}3E_@xwVg8gOok15??3{TnK6tlc|7?j2$wZq`xA6^P&NGSjtkO5 z=Jo3%jwI&1AWfQ67GG)?Cy_BVa|>kcqw%x^`OK4b0Db^hzR2;&jPffIvu5issdPd2 zP{H9V_gJpfdR=d4nEC0HEfFU}vLEp*xax7yze=m~q}m$=Pu@b)uc?!;83giGBw(n? zzSIl(Q+OJ$VPP$id!8wwj?e?5*y>_TW%lmN86NB3`Ene!_9cW5lXfnF+%^LKuReZS zgc{!k`3twf<8yF?BNB+lhZ>sQM}bdVBRu5l9=pUU0=Jx=Q5FCBeUxL!JF!(hTFym>?LA>-)zFh^4*QvdzSSR`;5Dj4nA7v8j(m}vhwQCc~0 z$Hy5p2hx+RVe9e#+Y9)25E(yS=5NEOz)z=q0Z5g93&H2}HPqnz`aejHJw_Nhr!H{U z6|EJ?!~X+5`Da_D4-Nd?rV7OxNb>pLLkdg2jPz1ggv8bVcU-v7AK{vE2D1e{S5p5u zP9!_H05<-z$p7W8e5H_odn4Ia7@PDe{oj-E74CWij{LPyDipxO-@s-4=Ni%?fd3Bm zt~~qq>)ycaVS|tMlqbNhxzqAA)Tbr60}x-(;qKr zfSvvNMT+#*Mk{0uMFfg>zqqOxq!T)fis8j%p02)HAlUbtiGLW$hXLK{c?!|8?!x8*+!WH3 zt9r9pwtavonse$UX8@HNa*B?}jbSA%{3Y}CZRQCH#oo?Nc7#JnF4)qY2Nku9l{izn z&5~6oTK5`d%1d)NkH?2&&w%E`nt6+=WQ&I08!h+CNiL9wc%9apUZLMJ2a<5ugVeXz z^Sx%DXG+%rHmT?6(*3dAki*~8+78R^*Rx^VOU402Hi729Cspus%cP?)VZIHesKtwY zNOakZQ#}B3yWasME`LA0ZoS`R4jD3KzyZ|8q*?G{HraeA^L*%cZ@ro`J?c#dDTK2> z;8BVJsivlvI(g=$1d*Q5<7ou4)P7$*Q^!EM+ga}wQ1)uHdOQ?^iP$3AZ8tZeLm|3_ zeUuuF;oM8AfD~gLfE5o&pCAF5lWHI(=W=JX6EW9qOJm6Wdhy!T9YFPTYQQPatj!~b z%;`MrsfMR7-*0i(bfWXsUE6tnnJ}OT&CSj`xeWlb6wKreXeJxZn^lF4YjT=Q{B@W& z=hn{+NLPMJ7I3W@rz3VfsIc(*`X(RUCMgsEPN$BV&Se|#&-zole<&0BBu1P+-W_WI z)NEMqPEL$$W#dsp|1*=FG-Z;VnAv#ksBRs-=a_dpW&I4TOhpK?0-IN&U$mK@9d1Ja zr4j?=t5qNsyrHBIg{iLX=B_01a$0AZ#ChXoz)N+4zE{6~Dnr|ZhOXFvyk z7vorBH2fb6&vk{5iNGougKjfeK*)-~hwBZ3ox>_KaML<=+-|3PT8tQV{J@Lp0Oj>D zO8~dZ(TWV78%+^PNAF$J`B2q!EsUI^>*M*B_~DmG0J;N+z<#b1O};!=!-wFd=rE^; z!`8BhN-DVUow6Nep|G$}GwJE^x>fcg-*ZPHDeZl0uf23^(}=ha^PGs2^-nm@zueY3 zYI(DnrH}X9LXCnLXpldPF8d{=OEXh>%`4k?Qo?h{uQyeMPW&R5fqkZNudoR9a1`u? zojS}Fi}K`}1XLULrInVI*9lWR?&hU8G#Otr!~*Gqs&w1eCIi+F%j9c2quF5|U3}=! zFU(oY)2tmp6r2-Z43hKHu`Nx-`gRWH(WB$A1o_FFOY{n}i9w_Lo$hv7S_ z%VyMWnwg=N5siJnbGu*0UE?>BlHxG;eX2x*JE6O$heQ`Fux(>*0V~*4Cf5D#>axA2 z9f5G>JtDDz=S{y(XdDH7ZC;v7AvOPaf{fF9*e+oyZLlg)Lr=F2Hrh|7vMVv2aoVUg$!D>BP>7U&oUpnY%v zYpyQB1F`|LhrP+PD}v55T~lW3s;u@aA33r54HD3O-pziET(?{zpBnW9_p=+ zB}CzpeeOJUuVj~$r9~56 z#UP#=#+EHSXKwd)pXcA->zwmD=lov3^ZkC_=bZ01?Qk3O{y13vGNORiyafB<5pTo# z=+4E5mR9TC5+{w&6lNoF^kFbb^?l1jbE@&C%@P}|TS(+q64&31S7XV&`9v0&H zAk4fJ)W&sx*q_Uk-Ol^sg3+)@nPZn%5*vt!QI5w%8fIaOy7p50{{>KiF4ThNfT^-x z7Mh9ZS1B;6`>+(ZfhBcXt9`lBALO*C&Zb|V*YHcB@Xh9lIn>tF1cD6c>f?tFQAwUB|T!|cbj zu2G01-p$;%T*XWqnI`S7^m63|66zszkA#g6@+F5n%VkIQQM0%bDf*WtOgKRA&e0pH zxAew_0ArhD=&@d{IJUw5-5M>mzp%?HWiRadHWjuk30|0ranmg!hqqtX!XPEd(PyYP z3=i7CYkn4$^>|6%WviNG^A41BFcdmbVecmT@7Il-9&XKPhzNX<@Y_&9xZI*p>rR`c zEX3|>WZy{1%XP`An?LQgi)Pjx=`96b#?m01M<4oCzaur0SP%@-V zB(GjkEjH_kZmoFSy&()?Z$_rJu~@_%mzuVm6x^1iWc;eeEoIf zGL7Fu1V$qNhv`bS)%+rNwv#2tPzlt~CvrqzlDVTS{P8=z-a%k_FoT6s`;k&sNz9biO~ewXv=8%Bmq+%uPnEoN=3@6 z=3d$s96MiHb+!4%%KT4Y63Y@n4voB51p)F#@8CRl8|G<<-`}wBPM)MjS zD2iT8|MAm^>c(B`=)uSY3?hpBw&|P=!ZyVc(S@7n@x5Hp&|Pri!%PBjGZf$O<;qH6 z#`v548aF%wV^l+`C%S4CUHc!b=up4~+Ya~w${huzXPIrQi51b~ir6`s$KTeU6~;mt zTL}7Q(&5rYe%xlqM*TrHac1p(=#c3hQ>0t-O|qOetAy~f!e3exxRHzZMJSvX!@bkCYPT^bd0dZ(6z$XK`xUlY zuqd~H40j_3b%2mE0++k6mOtDQ4xHPx6#{0l>lUvn`M@K0YGa@rb7aG4jT(!ZpMUZi zw^U?A&n3s47b3SY8SpBltiZX%SNQ{A^CVd!xO3(?qru6Qkul#D=h-7__kmbjYO+a~ zp3~3|cuv{q*R_512{GCkeCD}Me)8^`HbjrJYfyRIUplKlygNl~F~^!vq(E&92?8Xt zf_9_ZkMPM~CC!xosG>uswk13H<}tZq(g2fP#yts(L`)N`iGF8XTxROcK1Lp^Itx27 zi%@u~`g!=eU*`$ETNCo!JW9cYQS;J;qZkW$ky3|iG<0Cp{wbW8JwHfpK|lnbmi|i7 z;;p?fVT>Hw^#{(2o`Eo|0yapy(s!9V(Dd$OtMQ)jJa0#q-68m_?EJYEyW2CbFj0Ev z6`XqdNa92xq?U);*}Bto1JpvfbVqo4ojBuSXEqQ=ohFr0eW;=?0g#1novu!=G81+e z7Ljo}%zQmLGzrl`YlokupQN|ZR6>35F-vYHhyokYF(48Ic)e*yJN1IeZyUvYH5E)* zyg`VoFHcA9Izc^;6;BNmo$$7xcIMZExFLRLSew0r*~=}x`ip!mT!A}eyJ^SWm-U?^ zC_lB=54gA>>3C}kXVRIqVdTR#L)pp*^bHYUmF5x8bY*W#r&rC>Wmy3)1FnhWS}DbA z!6um@3T0)+%fTq4htUF9{>)1oK&ZH-?oi;D@yR5c7d{Ia4nL-`vO2Vu#bUq~GjkPD za$O2z5UErWflBs`?l8P%oSrhWW-fn~W@>PT{4S--r#IEU^PLFZF4rJ2oD6HaVwKC) zOO|*zp%Cbuh)nA*`tAP5J1)App@oL&SwEj6}wFLq8FWd+HdI<2&duD;cyjjs}GYK`xF-T4Hng-wGfym6j-HyI(1YWJWov zJQu4%h0m4e%wArIvXk47|EkoPL97$`lO+$JuUQ?3koCJ$=Qc-#38p%2P4Oj=FhHCGrWZo5tPT01-` z7HB7B$eczYA0_3Qrr6*Jq2)O70t#o0{wOxw(#%0O@77Nv-;++na~nY?$<3ROPz(`7 zv)kPQzFc2RSROZz?4Ega;_oWqS3K*k-I1;2AvZsx+B5;iWNr;R-hLhSw7Orp*)Zi; zR`nba@@&Z7XO+4uc~ltWKskCz>VS*cjIC1Dd{J~Zif zd0ckl3#YAMjZA=Gp7Mi%Y?W2fztbUbl!gk75v1(tA6Up5NTb4GM4XZwHuY$-()oKy z^Ye)66i*c&7waRb_-};(J1WcJtlIcrRJ{JgP=Ar51G1ntU$UF@-_0R-);SHX*Y&zg z`~%kzJnCS2Zi*k``^Jp^c4(RZwiqAqhi+aR5IwRQv;`u4K*H#|Lh50j|Y?MTlT=@FYNXwZF7cm zUQ=1qUH!d9r#P7M>~S7fU(accZ$0J=DZZF9J^EqxYTurHLzmhdbg4aB^X#8U*Lerx q_j$Rv_V=sbsAzL>aX~rj5-*p?pk4NQ>+k&F2^ZdmU|nzNbM3$R=yYoU literal 58881 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�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%0AC%1e{6 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 ONQ=wgFS=(K_kR7CEX<;`1S!o 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 Zk)-1)+u}@=z<16m$f!yeN!}0me*om;2WS8Q literal 37152 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

    Syj%Tkw@GQ}*Sonc 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 f4;RbCjO diff --git a/test/image/baselines/splom_nodiag.png b/test/image/baselines/splom_nodiag.png index 7988f84e9b4b1d4d530222d05093c6126ddd6a3b..1cdcf1d553ed9032476ccf084a1b8940579d7d1e 100644 GIT binary patch literal 73381 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

    aN+VF-9w7K0WXuCsBSJZ8%n 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

    *P2GwK@=&hfct;pgA*m!m@Rlpg~+IH^}o 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

    c;q)* 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 literal 28606 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⋘hrwlX;L93 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 diff --git a/test/image/baselines/splom_ragged-via-visible-false.png b/test/image/baselines/splom_ragged-via-visible-false.png index 549fc147f9b93371a9c45bb3b09906614cfad00c..c55adcadef3d59573fee374e4bc7fd38387810af 100644 GIT binary patch literal 27419 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 GoBt2{B2QQV diff --git a/test/image/baselines/splom_symbol_numbers.png b/test/image/baselines/splom_symbol_numbers.png index 23d5d703129f35b55fef94d0e14602230b84f5d0..795c20a36988578d66a3dff570444ff4bbd6a496 100644 GIT binary patch literal 24398 zcmd43cRbba|3A)&oJiSZk3tDaoDh!e>}0PZBRjH=J(6UW$X-Pfva@NBO~$b)na2vp z9^dOpczwR#@9+2f_xJw8?fp7EpVxR?kL$7S_s8?Os>WBE`1xT3h)gP>#w|vOb;@>B{!`z2X_@2^{Fp{cs%oMMfe<79Sr+ zTwT_~!Dw*_M>?)j`X2tL4{`}Fi1REM?t%6tW2uAJpg)}2K7OV5g_Wgh%W$|!4~I)} z1&@6%G=F$F{%`hL4^qxx9DF;qz6%t`lh*R$5*pULz0h#-A`UJ!KBud}x3^q}Zw^tU z@Zyo!%li1C8Dvos$CJX}gTav0^={flCoB2Ej;xDUdS-GUj9;Y8cflCU{@}sWG|p_t zLXwhXw#B!*p&6=kC^P6EZc?R;IVnm@LNDBbwcvv#1_6oKdGyA`{@XncET7_s?o$2T z0Qvunb;rjKakshgAqldU4YynxS|2mM^C7_ zBpi@-0ZdMva_R5@CCF07h<{p=5dAw(DS4kVJSi{*Gm!+%zas|A9f7MZp~mmz{pU@% z>lI`j<}z>MzqR?O;|{Qly~e@M(<)efadh;|Byez~$g8I$PUeI&M}b+&NT44*tSkQ+3I(3&)KfPL0M9(p^jQH?@s&HHx+G&M6npkamwk}#zF&w&)`!=(Ts8cQP~gTVt7d@K&+>Bo(%qnpFB2p{SUIK!(j-_Tcnh))WV_fN!T3&d8Q zD#rw89@F=UKKy;-Di9n0&9BFIi0uA~3Q#t2E1BEJ%Esvjwn^G?fed#FcBF2;ZQ%Tz zH6x(4L*l4)$CW{*kb{jS){fshS_qEs7?JAIY46aWj{oSmZxtS=>pJTLg2R11pl0^M zBe4LR7}WJ|I9YEbdCFMm&`aTDlA~*d<9ieAq5i?^ST^WYq#$k>ix2V}I4ZX4TE+9n z$5H{#y(<}K;CNT?fV)78qMBtopx6H5(Odw}!sEfV`ZPmaPn2?*Z0Y@2E7xh-6BTD3 ziv^>Z7d;69hxO(H{9t|3)G1@!TVy0hXUt6E>1*5;;aB=*DdKxNzT zEuJ6z?z0Ut=gbs#d`sa0`e3Vnh~zeo=fr{i1zHn2RnBh(jpVyQc+C;dm;)$H z#U=AE|3>pcR)SL*FCJ+#S2&sw$;=8?OR6K60d53Pn^2r8Rv+XBkoVV`z?S31BAH)+ zMNrXCJ^Qyw=wXt3;HstMo_!1*!UGCsGcYx?4;T(tpW^n3ZrQ7((BS8}cXpA3cOX*) z{Sg8yam0B{0}g3P*(d4Xe0E4u#;}sHeE$qKnEX1Ct4Dwz+T?z@?D0}KbHPd;?_OZQ z#Y-USIJ~I7eqcBvrrmryx z-TK3=cCZ4Szg>6g!0x-zwM z>z}iNL`R_pEKShHSx5uFDfsk5I`N$pXlj^9`iXvQTqODIht724|Bt0n1QIeS=ujlb z#k)oQCix)hdJ|ZFE0R9qqse=>xRkROQWp!2c*Yk{xVc@j7mQ zjoXTu$nI*_DY8)S2iAR`>S*cccImF+u-Ock_mtQSQu)a35IvY`ODuUjF0+67;oAfl zwZ6SCw^8*i^9oLZz5>%1Hlx*|chsANVgdtC4;DRAZ*x|&`eZv?{$437ee+Y^DKOJH z)xKlz&P>7pewqGwiC^Nx9|uK(qYa^o&-y0?q#kbdi)Y}sTfMP5$CAmX1eav~C;#J< zEPNX|`N&>R_udWd7uKJRU2}3MC%$H$?S(P+~dr-V;kHDj#h`JNY>RV^UH%&tHJXI8z3I{}-(n>alIpCH`D z*C}Hgt$h;Krol9;;Q7HWG}6wf=zIncN+kN}FVdi3AKSBeyhh1aoX>CF%fT+{*r?Z^ z6&OZ(?S3I^p6VgC%yxW|yQOM0tBzm^P0dgHU4IK)aBtiRoRdi=&Q6@0Ajz!ykki&# zHY@3wrGm}jyAj=0Z9%OMPH8NcIFf~g)_1f;FB;WYH<5li-j-sfcH1eh;Bxvi-Qig! zXY|U8SJHM1=v6@hMCQOOePXuQ&)qD$&{U%bmMyDZ)iSqz*uqXH1jLO$AYB+zNW~q2Faw+VFLxg)hE};FjKJPb!^$U}=D7$ssf&^e90DC0a?@fw zx<)wKMxSMmg|6J;bHRggro@LQJ&F}}eos79Drge0i@G=X+T>YZS`XcP*c6qE_Uebe z9=>8Vy~I~plA-VT1WJs5bcgK%bIE{ffH@rhVO*@kGlw9D=MKRR3fm9L?Evk+VEAr=uGWB{E(p+B6ydxUOGu8^n^jhBmBhR}OJhJ|t zqD}GYm7|3}4(u0MM{$moKDs>DEwhs=X6_2A5ux0Ad!S9NkD@Z{jRmlPk9aJ22zYPPZJ)nNI2 zA<=MWATSSHgRb%tr%;S;JHmK^VuEVojrpj73I86JWs}|LTToHvSm=-2*NO3V$h4~- zR5)exlrjoX;-Bx=N*;;uaNfu&)g1iN6R*gG|JL)V^Lwy(W6Y=X&cMNO;y+Qs4D<>Z zPUA)CMVTbIn!M)LEsXV0=Y061J$;OL6GkQm^CHq0wEWbg8P#8uNv*vb9q9KA9WRy3 zAl_XqZW%H2IF;e@>F;T8DD+Zy?HOTkJQXCmDA&edyu6nvR8?qlt4qvAE9uGoxfP|< zzz5>teuz0PxgGe%RaFB+%TbX{k}mWk72dgfo!RELMU=w$!#I@w#_|pKEQ}JK;lS$1 zEj(>7x@Z9-i>M|6gX|_kQPI~J3Q5cx!i5lWPY|786BBSr;pNDM4a=A9OUjI*-z=}( znP2o8``UuS3|RmwfH!r)0nSu!r&XMDTgO*u-$}PeKvt!$^=}Q92yD* z2gLp}Mc}v^`~(C9`uBI*_xq%&4IXADp*|?Z-DsR_ON<}CdXA0cyzlHE{>qr}0j%O8 zci{;3-E>c@tjWw|dOoG(t)kdVu)kCt2TFQy$I+~`l7}-?GQQfY0`9H#*TB$_^`%Rf z){OSCMuLu$ireen`!3u4?OtY~p`k);f9w_UjKy0&EZ?oT&1)y;)e|a#faj@pm)5_R z4}rluzAZ$YFP zo^%M?mdEVRNQ1(CZ1J}Gn1*R=fuL5mbW6?i#Cl5WJG5!L=J}>Ua4O6;)?QY=_WD#5 zQ51O;-4LS=WOh^YZ)6ObbR^e+=)ldD*Py&RLnYaEd$FblJKf0^&i^PFxr+ZpvLiIL zq@a5hRl3D3QlO0LoDE$Yb)+6N;H@-ACFJC9-A$g=GqLz+Jud_taVM4PIaMB2WmQ|% zupfdZ6K`hPuND}!>q%5Mo~Ha|LQ#2++U57R=gxn>Qx8_Ut;`LM?m0K>V6j-u#lIOb z8m^*&M!O;mvb+~M3#XL_WmAXO<_B#COKg(%Z@E1xwpo$co(vk%v<-FcN**Z^VDf(X zSZsf#vGZd0Q7xcUc(A|Ye(#VqD&aB@HnqAtbE}soc3`W_yDLM9+pRW_z)PPTHTorx znC^ORd~&^4Xt7DdxxsQLtB;dlL1tERhTd4l(VEIRqcWtBM45!p?K0Lb*CsxZmqH~M zBjKjios~OH{Avu({LsIe#5TtK*OtDXAMDOjw^{zvDCoVn(;Yip;eyC3m16z1Nn_Z~ zGP;K?h~zOS|7JNtNlB@xqjO7v{nHqd(;>OHdImy zeKhj@iHnK#KPMZk=y|1Kbxzl$XW~+73nDJ2eTLoP>uV`n8AfF}UXzWXDKYb}&(4=l zG{Lb3WNEgSe38`fWoUb_ifWtYfC+ErHMFIF;fMBWdP zO8b2Jfsxg*dk&ULGf|&-BW)$v|2w?o4I>8`L#g^vFd+A2NHB8ArKa~qjy-Ur^v+D) zJNexDpRe`Ysj>AM4@Jx+x{Tz1JtuOtxV=k!n%%nbp=pg}utN%-UT=o&n@GCGtwVbtiGqt|YSqpMiVP(_2Y%bn!QVluzbzd>WrxxVG_fnbxzBIb@+sc7{4%z_m_E~i#VQqAps|cE9G0Dadd;)J(tO1>buJQ=at+dT@zG;kpnOASp=h>M@v41}r#F)?=5mS)+l|>;1TUK$Za>* zFttIs((%x!)W=sE^!FP|=X-?|8WB%f19xr_jzsV>|6&^}t?dnz$>!wFU;Y_Dxs_}y z)|F&xX6qrSRgsj=iQ=`JC+EH7%G9J#B|Tj+GwTHMR3{DQCl3rjA!0uZZ}* zG+cINtNg4;jLVD1Bl?#FGn{i>=PgfBxS&nDdk|KSZf@;izMi_8rIFBwJOhUv+>8bg z$89>lr^yhlx<(1syzVi;=7Y2cp+?1PJ7uPkb{?@@@lE#6&GU~QQdA}_{}h5nlFNx! z#8;mg7PRus8J@139*(%`>>YP2Go!Mbhfd(z9kSJ(umc5(HMMNrV+Kjo>BkyDXM9QE z_o80ENpkCKz)tH>43k`cnnTybUFb|%p%ubttTEx9$vEGY->t;iuQ~N_R^=$V$S9eU z#qnJtI*MSc9grD1mt7+4uFrgP*&lI9+|UJ84t?q%)U%0qm)3?~oy*@X*U-&~SDl?q zH+ODUuxWae+Gt#QgH54lL2!%mVTQTklk_faT6Ghyzz_xpkl?ejo!m&jwO4GTMby8x zi$Elx>z4=8sR$q2+oK|Ga@lDvvI^oT@`0Q}Ds3B6oi<~H=iTz@9wA{Z&$r>8MUP}Z zeCj1uF|nLm<*NqaWeUFj8RdhE?qeX$yID`!NAu)%9i6|lSuos{TUGPrCwUHH!QFDT zJV(8XNA9zQJlM}AY2CRriMz4GYk#v2N1ir$+MUU0br#(I!Q_T@5DDM^hFqe?U#8?%@ZJaVT(bn|1b z*!o>WMB@d+!g#9!jfqPcjy=ynaN$|55eHr_Yn!?WgG*^4g^WG$RuMiP;PeM zFM)NR7-X9FhYC!U0xYa}x4Bde<325V%#aM`xxbznZUIuWk5@7I;bM$J6mQWCWLkZI zGQ;KhXKU~PB_CHuB2H>3MRw5Z{1W09lMKUyv8w9oS`NU-lX`92sTaim=fy-Ko;majj83YDbogMNl2cV`>WVMH0YPv}`_!S65%h z^mZ%O4dOCXkXUfly7*GL{%+OKSsCJ@sPr|gd5mL&lSG2?OD`cVqMR%X23c z`k-nc_f_mbE5ggFE##;S>8pL_iS|@_b*&#P02MeT_Y727tYY*Xo+qMa zvjk0>DD(;*K6fr;>A396AQJD8RO7bYmSE%8?V}CVoqAzg4UTaRJ1-*RU2c?!J#B!y zf?5^E$7!PJwez4&X@5&B|9rO5?gsCbzF@ zM(6i2y9u71P_@inVQi*U{7F=N6jABaM)R&7)5p>m`!(J|vv!*tdP8x3=-m$QTHv1; zuKwsZPqs0ra4s$=xGu8RXJWH5*;-;sM4fo5TwAcezt1|f(fo#kjk0}Qe5;yKtL5}t z$pNUM#sj~op73?(kM*_8T_H@UCVUPQl`Bf+dqovuc!~|HP&!IVO1;kXQp}miiqjes z?=%hLEJ|bSfaHCr;Zd(IDwgHm*c1>hG-iJQ%8jiiuR)E<41}zOj_snQ6IVqCG1!c{ zN=7z|T?9yJdUN#D+cOBbORWFi5ERs98Jt#GFEC1Sic(5;jl#}os;M#&6BDPd{1mv9 zXPqG-n$hQEvsLy;F;8@L5Vm`|8S~h$yCyerez5e}!q!Yks#i2&)!M^%jw{1)FE{^Y zbcx&4Y-~jeI<<@my744eQ@E!(qOrQuW#7eA@(U?>z6E5UrVJYn~eFwGpW9(jF}B!VY*D zX;*8_SwAI;qVTf3)pjr6eWewV89Z#2TgL9>TW>Pi@>9jvn_JHuz5Cau!l@TF_&GG3 zb)_pQp9G$W3_7(3%5`rYhFj2@fv!{mj51KXoLyr4ozQ)uY|46Vu3r$fYC$JpdCxMQ z&qOASUkHK{4lBSUcn1$(vmZmo^P9IB#*2Np+K~1AR!g5W1r2s)x23T++sd?!Q(PqF zS$g%kh2cx)MmM1QK14?I*)BAF=*Dt{$^?DEhstltw7r9B-o=#fgtpUhVGN)?aia4l^KB|oym?F$tU0j z9&O9Ox0b51IhwoBXm?i2c{0{KW8@mu@TL1^-~r@)JUAXO2tjX=DTE`$bb@`5G0_{{ ziZ*!CDXnQ_WLLBComY{Gh)Uj*{iLuvR)*Ze&ueCxxkSWUx#VZyGVCPy__tI%!Y(QF z0zW&pZfYvgC22;TOrP=P!pSO)FRHHkty>vw#|=B74V;G_H}tcG-!d*8c8*VcTz?_M z8_O<(sl5k+`2bkJ!NHK6^G&0!G}_-ntM8-wPo2MYKU{3_=DY*7fMf)EVeNZ|E=|5Nqf?;Rr*Vp-H;ybCL zAZyKN@Z4IJr>xuGOx}O=f{ObNVjM)&0UAD^51j$$OXPjRk=30FCyW^?_N(XmuzBf_ z!;4E~XSPSyt7F7kw4flx+skzTEoRbR^72o+_e1s;DNwA8h9Q!?TzhY2dYf|FUTZ;n z`_@uc=A2noTr5T#TA@7cFuS*8mQI?5WGuuWpBtTWGD~0-MLn5((k9JJ0Ry%)!$#}V&XGuL&jh56Iaw8~`r~x> zX=oqS0uFV8g`8O*PahanC)`M$lhg6z0ztx1G0XLnnmYh?Kx}CC_SZjcdO*%>h(|Il z2e1t`%C!?nPf7-8Io1f1K1`}Mw6h{IyDG=9WK>YgSOi>$R%6ku|V)X?l$!LvYXZ-D7=YeR7kg}VT zU7i(@cEa2W1aLepAehfq z9RUI1**EB(uC$4?GkR@2cxK+w^1ODC3(>b~KKl{NUoqb<@^LiR+>jGB*t`Ug=s#@8 z>PFcYCGgK2BmqglTYvoWg16eDD^sOZ^1NubgjL*4N;&baH1u4CQGLYBkf`*crD0e6 zndhL$9iayD@5sPY@NWRnLf2hqvaiKm8)w?@Lt$qpQUsI|;6+0o=P+H%al`sk?_P`u zEiT24=xhEGQT_&Zs)3dQ#Le}ea z{d?Dw(-5ynw@D#d$EI00e)w%xu7EX4cJn&=@@0SQO27eh>_8$>-`l~ zM(FH8&#j*1|11HO<&Ta(y^K05zBOt$$|&d{XXifeuT)~`=s0W28e7kO`Eq_-TwI8a zbM(DFBdXj&|8W$MrO|46KD`mYy1a-QvzyFrG=uZt+*3^hHA}6q3zn}H$h<^2mO;v5k?BJD<9#r@sZ?fJNIsrJf4eZbYJ z#@Wo+utEX{Bmpi-xW?zDFGMz90?xQ4NOUQ}%Fi%3c8ED|ccC&|)HBR%)=DosH=G-f z9TpV!0I)_Z-VX%#^;<~h5?~SX4Yq!(?8G-PSX2a$;0qEaZu{IoC|bn?jt(Z{hSgCrkK(!51f9jr1HrY(rRGLk!Xht| zMk_ACi^+d;3N1ZpPv!MHy^5^{rtxxz@MvYZN7e35?4>{PZ;AHVNHl;od!K79H}wwP zHxp`Iv)iy;A!Z(9jCji>-j7q2=}gPv1>!XD`t9rd z{e7Ls>KoqQXZ?^K_`tX(-1@x|B!`>07h(ssdM=^ z0|_y%nJ*GzKM>)cKk;g5oWKoz*DzK74+SFb;W)5Vh$q$KKzjA~J!CZy$7ZmQoyswH z1IHH!SiIBsN#PI?E~o^j5F#T41Ba`pzn_pE^ZIrF-v*}SLIz@J;Rw7ip-GzTtgOfB zTw73p31cI9XU`dgH!h46!8pdOE-QXs@3>O0Fwc_GzntOF-rw7u&nX>gg3y`c6xk1OXyQ#M1#O2c zARItXZ}4Y<-Dq`*>)+qei*As{kl+8u+H(MspCq|kr>CLOlcC|{RGec}BUWtJ{a$Ud zUeK(C#vQ;X>jQh6?cM{xWvmb6l{ikeJT|pP{C24b=WoB&RUgJc*T3oX2Rp&*Erb>R z8x|(*H2V4R_*@8o8+<}oCGN&$P@vrz7a83Q>4qa{nDdjvCZ8XX?B_%ZKF~Mb& zudX86Lpk_KKYP3(ywrQU)cZwGLb0IH_5k{}h&e%7AiEB@Z-ryis_0w;2%|yu71)ea z_Lo1IdAVhXz(thw7n%=FiSKV#m86G@4Xk!PWMJs}j;ZgHm>chuWh&MwG}D2SyNm`V z?;)rR{@t=oMHCyg`|G?nd?F!JB{``H*K6-DNcNj3vlTaG++@5{#b@8AuQf@lwIRHB z#+l~Zz4r>aN(?6mO1C|i8#(6l8yLYVO*c9u&p&l;^O}s~3NV2^xP3>R#VD;30ui z`bEzC+ZCLTu=XOz20DPRvIbV%`71G^55(WEQEc)4>W}=6^AXjDAkZNoijcc_H@RjT zf{LovN32i=IsRQ1WGGzrqs&DO1gOM)R}4|VS=Rjjes!?Tr0+!Bk0d__f^sE*jh0Yy z8CRYSMgD+DFC{+yD5w11L0r)*ISa)#rTv-X1as=-pMIPH_Uj9KivCY8ckjLI-im>N zKlIB=eVWmLX_f*ZiSCg;o}+zz7Q8h(4z+2s*XSYC84qvuLgm)g5xC;h%TRL24ek&( z#jQilttG|T(%4gwSWvo^KBJR52WCA!F*Tzp(_pc1=}%_yLUe8cejAOfT- zR4)+XJ9U_MLK~(~XQs!u<9kYTLS$j?29x3%RWC0)(209_)TTcXuM7?*RJcgC;6gvf z*xb~lsOKa3M6?K$4fbLeZfR86di|8=&;hzv#mKI@iz(;g<|e+UXh@K5rLs<)*KkI6 zAEf;fM9*D4fX%|5Deri2Z^OXj@As!ki~}oCQBe_+BEB#fx>Xi20#hcQzpOhBkkyWQ zrth`wV%ydjpu7~B(T|mz3LjUj-5YE8JCL25+qU6Y3mm~8%4_&`hWa-Sd7Ds)=|7CV z6Y`H7P$_m&C{{QWSx^CTXiBDzZao=i5*VsOOD+YG=6(~ktp0~@mv$Lg@m42O&40#T z^*zp%v@&?kL7^$&pZLM7y1|XKn<;zISkeUsEWbBXzAfS2|OtzE*+9Ir`S4= z$*9O$0iX(K&KWrLW~~kG7G&>-pp;9p^Q)NiT;Bti5x2}|Y0uW)_< zysEBAwRPV)O{zFP1uCdcRw)H5H1uEQItV(9zM^Y_HAd#}%?ym^M>+ zK6sIe#3LNB$crOP0cRxZ{*s|Z8IdwMIe9Kj$|c73bNLx*mq7P+Mf^Ok`gO4{NycYd z5=GF!>}r4f_2N1Y+EA_U#dQn%7dvT40((`$5gZ;u7RdMFpRotjR!}5(1~ieO;1gh^ z{S!6wN7(#$#+VK77f|dzy0DQzt3taSu3rH4#eYOe-_H<7)bw2}$B}pJh(w-UQ(LOP z9~sMf^c#se2m)^Ai8;#FmidfFZ`~{#ZPT+nUtRfyHePtY(_wb}IYKKIV3lE~QdvOB z+Yo}GeLcuG-z}`-U3L{wk|O}Xp6*z6O^taTcV1~sjF)lE9_A$=N?dX7X((JlzXdPn zH2mfR6<$50P~E-xx(rp1#>>b320569GnPF zSxzlZb50k|XLFXZ+bYEeD8?a;EU><5n26gC*b%x_N>(wv+ssSxZq0Xjg+6<9-|q@# zWpJoj&=53TRn69`Y6L{8#|6`^yKy5=@f(PaY5^IOllSxz(;a(c%f&&#f0auyH1?oo z5C78mlku2DZO#x%@h`(uQq-F;tPs+ApGb~$AvIh)SZLe27 zk=WLln|%!Mku1P7+f^2XxH~V59URWt0Q;j4U|@)1g%()6ftq-EfLCSdL=CDf1=>2D zq4E7qxHD;|Fpr(Uf-s*&(0+8NeXb;26Oo!_@~V9`cf`Vx`eX6-e%a62m*K@K4Fjd^ z*s4RUcft~^o&+B5ll#bEu)N+WXNs;25Z+!mv=lDp=3m&~itu>FYb-SYXpRqAVnLR0 z=Htkx;c|@_z3{kTzh`sVDt2;WB0JrB**3psl`_I%KdWzx+=KXGlmi4)PgQ*)*mzT{ zbkQZbe{XYS52ewse51>@?u={w6MvgU(u)z_?gw?m66uoOSb>^NkD_4y z4~Gl?iF(K7L!x1dHsNg0tKcgg8Drd*7jc<(0M_scMA_Z!N^uVnBd#X3>6dQd?U24# z7W?YH`QD&?b>uq6z$n;o*yBdDtr%b(Z1C&JNZ|My6HWsa%Cj;8xM3~E^+wa85@yT^N!afb30>Q*Q@I3SfZ-*KYmnvt(VqerHe;E74 zJ)@zYHv52?3ruQn66n_1tfYi?!b5NdTg zvhwkw^&=esEk6%Pin%lLDLXr7U|i{xJA_Q}f+AQ`)17u3{~L>-hSk*$1lfd$Zu($Z zu|J_vVm<7Ta@?XuaaYd6X$i)Ks-;eIz_T8<`?&6uL z48E!)6V}L2A3l5t!AxQ|zE6u2q7AEUK^~gnu2VgQpH&4Y%n%hSz(G1=Bg!Poj>@~} zQq-o*$}&G%>hV>e$=N87Uk!?`552mALg(n2x8GU`@mwoRcCu$zBAG@qf90X9DF17A zlYV1ZsWJ1>BFZZt0@BoF&KG+PXBX7pGQO`;F|+!0E>J!24Wqf$$3to!Etj4<)Jju? zAN7x&7{yl5sx34b%^zNbsb{!-OdO;F{Ks~ssuB#yVLvs#;uzF1Pc-!>IPVNC;K$W# z-aV(czh*C%T8CGy`L=p^nl`TsmlWn-b|k7 zUoSQlheeVG{grxh;F2MGTFZM5FhC9nR9>O2Hy1#HSZ*$_0{G2Ij#JU$iq^flOV}(9Si3KbEeHJ;{{?wXykfd+0CzLF z-Zh%&Vdj!A7W$wiLb)nLqCLuj>xRW{`Qtm+Pam?JJs|uU+(|5>A~t!_;s_%s0Aj;C%bS_il{ZCRO#VepaQZ%9lEP zO+0~G0C$oc|CsR2`$QSI-hBv+ZM(aylp4eW5vZY_C-?^Ur{dJkD|ZwW_rF9^Zv3D8 zuG)pW{|CLRqVk5Cy?qmR6W>>Y)r+GPA8Gc;O$?R-y*JEj8@5ES)u9zK$V_I-ct;2ohd7_Vyi{K@$Mqgt1c?^)}UqL21M0MJpDmG zEg@~_cJ<>ARKw1o%g{j2O!J~|MuwSVflXg;1pgNm!A1M-nEK}a*cZf4$jet1o@pm9 zXn^86epu2>PwP~4=7NTn`w(w+E+h>4rGLzZhbI!J|ycMQonpE zV6Clf%R|u&q0tzlkZy%@&VptODtTrbYt$~gX7YgLw5wmJ1_DwwWi?y1F!|(khzAGy z8D>mkt1T5nm8u&rQta%u5si$sKZTRR18Tpo*BC38lr84AURV?eubOzDCu`^?Zf<0Y zc+bhjCz|~s9Mf6ISv)C@kfc%V0FPF)_)|x8S@ceQ%@(luumyDiU)N-Dx~DXqp$oCi8sj4jjZ@HNIm1PwSe+P@z8*kXLfZCPY`4#3|6`j8c+IMZ zAB0Eq?c?qs=E_B~UKsEO81oghLF|r=%JQJ!o>ph}fvHRxN}*3}Xu8nE(8QuFqIHn* zK`b)VN4^_WoAp^{_8@^c4KRtTGO*XC?q02V=7L{uVwby{=}zk<+rD;oU)C}3TzF^8 z{EENQ41uQ4Zc?yzSk^zxjQ4B{KK1^iqTwkZdF9_<8GVf@*NSnua`QNf0xeDxAs-$t z{3vyV@=a*=1A@HAcDm;hD3AGXo zrYOY9x-#R?WEahH;+qkr9I?Q)nYe@K$YVPdV4)O7z{pxpS}_6khe=~zVyGNo#jz-E zW)wP3?tB3?LZZ@fMLd0S?MmmuUFVVO@qfc7N^(*gi@jcSs!8iSHxRQ7nvuDuuGTw4 z(%m4`a840~G9tq)450qeiMO{?|KVP)yRF26O4ehtw+^t)`sWljoUWS}kj$zuJOD@? z)In@P{i&S$j(0xwMiV&S=H$jI;y#Y`_^vRfoy)SG483`JbHlixjJS_?dJ+9y&6d_% zim5BUr$D+l=R=D!hSS{nQ(j@-ZYvc*LmJdcJdZVXmL`$AWJ_5kRPyT->QBf5UBlUH zo_>o->zRj z18qVC7X_6Mzd%7@10e(=yp?}7XD+_2!)V?~0cxjYWqX^cVJaq|KZKd&3hrHl_t9Jh zb>;V#WO_4OzcHewSwQQ6LcFJkKQa}TN#EbTAY>=in^PI3P^4b9$wneL20$;CEpPa~hKX%ih%D8fTDPnMJsB>`x&?(xScBA*D8hlVvs$ zlfxYy_XqqaUZL|XLW_G1!^frf0r=AMZUzHl-8Tvtv0_HAkSuIj&`c2D{Wz*v*m4BskWOifKe1=B0cscP1W2JyX3^D|QZS7!Zq%T$tk+lc470Uf`Y;w-iTG5q9} zD7IVOd9B~P;gru&izpz)hm2)`^6a^hm3Hyb$(Goz0t3fZ0Z`Sv+0{(%kkIttNbmj& zzCDB8IBWyP@r6OysMPjv>Kcm}BQLik^G^DI*IPo_mb*IJgI%kX_*~z;+EK3_P(t zf^N%yKrfZ`#@}%71Qci?%n-Cb5G*bQGt>&sj0epKp$v3l9-loY`IF^s%oClWLuvR} z4=MGx@5=|B90e}L60m5(^U%?^xqLF65AZ+vNBBb$Agg#59%tyw0i+c7?;QNwcVKI{ z1BFeFiM)@gmfRL7D#iTy=?@Jac+3ZC{n|tE)Bg8U7`dQ`UH(Om<7f&WE!gTH)K%U_ z=pc6dD&Ud>AgbyX-m?>U+XvYI#$%}Xbbug0#_ck)8$Jg$vQwWCIgw);#Fcv26Y@iU zWb1yFQsQQ==xW}2RXnLEv;}$GiTKOjt__TCPNvHudmxg156rEMlc}UI@32RPxVrhX z^?A$o$_hX$dW(_kg9k{YI90nj*A4Vd#$WqL$;aC9Z?)A{pqFOncdWGF+LGAXV#8{w zJO`t- znV0yte=iI7JO(|?0|?~H>_r1!``4xI2%m}rWV{Q;FcGh^J}*-}Q*@PqndGp+Sjn0d zGd=k#X(u<$C1}@lk2ZMZ1|ifDeBW1jD&9|aQVJk05E-5idtq?Iu&fT+Sq^9qZglW??9zAyk1?notkzWE;%l9RjH(+%^5gz0rPRxXO!2p}W zAou4A+e>l{Ds**pVj0}$@=Ji39t1t}{``-AM*ibOF(hVsKAZPq8#J0!Uv2Uy2Gk0o z2)lx9dkO%QP*jZ()2#vrmZOztsHv__Uea-j)Xp3fh|hqgT{kwp0e=u)cH{%rj0yD` zD~T*nz+0N00A?1n8Mp!ULh7}B$jd85g_llFnzc79q0Y_j`}Z*Q7wN3nxYp>3JXW>o z6%r5>9HUwA-{vk$mvu1IyYk%9Y-kBD0HQuYb#CDkWdD%^Y(V|DM=7-Ao zqZ~EoxS!W15(v3>zEQRzvO#xuKcoZqcOtGR$x&?63}8{w^8+u8t2^zk(9zP~u4&6b z4>gWo8&z>+htoa;EREKt!l@Kn7^qUF1Bz*jOc;H?L&||iiI%%~i|H#y=>2|m)mna} zBx-O!cfdHi)GS$DUjBJcZ?9Q`i@MHhQN7ZUb2DATVd6#J2kX>3@H+~Xw%@WwqoSgt z108l(SNdPVJy0op!}jgH&vL6kgJFP!l5RU!vWL2wS|k=)VODOga+P9Uu?{^W<}NYj z7Nxs~;JW!8Q1rY9l0C0w^6U>E3hcbM2W{FqTI&vI(V+d($aRN#d#7%DpglRO@Vga4 zFXJ)!bE$e0x{~>#M~<@}GYVQV!WhhYC`~U6n$3y_ZIeH5aXe>SY5P4&F2Hf*xzv}P zJ>Ez;*S$j9#{D7PLF0AF>dTE=D=+0P7BKRzZMpGzv67Am(d|1ypYS0_4jzuTs}|Cj zGX(xD>rccu#knbxoBKor1Nr`IN>n*7tU<@AkZ!4{evRp~VL|s)jhL9e*Cv6wrWeG& z*gXBc!oV+G`y2;EsAM)Ipv$4>c9?)+zVTB~sd5x_U$dqYMHPV#zAMG8Z}`|6V(Hu1 zQ{p@L2$?p0>S_=Ld`uq!w)!;Kn$}tm5vz4xU$p0M&9!Z}9bE4hC?zY2ntD$g(%M!kC z5Re+cPSS4>4+rpw|3y|9ci$H?N8BN5)`v>w%dJtb2>SoLI>$bWXYUC=gIfw#HvBTg zPCTh)r`FTz^QJ4SLMFKVhGPIp1Q=O5pnsA=0d}9?bp|NL@HIYjjR&k3e7y$oo=Z~y z$XDUO4!zfOCHa58PO<@*N0>ZB`T@ggj%-W?3{i`KAddGJ4j^mbs(>A*fz|Q2zF_(C z=47=0fV@E;a8?dJ9>aOSrW9%W4Z(2ZvEqBjY&|P=%=1s~JgNMKcvsDx+ zp8Xfef&L>f{@weMClmxE^F#0xi{7;_2VclS9(-d8=?dh1s#+5SrOrEl8whUQ`2x~~ z_i%d07Cy)nzn-}UMRLqQd*hAaZA?&_+B>MwJeyNAnmIVv^|w^Z7Ovc(!}<#lrtq|o zWp8&&97p}0QmiMZzULQ^Z#J8WLVji6fT$&I1Z3l4oGDon$|*0vbVq0oEJQqN&{Aq7@dr;4=>h*XF?3^RvaqQxQ0WuMiL;OE7vA_q1a&f94b+LtV z#EyIa8xw1hx@O~PS-w)Tm?(DOewEl~Y>9RMb&v+lE%ohet{7Yx4BZ%BkmP0C1pKQD z5E09%fx+cX2}Hw6?$x$psNWP_?U2l(ADd!2FSe1wg_g?jNFV9~NzG!-{+^)_N7LqH zo5*4j)WeY57dTnAl7$Lm82|Bg3giV=Uy1}#L3mopQLO&Y?8ClX}C=wl%wSSp{0{?{($ z=4Ms2CgxVxR=(KwwtDhb_kp+qt$1sanGjy5U-UFgcc!nDYX(!A%Z_iwTBY5jg49Fl zB3Z`6n}8>GuUX=bc?1s5xd!Olfs|aD+6D%R2cfs9_i?HY$CG4MrvM53L*4lrz|_qF z^lPXG95H0?Z{XCUk%cHIw)_HpweG-n;Q0CgMG@A11G4k?!i~V>~)xBhC!Xm zI-dYLYn)Sh3UyC+*vi|kP^IB~UnctzEeyJNYkNCdIWEP;jY5CoKjmEg3+P+`cpO<{ z#oabcuG?O2<|Vj#<;(L(9QDxHT1;MzEeJ$H`#;74>nUXbmNLuL^1rIM@_4BBH_TYF zl*Uy_@uO5qT}wm~GbOo^!F5X+jnRS@4OdBnVIoN()wO1cN>TDs0+gd{Qc zm?7)@-ZQp-|DKQIobPwe_kG{zeV^xX9YEZ{qE z69j@3f~+aI-y%K8M11< zhEjw3B}{%y%!ag=FE5qoH*`csM&cvYPHi@L7rL$KwNq`V$7^*_)K<-?Gl!m4X)pe2 zg2EC&m-_ush&%sEunMCJqANBY!o&3&O8^-np&iQVch9$U3ArSQM%VaY)*7c*QOuhi zZUy3`R`%V-p>x#{tm{2-POC99uG!ln9CSccla*?n(sDi}&XM;+k>>#7p@V@D^{iKV z_J9%*ZBk29@%WxX7(OC8!}@5VnA4viLb8>al_!88Dd+6_`{vJ#C=yf}3 zZ%!v44#^6`%;j;1sto7eD$WsQ?Y%S2qY;qs!+hf{B2J=O-3UUp_{S6zbeBajoel1gSTRo<2JsL|_bHrH+YHc*bv z4ep{x64YiztVx#pdlUT|3OCOlo9rI;Io{Eq+hLErVuerFmfe&z zAKs<_oWH(P13d}8#YK=U8tdxNK|kL}eDxEO%24F}eAk#}qfQGHvnx4Mc{h_Pw8D0C zxJH||l-@Tq1e*zzY)Y)4Pp71PM(5jGDFq*EC#_5r&Lwz{9_jO%8?jH!&u0zZNr> z<^C<)ajseUjp0qNm1zK_)gI?2Q2^aJsq0g}8*N=h=zg-dh-M>^Z;v6p-pY$(+m>8z za5BmnGD=_;P-dqZ3q9pEsf9xY)uH-Bc^~aBZ`Pp~JsSfaE(>SC{cE~DjB+-CH`6ny zl`#2%;1Zmn9AWh0%c~0$a&>Oix^DU7I?xG$1QP~MIXiSP{r!!vv!-Oi z-?q#7-RqcUsi*xJheB@XCSruA=w{QpsV=Ont&O!5(JQHTlKm4UJfA+BD)M+K9VhfT zJh%xQ?FRB zJrl%?xIU%?C#}2p!>;M092%QlnQU<}Xlf%j%WTcW^I(CZ8Y|yaoJmqscrNASF|zN+ z;>y7mrdbf>=Uc^RhH(cH>N311|Bl`3mV|WTtne)nlfB(~AdYdKB&>euWoo*edR96z z~d_%Tv;_RP)ecY`yLO$RdE@kYyRkP<$k!+&iJQ?ZR|qm{X#1mx9vMK z&e2LQsWSLcF7xKeW6PtmHNbA=ckpVH3h)3~K7IPc3X)dlxSZAf*Cu}tt||U|D|w>^ z5!?5`FMH1Fl=JLU+x+jKP&PNWn)vi7&88J{{GT0TCi{_k?oG|qr3RG*@7>(`v!<3v zlg}@CYxY4Aj;19!xkb+DQT^!4JBHWt>*mT_+o4J^ANxdG&t=h6IVIC=!-1PPRh6Ed zH)UhmGcgWj!iAlI8wXybrJELo|DGj-!|e)fBK+NwIm2tYNZZq9!TnR!M>t^=cl~;P z>^ja`#Hd9;{T>06vf8+*=QS=?=U>jnXn|Y(7n}Dw+(x|6 zhFAIyK3y9-{+N~EvQrXrkkNT|J7{!C_@fjT1T!V6nJR zb6^96PoEq)>^vK_T&QBDU=8wEd1O$qc^Bg&WGU(iSVHCL=;$qrccSg7p8+|#MCmPF zK^WbD3^Ia_g8pJgnmEtKc7+Nh(7i2a!y;PP9)azxeEMZo+kI)iu!TR>!5YE}CY|eH zdbkW*{NS0QXE%unE!>*4gYhyLNX7V>JxZwMbiW$bWKjO};_{tf41kcYO(Q4^^#tFK zk^$CYpWdgC%UU+KhNy*J_%bufH2H5%1&ZusfZ(*Xf1-}AELk0d2_YkpqTi7_X zE$mU9THF}p{GuFGtQ<~1|pR4!wRAly+^2Q zM{QF3ez3A~7c_8{K$XfWl@Z1E!wE-P5BykbbW4g}I9%LH@EW8Og-zCo1t7MchIpTG7E#1R8_GaEDwN0|1&71fQo2I%5{M-4zz2;+5hSi;ec|rb zo;s`)g#vbTHbhm{ZIyUu`>BS=qZK3#<*ll)(ijGu?m@`rIki4R?pCoI#tty7VaF}5 zv-bz1$Z|$t7o|Y?*{K8VbY}I&b?OB9iqzdH-onmz{7g_OkN!5T?)UT^@mFjHJqSri zbmfS%c7ZV%kit;k&c?C(F$02fbit%^5D@gI%Vdj*NIg<~4jDDr$<~p=VLWjL;k})5 zEfq;^8Z93E@6Plvqg!HmThZkd7=Y%fmajQMg*vH@;KMxz!G{v5O6E#kCr){yu0Y(ksC7ji;P|AE?}#MIOsTt~XN%(i9_L*sRdt{_~nIsDc73vQ#GzuIw;UCcNK~E$%O%IfWQdNNV{XI`E}J)?VA-b&`dnGbVvX z;ilyfOHue@@9Wb>-Uy@riYeCjabtB#&A$F!&=q|*0F)(q=9zaMFD!6}m5_;`8{X|Z zK7--*PQeL~AMr&m*g@9D8(1r@9In?-X;)C-?2(bM81yi?GrG zV37~OF)rvoLR$Fz!6R5f*)j?~ZimZ!2t6N8(7(Z&@9kRSuy4uY8X=8?4wNn$wh;Y7 z1+;)5*#<9FxasGzVg+puw>qb%jh$SMVL^HDfO6R=HXp<6l}TKSc(K5DTyU}a!*Vr! zAO6=7;T|6Imy>-7t~uZ}zassI8%o%fNP!&$;mIibL_qM;DZW?Y7b!xTt9KP$Jl6oe z)sXq}N>fDg#%MTqE%PPiNYDdp_;=G%{1(r^`4$HfjYkmMaz!T~fG!(HFX&a+ zOWhJzGe62_2v1kd?o*c6fI_qvRp&Ns|22wb!J9Zvbb{$1e|rOr{I*M1fz&P*krXe1 zMnuCCQl`3l#WLQZHUllH^78xWg$V1oUJ0!N`@8p*j{DNA_Z;h`Ro?C8Obs}SD z-iF=Cz*|6&CejNkl7q;Mysul?b1CFf?NB^f0RbMbkJZHhSA07!f PR|Jk2;|`@CB;NQR*u<~; literal 23466 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 EFFn+VTL1t6 diff --git a/test/image/baselines/splom_upper-nodiag.png b/test/image/baselines/splom_upper-nodiag.png index 77c7b48acc63c3856ada3f5540a893e0f61e88e4..9552e7174c8ad9b26c572e3c8ecadb200ff473e0 100644 GIT binary patch literal 60170 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 e2SNmh+fdX1KW#nf-Ku|zL1^5(PK#w({ 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%0A^E-8Sdn#B@HqS(bi2 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%0A5qM?Eer*YEaPs4T zE$s2%UtrWj9=5x0#%v=-n7g~tlOg?pXY?E=PFP>L-ST}qlFe+2obMU50or_cVm#>u z^}=RJeP>7*cZF#=%wK`PPEieZETjsg;C%%lsQ9zP-av=IIBEES*4|nNMWxpA41j2 zP#&-1k&9@*wU)hDclLaTIeB>$I9{m*ST^9&&p16vr%{*fo5*i7iD%i3Fp+&ML0HQc z$fk2#Vg^T?R9dH=hMk#TCVO$z336UY^HV=XGZteBxqtr>4c7m>7$-U#x+k0|F-c2X z6&C61j^I%imBMyxd72j2leCw9P9!XCP_hQFXEN6m@ql8G1_;wwU^*r6$_sVe? z4kgpY5j>SwljY57@F#i~gL9?mGyM@*%nRI|b4!c?9Jye^-&g7%Nk^){ z{OE=@5Fhvu$jA$dzi2i8zOlY>dcQqut-Gt4o8^CBCpu;+5uLH{q?rSk;}T8)YVYU2|^X_ zH%)d(`_FC6V}lQ@IqBmeP0ZxPScSVch89Thu(HawGf480Pf#I8lBgK`N!F6TjA34j zsK=uVi`o}){2kHj$}p(r=ryb0a^am2}x+}4jm zBAEDXpjEs7QSg#n{t-46i4|kVjQ^HZ-ks>wT{vT2A0);uJC!BiEl`W9J@4q=XF+FC zD~brLx_9kY`Dsd}oq>M2GS()Sy9QFM3Z*)bBWdh8KSu~S-*r!tZ-1m}zDFUN$a)tl z&IuOC_&)5X%BOU0;}bei(Ej*T|8`%V8)_U%sBQGFM28Bp+h`&ZgW4c<%be>|{pYp3 z64mYZx(BT#KDN-!@sl8yE#_gY;9Ry*?%yzLvwFWlSz9&SM$`b>^2>Ca~8O z<1etxZD2IuK{zEcIUIbPdd}wH@mag{*Lr_P}(Gn>Y7^xZ-e&+L29 zh&@YQO&IdV%V$TWwzv}`2I2VH#5P#?*;7(!q`45pSOo zr{71v6V~eJseKF`V0r{W8twVRg0oAb4iK?)%`L{#Co_-UCs2m6cQ@~4ih+;d&?OL zqFCfBslJK68#Y>Lj3c|ND(h<5(WuhHxV}B)A&+ru(W2mqeG0b^ic(KeeB23VzZu(S z;2x)`{y@eqqBq{hv!Hu#lc^zuC9Jsm^J74i;+~^^7)v((H@wN2-oZ#srK+mC*&6XN z-Z2m6aN3cQ`%5L?PUedkhH!jJd&k4QeU%Nm<+tyJHVP#%%_|Fg!@!T1JHMRMYeEg< zZn(m1G3b7ddAME#+d2=Q>@TFsHJ0?XMRUBfK=-+~F!3#HNa-I*BifxF#EYNwghX=P z=>K-G8?y-B8NTk!x-$e$?A~YNeBTGWfUa{LXV+PkcYROM!@m8t6oZTbe@0Ra!|0KI zIifx_fkW(gsnsZCKdpYnKNLAvdVIKtsJFY`28yuW6f`QK7b4F}0pZ;;vD;{w@xXdT zBP@uMvSCc*DJG{kW;8V=PTjc4ob~?Qs#K5idc_S$YOa+NMGP_6J{B$n5&c@X^>r3AAx>r-*k7G?Ao$^A^9z)>pX32 z+f@q(c<2oZrYbJjV=6K8+w6xtO}k+Ah-F$?a$XCdr5A9x3-aQi;y%2iPg}h9b|vkF zl>LNX$-Om(Tghh{WMwx0R?-a)yi)IbpkyCa($amVLMuFBl%+XySWWq;1~?am6PyT%+d zuVRi-4ha9Ug-YoAqJ&A8AAqvoP2@TF)%4Sw0foLd)%=rnYm4(7RKXpi+t)|HOZK-5 z={_F_jyKTAktvl>kl#)ge!v`F;lsmhcCiHwbAm^BeEXL0Dd%WjxwcZ1izcG^{m8BM zkWcMhW4>lxVdxUi=V#`Gr#;C8mn9@ZxGKw>&SYXqcO7oFL&qJMp)$M;pjI^hdkSiN z=GQ{`3_a4XkY81X&KadLtU4FA2EZ##HR4PHnUl>WV`E4`_^)qd>=`owKI&_l>RwC< zP`sY-i#Y9Ye4)}T(yFAtPuo)?jxo~f;fuRkVc}Yu0ypU8eB<^iU1{!CH##g#G^u8I zb(BPgWF`^q_(O^HU`_Y4+BJpc1@-XCd@bt2X-Dc7;+aS!i4!GZqo;IyDf*s+aOfQO zY4|C~-?tv!#PI1#4fJp#Lz5QX?!L?&ILGDIm0-oES_oCnIh1hz7$u%nRL#@br@|cq zJfq;dJ)9p^9{L|s@4#MH8*XjKW|PKdW7|#|JB@8MHX1dJ+Qv>}+qP}n){61XJp0|p zw|_v7taW#;d0!ag99IUf+n_VnRT>cGBI%%lup5>W#R8+V*GSfuX&IXpwreQz5@Jzk zPT5j=-b%d9L8Js%=G(S*qE*z6X3WZNX0zXLsCf*41_0yx<$m58QKET4%05d}F!>mr zUt{M?arikvXK50{59qn-iT`=F(_J~VKf(YY1NUJ(eEgDf#o=Q|+EsZZKl{J2)+{dD zN12ydT55=|O1gu!adu3&@Alx1ze}G+%dDgZVB?ve8m=&U= zrL>=J&Ol_ov$RmH@ROJ31+ssTP@~0`O`U<*7D31#AsxRlJJDnxGj`tlXI{s1Fl+ik zaK^`u9e4c`@$H{@#BYk2GsNUh53cE#-jyZX8|xw>ZZ+!em3Bm7s4{wW2wzm7z7&W4 z_S|>FjO&A^N#*?0;~m(OQa+!-R#1}0cok2lgrd{p&}V|mpReb9BbrtsAr-%(zZ%M+ z=OXBW>0H-6S8L_KVT~hY_nAiT{c&n>Z&+bHf<3=frw5;33dN?FW$bwf$N6!w$;X1; zx&;n(&kwFC$a!aOxng??B8Ci53EY-VVY?C+N07Xe*l{PeZ+~gDEYD79aDVDGUgkXn zS%14pD)5w5uOJHBT@Bse^JP#_q&r2jP=XY-SFHdv?$#6=PG2&g;ROHns|5uGP3eP5 zok6}%bi0S@>Vh$8n7Qe{r+L$Uy6MydDyzNOg@-@n{a5$hA&4eBk~>b9zzTsd4ep{I zt3YWIn0rqFTD#uMVY-T3B^B0ReFHl+s89c%ueiQ**zg;IjTf$aXuaa&K4AJ0I}w1s zF1}aS(~`-+!cCGqRqll~vK^zK-19`DYWoE|@0^o6sZp47B!?g~*>;AO<1@b=9i_yi z>oJ{8x2H|4^5@9B-c2}MjUGs5^5KaPz99J}t+_<)Vfl(+>KG!Y0&EQ4VZyWjziC z6Pwn3h;8g1U~;<(xm?V~Y!U?hPx!kP!*<+i&w?$h1=O!;PQ5*e^$TwyV#7&^t}L~x zNj(^rbf)v=QhWI&@e(Y5=Ety`vG)Wg=sq=CqSJ?hjp?|*@@8c$WT_h~Tr7WvLk%l` z=WrHGe~5@T=oJ!s>nd6=xYUSkxU@@jsJaS?@@RQnSzI!qK96cD0I|Q#o>2G3#4JQs z(7Bf%N<(}NjjMgfpJDh@_4Bw68e}c8(LM>Wlcs$Xt-)!#h?X{wF<~M7qx168@nh*J z+oo91rH#ZKCEj*BEqk~)b%^SCf4=s$p#5;RDE3a@4p_@sLY}JXy$ex3tn9Sf4&&x$ z=l~|df#0NJmvotS@J`8zXnlFIiOhgRlK*Cu%`!itT99%$Fi=)d0+hgS=^u^P{Fq0MG&XXmZd)O5%bZMRC>iCpD*6Sy@92G z@;qLlz1!r_7jNuYF<2v`PGWyB&lGcqUt$=mhcj(-lCwn@`A|0+> zH37%ai+1PUxC=ohoZAsx56iC^D@r4!I>rf?bUDnxvslHN;~NQY?R z?;c{sn2NnR0PaMX0e6Gy=iI=a#~A`w6`9nI5Jc=^ojjrTr(-&RcmR3Pc28t^>GSq@ z@Wr6L)f`G-_#i`F22XcqAZ7rt_)oQZIx9tgj;Ma$sl9i8dwHw^a4w}v_qtWaeeCtX z+{_pl+dK%nZs|2SL9?IMBB2rhTUq0VO)>bBqz`ojs?ZDC2R%nP?`jX6ogHs!Bs2$#<$~B9u^yX3CZR( z_7g0&Gt7}ooG|%kd{pOYa8GkARq3sMDmM>y%!TC=7*nUC>hk6?49ku;@WEwmAx0P(dDE!ze zmhf(Ko^LK>vh?>t;qs5wx+%PE-Z|+!DF!q-XC0O?Q#w*X3%vCFa(t=fo>~5eWSKPG z;j{VN6BFtlC`QQLXxfx$yYa>*LCxtz(He@yLdc)w7A)SE{qhp_V;hVBM%jD@dE4%6!#Y2s^rFliB!(z zeYSoqIkN@60*V`LR4ngiOH*aWFtp^c>(Zcz{ow?LlB+-G;aM@k)YkQ?uq_t~g)KiU z@brKmb$!p#HzzeU%>D875?3J<9A+?J3N4QT-Tq{bpnY~8v$lY;94|zYOH<1rN2^&s zLXKMx=O|tH^y4_`rN?yi-Apjlmf(k*L2Zo@LA4Rw;>^{2Mg#L+7){}eh*?_GcNp*S zMaKF~N0Ng*Euq7v4ns%b%DhwkHo)z(1sHST(pVrjK|4@et|wV`y>i-4*e-+%@N~d!QLzXTxuKU$IjK`8T|&YSIh-(WkILpY<$MFi!acRO#98Ca<_-vw`Ug z@6VYGP?WOE(<)y*zxtw`FV`WaIkuY&pfKAhYJ`8H{8Y2p;&Q&qv#Lg{n&$ty;?S|Q z=EVq$|5xd+B*w{CX{rqFri}jBy6;j;fWaF!>=Pi#F|mVV9UltQ%2wj~&^-K7+rNVX zLE0`=Qvx0oKn*OjBjG5fqe}TBfu)6whiWxf215?ucmVjQK0w7&8~>^GcVq#3+Vd;- z@!T7BdIlkKa1rd_{f+G{gWF61ZcO_xF7LA0V|jbMSr%;&0!2d_x!>^aFLWvXp|Ks* z!3;TkrBk%q;f}gz2D=W{8?us^vi>>z{u5~datEpHvo?p+8p{<2e)fA(0`7an$|uzw z&=$v&HE@)60ch`Nr-#juZ6zSdo3K=qS&W=ZiBu-~3iR|4zw7W2-LiusN26R2?^}{+ z2)#?VDlvomoY;ZiM8;3wecawc@5gZ|;%}E|5xY?OY$N?g1%n6D_O+~nR|lC-A?ZpN zg&Dk3)e+`&$Ks+YZl*32*U$$&E%F-@E7NvYq9NFo#b>m$jB0%71yT4H*&bKNpv$-a zodtM|X)x$=6P?Vj$&WhchUM_Pzh^vnD_Y0zB-QEDd;gA&T3d4Vza%+l(6_}dxW8*V zP#V(hYC?0R9?pJQMzLWzy)v@YD8_wKzX-c5--7#zT)Anq;&sLB`&^N zwM9w{Spm5+;h_y3hU}_JCAB=p7Y6|mfKI+jp&L$H+&dc% zQaCPY@j>y25n{EJYc9#G&U#J>pa%55>`HPsi<6HuuSy*^)dSDeha8}77S{gTT#(sV zY=RY_;^&qe#!n6%0i@Sa0CdVIu9bouupzuz&=o!uz`Z$RzhS6!Qly<|{q>jy2kF>s zGtpQ8bZoi;IxPB!i*yGHj(ESl{S_WD#XuO8Brb>KCxZ%(zfZUmAofpYSBN)fbmFA0 zIzB?Je?@-1pNp`gtI=x*4HGAK3gf%u0!ewpF~`ll;%rzQ4&d3Xx;fZ+ z8;<{pFG%oqJappFAG^wJ){I9mbl38|N1X-BhvjC!ONg7hD$2{%aoVdb?D$)pbCObn zXhm^b<@VBNtx03>4B9KT?3d^J57#%=%X5XXiYTK#dzR}7{jj-0_cujY3--3>`ER&V zk1#>XLV4LULN+|W%Fb@C21mgQCLN*P__D*16kY0scVa`(q0cT^ch$N|eyLRC8%xuc zY3X?_UJd?)oyYzte0O)qaI-X8gIAr9zW3PMt1&aq=DCg0nuf<_W;If%O=SdpvzD&FmTV}o&TU<{&u#~V1$si z5ibV%F$KmZpFtf%{Uei__In;mIa1blP@~r+fbGJsjr82IG))$EmWVF!I4p_4X3!Ft z3T2J1}J?#v)_k^-9I8*zfT(EsRTT?!- z`|V=jT)L)-Xb^m*KC~r6qehi>cq4StI!jR3@1(b*0>jil-_R}5*$*= zeB4jrD*v>&6m{r*Yt3AJ)n%)jatRH4D?+ikJ%VH?lnPw2v0JPprLHxr0ru0buvCtJvA+G47KGp+Dhy=e^C@~9HL`kY+#X5zep6X| zL(8vx3h(@vCF3>w%GQnk__#3Et19WUGXXMuAZG$N>^nj+wsMh*B+Q&_2r@pHg6YL9 zd=>^(|52SD?xJMAi<6I*ucf1cHfvbkOXJ_Dn@U|v^VDiP=JGdgHF`DW#8ix>gNCFS z4Kv#Von(Z@K;iE41;B)caLCAgDI7MPpJC)uVHJ1YpH3=*^pb2A%Aw0l8R_Kzpwu2i zLIx7@(f>k?(*898v0^CPDc7p)PCZ}oimJ#lVb(cVW70)C^B2qXI!GKnI# z-zH>LX|?lr?k%3WuC(%aGLXRZQsU+jjXyK{ojub@&f!9P9Tu<%>=n^4%4YGga2#i4 zsCPbGO`alv${m}0ybN1Y((H+(B&#AiXX*4&y}i%+eo{*r8rB6aJ5=cG*%yWWA{T3M z!=?7PX&6yZal6acu7s0Dhj4is%Ak5`$mVjpGrU@x_*04re>)}W*PgAZ3W6SQgEjDb zG;_IF*FzKwMFMZZlDE34sW?oh7f4`&&G3ZT)XY%mIxuPP<1@qBDRWhy+_XBXn+_aw zrVxyxmIE^%7eDzV&ysV6Bn?DQpbKTESJw0PXgG{!!jA(=!O@{Yt6!1IGqz~U*iLIk*=0z@;#kN$RJqQ zYtOEd4n;)31S(Re^Kbm$MNVFKe@BFy^E&HbsPea^`@gVw;?*?#BEsnD`7Vnr&^Ln5 z=K0Vx=o>Bhwl@M+5yNUqh_zDPXH;*B0FjLRfmwp{3HEw)ET8#H34f!H`6qTAM~&V0 ztq2?J@Jt@rb=eNg0INg;T)-PJmLj2&cCKd$`qI4xi=cYblmjo`^NROV(+0 zv|JY$TqgBbNB03baP&WOq3&1Qk68xMP+melqA2!*s_xRmoLXn%_-PaX>j=1!Jw56( zlRAyJTo@+`n-mBK)66~sq5R4CB+!@?SdP)y^(D%V7oP+9jOVZBKZx2P0bLWj@d1|T z?Y_WzyRjlLP5Zn98Ol?RTH8Obn1oM`l1;uSL*J<(UIZM2)?koVX*kwK{=&dPjDI*= zY`T6xZ#sQdaLZ9djNML?^Lx6rQe}Nj^9DiCYSi*=e6@kQ*V$=JrvFx(OW*?r&M5pv zxm)9pN}jFN_?OoD+tY)eF#^n90_v%pxZdU{#4z~^(ETy6?a$-fvWeG?NErfcxgF1p zl{VN#M_i8OsK`nd3|U>n8wqTJL+*$WA&ZdDosj)@=^h31Cc8`tJw-0FT;aHZ+Y)pnXbDH`r5v6Q>YWQCv)~%j{-lCd$%} z-uPH7D4ASJ2!=+F&Fr#wu2fzg{xP0hPFzuddB*hLr%?xAW6?4|;3f7>8iy@o^WhoO zhxLA%8X`)M%-;>MQ_P=SivS}eNEbpK+W

    -zwN}Y2KQ3#U^Xq2N8b6rA@a4_gXim zwd@DYJT|d4A!OsjvVPTQUphAeb3Uyuo&@thUv0es~~@Q)|=aOW6+3-g7e;!Cz-O%a<0SYugem#SUVZ(rlS1iG(#N-Yru z7V5QdDx`4-c3UTf!Xz?*3_k#|)@l<&mFs|mo|-U~T-JhzP6Ow_EO~}9qY8a<jguyNph2!sHj?6&{QY3y+@(Eybtf!lsg-zHmH-7aZ5m4M#EYNgnwC z+}rQ*dVgTBH@q{M4b1yimxhkt>PII{xv_vR-m=eBlXH|&chEs$b_5EL0!rqCLgk|=t+z&r6%85$PL6x;MhlUYm2@+#iEBu)oEnDEk=Wo#- z{K}{&Kb?1cyEX#hX9?f*^X;qU3pdCbJ)Ug z3D765@g`*^1pbFRJ8`5)wR4Zl{L8-%`_T(9QC<_qZ$(V5-DkP_wq`y|*X6hH$@{D> zVI7~HrZ5{+*v$gkiI%AH;T-+)>*my$|3GvfRIC+hQWNq`SICp?zKAah1L5%8&T!G8 zNYwRQ*0XQ`q^B29%wssUIrI8H)#8mUg&nBJ#MQwxIqiu8d>p{?3I%BBegp-rF~;($ zXu2Os^8^-S)6Hc6?<`;-5Z{IMyj-|};DhDSH-qP&UMpD*0Nio_FxUQc@^l9O4Ztq* zs8+aXhWq_tC;p!=G(iYT9=X&6mWAaFJpNy|)7pjKeQ0P>(^z{4(mSZPw}Ed3Kz|os z)(c@lGSP46yLtNOaft-qUVN|JQ_@(6_RO9sOl_fB?G3N~^;J+{j1sWs8kv2?R_=iU z;JM6{ZB8htr~|-HVDdxI`}X-DtjwT;2oNUD-2%P1A>U@dKk&OaV=V$cXaL`P9(MA) z-M;Kn%6?I8m!acxodoNfXU*A=(u~=BZ6hp*_8!VU!#YC$xzviC_U1cfnQLg+bVlcj zzN*g=@8XQ|Apm?Y3*0kG2LLZ%cyy%+0_p%Za5{85$^2(zB$WSQq&M9MGZ~P#h8qDe zL(BD69&TIdbU6dQ$QHUv*oZE@>n~vjrnB(?A#Fypyk%DzrK5Q%qR&G+1Yq`hj16u9 zSVHNNdY;%3COZrMBbv;Kuv$M{RlyS(8{O&c`#6>KOrL9++g!vyaR}0807ALozoQza zlD?9Q4p=}g1(@rGBMA)J6O$iMLEvPpV+Z9I_5d8aqzobIMZOQu|D*hwqCn-w{}A>P z{m_H~#QpgHK!T<^TWZr8hp%r|lJ)mYJeZ_Uo-hXQav9+eNhf z4APDAip9aX*^c7k;+SG? z$?XY@3=PKC|ARWJ<~PNCf{KI#HZiUM20juWV9&4A&-oYw+{MLhTQ$w-9|7KIo9i~` zf8tna)=M{1T?>#HHool9tn#bJu&G(qItd9{_*lhX$P=`FbJyOYaT196KrOJDk52N} zcib)87_Rbq5aAWE;KITEp94rD1#GMHfCmGf7ZaF0F&1l-S!0a4BozMdaeSN#Bgv)! z7I0xUa-~&_3S6%5{Z9EmL{9P#=c`64r(Gog`Hu_$%&KUEIB+k|OqZi<0bOAHFU*xz z7_HYA5ljI;puvTJ0m+*u3F|bSwdwpTl`{Wh~rY-s3PDlA5ypjcTUj>Grb z_K^vBG4m^dMjhZ8d}3<5RUsRT8>qRjjZ1+Jl=}r1RdUh6#rby80VtdTO$H*Z6bZR( z!J1vb84X~zcmB0^2cQu0tGCSVAV91%K%T8YVl(1YOeGpX*sV0Hr~sy105hnGTnfA? zd-z))_fv7W9kZav;xhkL{9tE%0DiiHmT^43yzeJWp_mrrO0Fr$|6x$q2j>v=@4 zU?5iNm*$&IV9~HGWU+sd{0>LEEDp@$N?uFR06=%904fwi?~_$A$tENm6wEPQml5x4 zTJ68(l9-+ZE7crnc}9r4@(=+pr#-|DlHUsGz&|#NUaFZ8w8@Z*d@h1L9sEO%G4tsI z1dB@YTY&F!RyE=C-YER-nT?F>iP}JPJ;&{-l`O`ud$i3~Zctji5;yBs&?oWt zV;CV1JG3;M&dn`;c@0cv3ycv`$d(y(hI1Ue2*J);qdrYHPOGgp3l#7MmH_~WFwkly zU_wxg>VaAw6X0Th+yp$JJh6(i)zBXnC&B|cx<-eUpZ|Wqb7{mjV}t_g?E>++BKKkl zSlTI)5#X5dxNR07E?Obu=%k7dAflS%>0*x~qM&j9e))7m0pZYUWW_!86Hj2dP-HBn z6P6f^eO@Xuz&u#w4IUyHkdfhQxr{Lb09Qczz0x1_3`AXLL)4Y6e6vQpcELU>P6SpNUX1YM{E z4rDS+>f{aJal=MfIE0FZ*xI~r!4`&vFz9`;`XLOBg56*VE|&%;F1|Sb&ppbvDVPk- z^y`N(kdWU4E#DDXBlR|hoBQ3xm)rpO{U7=VzQV-HB51(u>HeHF;+UmBPxfwv(+0*- zw8b~Nc4AA31X;K(gJ?{9j60L!xyhRE1DL zwT}N0MbPNw_;9(k2-uAjb#p&*5%}Cr!4AT4kzg_>W#Z7FbVUPT5WUH&O+~Ok&(jQS zE?+L^bpnQ(3K?Tze;zlWj=xtoX#d72IdYkWEH=HPg=m`WB!c6x21CYM9Qo{(FDZS z!#N9LC;pvg`olckvM?FrS7?lhN)@mYuEL_YR?!}WduhR5#OxmK{Y?2{8>3yNq-%0o^(DMLw)mfW-`X%47)_jMw?1q~03jGUWIWv5 zIKa~8E}W=zLhu=h!)6|ER8oEd#s0h?19tOztL?rk_F4PN%F1pxgz@rr`nAWOH~aUC z;&;A29>xes>fWDs7GzcrHItU>@`y9)CehLZ#ajj4N{Y0gl-I`lKK=sh3RTYG{rq{dV5b6c^)C`#bfR!C%dfQ8Fu7z@s3lIb1 z=IX4oCYwlBa*T}d^5Tp$o>tXYxJvo2w#GjLBCoN73t`By zAwZeGxEeFNqrcvIsVSg-yoL0owXE+Uo+e0lAcoxgW*<(w5-hMpgVbXfbJuGN8sD@0 z*mm1QFTb&1;=d9l0aWe#iIwxC&73RK!Jf&N?*TLp80bR&Z>{^y|9}9GaCQgrZeZYX zy2!$Ax2%@x&mkcoJYTYv06-_b#0ZOKXdsePN%!aVY_+}6JEC4zSo>IcZiGsgO zLuM+{Ne6ejNECM3^fFoNO{&&hhp%XieNGM*{thIutZ}V_p%4W(hhq#0Vr!Z6IuxoxS1cpBxfH zVsJgk5kc?ey-GUomxn8@f_5M7uJm!K4j>)^h_?|rc~fjjk*Fs5{T=Oa_JP+JEp9Q3 z_=ktT-VL+4*j zl^+2d9}i42<_(7f&3G1S1T)I}T}7LETZY6~w0) z7xQ(hu{i9*2IpwC>)DJ5uCoa&$aK@IIkdEN5M7XcV5ded@_+kYzI}H#?z!4uWvzZK zPSeBX39Y-Wz((bLLf73Bh=^@l!hyW9ybmXV#{6-iMu`0=nMHLkJhpbjj65Dz25xd& zG|PFUhh2<^^e24qpH)NS@7C@n7vtFyoSuTR9*3lb-#raixfj%t;J>FY4DeW?T1=el z4ms_m-84q!XfP~DJQit2bab4&2zEa1#y)*@)MEZpq{{t=MmC|hP#g+e4{EkTIPsjt z7-+I4!sqh#?f2R+P zHB4ZDTnrJ@<7rB_peD7Sr?(uJNxyvb0^Tj1FOP4__5Sl29HOH1b((}nhqFU}6Y`5P z{hajp4-Asa|DEKu4u9(qoNTVkLm(jAHD1Y+WjInV2CHZ@mofPzzkfEelGMOv^$DnP z{MPMxePzE(SAO7QywOu;TFVM%ncyBiL11JG1pi|AWi%RRTNt5t7|g^D;@zfui5y^V z7vati?%TYm5%H+>LVtJ>igx`>Zud<6oMGFJo)=|2Q^^P`Ft)AQrNMQWx{3mSZq!cY`r~gq;F+u zXJIfmGR+qPT*$#jL=#qE)}p)RIPfv{Ni^G;&*5Y@%Mal8w?=o)2~`-ra2;bT%f(j2 zh1Wqxv42HAm0E-nio_%SSsLPG#hxitXaP2Au$d;eCS7+hPN*|?RG;VXAK*OPA0tK3 zU@P+UK46u;Pw18w)R)+1O$MNkxwj=N;N)&XF0QbIo(k>afis`UUz$$k3<;5i&CT>b z?Ze}sg;5l;YeM)tMt#@j4M_lAXFnB*3+AAMk>0@OV56!%o{aimN#;5UB#TY%07K~x zR1{nk)&2MDy%8V|D}2;lBDe2HfB+Qt6(0#$N5UL2_Hqa>5C8<0$bBVms~F8RZ6)7W zjGZoWwsJu0-dtH!A^pFzfUT9b6^%K7D{7^mQ@PULe2t7Buw3`=F={io60l)w>Vs=k za5_zY$E4=^uJWzUx-&)y?+EwOye*{pYXQ@*7X_riF7jqZt+{}!4LnJbSGiV>~KeJc4 zSS`%uSX}i-v84qmw@Jj-%ILyUMe&rVRT+SnA?l0WaRaqhC+_C$=u$5HrzqMdeUl1` zf$3A(uMIqpH!H;o(zZpSL-cSSYn|0Fyi(Bwn^?%J_z~VBEQfagO!O3{e+Wy8lN_H) z$faRMRkE;X?QF=|7{ie<6I+kM$-F;t2}bkk{h~yl)`^VO)BVP2VZAVx+L zbdxB}J?OSe`J#4`ZD;4pB#}M!%Jn(=<)!Wf0X+y!{QkiVdI1Zm4@CZ1N@(i+tiVn_ z-ushm3rN_&lv)w5g63>UCGRio=Go{9Z#Y@iXy``^&YtC`B-CG|T96HdFlbd8f*(Sj ze4d+o0WBDmghet5n6a)fkez|BAQocMy2(*D`X9cFBvs~+F87xYWR)7F@V;IOGUkBI zqpbg6duG~RlOH++pQdmpAO#TdEr3E|d0NyLz@Nk__sn`Z1TVCfyy%3B*$PYG^v(IpX$nwVX z)=T14cMvS9;3}X<7v5GljcceD?+Hf60PHCm&#V4ZVpi0 zSDJ*iD*+oaXAkbqapGz2KW%=m9+P`2wmZIJ*1b6K2_E zK=17xA*%oi^K!i1o!*j0=JwdE1G9pqf>KJ5WXG{%xz~}+o zjA5~V=9XLM`KII8`H-pkR$J6HTLO9xhl>Oj_ADkll|E*sWCphM%+6HIwpwU~ZpM$1XKKj5KUom^I`dK9V#4X7kKsgdZNPpz~bOR(X@goVMfv$H#m#GQ%45g~Bl z0~LiDBi+)SjGjtK(pr-A3aqZQ8eTBZ^&0~v%g*lYk1*x@DclGhAwDHe6vfaNARlfJ zH;iXW@l&^Po4GOdggpz@(lPIUWx@2{MZxB=rh`2glQm}0#aXVzNP9t4OZQOF;!hp> z_B7AoRK6<1aoTSqQJ{Foe_UX6VLVX5yS-P(WHLQ2gVW+$TE7`^2j~VS?ICo)}{| zAjEfi@;D;_w9Q<8BqxE;LSqr7|s^!oh`)J zBs9)Ynq{cjA||I>VYoLQNtGr)c6cu=z9&uSqlO{T#xmy24wd)=nhm?OExl5l&h)~v zx+)EoDBb}5yMgEs^OtEEc0C8JL}%3}K*Fv-IpS<=j5C}X%2@t!U#;vh!JJcPT> z$par8JhuT)vlH%DPNfj+B@J=fz4e#ZBzh$#@0#j1gXj0^wm$>&*^yP&KZ*Jup4C^T z=r0iGB?ryWLsTrbz_Iufj1}ax$?QC?xd-aE*^0xF#*%KTL)xSsYrX=mu+EyA&9Rg2 zN5i#dS1~ux2!fJdq zmyno+>EttO7X_RZh@&$DYv zuXH|;zuVc0eos8&AMOWlg*e*8a3E@PfsvmeOUF630|H}hJz3*t8$Z|d#d=2sHI`r? zkI+O{L6~44K%%zIliCBvI)!zkqdPQI+%%@t$uLy{!alfnYyAX-Q)|3j19I#L-0*ll zSny9T(KK#aM}^t zr2n)x9E_KpJBNofW!Rj{(KPgGy9MArInI%P^&oVT&F4aI1Xh*6V{F3ZxR^+%MtIdo zcd>aD>*0LH(gI1;ps} zg??+HQ6JA=U`OXEFuvW9@%kBdf?(D(_Wq1`qdz&-V$^y*{QLxURb4VcLBm=aAkIb< zshS9HXze>4Y8*egKHqbJ%t;vc_Xzri9Ekp&-FlubijR)&<+3a2$(tR#absgU7*Gs> zDqT|;E*vHxmFpuUEOmWfzO&!%U#%ciDgG09>c@B2>+WjD92)up=P}p$)q$j3t4j3b zJHDU~cPI*Bv0tRrj1C5CR69YpD<)iUj*t5uD7hAYZkRvvk61)CfR`3O16awv#5(no zK-VW^ceteIx)Li!`5$A2=huHyOMOB=W##c-I=jzwB|+8F>^Mk8{paSl^88J^GHP$R zti=qap~r|NJ1=K9jn3~VX>Sqt?!$jSg_h~Os$WF3cZ7PVQ?FdmH)>bZ5d?LCQCQGl zpRcJIKspl^HqiJo-4VqOAx`l!%AfB+WrH-&^gA-H7mVhLuW;C?usU9`qMks=j9Xxj ziCgH>kA!>XmgmL9)S9U6SN-@YSE7*p{Ebb`m=QabhOTo42I?Tlcc5>hN!ZEwLDokE zkw%9NAd0<#F&xR4FN5~&ZB9e~GMimK%Wl}(DoRAH=dTe0xVQjG#gN=0#(l3EUjMx~tpetOIjxz2*ewBW(> z$DB*WK5wnGc5suu4p>=iY*0l$@;TP|sp8J?Ff*eS#IhkhcOx!?nBx`ClD$$*TeUzE zRI%8_KGq}egOVh>#5&E{w?`OYbEcnV-wZ4Z0mRQ^j*sU;Ce2WV#MfLdC?L6D%W5Vc zz`ghh1Jp=IfW-Ha0=#w_xJmIKsjsi#3?xev9MG#mVw9|FM6#O&#Zv;V|8*BOUlk>fN`*IrRF&2Kc zTL!K!pZ$2=5oxhXEn_W2zTEOn8n!|Y@hZ1+XW63JR7))Xxu65J{T|e*rnqb=X8rS9 z@(+hv<2Sa0>7n}}>hVXF!7J%?sY~-5uJpuc&5ByP*npV1y2xSJ-EAqy)~6&0(Xb5h zO_PX#!R}@!%MHz`3s+6)p<#N5wPH`Dv_I+|;*XSVO6*W`DZ@AbJcV{Z5RDULc z@V?uS41(!o@~$D<)($8S%_(>bTWPp3?ECf7{Ft0FSa(T4yE{2+60;;KLM>KHpW!pj z$rO(%Ku*g|f@7yq+vSkx=S=^)57{}+g5pW58S2%4R6}ooQYeK);OVCv)7RT=GY=NL zxj!bZk|KWoJw|H0_5ftLG+iHkkP(D^o$>I$vjEP>!9Dk4sl|jYfjGcmX9!qF#zTBx zo341%%8&_c5LbQRb`oqm1vt7Nj!whS1vv3?QrffWEH(r;4>DbA*vUvI$&Q6rdA8Cc zP`H0rnIU!xJDgitS`?@3F$sLEM6swloLbX2lgA^0d{@<#+vM*KAwXvHkGEzZ4m+~$ zST&>{i>u%+K~SZ_fsEPe$u81M&)+XhX6NgigW+k3u~zb>qle!KLuadO*h(1^?slcL zHLF3{E3Fgs!B1aM>1zIB{Q^|Lw-6L<3s%Pk;#nQa>a_tsEe~I74*DiR!TbTt5o*EICw0z zn5zY3fg)s{9=nH2FAw<#EXE=>yEM!ol147BxrNQA5P> zkdskxJVYC*nSZOGhr=^Y_OVwxkp;T<&~io8i(QBD1F!*Tl@O4Tp}l{>c>!ZfVZ|c> zHGjG=IGs9ciE1d3PFE=YK_0tb#0oEeX6&QV3aUK5A@!runI=lHo{}h4k}!L*v&U@m zxM+kd(Ilv_dRMM{Tq8#o^C1MyqpIW>oML?!(cYu{H6)?mXZ0pUEazg#<5I{ohvR?7 zktKncW&2IoHwZ5rUMhMJbe{hEayEP?&ZW1nvoZA~{b~p4#r3R0yvY4xqc7kBHp|e> zm6$^1OdJW}oz?numbWEts_M(0N_!2B-+bR$UMd&tZFw@$SO(HR3)_$HwVitx#;v2Y zr6=QC@B6S7wwd7%U;|;Jm?RQ_ms0_n2gfPW3xqKmR{r~*oEaik8??PnGMzVC>?a=} zExrZ)@Ws{QLH<_kPs6W(*p=8F_aUK+4!FZ<4vDgzLHq{Ybar?g4q80V8;I3F^DYQ2 z+l^`~j9TQ7rs*h22=7))|KbZJ(>VQD6V2!)!$E!Vu!ZgAp3dng;Uv~dMs=v`S9qvZ za0CMI3&WM^hiNbpU=)(F)?Pr}Wj6>yPqO zqX!lB@q*(0*w`hqWlMHheTQKyo=`KIC-_;1EvkP|$H-avjS`_ak-M6BdyvmmB!GW@K*qx)FpbT((+Fpsrj~I%z@M6$Wq~$r{n3j z+976i!Dk}wrQW1w{jY)FV2JG(L#Wr)z!LN=a;XVMu)m-x?8!=RDb|F2dmQ*FbkOzs#>ec==y*j22wdGHzDiPwcUmBo4h~AoDJiA^dqp5* z=otVp_sg^lwQytT6IfMWkXG7U*tupFqwdEz^Qze|?y3%ENO+YI{MgMKRrGs=`lxP! zQIsX#YD`NE;rr?2_C740ydMm8%wUdP;N{g~RXH3)&^G(dfNm(=_dD^a5pe3}mhKLl zL-8ZU>Z`NNjTGgv>;+lcpkX)t^=mVcFYyJK*XCoXgSxa4)sb$| zFi|txeHcTWf9A`0_L$H%{7U@K5*^tWi{sWgs*L}bQi%({qg+FvIq#1u8^F3Vf8Q4O zc?B(K)!QZ?GZN>u?~j*MK!Q9sq0@7}igXeLo~`UCH)yy8hk!rd!=zeJ_5*?ML>)wJ zQOP-TK|+6M(G5g4he8yy7nb#b@txRCUKES<$(Kd8>}->qEk`HNLNVV_gaa5QB3)vR zC!5fVwjt(ZmlI`brq^)!3l+>pNi zcDWRNOKh8HR3U)q3X*0QmI;=A9&wvUNT@JDX&rQ-2#eeR!aCDz?@O`7`%l@^z?G|mXjZlyq2%eOEIObRXXkBd-`1uC_LR$-Fe z`|cEO+bKD?HVq0~k*w2f%~h}rQo&Eqk=-aeG9DsEtvPZ5AcghMd6qg+9Ld6^wYh3& zrW2?-8}?n$)n=6P_8n(wl^f%2oF%O+FFkd}+Yt-B&NLCB4I9)HNi$JG@dLrV)_vu;qC1(Sj_fpqk5%f33Zrb8LtEF!8 zh}A#k;R+k^JPbRK+w|KgKDEhD;^u)U+?@EY#0eA?#Ck#}eN4)

    IzP;sn;1<=`>{ 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 diff --git a/test/image/baselines/splom_with-cartesian.png b/test/image/baselines/splom_with-cartesian.png index c40495a487d34876840f8c6c6a80c6a728493e23..1c289aa989576566b6bb680a5fa93ee1626bd116 100644 GIT binary patch literal 24534 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 WrF6=p&@>$U!lI`|*348te(}G}qv%Zl literal 25484 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 Zkhxi4xl_597U2~#_4C@wd1uW7{s*F0GH(C? From 069901bbe4396a0016cc3521b8b2172aba4f5121 Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Tue, 16 Jun 2026 14:47:20 -0400 Subject: [PATCH 159/241] update splom jasmine tests --- test/jasmine/tests/splom_test.js | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/test/jasmine/tests/splom_test.js b/test/jasmine/tests/splom_test.js index 9912f1ec499..71b4d7a7559 100644 --- a/test/jasmine/tests/splom_test.js +++ b/test/jasmine/tests/splom_test.js @@ -695,26 +695,26 @@ describe('Test splom interactions:', function() { } _newPlot(gd, fig).then(function() { - _assert([1198, 16558, 3358, 118]); + _assert([1198, 16798, 3358, 118]); return Plotly.restyle(gd, 'showupperhalf', false); }) .then(function() { - _assert([1198, 8476, 1768, 4]); + _assert([1198, 8704, 1768, 4]); return Plotly.restyle(gd, 'diagonal.visible', false); }) .then(function() { - _assert([1138, 7534, 1600]); + _assert([1138, 7864, 1600]); return Plotly.restyle(gd, { showupperhalf: true, showlowerhalf: false }); }) .then(function() { - _assert([7966, 112, 1588]); + _assert([7978, 112, 1588]); return Plotly.restyle(gd, 'diagonal.visible', true); }) .then(function() { - _assert([58, 8908, 1756, 118]); + _assert([58, 8932, 1756, 118]); return Plotly.relayout(gd, { 'xaxis.gridcolor': null, 'xaxis.gridwidth': null, @@ -725,7 +725,7 @@ describe('Test splom interactions:', function() { .then(function() { // one batch for all 'grid' lines // and another for all 'zeroline' lines - _assert([8968, 1876]); + _assert([8992, 1876]); }) .then(done, done.fail); }); @@ -1237,7 +1237,7 @@ describe('Test splom update switchboard:', function() { expect(scene.matrixOptions.size).toBe(20, msg); expect(gd._fullLayout.xaxis.range) - .toBeCloseToArray([0.753, 3.246], 1, 'xrng ' + msg); + .toBeCloseToArray([0.58, 3.42], 1, 'xrng ' + msg); return Plotly.restyle(gd, 'marker.size', [[4, 10, 20]]); }) @@ -1255,7 +1255,7 @@ describe('Test splom update switchboard:', function() { expect(scene.matrixOptions.sizes).toBeCloseToArray([4, 10, 20], 1, msg); expect(gd._fullLayout.xaxis.range) - .toBeCloseToArray([0.853, 3.235], 1, 'xrng ' + msg); + .toBeCloseToArray([0.81, 3.38], 1, 'xrng ' + msg); return Plotly.restyle(gd, 'marker.symbol', 'square'); }) @@ -1484,11 +1484,11 @@ describe('Test splom drag:', function() { expect(scene.matrix.draw).toHaveBeenCalledTimes(3); _assertRanges('after drag', [ - [2.9, 7.3], + [4.0, 8.5], [1.7, 4.7], [0.3, 7.6] ], [ - [5.1, 9.6], + [4.0, 8.5], [1.7, 4.7], [0.3, 7.6] ]); From 93599ac5928de2f8d4da10da96a1cc8430d9b6fb Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Tue, 16 Jun 2026 15:12:51 -0400 Subject: [PATCH 160/241] also remove = + ; chars from filenames --- src/lib/slugify.js | 2 +- test/jasmine/tests/lib_test.js | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/lib/slugify.js b/src/lib/slugify.js index 32342629717..10d9902d67a 100644 --- a/src/lib/slugify.js +++ b/src/lib/slugify.js @@ -2,7 +2,7 @@ // precompile for speed var HTML_TAGS_REGEX = /<[^>]*>/g; // anything contained in < > tags -var FORBIDDEN_CHARS_REGEX = /[\\/:*?"<>|$%&!@#~.^`'(){}[\],]/g; // Characters in the set: \/:*?"<>|$%&!@#~.^`'(){}[], +var FORBIDDEN_CHARS_REGEX = /[\\/:*?"<>|$%&!@#~.^`'(){}[\],=+;]/g; // Characters in the set: \/:*?"<>|$%&!@#~.^`'(){}[],=+; var CONTROL_CHARS_REGEX = /\p{Cc}/gu; // Unicode control characters var UNICODE_REPLACEMENT_CHAR_REGEX = /�/g; // U+FFFD, the Unicode replacement character diff --git a/test/jasmine/tests/lib_test.js b/test/jasmine/tests/lib_test.js index ecbffad2774..92e49158ba5 100644 --- a/test/jasmine/tests/lib_test.js +++ b/test/jasmine/tests/lib_test.js @@ -1955,6 +1955,7 @@ describe('Test lib.js:', function () { expect(Lib.slugify('a/b\\c:d*e?f"g|h$i%j&k!l@m#n~o.p^q`r\'s,t')) .toBe('abcdefghijklmnopqrst'); expect(Lib.slugify('a>b Date: Tue, 16 Jun 2026 15:21:50 -0400 Subject: [PATCH 161/241] Apply suggestion from @camdecoster Co-authored-by: Cameron DeCoster --- src/lib/svg_text_utils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/svg_text_utils.js b/src/lib/svg_text_utils.js index 7850a3c889e..47abf98bb98 100644 --- a/src/lib/svg_text_utils.js +++ b/src/lib/svg_text_utils.js @@ -24,7 +24,7 @@ var FIND_TEX = /([^$]*)([$]+[^$]*[$]+)([^$]*)/; function matchTex(str) { if (!str) return null; return str.match(FIND_TEX); -}; +} exports.matchTex = matchTex; exports.convertToTspans = function(_context, gd, _callback) { From a415430a23149d8d9e626e7d1fab8ee0ab17f35a Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Tue, 16 Jun 2026 13:55:29 -0600 Subject: [PATCH 162/241] Update draftlog --- draftlogs/7536_change.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/draftlogs/7536_change.md b/draftlogs/7536_change.md index 23e80bd74e5..38cbdc9ac0e 100644 --- a/draftlogs/7536_change.md +++ b/draftlogs/7536_change.md @@ -1 +1,5 @@ -- Switch color processing library from [TinyColor](https://github.com/bgrins/TinyColor) to [color](https://github.com/Qix-/color) [[#7536](https://github.com/plotly/plotly.js/pull/7536)] +- **Breaking**: Switch color processing library from [TinyColor](https://github.com/bgrins/TinyColor) to [color](https://github.com/Qix-/color) [[#7536](https://github.com/plotly/plotly.js/pull/7536)] + - `rgb()`/`rgba()` strings with decimal 0–1 fractions are no longer supported + - `hsv()` color strings are no longer permitted + - Color calculations may differ slightly (by a few RGB units) + - New color formats are now supported: '#ff0000aa', '#f00a', 'rgb(255 0 0)', 'rgba(255 0 0 / 0.5)', 'hsl(0 100% 50% / 0.5)', 'hsla(0, 100%, 50%, 0.5)', 'hwb(0, 0%, 0%)' From 56e92af5efe082fa8d10494e67480bdc82505e4c Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Tue, 16 Jun 2026 14:37:30 -0600 Subject: [PATCH 163/241] feat: Use dashed markers in legend for shape traces --- src/components/legend/style.js | 4 +--- test/jasmine/tests/legend_test.js | 7 +++---- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/src/components/legend/style.js b/src/components/legend/style.js index a2a45e9ea5a..466b53cad30 100644 --- a/src/components/legend/style.js +++ b/src/components/legend/style.js @@ -216,9 +216,7 @@ module.exports = function style(s, gd, legend) { dEdit.mo = boundVal('marker.opacity', Lib.mean, [0.2, 1]); dEdit.mlc = boundVal('marker.line.color', pickFirst); dEdit.mlw = boundVal('marker.line.width', Lib.mean, [0, 5], CST_MARKER_LINE_WIDTH); - // TODO: Remove this check in next major version - // Use 'solid' for shapes to match existing behavior - dEdit.mld = trace._isShape ? 'solid' : boundVal('marker.line.dash', pickFirst); + dEdit.mld = boundVal('marker.line.dash', pickFirst); tEdit.marker = { sizeref: 1, sizemin: 1, diff --git a/test/jasmine/tests/legend_test.js b/test/jasmine/tests/legend_test.js index c5b252da9b1..97cd23f145a 100644 --- a/test/jasmine/tests/legend_test.js +++ b/test/jasmine/tests/legend_test.js @@ -3200,8 +3200,7 @@ describe('legend with custom legendwidth', function () { .then(done, done.fail); }); - // TODO: Update this test when releasing next major version which will remove the exception for shape traces - it('should apply marker.line.dash to scatter traces but use solid for shape traces', (done) => { + it('should apply marker.line.dash to scatter traces and shape traces', (done) => { const data = [ { type: 'scatter', @@ -3247,7 +3246,7 @@ describe('legend with custom legendwidth', function () { expect(legendItems.length).toBe(2); expect(legendItems[0].style.strokeDasharray).not.toBe(''); - expect(legendItems[1].style.strokeDasharray).toBe(''); + expect(legendItems[1].style.strokeDasharray).not.toBe(''); }) .then(done, done.fail); }); @@ -3498,4 +3497,4 @@ describe('legend title click', function() { } }).then(done, done.fail); }); -}); \ No newline at end of file +}); From 7a48f604145fe4dc0b797d86f0b8575dcb3ec181 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Tue, 16 Jun 2026 14:52:53 -0600 Subject: [PATCH 164/241] Update baseline image --- test/image/baselines/text_on_shapes_basic.png | Bin 87449 -> 87711 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/test/image/baselines/text_on_shapes_basic.png b/test/image/baselines/text_on_shapes_basic.png index 6eb40a229445fa36dbdbf0b648d4639ba96ae4e1..23145ce05594d9188e8e95e8457733cb7f480da6 100644 GIT binary patch delta 37781 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 delta 37490 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 Date: Tue, 16 Jun 2026 14:53:01 -0600 Subject: [PATCH 165/241] Add draftlog --- draftlogs/7845_add.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 draftlogs/7845_add.md diff --git a/draftlogs/7845_add.md b/draftlogs/7845_add.md new file mode 100644 index 00000000000..68c0c99b92e --- /dev/null +++ b/draftlogs/7845_add.md @@ -0,0 +1 @@ +- Use dashed markers in legend for shape traces with dash configured [[#7845](https://github.com/plotly/plotly.js/pull/7845)] From 7b7753f3b4e3754d9946b245ef7dbf224135c1b1 Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Tue, 16 Jun 2026 17:32:59 -0400 Subject: [PATCH 166/241] update translations --- lib/locales/cs.js | 6 +++--- lib/locales/cy.js | 6 +++--- lib/locales/de.js | 6 +++--- lib/locales/es.js | 2 +- lib/locales/fi.js | 6 +++--- lib/locales/fr.js | 2 +- lib/locales/hr.js | 2 +- lib/locales/it.js | 6 +++--- lib/locales/ja.js | 6 +++--- lib/locales/ko.js | 6 +++--- lib/locales/no.js | 4 ++-- lib/locales/pt-br.js | 2 +- lib/locales/pt-pt.js | 2 +- lib/locales/ro.js | 6 +++--- lib/locales/ru.js | 6 +++--- lib/locales/si.js | 4 ++-- lib/locales/sk.js | 4 ++-- lib/locales/sv.js | 4 ++-- lib/locales/sw.js | 4 ++-- lib/locales/tr.js | 6 +++--- lib/locales/uk.js | 6 +++--- lib/locales/zh-cn.js | 6 +++--- lib/locales/zh-tw.js | 6 +++--- src/components/modebar/buttons.js | 2 +- 24 files changed, 55 insertions(+), 55 deletions(-) diff --git a/lib/locales/cs.js b/lib/locales/cs.js index 19b3c99562b..695b5050ab4 100644 --- a/lib/locales/cs.js +++ b/lib/locales/cs.js @@ -32,9 +32,9 @@ module.exports = { 'Reset view': 'Obnovit nastavení pohledu', // components/modebar/buttons.js:583 'Reset views': 'Obnovit nastavení pohledů', // components/modebar/buttons.js:529 'Show closest data on hover': 'Zobrazit najbližší hodnotu při najetí myší', // components/modebar/buttons.js:157 - 'Image download succeeded': 'Snímek vytvořen', // components/modebar/buttons.js:66 - 'Sorry, there was a problem downloading your image!': 'Omlouváme se, ale došlo k chybě stahování snímku!', // components/modebar/buttons.js:69 - 'Capturing image - this may take a few seconds': 'Vytváří se snímek - může zabrat pár vteřin', // components/modebar/buttons.js:57 + 'Image download succeeded': 'Stažení obrázku proběhlo úspěšně', // components/modebar/buttons.js:66 + 'Sorry, there was a problem downloading your image!': 'Omlouváme se, ale došlo k chybě při stahování obrázku!', // components/modebar/buttons.js:69 + 'Preparing image - this may take a few seconds': 'Připravuje se obrázek - může zabrat pár vteřin', // components/modebar/buttons.js:57 'Zoom': 'Zvětšení', // components/modebar/buttons.js:85 'Zoom in': 'Zvětšit', // components/modebar/buttons.js:121 'Zoom out': 'Zmenšit', // components/modebar/buttons.js:130 diff --git a/lib/locales/cy.js b/lib/locales/cy.js index 475a28134f2..fd433d1ac92 100644 --- a/lib/locales/cy.js +++ b/lib/locales/cy.js @@ -32,9 +32,9 @@ module.exports = { 'Reset view': 'Ailosodwch y golwg', // components / modebar / buttons.js: 592 'Reset views': 'Ailosod olygfeydd', // components / modebar / buttons.js: 540 'Show closest data on hover': 'Dangos y data agosaf wrth hofran', // components / modebar / buttons.js: 168 - 'Image download succeeded': 'Llwyddodd y Ciplun', // components / modebar / buttons.js: 77 - 'Sorry, there was a problem downloading your image!': 'Mae\'n ddrwg gennym, roedd problem wrth lawrlwytho eich ciplun!', // components / modebar / buttons.js: 80 - 'Capturing image - this may take a few seconds': 'Tynnu ciplun - gallai hyn gymryd ychydig o eiliadau', // components / modebar / buttons.js: 62 + 'Image download succeeded': 'Llwyddwyd i lawrlwytho\'r ddelwedd', // components / modebar / buttons.js: 77 + 'Sorry, there was a problem downloading your image!': 'Mae\'n ddrwg gennym, roedd problem wrth lawrlwytho eich delwedd!', // components / modebar / buttons.js: 80 + 'Preparing image - this may take a few seconds': 'Paratoi\'r ddelwedd - gallai hyn gymryd ychydig o eiliadau', // components / modebar / buttons.js: 62 'Toggle Spike Lines': 'Toglo llinellau pigog', // components / modebar / buttons.js: 559 'Toggle show closest data on hover': 'Toglo dangos y data agosaf wrth hofran', // components / modebar / buttons.js: 364 'Turntable rotation': 'Cylchdroi trofwrdd', // components / modebar / buttons.js: 296 diff --git a/lib/locales/de.js b/lib/locales/de.js index 1e066990a46..305703f5dd9 100644 --- a/lib/locales/de.js +++ b/lib/locales/de.js @@ -31,9 +31,9 @@ module.exports = { 'Reset view': 'Ansicht zurücksetzen', // components/modebar/buttons.js:583 'Reset views': 'Ansichten zurücksetzen', // components/modebar/buttons.js:529 'Show closest data on hover': 'Zeige näheste Daten beim Überfahren', // components/modebar/buttons.js:157 - 'Image download succeeded': 'Snapshot erfolgreich', // components/modebar/buttons.js:66 - 'Sorry, there was a problem downloading your image!': 'Es gab ein Problem beim Herunterladen des Snapshots', // components/modebar/buttons.js:69 - 'Capturing image - this may take a few seconds': 'Erstelle einen Snapshot - dies kann einige Sekunden dauern', // components/modebar/buttons.js:57 + 'Image download succeeded': 'Bild-Download erfolgreich', // components/modebar/buttons.js:66 + 'Sorry, there was a problem downloading your image!': 'Es gab ein Problem beim Herunterladen des Bildes', // components/modebar/buttons.js:69 + 'Preparing image - this may take a few seconds': 'Bild wird vorbereitet - dies kann einige Sekunden dauern', // components/modebar/buttons.js:57 'Zoom': 'Zoom', // components/modebar/buttons.js:85 'Zoom in': 'Hineinzoomen', // components/modebar/buttons.js:121 'Zoom out': 'Herauszoomen', // components/modebar/buttons.js:130 diff --git a/lib/locales/es.js b/lib/locales/es.js index 9e27a55c2e3..6e2129de81c 100644 --- a/lib/locales/es.js +++ b/lib/locales/es.js @@ -35,7 +35,7 @@ module.exports = { 'Show closest data on hover': 'Mostrar el dato más cercano al pasar por encima', // components/modebar/buttons.js:157 'Image download succeeded': 'La descarga de la imagen finalizó correctamente', // components/modebar/buttons.js:66 'Sorry, there was a problem downloading your image!': '¡La descarga de la imagen falló!', // components/modebar/buttons.js:69 - 'Capturing image - this may take a few seconds': 'Capturando una imagen - podría tardar unos segundos', // components/modebar/buttons.js:57 + 'Preparing image - this may take a few seconds': 'Preparando una imagen - podría tardar unos segundos', // components/modebar/buttons.js:57 'Toggle Spike Lines': 'Mostrar/Ocultar Guías', // components/modebar/buttons.js:547 'Toggle show closest data on hover': 'Activar/Desactivar mostrar el dato más cercano al pasar por encima', // components/modebar/buttons.js:352 'Turntable rotation': 'Rotación plana', // components/modebar/buttons.js:288 diff --git a/lib/locales/fi.js b/lib/locales/fi.js index 5b7cb940cb4..91989d4f3de 100644 --- a/lib/locales/fi.js +++ b/lib/locales/fi.js @@ -32,9 +32,9 @@ module.exports = { 'Reset view': 'Palauta näkymän oletusasetukset', 'Reset views': 'Palauta näkymien oletusasetukset', 'Show closest data on hover': 'Näytä kursoria lähin data', - 'Image download succeeded': 'Tilannekuvan ottaminen onnistui', - 'Sorry, there was a problem downloading your image!': 'Pahoittelut, tilannekuvan lataaminen epäonnistui!', - 'Capturing image - this may take a few seconds': 'Otetaan tilannekuvaa - odota hetki', + 'Image download succeeded': 'Kuvan lataaminen onnistui', + 'Sorry, there was a problem downloading your image!': 'Pahoittelut, kuvan lataaminen epäonnistui!', + 'Preparing image - this may take a few seconds': 'Valmistellaan kuvaa - odota hetki', 'Toggle Spike Lines': 'Näytä huiput', 'Toggle show closest data on hover': 'Näytä kursoria lähin data', 'Turntable rotation': 'Tasokierto', diff --git a/lib/locales/fr.js b/lib/locales/fr.js index dc6e27f2d5c..7599e438302 100644 --- a/lib/locales/fr.js +++ b/lib/locales/fr.js @@ -35,7 +35,7 @@ module.exports = { 'Show closest data on hover': 'Données les plus proches en survol', 'Image download succeeded': 'Téléchargement du graphique réussi', 'Sorry, there was a problem downloading your image!': 'Désolé, un problème est survenu lors du téléchargement de votre graphique', - 'Capturing image - this may take a few seconds': 'Conversion en cours, ceci peut prendre quelques secondes', + 'Preparing image - this may take a few seconds': 'Conversion en cours, ceci peut prendre quelques secondes', 'Zoom': 'Zoom', 'Zoom in': 'Zoom intérieur', 'Zoom out': 'Zoom extérieur', diff --git a/lib/locales/hr.js b/lib/locales/hr.js index e73d7511fa3..34a7fc54f6c 100644 --- a/lib/locales/hr.js +++ b/lib/locales/hr.js @@ -34,7 +34,7 @@ module.exports = { 'Show closest data on hover': 'Prikaži najbliže podatke pri zadržavanju mišem', 'Image download succeeded': 'Preuzimanje slike uspješno', 'Sorry, there was a problem downloading your image!': 'Pojavila se greška prilikom preuzimanja slike!', - 'Capturing image - this may take a few seconds': 'Preuzimanje slike - ovo može potrajati nekoliko sekundi', + 'Preparing image - this may take a few seconds': 'Priprema slike - ovo može potrajati nekoliko sekundi', 'Toggle Spike Lines': 'Postavljanje pomoćnih linija', 'Toggle show closest data on hover': 'Postavljanje prikaza najbližih podataka pri zadržavanju mišem', 'Turntable rotation': 'Turntable rotiranje', diff --git a/lib/locales/it.js b/lib/locales/it.js index 41b2877fd2d..ec1f1613f79 100644 --- a/lib/locales/it.js +++ b/lib/locales/it.js @@ -32,9 +32,9 @@ module.exports = { 'Reset view': 'Reimposta la vista', // components/modebar/buttons.js:583 'Reset views': 'Reimposta le viste', // components/modebar/buttons.js:529 'Show closest data on hover': 'Mostra i dati più vicini al passaggio del mouse', // components/modebar/buttons.js:157 - 'Image download succeeded': 'Screenshot creato con successo', // components/modebar/buttons.js:66 - 'Sorry, there was a problem downloading your image!': 'Si è verificato un errore durante la creazione dello screenshot', // components/modebar/buttons.js:69 - 'Capturing image - this may take a few seconds': 'Creazione screenshot - potrebbe richiedere qualche secondo', // components/modebar/buttons.js:57 + 'Image download succeeded': 'Immagine scaricata con successo', // components/modebar/buttons.js:66 + 'Sorry, there was a problem downloading your image!': 'Si è verificato un errore durante il download dell\'immagine', // components/modebar/buttons.js:69 + 'Preparing image - this may take a few seconds': 'Preparazione dell\'immagine - potrebbe richiedere qualche secondo', // components/modebar/buttons.js:57 'Zoom': 'Zoom', // components/modebar/buttons.js:85 'Zoom in': 'Ingrandisci', // components/modebar/buttons.js:121 'Zoom out': 'Riduci', // components/modebar/buttons.js:130 diff --git a/lib/locales/ja.js b/lib/locales/ja.js index fb201027411..8728e759cca 100644 --- a/lib/locales/ja.js +++ b/lib/locales/ja.js @@ -31,9 +31,9 @@ module.exports = { 'Reset view': 'ビューをリセット', // components/modebar/buttons.js:583 'Reset views': 'ビューをリセット', // components/modebar/buttons.js:529 'Show closest data on hover': 'ホバー時に一番近いデータを表示', // components/modebar/buttons.js:157 - 'Image download succeeded': 'スナップショットに成功', // components/modebar/buttons.js:66 - 'Sorry, there was a problem downloading your image!': 'すみません、スナップショットダウンロードでエラーです!', // components/modebar/buttons.js:69 - 'Capturing image - this may take a few seconds': 'スナップショットを撮影', // components/modebar/buttons.js:57 + 'Image download succeeded': '画像のダウンロードに成功', // components/modebar/buttons.js:66 + 'Sorry, there was a problem downloading your image!': 'すみません、画像のダウンロードでエラーです!', // components/modebar/buttons.js:69 + 'Preparing image - this may take a few seconds': '画像を準備中', // components/modebar/buttons.js:57 'Zoom': 'ズーム', // components/modebar/buttons.js:85 'Zoom in': '拡大', // components/modebar/buttons.js:121 'Zoom out': '縮小', // components/modebar/buttons.js:130 diff --git a/lib/locales/ko.js b/lib/locales/ko.js index 920acea272e..a3a4f284286 100644 --- a/lib/locales/ko.js +++ b/lib/locales/ko.js @@ -32,9 +32,9 @@ module.exports = { 'Reset view': 'view 초기화', 'Reset views': 'views 초기화', 'Show closest data on hover': '마우스를 올리면 근접한 데이터를 보이기', - 'Image download succeeded': 'Snapshot 성공', - 'Sorry, there was a problem downloading your image!': '죄송합니다, snapshot을 다운로드 중 문제가 발생했습니다!', - 'Capturing image - this may take a few seconds': 'snapshot 찍기 - 수 초가 걸릴 수 있습니다', + 'Image download succeeded': '이미지 다운로드 성공', + 'Sorry, there was a problem downloading your image!': '죄송합니다, 이미지를 다운로드 중 문제가 발생했습니다!', + 'Preparing image - this may take a few seconds': '이미지 준비 - 수 초가 걸릴 수 있습니다', 'Toggle Spike Lines': '스위치로 Lines을 고정합니다', 'Toggle show closest data on hover': '스위치로 마우스를 올렸을 때 가장 가까운 데이터를 보여줍니다', 'Turntable rotation': 'Turntable 회전', diff --git a/lib/locales/no.js b/lib/locales/no.js index 801b48822cb..0276c498674 100644 --- a/lib/locales/no.js +++ b/lib/locales/no.js @@ -32,9 +32,9 @@ module.exports = { 'Reset view': 'Nullstille visning', // components/modebar/buttons.js:512 'Reset views': 'Nullstille visninger', // components/modebar/buttons.js:550 'Show closest data on hover': 'Vis nærmeste verdi når musepekeren holdes over', // components/modebar/buttons.js:166 - 'Image download succeeded': 'Bilde Laget', // components/modebar/buttons.js:75 + 'Image download succeeded': 'Bilde lastet ned', // components/modebar/buttons.js:75 'Sorry, there was a problem downloading your image!': 'Beklager, noe gikk galt under nedlasting av bildet', // components/modebar/buttons.js:78 - 'Capturing image - this may take a few seconds': 'Oppretter bilde - dette kan ta noen sekunder', // components/modebar/buttons.js:60 + 'Preparing image - this may take a few seconds': 'Forbereder bilde - dette kan ta noen sekunder', // components/modebar/buttons.js:60 'Toggle Spike Lines': 'Aktiver / deaktiver topplinjer', // components/modebar/buttons.js:569 'Toggle show closest data on hover': 'Aktiver / deaktiver nærmeste verdi når musepekeren holdes over', // components/modebar/buttons.js:361 'Turntable rotation': 'Flat rotation', // components/modebar/buttons.js:290 diff --git a/lib/locales/pt-br.js b/lib/locales/pt-br.js index 9a6471222e3..d5ac3c84e35 100644 --- a/lib/locales/pt-br.js +++ b/lib/locales/pt-br.js @@ -34,7 +34,7 @@ module.exports = { 'Show closest data on hover': 'Exibir dado mais próximo ao pairar', 'Image download succeeded': 'Download da imagem concluído com sucesso', 'Sorry, there was a problem downloading your image!': 'Desculpe, houve um problema no download de sua imagem!', - 'Capturing image - this may take a few seconds': 'Efetuando captura da imagem - isso pode levar alguns instantes', + 'Preparing image - this may take a few seconds': 'Preparando a imagem - isso pode levar alguns instantes', 'Toggle Spike Lines': 'Habilitar/desabilitar triangulação de linhas', 'Toggle show closest data on hover': 'Habilitar/desabilitar exibição de dado mais próximo ao pairar', 'Turntable rotation': 'Rotação de mesa', diff --git a/lib/locales/pt-pt.js b/lib/locales/pt-pt.js index 50cf6feb4a8..514ab3e6019 100644 --- a/lib/locales/pt-pt.js +++ b/lib/locales/pt-pt.js @@ -34,7 +34,7 @@ module.exports = { 'Show closest data on hover': 'Exibir dado mais próximo ao pairar', 'Image download succeeded': 'Download da imagem concluído com sucesso', 'Sorry, there was a problem downloading your image!': 'Desculpe, houve um problema no download da sua imagem!', - 'Capturing image - this may take a few seconds': 'Efetuando captura da imagem - isso pode demorar alguns segundos', + 'Preparing image - this may take a few seconds': 'A preparar a imagem - isso pode demorar alguns segundos', 'Toggle Spike Lines': 'Habilitar/desabilitar triangulação de linhas', 'Toggle show closest data on hover': 'Habilitar/desabilitar exibição de dado mais próximo ao pairar', 'Turntable rotation': 'Rodar', diff --git a/lib/locales/ro.js b/lib/locales/ro.js index 3937874a11c..d80b5ca5c8f 100644 --- a/lib/locales/ro.js +++ b/lib/locales/ro.js @@ -37,9 +37,9 @@ module.exports = { 'Reset view': 'Resetează vizualizarea', 'Reset views': 'Resetează vizualizările', 'Show closest data on hover': 'Afișează cele mai apropiate date la trecerea cu mouse-ul', - 'Image download succeeded': 'Crearea capturii de ecran a reușit', - 'Sorry, there was a problem downloading your image!': 'Ne pare rău, a apărut o eroare la descărcarea capturii de ecran!', - 'Capturing image - this may take a few seconds': 'Se crează captura de ecran - poate dura câteva secunde', + 'Image download succeeded': 'Descărcarea imaginii a reușit', + 'Sorry, there was a problem downloading your image!': 'Ne pare rău, a apărut o eroare la descărcarea imaginii!', + 'Preparing image - this may take a few seconds': 'Se pregătește imaginea - poate dura câteva secunde', 'Toggle Spike Lines': 'Comutarea afișării liniilor de vârf', 'Toggle show closest data on hover': 'Comutarea afișării celor mai apropiate date', 'Turntable rotation': 'Rotație pe axă', diff --git a/lib/locales/ru.js b/lib/locales/ru.js index 6350d49066d..34ec8b51d1f 100644 --- a/lib/locales/ru.js +++ b/lib/locales/ru.js @@ -32,9 +32,9 @@ module.exports = { 'Reset view': 'Сбросить отображение к значениям по умолчанию', 'Reset views': 'Сбросить отображения к значениям по умолчанию', 'Show closest data on hover': 'При наведении показывать ближайшие данные', - 'Image download succeeded': 'Снимок успешно создан', - 'Sorry, there was a problem downloading your image!': 'К сожалению, возникла проблема при сохранении снимка', - 'Capturing image - this may take a few seconds': 'Делается снимок - это может занять несколько секунд', + 'Image download succeeded': 'Изображение успешно загружено', + 'Sorry, there was a problem downloading your image!': 'К сожалению, возникла проблема при загрузке изображения', + 'Preparing image - this may take a few seconds': 'Подготовка изображения - это может занять несколько секунд', 'Toggle Spike Lines': 'Включить/выключить отображение линий проекций точек', 'Toggle show closest data on hover': 'Включить/выключить показ ближайших данных при наведении', 'Turntable rotation': 'Вращение на поворотном столе', diff --git a/lib/locales/si.js b/lib/locales/si.js index f81667e4f6d..0db34a01179 100644 --- a/lib/locales/si.js +++ b/lib/locales/si.js @@ -38,9 +38,9 @@ module.exports = { 'Reset view': 'දැක්ම යළි සකසන්න', // components/modebar/buttons.js:599 'Reset views': 'දැක්ම් යළි සකසන්න', // components/modebar/buttons.js:637 'Show closest data on hover': 'සුනංගු කිරීමේදී ආසන්නම දත්ත පෙන්වන්න', // components/modebar/buttons.js:228 - 'Image download succeeded': 'ඡායාරූපය සාර්ථකයි', // components/modebar/buttons.js:67 + 'Image download succeeded': 'ඡායාරූපය බාගැනීම සාර්ථකයි', // components/modebar/buttons.js:67 'Sorry, there was a problem downloading your image!': 'සමාවන්න, ඔබගේ ඡායාරූපය බාගැනීමේ ගැටලුවක් ඇත!', // components/modebar/buttons.js:70 - 'Capturing image - this may take a few seconds': 'ඡායාරූපය ගැනෙමින් - මෙයට තත්. කිහිපයක් ගතවිය හැකිය', // components/modebar/buttons.js:52 + 'Preparing image - this may take a few seconds': 'ඡායාරූපය සූදානම් කරමින් - මෙයට තත්. කිහිපයක් ගතවිය හැකිය', // components/modebar/buttons.js:52 'Toggle Spike Lines': 'Toggle Spike Lines', // components/modebar/buttons.js:656 'Toggle show closest data on hover': 'Toggle show closest data on hover', // components/modebar/buttons.js:440 'Turntable rotation': 'බමර කරකැවීම', // components/modebar/buttons.js:351 diff --git a/lib/locales/sk.js b/lib/locales/sk.js index ef5e20c4c16..f4a6b5a922a 100644 --- a/lib/locales/sk.js +++ b/lib/locales/sk.js @@ -32,9 +32,9 @@ module.exports = { 'Reset view': 'Obnoviť nastavenie pohľadu', // components/modebar/buttons.js:583 'Reset views': 'Obnoviť nastavenie pohľadov', // components/modebar/buttons.js:529 'Show closest data on hover': 'Zobraziť najbližšiu hodnotu při prejdení myšou', // components/modebar/buttons.js:157 - 'Image download succeeded': 'Obrázok vytvorený', // components/modebar/buttons.js:66 + 'Image download succeeded': 'Obrázok stiahnutý', // components/modebar/buttons.js:66 'Sorry, there was a problem downloading your image!': 'Ospravedlňujeme sa, došlo k chybe pri sťahovaní obrázka!', // components/modebar/buttons.js:69 - 'Capturing image - this may take a few seconds': 'Snímanie - môže trvať niekoľko sekúnd', // components/modebar/buttons.js:57 + 'Preparing image - this may take a few seconds': 'Príprava obrázka - môže trvať niekoľko sekúnd', // components/modebar/buttons.js:57 'Zoom': 'Zväčšenie', // components/modebar/buttons.js:85 'Zoom in': 'Zväčšiť', // components/modebar/buttons.js:121 'Zoom out': 'Zmenšiť', // components/modebar/buttons.js:130 diff --git a/lib/locales/sv.js b/lib/locales/sv.js index 4d9c355f92a..ce69e7a6580 100644 --- a/lib/locales/sv.js +++ b/lib/locales/sv.js @@ -32,9 +32,9 @@ module.exports = { 'Reset view': 'Återställ vy', // components/modebar/buttons.js:512 'Reset views': 'Återställ vyer', // components/modebar/buttons.js:550 'Show closest data on hover': 'Visa närmaste värde när muspekaren hålls över', // components/modebar/buttons.js:166 - 'Image download succeeded': 'Bild skapad', // components/modebar/buttons.js:75 + 'Image download succeeded': 'Nedladdning av bild slutförd', // components/modebar/buttons.js:75 'Sorry, there was a problem downloading your image!': 'Tyvärr gick något fel vid nedladdning av bild', // components/modebar/buttons.js:78 - 'Capturing image - this may take a few seconds': 'Skapar bild - detta kan ta några sekunder', // components/modebar/buttons.js:60 + 'Preparing image - this may take a few seconds': 'Förbereder bild - detta kan ta några sekunder', // components/modebar/buttons.js:60 'Toggle Spike Lines': 'Aktivera/Inaktivera topplinjer', // components/modebar/buttons.js:569 'Toggle show closest data on hover': 'Aktivera/Inaktivera visa närmaste värde när muspekaren hålls över', // components/modebar/buttons.js:361 'Turntable rotation': 'Platt rotation', // components/modebar/buttons.js:290 diff --git a/lib/locales/sw.js b/lib/locales/sw.js index 70f94eae51a..f66f6811902 100644 --- a/lib/locales/sw.js +++ b/lib/locales/sw.js @@ -32,9 +32,9 @@ module.exports = { 'Reset view': 'Weka upya mtazamo', 'Reset views': 'Weka upya maoni', 'Show closest data on hover': 'Onyesha data iliyo karibu zaidi kielekezi kinapoelea', - 'Image download succeeded': 'Snapshot ilifanikiwa', + 'Image download succeeded': 'Upakuaji wa picha umefanikiwa', 'Sorry, there was a problem downloading your image!': 'Samahani, kulikuwa na shida kupakua picha yako!', - 'Capturing image - this may take a few seconds': 'Kuchukua snapshot - hii inaweza kuchukua sekunde chache', + 'Preparing image - this may take a few seconds': 'Kuandaa picha - hii inaweza kuchukua sekunde chache', 'Toggle Spike Lines': 'Badilisha Mistari ya Spike', 'Toggle show closest data on hover': 'Badilisha mabadiliko ya karibu zaidi kwenye hover', 'Turntable rotation': 'Zunguka kwa mhimili wa Z', diff --git a/lib/locales/tr.js b/lib/locales/tr.js index 3bdf679696f..74fde19f24f 100644 --- a/lib/locales/tr.js +++ b/lib/locales/tr.js @@ -31,9 +31,9 @@ module.exports = { 'Reset view': 'Görünümü sıfırla', 'Reset views': 'Görünümleri sıfırla', 'Show closest data on hover': 'Üzerine gelince en yakın veriyi göster', - 'Image download succeeded': 'Anlık görüntü alındı', - 'Sorry, there was a problem downloading your image!': 'Üzgünüz, anlık görüntünüz indirilirken bir sorun oluştu!', - 'Capturing image - this may take a few seconds': 'Anlık görüntü alınıyor - bu işlem birkaç saniye sürebilir', + 'Image download succeeded': 'Görüntü indirme başarılı', + 'Sorry, there was a problem downloading your image!': 'Üzgünüz, görüntünüz indirilirken bir sorun oluştu!', + 'Preparing image - this may take a few seconds': 'Görüntü hazırlanıyor - bu işlem birkaç saniye sürebilir', 'Zoom': 'Yakınlaştır', 'Zoom in': 'Yakınlaş', 'Zoom out': 'Uzaklaş', diff --git a/lib/locales/uk.js b/lib/locales/uk.js index c39a8dd15e9..f5692283997 100644 --- a/lib/locales/uk.js +++ b/lib/locales/uk.js @@ -32,9 +32,9 @@ module.exports = { 'Reset view': 'Встановити відображенню значення за замовчуванням', 'Reset views': 'Встановити відображенням значення за замовчуванням', 'Show closest data on hover': 'При наведенні показувати найближчі дані', - 'Image download succeeded': 'Знімок успішно створений', - 'Sorry, there was a problem downloading your image!': 'На жаль, виникла проблема при збереженні знімку', - 'Capturing image - this may take a few seconds': 'Створюється знімок - це може зайняти кілька секунд', + 'Image download succeeded': 'Зображення успішно завантажено', + 'Sorry, there was a problem downloading your image!': 'На жаль, виникла проблема при завантаженні зображення', + 'Preparing image - this may take a few seconds': 'Підготовка зображення - це може зайняти кілька секунд', 'Toggle Spike Lines': 'Увімкнути/вимкнути відображення ліній проекцій точок', 'Toggle show closest data on hover': 'Увімкнути/вимкнути відображення найближчих даних при наведенні', 'Turntable rotation': 'Обертання на поворотному столі', diff --git a/lib/locales/zh-cn.js b/lib/locales/zh-cn.js index 48348afa5a6..f6e082a0602 100644 --- a/lib/locales/zh-cn.js +++ b/lib/locales/zh-cn.js @@ -31,9 +31,9 @@ module.exports = { 'Reset view': '重置视图', // components/modebar/buttons.js:583 'Reset views': '重置视图', // components/modebar/buttons.js:529 'Show closest data on hover': '悬停时显示最近的数据', // components/modebar/buttons.js:157 - 'Image download succeeded': '生成快照成功', // components/modebar/buttons.js:66 - 'Sorry, there was a problem downloading your image!': '抱歉,下载快照出现问题!', // components/modebar/buttons.js:69 - 'Capturing image - this may take a few seconds': '正在生成快照 - 可能需要几秒钟', // components/modebar/buttons.js:57 + 'Image download succeeded': '图片下载成功', // components/modebar/buttons.js:66 + 'Sorry, there was a problem downloading your image!': '抱歉,下载图片出现问题!', // components/modebar/buttons.js:69 + 'Preparing image - this may take a few seconds': '正在准备图片 - 可能需要几秒钟', // components/modebar/buttons.js:57 'Zoom': '缩放', // components/modebar/buttons.js:85 'Zoom in': '放大', // components/modebar/buttons.js:121 'Zoom out': '缩小', // components/modebar/buttons.js:130 diff --git a/lib/locales/zh-tw.js b/lib/locales/zh-tw.js index 81f5d209efd..aeae1254e89 100644 --- a/lib/locales/zh-tw.js +++ b/lib/locales/zh-tw.js @@ -38,9 +38,9 @@ module.exports = { 'Reset view': '重置視圖', // components/modebar/buttons.js:583 'Reset views': '重置視圖', // components/modebar/buttons.js:529 'Show closest data on hover': '游標停留時顯示最接近的資料', // components/modebar/buttons.js:157 - 'Image download succeeded': '快照成功', // components/modebar/buttons.js:66 - 'Sorry, there was a problem downloading your image!': '抱歉,下載快照時發生錯誤!', // components/modebar/buttons.js:69 - 'Capturing image - this may take a few seconds': '產生快照中 - 可能需要一點時間', // components/modebar/buttons.js:57 + 'Image download succeeded': '圖片下載成功', // components/modebar/buttons.js:66 + 'Sorry, there was a problem downloading your image!': '抱歉,下載圖片時發生錯誤!', // components/modebar/buttons.js:69 + 'Preparing image - this may take a few seconds': '準備圖片中 - 可能需要一點時間', // components/modebar/buttons.js:57 'Zoom': '縮放', // components/modebar/buttons.js:85 'Zoom in': '放大', // components/modebar/buttons.js:121 'Zoom out': '縮小', // components/modebar/buttons.js:130 diff --git a/src/components/modebar/buttons.js b/src/components/modebar/buttons.js index 0de11f3e9ec..5904a9df7e1 100644 --- a/src/components/modebar/buttons.js +++ b/src/components/modebar/buttons.js @@ -49,7 +49,7 @@ modeBarButtons.toImage = { var toImageButtonOptions = gd._context.toImageButtonOptions; var opts = {format: toImageButtonOptions.format || 'png'}; - Lib.notifier(_(gd, 'Capturing image - this may take a few seconds'), 'long', gd); + Lib.notifier(_(gd, 'Preparing image - this may take a few seconds'), 'long', gd); ['filename', 'width', 'height', 'scale'].forEach(function(key) { if(key in toImageButtonOptions) { From fc722c3ec4698030e4a9d5b2ef0e6f9f9e3cd563 Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Tue, 16 Jun 2026 17:34:28 -0400 Subject: [PATCH 167/241] fall back to plot subtitle if title is not suitable for filename --- src/snapshot/download.js | 19 ++++++++++++++++--- src/snapshot/helpers.js | 12 ++++++++++++ test/jasmine/tests/download_test.js | 23 ++++++++++++++++++++++- 3 files changed, 50 insertions(+), 4 deletions(-) diff --git a/src/snapshot/download.js b/src/snapshot/download.js index 292f7075950..93b4fbd29ec 100644 --- a/src/snapshot/download.js +++ b/src/snapshot/download.js @@ -8,6 +8,13 @@ var toImage = require('../plot_api/to_image'); var fileSaver = require('./filesaver'); var helpers = require('./helpers'); +// Maximum length of filename (without extension) when deriving filename from plot title. +// 40 is somewhat arbitrary, just trying to strike a balance between being informative +// while still generating a reasonable-length filename. +// Technically, this is actually the number of code points rather than characters, which only differs +// from character count in the case of certain emojis or special characters containing multiple code points +const MAX_FILENAME_LENGTH_CHARS = 40; + /** * Plotly.downloadImage * @@ -30,7 +37,7 @@ function downloadImage(gd, opts) { return new Promise(function(resolve, reject) { if(_gd && _gd._snapshotInProgress) { - reject(new Error('Snapshotting already in progress.')); + reject(new Error('Image capture already in progress.')); } if(_gd) _gd._snapshotInProgress = true; @@ -41,8 +48,14 @@ function downloadImage(gd, opts) { const plotTitle = helpers.getPlotTitle(gd); // Trying to slugify a LaTeX string can result in weird ugly filenames, // so ignore the title entirely if it contains LaTeX markup - if (!svgTextUtils.matchTex(plotTitle)) { - potentialFilename = Lib.slugify(plotTitle, 40); + if (plotTitle && !svgTextUtils.matchTex(plotTitle)) { + potentialFilename = Lib.slugify(plotTitle, MAX_FILENAME_LENGTH_CHARS); + } else { + // If the title is empty or contains LaTeX, fall back to subtitle + const plotSubtitle = helpers.getPlotSubtitle(gd); + if (plotSubtitle && !svgTextUtils.matchTex(plotSubtitle)) { + potentialFilename = Lib.slugify(plotSubtitle, MAX_FILENAME_LENGTH_CHARS); + } } } diff --git a/src/snapshot/helpers.js b/src/snapshot/helpers.js index 98b5d03c911..6493255ef0d 100644 --- a/src/snapshot/helpers.js +++ b/src/snapshot/helpers.js @@ -68,6 +68,18 @@ exports.getPlotTitle = function(gd) { return gd.layout?.title?.text; }; +/** + * Get the resolved plot subtitle, or undefined if there is none. + */ +exports.getPlotSubtitle = function(gd) { + var fullLayout = gd._fullLayout; + if(fullLayout) { + var subtitle = fullLayout.title?.subtitle?.text; + return subtitle === fullLayout._dfltTitle?.subtitle ? undefined : subtitle; + } + return gd.layout?.title?.subtitle?.text; +}; + // Taken from https://bl.ocks.org/nolanlawson/0eac306e4dac2114c752 function fixBinary(b) { var len = b.length; diff --git a/test/jasmine/tests/download_test.js b/test/jasmine/tests/download_test.js index a0b7df9f6e9..dce3f6e784c 100644 --- a/test/jasmine/tests/download_test.js +++ b/test/jasmine/tests/download_test.js @@ -128,7 +128,28 @@ describe('Plotly.downloadImage', function() { .then(done, done.fail); }, LONG_TIMEOUT_INTERVAL); - it('falls back to plot-image as filename when there is no title', function(done) { + it('falls back to subtitle when title contains MathJax', function(done) { + downloadDefault({ + title: { + text: '$Ax^2 + bx + c$', + subtitle: {text: 'Quadratic Equation'} + }, + }) + .then(function(filename) { + expect(filename).toBe('quadratic-equation.png'); + }) + .then(done, done.fail); + }, LONG_TIMEOUT_INTERVAL); + + it('falls back to plot-image as filename when title contains MathJax and there is no subtitle', function(done) { + downloadDefault({title: {text: '$Ax^2 + bx + c$'}}) + .then(function(filename) { + expect(filename).toBe('plot-image.png'); + }) + .then(done, done.fail); + }, LONG_TIMEOUT_INTERVAL); + + it('falls back to plot-image as filename when there is no title or subtitle', function(done) { downloadDefault({}) .then(function(filename) { expect(filename).toBe('plot-image.png'); From 9c1d9a0b950a24f62e00a0b451f2d555f1a347bd Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Tue, 16 Jun 2026 18:20:35 -0400 Subject: [PATCH 168/241] exclude ALMOST ALL symbols and punctuation (more aggressive, using Unicode classes) from filenames --- src/lib/slugify.js | 44 +++++++++++++++++++++------------- test/jasmine/tests/lib_test.js | 11 +++++---- 2 files changed, 33 insertions(+), 22 deletions(-) diff --git a/src/lib/slugify.js b/src/lib/slugify.js index 10d9902d67a..3765b621d12 100644 --- a/src/lib/slugify.js +++ b/src/lib/slugify.js @@ -1,17 +1,25 @@ 'use strict'; // precompile for speed -var HTML_TAGS_REGEX = /<[^>]*>/g; // anything contained in < > tags -var FORBIDDEN_CHARS_REGEX = /[\\/:*?"<>|$%&!@#~.^`'(){}[\],=+;]/g; // Characters in the set: \/:*?"<>|$%&!@#~.^`'(){}[],=+; -var CONTROL_CHARS_REGEX = /\p{Cc}/gu; // Unicode control characters +var HTML_TAGS_REGEX = /<[^>]*>/g; // Anything contained in < > tags +// Forbid ANY character in the Unicode Symbol or Punctuation categories, +// which includes pretty much every common non-word character, +// including all of the following: \/:*?"<>|$%&!@#~.^`'(){}[]-_,=+; +// We actually want to allow hyphens (WORD_SEP_CHAR), but it's not easy +// to exclude them from the regex, so we'll handle them in the match function. +var FORBIDDEN_CHARS_REGEX = /[\p{S}\p{P}]/gu; +// Control chars, format chars (e.g. ZWJ), variation selectors, and the +// combining enclosing keycap. Some of these may be left behind after emoji +// symbols are removed, so we explicitly remove them here. +var INVISIBLE_CHARS_REGEX = /[\p{Cc}\p{Cf}\uFE00-\uFE0F\u20E3]/gu; -var UNICODE_REPLACEMENT_CHAR_REGEX = /�/g; // U+FFFD, the Unicode replacement character -var WHITESPACE_REGEX = /\s+/g; +var UNICODE_REPLACEMENT_CHAR_REGEX = /�/g; // U+FFFD, the Unicode replacement character +var WHITESPACE_REGEX = /\s+/g; // All whitespace characters -var WORD_SEP_CHAR = '-'; // character used to separate words (replaces whitespace) +var WORD_SEP_CHAR = '-'; // Character used to separate words (replaces whitespace) var _WORD_SEP_ESCAPED = WORD_SEP_CHAR.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); -var WORD_SEP_CHARS_REGEX = new RegExp(_WORD_SEP_ESCAPED + '{3,}', 'g'); // three or more consecutive word separator chars -var TRAILING_WORD_SEP_CHAR_REGEX = new RegExp(_WORD_SEP_ESCAPED + '$', 'g'); // trailing word separator char +var WORD_SEP_CHARS_REGEX = new RegExp(_WORD_SEP_ESCAPED + '{3,}', 'g'); // Three or more consecutive word separator chars +var TRAILING_WORD_SEP_CHAR_REGEX = new RegExp(_WORD_SEP_ESCAPED + '$', 'g'); // Trailing word separator char // Safely under the limit for most filesystems var DEFAULT_MAX_LEN = 60; @@ -39,15 +47,17 @@ function toWellFormed(str) { * @return {string} */ module.exports = function slugify(str, maxLen = DEFAULT_MAX_LEN) { - var slug = toWellFormed(str ?? '') // Guarantee well-formed Unicode text - .replace(UNICODE_REPLACEMENT_CHAR_REGEX, '') // Drop Unicode replacement chars left by previous step - .replace(HTML_TAGS_REGEX, ' ') // Remove < > tags, such as
    (replace with space) - .replace(FORBIDDEN_CHARS_REGEX, '') // Remove forbidden filename characters - .toLowerCase() // Lowercase everything - .trim() // Strip leading/trailing whitespace - .replace(WHITESPACE_REGEX, WORD_SEP_CHAR) // Replace any remaining whitespace with the word sep char - .replace(CONTROL_CHARS_REGEX, '') // Remove control characters (after whitespace) - .replace(WORD_SEP_CHARS_REGEX, WORD_SEP_CHAR); // Replace multiple word sep chars with a single one + var slug = toWellFormed(str ?? '') // Guarantee well-formed Unicode text + .replace(UNICODE_REPLACEMENT_CHAR_REGEX, '') // Drop Unicode replacement chars left by previous step + .replace(HTML_TAGS_REGEX, ' ') // Remove < > tags, such as
    (replace with space) + .replace(FORBIDDEN_CHARS_REGEX, (c) => { // Remove forbidden filename characters (but allow the word sep char) + return c === WORD_SEP_CHAR ? c : ''; + }) + .toLowerCase() // Lowercase everything + .trim() // Strip leading/trailing whitespace + .replace(WHITESPACE_REGEX, WORD_SEP_CHAR) // Replace any remaining whitespace with the word sep char + .replace(INVISIBLE_CHARS_REGEX, '') // Remove control/format chars and emoji glue (after whitespace) + .replace(WORD_SEP_CHARS_REGEX, WORD_SEP_CHAR); // Replace multiple word sep chars with a single one if (slug.length <= maxLen) return slug; // Apply maxLen to the resulting string. Use Array.from().slice() instead of String.prototype.split() diff --git a/test/jasmine/tests/lib_test.js b/test/jasmine/tests/lib_test.js index 92e49158ba5..86a6711e36f 100644 --- a/test/jasmine/tests/lib_test.js +++ b/test/jasmine/tests/lib_test.js @@ -1956,15 +1956,16 @@ describe('Test lib.js:', function () { .toBe('abcdefghijklmnopqrst'); expect(Lib.slugify('a>b Date: Wed, 17 Jun 2026 16:12:44 +0000 Subject: [PATCH 169/241] Bump the npm_and_yarn group across 2 directories with 2 updates Bumps the npm_and_yarn group with 1 update in the /stackgl_modules directory: [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core). Bumps the npm_and_yarn group with 1 update in the /topojson directory: [form-data](https://github.com/form-data/form-data). Updates `@babel/core` from 7.25.2 to 8.0.1 - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v8.0.1/packages/babel-core) Updates `form-data` from 2.5.5 to 2.5.6 - [Release notes](https://github.com/form-data/form-data/releases) - [Changelog](https://github.com/form-data/form-data/blob/master/CHANGELOG.md) - [Commits](https://github.com/form-data/form-data/compare/v2.5.5...v2.5.6) --- updated-dependencies: - dependency-name: "@babel/core" dependency-version: 8.0.1 dependency-type: direct:development dependency-group: npm_and_yarn - dependency-name: form-data dependency-version: 2.5.6 dependency-type: indirect dependency-group: npm_and_yarn ... Signed-off-by: dependabot[bot] --- stackgl_modules/package-lock.json | 4559 ++++++++++++++++------------- stackgl_modules/package.json | 8 +- topojson/package-lock.json | 14 +- 3 files changed, 2523 insertions(+), 2058 deletions(-) diff --git a/stackgl_modules/package-lock.json b/stackgl_modules/package-lock.json index 26ee510933d..f82c1d02b65 100644 --- a/stackgl_modules/package-lock.json +++ b/stackgl_modules/package-lock.json @@ -43,358 +43,650 @@ "zero-crossings": "plotly/zero-crossings#v1.1.0" }, "devDependencies": { - "@babel/core": "^7.25.2", - "@babel/plugin-transform-modules-commonjs": "7.24.1", - "@babel/preset-env": "7.24.1", - "babel-loader": "9.1.3", + "@babel/core": "^8.0.1", + "@babel/plugin-transform-modules-commonjs": "8.0.1", + "@babel/preset-env": "8.0.1", + "babel-loader": "10.1.1", "ify-loader": "1.1.0", "node-polyfill-webpack-plugin": "^4.0.0", "webpack": "^5.105.4", "webpack-cli": "5.1.4" } }, - "node_modules/@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "node_modules/@babel/compat-data": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-8.0.0.tgz", + "integrity": "sha512-DOjnob/cXOUgDOozCDeq/aK2p5y8dUIVdf6tNhEV1HQRd6I8aQ4f4fbtHRVEvb6lP3BGomrKHiS8ICAASSVQSw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/core": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-8.0.1.tgz", + "integrity": "sha512-5FgxM4dLQpMJHSiVATk8foW263dVHQHBVpXYiimNECVWG01f4nFyEbQixeT6Mwvg7TayREJ2gpKl3o2RoMdnqw==", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" + "@babel/code-frame": "^8.0.0", + "@babel/generator": "^8.0.0", + "@babel/helper-compilation-targets": "^8.0.0", + "@babel/helpers": "^8.0.0", + "@babel/parser": "^8.0.0", + "@babel/template": "^8.0.0", + "@babel/traverse": "^8.0.0", + "@babel/types": "^8.0.0", + "@types/gensync": "^1.0.5", + "convert-source-map": "^2.0.0", + "empathic": "^2.0.1", + "gensync": "^1.0.0-beta.2", + "import-meta-resolve": "^4.2.0", + "json5": "^2.2.3", + "obug": "^2.1.1", + "semver": "^7.7.3" }, "engines": { - "node": ">=6.0.0" + "node": "^22.18.0 || >=24.11.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/code-frame": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", - "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "node_modules/@babel/core/node_modules/@babel/code-frame": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-8.0.0.tgz", + "integrity": "sha512-dYYg153EyN2Ekbqw2zAsbd6/JR+9N2SEoC7YV2GyyqMM7x9bLDTjBD6XBhSMLH0wtIVyJj03jWNriQhaN+eoCw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.28.5", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" + "@babel/helper-validator-identifier": "^8.0.0", + "js-tokens": "^10.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" } }, - "node_modules/@babel/compat-data": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.2.tgz", - "integrity": "sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==", + "node_modules/@babel/core/node_modules/@babel/helper-string-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0.tgz", + "integrity": "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" } }, - "node_modules/@babel/core": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", - "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.25.0", - "@babel/helper-compilation-targets": "^7.25.2", - "@babel/helper-module-transforms": "^7.25.2", - "@babel/helpers": "^7.25.0", - "@babel/parser": "^7.25.0", - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.2", - "@babel/types": "^7.25.2", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" + "node_modules/@babel/core/node_modules/@babel/helper-validator-identifier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0.tgz", + "integrity": "sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/core/node_modules/@babel/parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-8.0.0.tgz", + "integrity": "sha512-aLxAE+imI9bCcyaPrUDjBv3uSkWieifjLe0kuFOZF0zli0L6GCsTmsePnTr55adbIAgYz2zhN1vnFimCBUYcRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^8.0.0" + }, + "bin": { + "parser": "bin/babel-parser.js" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/core/node_modules/@babel/template": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-8.0.0.tgz", + "integrity": "sha512-eAD0QW/AlbamBbw0FeGiwasbCVPq5ncW0HNVyLP3B9czqLyh4gvw+5JTSNt6le9+ziAU7mqDZsKTHf3jTb4chQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^8.0.0", + "@babel/parser": "^8.0.0", + "@babel/types": "^8.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" + "engines": { + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/core/node_modules/@babel/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.0.tgz", + "integrity": "sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^8.0.0", + "@babel/helper-validator-identifier": "^8.0.0" + }, + "engines": { + "node": "^22.18.0 || >=24.11.0" } }, + "node_modules/@babel/core/node_modules/js-tokens": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-10.0.0.tgz", + "integrity": "sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==", + "dev": true, + "license": "MIT" + }, "node_modules/@babel/generator": { - "version": "7.29.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", - "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-8.0.0.tgz", + "integrity": "sha512-NT9NrVwJsbSV6Y2FSstWa71EETOnzrjkL5/wX3D2mYHtKM+qvqB1DvR4D0Setb/gDBsHzRICifwEWMO8CnTF6g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/parser": "^7.29.0", - "@babel/types": "^7.29.0", + "@babel/parser": "^8.0.0", + "@babel/types": "^8.0.0", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", + "@types/jsesc": "^2.5.0", "jsesc": "^3.0.2" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/generator/node_modules/@babel/helper-string-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0.tgz", + "integrity": "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/generator/node_modules/@babel/helper-validator-identifier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0.tgz", + "integrity": "sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/generator/node_modules/@babel/parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-8.0.0.tgz", + "integrity": "sha512-aLxAE+imI9bCcyaPrUDjBv3uSkWieifjLe0kuFOZF0zli0L6GCsTmsePnTr55adbIAgYz2zhN1vnFimCBUYcRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^8.0.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/generator/node_modules/@babel/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.0.tgz", + "integrity": "sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^8.0.0", + "@babel/helper-validator-identifier": "^8.0.0" + }, + "engines": { + "node": "^22.18.0 || >=24.11.0" } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", - "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-8.0.0.tgz", + "integrity": "sha512-NSpMkMsvvZqzThJ0p1B02cbtA2ObEyfBvq950bmNkyxsxvcxwhvvCB036rKhlEnuBBo30bOrk13u3FzlKSoRrw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^8.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure/node_modules/@babel/helper-string-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0.tgz", + "integrity": "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure/node_modules/@babel/helper-validator-identifier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0.tgz", + "integrity": "sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^22.18.0 || >=24.11.0" } }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", - "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "node_modules/@babel/helper-annotate-as-pure/node_modules/@babel/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.0.tgz", + "integrity": "sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.15" + "@babel/helper-string-parser": "^8.0.0", + "@babel/helper-validator-identifier": "^8.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", - "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-8.0.0.tgz", + "integrity": "sha512-JwculLABZvyPvyLBpwU/E/IbH2uM3mnxNtIJpxnIfb24y1PrdVxK5Dqjle4DpgqpGRnwgC7G8IkzPdSXZrO1Ew==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.25.2", - "@babel/helper-validator-option": "^7.24.8", - "browserslist": "^4.23.1", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" + "@babel/compat-data": "^8.0.0", + "@babel/helper-validator-option": "^8.0.0", + "browserslist": "^4.24.0", + "lru-cache": "^11.0.0", + "semver": "^7.7.3" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.1.tgz", - "integrity": "sha512-1yJa9dX9g//V6fDebXoEfEsxkZHk3Hcbm+zLhyu6qVgYFLvmTALTeV+jNU9e5RnYtioBrGEOdoI2joMSNQ/+aA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-8.0.1.tgz", + "integrity": "sha512-++t3ZktzlLmASAxIlxeXQK9Z2YwUafYGYcvGBFevqOqt16HozVHStUoQvWD09fzAZOb/uJGpUTBuGK41AJAuOA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-member-expression-to-functions": "^7.23.0", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.24.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "semver": "^6.3.1" + "@babel/helper-annotate-as-pure": "^8.0.0", + "@babel/helper-member-expression-to-functions": "^8.0.0", + "@babel/helper-optimise-call-expression": "^8.0.0", + "@babel/helper-replace-supers": "^8.0.1", + "@babel/helper-skip-transparent-expression-wrappers": "^8.0.0", + "@babel/traverse": "^8.0.0", + "semver": "^7.7.3" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", - "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-8.0.1.tgz", + "integrity": "sha512-PydTbcVTiIfVweHMeY1u3MslaD/ZzvnaTNhJp+7ghofelLWshF66Ckc/ZsjStfvRQIKQ4uVG0yEJucyDtyrWgw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "regexpu-core": "^5.3.1", - "semver": "^6.3.1" + "@babel/helper-annotate-as-pure": "^8.0.0", + "regexpu-core": "^6.3.1", + "semver": "^7.7.3" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.1.tgz", - "integrity": "sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==", + "version": "1.0.0-rc.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-1.0.0-rc.2.tgz", + "integrity": "sha512-AWy1lGqBObYp6gYE7TCVnjmCMstbTLEVevkzw/wHjD43XZ8HqOOe+PAg2zjROFl9qEjF6LH+QLxSrXGuQqLwBA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" + "@babel/helper-compilation-targets": "^8.0.0-rc.3 <8.0.0", + "@babel/helper-plugin-utils": "^8.0.0-rc.3 <8.0.0", + "lodash.debounce": "^4.0.8" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" }, "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "@babel/core": "^7.4.0 || ^8.0.0-rc.3" } }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "node_modules/@babel/helper-define-polyfill-provider/node_modules/@babel/helper-compilation-targets": { + "version": "8.0.0-rc.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-8.0.0-rc.6.tgz", + "integrity": "sha512-jqQD45/yUSy63U8zs9hE5FMXS8J1TLAI/NTMx76C6xWO021e13gJACQvuGmEF7syloC39LkkKwhqtAbMku1rwg==", "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^8.0.0-rc.6", + "@babel/helper-validator-option": "^8.0.0-rc.6", + "browserslist": "^4.24.0", + "lru-cache": "^7.14.1", + "semver": "^7.7.3" + }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" } }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "node_modules/@babel/helper-define-polyfill-provider/node_modules/@babel/helper-plugin-utils": { + "version": "8.0.0-rc.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-8.0.0-rc.6.tgz", + "integrity": "sha512-sLAjvuIcjzUQJR+CoHwU0JA4i706o71bCJtF+W9sc4KuHK3LCIJCjbKRuzbVn1eubUc66uAEZdBNWSqhLpwp2g==", "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" + "license": "MIT", + "engines": { + "node": "^22.18.0 || >=24.11.0" }, + "peerDependencies": { + "@babel/core": "^8.0.0-rc.6" + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "license": "ISC", "engines": { - "node": ">=6.9.0" + "node": ">=12" } }, "node_modules/@babel/helper-globals": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", - "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-8.0.0.tgz", + "integrity": "sha512-lLozHOM6sWWlxNo8CYqHy4MBZeTvHXNgVPBfPOGsjPKUzHC2Az9QwB6gxdQmpwHl6GlQtbGgS+lj5887guDiLw==", "dev": true, + "license": "MIT", "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", - "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-8.0.0.tgz", + "integrity": "sha512-xkXrMbtk87Gk7+oKBVmBc6EORg/Qwx++AHESldmHkpvG8wgccdhJJFwrzqlF382Fk8wfXhJHWE/g/43QvEGNPQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.23.0" + "@babel/traverse": "^8.0.0", + "@babel/types": "^8.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions/node_modules/@babel/helper-string-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0.tgz", + "integrity": "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions/node_modules/@babel/helper-validator-identifier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0.tgz", + "integrity": "sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions/node_modules/@babel/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.0.tgz", + "integrity": "sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^8.0.0", + "@babel/helper-validator-identifier": "^8.0.0" + }, + "engines": { + "node": "^22.18.0 || >=24.11.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", - "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-8.0.0.tgz", + "integrity": "sha512-NZ7mSS93o4ndX4KrbD7W8Sf3QT8Qe24PrnFyUcuOPDzK6faqDFKjY9RG7he7+I7FdiQ4llpnosFqzrXa+Vy3Ew==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/traverse": "^7.28.6", - "@babel/types": "^7.28.6" + "@babel/traverse": "^8.0.0", + "@babel/types": "^8.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/helper-module-imports/node_modules/@babel/helper-string-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0.tgz", + "integrity": "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/helper-module-imports/node_modules/@babel/helper-validator-identifier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0.tgz", + "integrity": "sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/helper-module-imports/node_modules/@babel/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.0.tgz", + "integrity": "sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^8.0.0", + "@babel/helper-validator-identifier": "^8.0.0" + }, + "engines": { + "node": "^22.18.0 || >=24.11.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", - "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-8.0.1.tgz", + "integrity": "sha512-UgAhl1kqiW5ciE0yCXqqvnb4H2n3IELJ7lIIQRezwDPilPEZX5i+Rvbja9MFTkwUn2biEiSMeV31aUzR4Lwakw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.28.6", - "@babel/helper-validator-identifier": "^7.28.5", - "@babel/traverse": "^7.28.6" + "@babel/helper-module-imports": "^8.0.0", + "@babel/helper-validator-identifier": "^8.0.0", + "@babel/traverse": "^8.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^8.0.0" + } + }, + "node_modules/@babel/helper-module-transforms/node_modules/@babel/helper-validator-identifier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0.tgz", + "integrity": "sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^22.18.0 || >=24.11.0" } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", - "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-8.0.0.tgz", + "integrity": "sha512-3W6satvtPuCUkUx63S2jMoW9EQNYkADgs1HTfufmL7gCmAulHMKupA/12WNz4A0GMMFn/YnWWwqOT9IZrJHQjg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^8.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" } }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", - "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", + "node_modules/@babel/helper-optimise-call-expression/node_modules/@babel/helper-string-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0.tgz", + "integrity": "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" } }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", - "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", + "node_modules/@babel/helper-optimise-call-expression/node_modules/@babel/helper-validator-identifier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0.tgz", + "integrity": "sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==", "dev": true, + "license": "MIT", + "engines": { + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression/node_modules/@babel/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.0.tgz", + "integrity": "sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-wrap-function": "^7.22.20" + "@babel/helper-string-parser": "^8.0.0", + "@babel/helper-validator-identifier": "^8.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-8.0.1.tgz", + "integrity": "sha512-3PKFgjTyPlhFhorfP+SjKQxLViIL++zWjFOO4hGriYU+Bsm983DxEM1JmDRJVWXV0O9npu+xXRqz7Pbd3mh70g==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^8.0.0" } }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz", - "integrity": "sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==", + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-8.0.1.tgz", + "integrity": "sha512-baAKuLEMmu6BCSY3tuiU7qglM1qOZt6F1SrFScA241oNqksxkxfEZEKztlGRmoVns9AQ5UgArH7RsUEjxWnzgQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-member-expression-to-functions": "^7.23.0", - "@babel/helper-optimise-call-expression": "^7.22.5" + "@babel/helper-annotate-as-pure": "^8.0.0", + "@babel/helper-wrap-function": "^8.0.0", + "@babel/traverse": "^8.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^8.0.0" } }, - "node_modules/@babel/helper-simple-access": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", - "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", + "node_modules/@babel/helper-replace-supers": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-8.0.1.tgz", + "integrity": "sha512-B1SZADIcy3tmH8CmWvj4SHi/oAPom4UL3uknTc2QRNsPVLFk/sPnZvQL/8kj7Y5omvjMqie0vklvs6XM4OLW5Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/helper-member-expression-to-functions": "^8.0.0", + "@babel/helper-optimise-call-expression": "^8.0.0", + "@babel/traverse": "^8.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" + }, + "peerDependencies": { + "@babel/core": "^8.0.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", - "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-8.0.0.tgz", + "integrity": "sha512-xmCA9kP3IhySsqhzwIdWGlDN/1A4cCKNBO/uwZx/3YzmDoMePwno2Q5/Bq0q+tYaKbeF940YiKV/kaW8Mzvpjw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^8.0.0", + "@babel/types": "^8.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers/node_modules/@babel/helper-string-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0.tgz", + "integrity": "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers/node_modules/@babel/helper-validator-identifier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0.tgz", + "integrity": "sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^22.18.0 || >=24.11.0" } }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "node_modules/@babel/helper-skip-transparent-expression-wrappers/node_modules/@babel/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.0.tgz", + "integrity": "sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/helper-string-parser": "^8.0.0", + "@babel/helper-validator-identifier": "^8.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" } }, "node_modules/@babel/helper-string-parser": { @@ -418,1216 +710,1254 @@ } }, "node_modules/@babel/helper-validator-option": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", - "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-8.0.0.tgz", + "integrity": "sha512-U4Dybxh4WESWHt5XhBeExi4DrY0/DNK1aHpQbsrQXCUbFHuMweT0TpLEWKvaraV2Y6fS+ZXunsZ8zIuZIgvF2Q==", "dev": true, + "license": "MIT", "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", - "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-8.0.0.tgz", + "integrity": "sha512-Qpm8+wi5xfDkBfollanwriCcKniFfBmMmaKB01GVM6VGzKXo1fdxosZp04qEr5HM+LKhwr3hG1yRy8+ORsficA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-function-name": "^7.22.5", - "@babel/template": "^7.22.15", - "@babel/types": "^7.22.19" + "@babel/template": "^8.0.0", + "@babel/traverse": "^8.0.0", + "@babel/types": "^8.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" } }, - "node_modules/@babel/helpers": { - "version": "7.29.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", - "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", + "node_modules/@babel/helper-wrap-function/node_modules/@babel/code-frame": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-8.0.0.tgz", + "integrity": "sha512-dYYg153EyN2Ekbqw2zAsbd6/JR+9N2SEoC7YV2GyyqMM7x9bLDTjBD6XBhSMLH0wtIVyJj03jWNriQhaN+eoCw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.28.6", - "@babel/types": "^7.29.0" + "@babel/helper-validator-identifier": "^8.0.0", + "js-tokens": "^10.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" } }, - "node_modules/@babel/parser": { - "version": "7.29.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", - "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", + "node_modules/@babel/helper-wrap-function/node_modules/@babel/helper-string-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0.tgz", + "integrity": "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/types": "^7.29.0" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, "engines": { - "node": ">=6.0.0" + "node": "^22.18.0 || >=24.11.0" } }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz", - "integrity": "sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==", + "node_modules/@babel/helper-wrap-function/node_modules/@babel/helper-validator-identifier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0.tgz", + "integrity": "sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" - }, + "license": "MIT", "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": "^22.18.0 || >=24.11.0" } }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.1.tgz", - "integrity": "sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==", + "node_modules/@babel/helper-wrap-function/node_modules/@babel/parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-8.0.0.tgz", + "integrity": "sha512-aLxAE+imI9bCcyaPrUDjBv3uSkWieifjLe0kuFOZF0zli0L6GCsTmsePnTr55adbIAgYz2zhN1vnFimCBUYcRQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.24.1" + "@babel/types": "^8.0.0" }, - "engines": { - "node": ">=6.9.0" + "bin": { + "parser": "bin/babel-parser.js" }, - "peerDependencies": { - "@babel/core": "^7.13.0" + "engines": { + "node": "^22.18.0 || >=24.11.0" } }, - "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.1.tgz", - "integrity": "sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==", + "node_modules/@babel/helper-wrap-function/node_modules/@babel/template": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-8.0.0.tgz", + "integrity": "sha512-eAD0QW/AlbamBbw0FeGiwasbCVPq5ncW0HNVyLP3B9czqLyh4gvw+5JTSNt6le9+ziAU7mqDZsKTHf3jTb4chQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/code-frame": "^8.0.0", + "@babel/parser": "^8.0.0", + "@babel/types": "^8.0.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0-placeholder-for-preset-env.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", - "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", - "dev": true, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "^22.18.0 || >=24.11.0" } }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "node_modules/@babel/helper-wrap-function/node_modules/@babel/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.0.tgz", + "integrity": "sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-string-parser": "^8.0.0", + "@babel/helper-validator-identifier": "^8.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": "^22.18.0 || >=24.11.0" } }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "node_modules/@babel/helper-wrap-function/node_modules/js-tokens": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-10.0.0.tgz", + "integrity": "sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "license": "MIT" }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "node_modules/@babel/helpers": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-8.0.0.tgz", + "integrity": "sha512-wfbi91pM3py96oIiJEz7qIpyXDytgr9zQC1HEWwlGNVRAEmItuU/0a41ZUKu1sJGyhhOIpc4t5vk4PYzt8wpsg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/template": "^8.0.0", + "@babel/types": "^8.0.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "^22.18.0 || >=24.11.0" } }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "node_modules/@babel/helpers/node_modules/@babel/code-frame": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-8.0.0.tgz", + "integrity": "sha512-dYYg153EyN2Ekbqw2zAsbd6/JR+9N2SEoC7YV2GyyqMM7x9bLDTjBD6XBhSMLH0wtIVyJj03jWNriQhaN+eoCw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-validator-identifier": "^8.0.0", + "js-tokens": "^10.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": "^22.18.0 || >=24.11.0" } }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "node_modules/@babel/helpers/node_modules/@babel/helper-string-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0.tgz", + "integrity": "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "license": "MIT", + "engines": { + "node": "^22.18.0 || >=24.11.0" } }, - "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz", - "integrity": "sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==", + "node_modules/@babel/helpers/node_modules/@babel/helper-validator-identifier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0.tgz", + "integrity": "sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" - }, + "license": "MIT", "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "^22.18.0 || >=24.11.0" } }, - "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.1.tgz", - "integrity": "sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==", + "node_modules/@babel/helpers/node_modules/@babel/parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-8.0.0.tgz", + "integrity": "sha512-aLxAE+imI9bCcyaPrUDjBv3uSkWieifjLe0kuFOZF0zli0L6GCsTmsePnTr55adbIAgYz2zhN1vnFimCBUYcRQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/types": "^8.0.0" }, - "engines": { - "node": ">=6.9.0" + "bin": { + "parser": "bin/babel-parser.js" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": "^22.18.0 || >=24.11.0" } }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "node_modules/@babel/helpers/node_modules/@babel/template": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-8.0.0.tgz", + "integrity": "sha512-eAD0QW/AlbamBbw0FeGiwasbCVPq5ncW0HNVyLP3B9czqLyh4gvw+5JTSNt6le9+ziAU7mqDZsKTHf3jTb4chQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/code-frame": "^8.0.0", + "@babel/parser": "^8.0.0", + "@babel/types": "^8.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": "^22.18.0 || >=24.11.0" } }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "node_modules/@babel/helpers/node_modules/@babel/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.0.tgz", + "integrity": "sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-string-parser": "^8.0.0", + "@babel/helper-validator-identifier": "^8.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": "^22.18.0 || >=24.11.0" } }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "node_modules/@babel/helpers/node_modules/js-tokens": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-10.0.0.tgz", + "integrity": "sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "license": "MIT" }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-8.0.1.tgz", + "integrity": "sha512-Ytgjjne4RnG3Oig7ik+NfY4ebRY30BPptVkkyu1f72eINJXRM3/bkU++tIc5aPvyLmo4KH20avq0xJ2o+9aEnw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "^8.0.1" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "engines": { + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-8.0.1.tgz", + "integrity": "sha512-X7pAMBhuKluA7UfwZNvKN0XVVu/AGeo84Z75eJl85rcb8J2aBzLK92btahM1X5h0oi0QIrbe0qIMA/0+4Buk7w==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "^8.0.1" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "engines": { + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-8.0.1.tgz", + "integrity": "sha512-DJviKTxYfH0hFwnMiW4dnPyMGzS3Hrr4zUfXl1zwQ0QiGlGlNYklLoPSYEQr8S7nau0/K7NdQjTh0qbYuyFjCA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "^8.0.1" + }, + "engines": { + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "node_modules/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array/-/plugin-bugfix-safari-rest-destructuring-rhs-array-8.0.1.tgz", + "integrity": "sha512-DmR/N+B9+4PbURFj4+zdnWj49/PFAnK2bn8+E4ZAmwn3J5QCxnbG7Ep6aRfz9M8Aw+rBro0kIJQycvzFpl4buQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/helper-skip-transparent-expression-wrappers": "^8.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-8.0.1.tgz", + "integrity": "sha512-x8bi0LFVD2xkULjfNn+hCMg16yAFHAM9fS/ThSFeYBi+0MP9K6qcY2BZb4urUwC7PYtEy5wPe6TKjOEjXrCGFA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/helper-skip-transparent-expression-wrappers": "^8.0.0", + "@babel/plugin-transform-optional-chaining": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, - "node_modules/@babel/plugin-syntax-unicode-sets-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", - "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-8.0.1.tgz", + "integrity": "sha512-P8+RN2n7ts2s1vnE+lXdHYf+dhnmcGSen/kWzBsVluT9Sey5AqmcRXYWlHqgQxaNlKTD5YMa1tf5z4d1v8W88w==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz", - "integrity": "sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-8.0.1.tgz", + "integrity": "sha512-o/gr7kRlq3PKLLuYth4udOsrC7geBerti+QtwPeyxMOsEQO1d8kDHqk9r2PtMx2y9i8FG7tzyTerfv1yMLSMsQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.1.tgz", - "integrity": "sha512-OTkLJM0OtmzcpOgF7MREERUCdCnCBtBsq3vVFbuq/RKMK0/jdYqdMexWi3zNs7Nzd95ase65MbTGrpFJflOb6A==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-8.0.1.tgz", + "integrity": "sha512-kqnSMF1YHBzuiQrl68675i5Ma1oljvo+SJsNEZFZVBu5BUrVIZm9KId3ui2PdtLK2sv2zM8sJnjPDfgLxQlEqQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-remap-async-to-generator": "^7.22.20", - "@babel/plugin-syntax-async-generators": "^7.8.4" + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/helper-remap-async-to-generator": "^8.0.1", + "@babel/traverse": "^8.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.1.tgz", - "integrity": "sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-8.0.1.tgz", + "integrity": "sha512-e1jmmEU4p2Lx64sA1+EF8e8/RxPuegzbXcEbmFp5alDyLE+f2ViUpZ77bRWMXzihTwgVVmn/TOpqDbAuS5g1Ew==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-remap-async-to-generator": "^7.22.20" + "@babel/helper-module-imports": "^8.0.0", + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/helper-remap-async-to-generator": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.1.tgz", - "integrity": "sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-8.0.1.tgz", + "integrity": "sha512-0V97/gcf7LIgPieEiK1YT0eXa18XJFSLOTZjzEZhA9SJIqZhD/IwGUrCitBzXSmnGCP7hchwC6svHtJ/Eidcpg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.1.tgz", - "integrity": "sha512-h71T2QQvDgM2SmT29UYU6ozjMlAt7s7CSs5Hvy8f8cf/GM/Z4a2zMfN+fjVGaieeCrXR3EdQl6C4gQG+OgmbKw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-8.0.1.tgz", + "integrity": "sha512-HxiQvKsSCs2jOmMhjDrooHaZYOy6W8bqwXp/zjdgPjsNrda6tK9/CH3a/cVIeg6ge3hSS02ALqvqgIo4rTsuSg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.1.tgz", - "integrity": "sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-8.0.1.tgz", + "integrity": "sha512-tORnYiVhIHnKj90TgbSZXrO24f9oEpA6MgFxpIDSKKlHv7AzBIRhkMlYevanueLNYaQXqZWarfCgXM4bWTfNiw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-class-features-plugin": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.1.tgz", - "integrity": "sha512-FUHlKCn6J3ERiu8Dv+4eoz7w8+kFLSyeVG4vDAikwADGjUCoHw/JHokyGtr8OR4UjpwPVivyF+h8Q5iv/JmrtA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-8.0.1.tgz", + "integrity": "sha512-NEVK+L0Le8h8tJ+IK0CGS5y9Yi1ZHxLj6M5PeanhMFuq9aSo0XI+Wtmbuyop6fTNukOm7ORNntf/kwid891vqQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-class-static-block": "^7.14.5" + "@babel/helper-create-class-features-plugin": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.12.0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.1.tgz", - "integrity": "sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-8.0.1.tgz", + "integrity": "sha512-phwyCES8kIMAdVOFw25ztmgAvkl2G+TvUv7azUYyrlR1Qoo3eLJC/MU3MGUKFZ4BWtsJ1NTJM1lKRLzKbswg7w==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-replace-supers": "^7.24.1", - "@babel/helper-split-export-declaration": "^7.22.6", - "globals": "^11.1.0" + "@babel/helper-annotate-as-pure": "^8.0.0", + "@babel/helper-compilation-targets": "^8.0.0", + "@babel/helper-globals": "^8.0.0", + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/helper-replace-supers": "^8.0.1", + "@babel/traverse": "^8.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.1.tgz", - "integrity": "sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-8.0.1.tgz", + "integrity": "sha512-i4l3OGLO8DUDcwdnyraOvILbhqdUf4QgfzhVxSOSzRy49XKXrY7pwaSg9gDSKmhZfNPrEMciBSJSciQh/CjB1A==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/template": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.1.tgz", - "integrity": "sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-8.0.1.tgz", + "integrity": "sha512-RtR8uLDl0QcCmqMNIkM8gmDeYZ3rS0ZH+sa+I6sfc09yFoqfp9AEPgBstq9KyfVb0lFCVSRFfJXCI70FIl5ccw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.1.tgz", - "integrity": "sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-8.0.1.tgz", + "integrity": "sha512-czOUoSaZljJ92yu+bYlXqb/UBN8K9daNCob/B6/7nthSvfGP6YhCnfqD64XWfyb2dN4ypxALNplApoJrsMd4fw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-regexp-features-plugin": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.1.tgz", - "integrity": "sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-8.0.1.tgz", + "integrity": "sha512-kNnVLkxFUEcTtCyB5PFVQ5Xoy88Bk1lU/ZgDu97CW8eNhRH2Wsiy8Sq5l5dFnwtIUYjzsXHU77jUy1W5AtGSIw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-8.0.1.tgz", + "integrity": "sha512-Tv43P47o6fuHgBL7HLHQg3WKXohW9CEUGjLtnCDW27yJLK0zKUdTTqREbZbycNHA83hewMjde5tF6ekrHu9bAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" + }, + "engines": { + "node": "^22.18.0 || >=24.11.0" + }, + "peerDependencies": { + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.1.tgz", - "integrity": "sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-8.0.1.tgz", + "integrity": "sha512-AS9GlgKc43tJNRu7yOvLaTko4qmdOb+8M69uNS8i421WLO20eVez7LdG5khKdi8E0LIQpYzzzdGIrdXWnO753g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" + } + }, + "node_modules/@babel/plugin-transform-explicit-resource-management": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-8.0.1.tgz", + "integrity": "sha512-VzDIYwBlLCpV6mJfloRdJm8HmYnMqs7O+bGha8yfg2kP7jAdxeCw6yZBVBeaKKQUThtSU52iy+3lB7DhYsbOBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/plugin-transform-destructuring": "^8.0.1" + }, + "engines": { + "node": "^22.18.0 || >=24.11.0" + }, + "peerDependencies": { + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.1.tgz", - "integrity": "sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-8.0.1.tgz", + "integrity": "sha512-DsZvUUklUmDQ7d2vp+VjqgUWD51mGxhZZ1FPdPP9Hcj0vsgGUKX+zEBGp/vzB1O5PZUxWT/Euq5fu39M9dm9wg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.1.tgz", - "integrity": "sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-8.0.1.tgz", + "integrity": "sha512-bFzznm46bvWGaTYKle3iolbBJ+oPBfUjwCPesxlFE3SQ7DaY9EHf/8Y5ZzrodKJi8JDdcAyaVWaDUSVyhULh0g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.1.tgz", - "integrity": "sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-8.0.1.tgz", + "integrity": "sha512-rpeXtgELjpIBQH/+YmyFlD9timPEVCyqY+TNednzoeoTYvXSBEeUvYnYE+BK8rB8m6hHiNK7aL9QWKhGifEJCw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/helper-skip-transparent-expression-wrappers": "^8.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.1.tgz", - "integrity": "sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-8.0.1.tgz", + "integrity": "sha512-H1L/JfPf3CqmubuaiZaquXKQ8MRs4YWSsgRllkTviM8TafcCNnlvc4/fJZ3rXP8HmFM+/Bg+TlsPehUI9BtDFA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-compilation-targets": "^8.0.0", + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.1.tgz", - "integrity": "sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-8.0.1.tgz", + "integrity": "sha512-Mowp8X0J6p7ZehLU82B5e65te2uuSeDHyxrEROwEAS2VKXNXssfw5ZMqhY7k9iXTsOv1Xs/49G3lDCj9Vvw8qQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-json-strings": "^7.8.3" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.1.tgz", - "integrity": "sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-8.0.1.tgz", + "integrity": "sha512-ai7kfPRcfyUV1EszXoF1PvL3IuJoCuH08WSEPoRcJTWfZZ55VL/rcfvbVY16QLA3jjbzzSneQSoCtD3L6OyUjw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.1.tgz", - "integrity": "sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-8.0.1.tgz", + "integrity": "sha512-Emvtr5zkEGyCNAmt+qKD5EUh8G0RbxV9EZWrDdX0LuVy5tBq1B3fOIslvVF9aCJmpnwS/AvAT53b9LxAZyXlng==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.1.tgz", - "integrity": "sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-8.0.1.tgz", + "integrity": "sha512-3Axi9abnyGsm/hh6DsKPZ1Cr9fTtKqS7w0Ig5g12mU269YclpH8pV3xMln2vPLexXgUp6S6L+I06d9/YOLfRKA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.1.tgz", - "integrity": "sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-8.0.1.tgz", + "integrity": "sha512-FDdhET8y1YFDNRuoynqSf23WTzbBBpbIB2oRrlFX7YYm9uWtFvJDSD1r/epBSjfPkOjeaaLgRW9xNnt3JGx46A==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-module-transforms": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz", - "integrity": "sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-8.0.1.tgz", + "integrity": "sha512-PMuzulWrrzFNmY3lXSk/tV9NRb7y0eZZLJY4UEo2TKszroxvUZHAPPi+T9FDyrQhod+TQA+t+8/QYaaMpiEuhA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-simple-access": "^7.22.5" + "@babel/helper-module-transforms": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.29.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.4.tgz", - "integrity": "sha512-N7QmZ0xRZfjHOfZeQLJjwgX2zS9pdGHSVl/cjSGlo4dXMqvurfxXDMKY4RqEKzPozV78VMcd0lxyG13mlbKc4w==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-8.0.1.tgz", + "integrity": "sha512-0NEHanXmnFEnfT2dLKTXnu7m8GXFsnxRgteBC2aH21hYMBwAgxu5dcTdi/Eg+ToI1HbZe0CHwz4XRLgRNQhYoQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/helper-validator-identifier": "^7.28.5", - "@babel/traverse": "^7.29.0" + "@babel/helper-module-transforms": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/helper-validator-identifier": "^8.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs/node_modules/@babel/helper-validator-identifier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0.tgz", + "integrity": "sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^22.18.0 || >=24.11.0" } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.1.tgz", - "integrity": "sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-8.0.1.tgz", + "integrity": "sha512-XKTa2J2MdkmbVEeChq9f7Or0VYcsF0NyVBgytRyeN9F+J+ETAB2SHhfkG4toz/ssuU0i+h/QgJ6ddo5YakSQcA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-module-transforms": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", - "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-8.0.1.tgz", + "integrity": "sha512-zCHu+Jr2gTdJE48lN9SV/kXueCW2M79mKtKJc/ttfzzr/jvgdQdCd17RADMqFRQc/25MLxdtjTmlD0HSAMOlIQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.1.tgz", - "integrity": "sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-8.0.1.tgz", + "integrity": "sha512-QSQxVg1x4PuOuhWUs4Y9u+x9Y+ER8z6G3tC+bDLBzvoOrNLJrEBQLRnwrTP8e5klihAw6Z+e9X5RjdAKcAGapA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.1.tgz", - "integrity": "sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-8.0.1.tgz", + "integrity": "sha512-AgCJAmQLF7+PtsK79wJqr4xJ2StHCXlz7JL5CVFP4HejJx25Tk6yl1ZrXvi0cKh3VGDVnfVxefxnrpsBirgpyQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.1.tgz", - "integrity": "sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-8.0.1.tgz", + "integrity": "sha512-it2DmUyLIA1GQUXlFDEnI+/G89mTgxndnAiZYpW8xYR6LboblfirMqiWJeTna5uypQJg7viTT4D1iEURRtFcfw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.1.tgz", - "integrity": "sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-8.0.1.tgz", + "integrity": "sha512-VmxkDu6bBdbxRzqn6E93hYucug4OVa6svSO19W//vVzNUGAmQzk3QRyHyyEtfcjSLR3NWfRsWwVM9zExLmd+2w==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.24.1" + "@babel/helper-compilation-targets": "^8.0.0", + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/plugin-transform-destructuring": "^8.0.1", + "@babel/plugin-transform-parameters": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.1.tgz", - "integrity": "sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-8.0.1.tgz", + "integrity": "sha512-fDkPXRTRKGm25bAq01q82UM4ypPqdVXCwphUUm4t1dL01fGIG0v8KRvT+4BjhMAtRxtPuI34t5Vs7yjRgs3ZgQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-replace-supers": "^7.24.1" + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/helper-replace-supers": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.1.tgz", - "integrity": "sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-8.0.1.tgz", + "integrity": "sha512-b2OQ74uGliyATcasTjxGy2O/86UI/n+EN4juB4EMfEwTi9j9uq70PuP0L8fW77vfRY66gO/YoTo/WbIdQ/Si1g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.1.tgz", - "integrity": "sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-8.0.1.tgz", + "integrity": "sha512-WtRS1c94lZGpGHxYLXMEWeoMVcuv8nkiyr8BTs6OYZv7N3Y9xVE8nbdFIl4lDJH6aH8/pLhqAQOL69d/WI9WdA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/helper-skip-transparent-expression-wrappers": "^8.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.1.tgz", - "integrity": "sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-8.0.1.tgz", + "integrity": "sha512-IIwRqroW0CYQwR6+3pnmu27z+H98poScWdnov8z6osumMeEsFxAFBBsDS2CFk2jFpPlGqVr89jK/HXO6i5DzxQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.1.tgz", - "integrity": "sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-8.0.1.tgz", + "integrity": "sha512-TrFCGcXaVDh6S5IRhmLSRTY9H80VTCMQWnZtzBRg4RWg3KCLmdmsmj4M15kZAPZfoPkWL/SJb4em3Py/vOiX8g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-class-features-plugin": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.1.tgz", - "integrity": "sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-8.0.1.tgz", + "integrity": "sha512-e+yfOqSYBZaf3PARpiQkjZrpWYgmcFLhK+1tevh2CpHR1O9/36IdyPnAZusESX5nzVV/XZTDAtQBRLa8HPT5Dw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + "@babel/helper-annotate-as-pure": "^8.0.0", + "@babel/helper-create-class-features-plugin": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.1.tgz", - "integrity": "sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-8.0.1.tgz", + "integrity": "sha512-Z/qx4cxUtYR1nt7XWRutObPxDks98fEYsjWbVeKEqZH6y3AGknmgzCqmHf2FHWZCl1DfoPeuJY+3hZ+35D+2tg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.1.tgz", - "integrity": "sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-8.0.1.tgz", + "integrity": "sha512-1WjCi/45Mn5e0uvz26FdvRe6bTAvN6WAtkHgIjl0w/LkBvrv4Y5bDR+8YY72r7cefXBfwYUXIHSoxQkrIfnjXQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "regenerator-transform": "^0.15.2" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" + } + }, + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-8.0.1.tgz", + "integrity": "sha512-02ITRDBesPdTYU0oShAzERwEPzozOUQSXlz3qrt8JGuhalBJQv9z5NjgHJPC9sS3Fsam8gDtfAEpBnqZwUIdjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" + }, + "engines": { + "node": "^22.18.0 || >=24.11.0" + }, + "peerDependencies": { + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.1.tgz", - "integrity": "sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-8.0.1.tgz", + "integrity": "sha512-+aykZi7ZP3U84veqfJXm3HhPZGddWFi64g7jr0ni6tb1zel+1ey+SL+IRKPoZXFyFqvYEsoqrmx4PyEJRlHl/Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz", - "integrity": "sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-8.0.1.tgz", + "integrity": "sha512-JddANd9yPVH8dYgVoNkqAH5BftnsDxFpG51Zas7sc6F3poz5QWcejHNGO8a/57IX5ByjGSzEmYk9Z7ZMa5MWaw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.1.tgz", - "integrity": "sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-8.0.1.tgz", + "integrity": "sha512-O9Bw9FyxlSw1SlMg3S82/GKNZ0x77RPbHezotEy1JTlIM/vk6WO8jW1iF+iTiKLOXNvi+b+LZ9t77Gi+Q0FhGg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/helper-skip-transparent-expression-wrappers": "^8.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.1.tgz", - "integrity": "sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-8.0.1.tgz", + "integrity": "sha512-IsVP6WrZZQdaG2zLmeKwWiI+ua2NB5L1+f77C2/8z2NCDz7uxlIA/lnwocYOJk9PXcOC2sZgRls3LN4XpNduzQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.1.tgz", - "integrity": "sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-8.0.1.tgz", + "integrity": "sha512-JXvtj5+BJA9Qv3prDzW2z2DkGTJNmG0BObTdUD03STiu1Jr4fNQkQy3hYZgPL46a2RjcuhwBMYf49BOuJ98gnA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.1.tgz", - "integrity": "sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-8.0.1.tgz", + "integrity": "sha512-+wJoxgxP2gtey0UMUOMhzMMji2XHO/Uu6MXUh/r5Yhc2jngKzK/wFxY2WNe4UCaRcMvCb4gcnB8wIgFXJsocXg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.1.tgz", - "integrity": "sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-8.0.1.tgz", + "integrity": "sha512-TAXJepIJ6vZphytTwcf+LuXi2M2ZWI43VCqNw+1ZZLPP/38Z1A8j4Mahvg8kqDgMOSM/cakk+hedTJCiw3jQuQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.1.tgz", - "integrity": "sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-8.0.1.tgz", + "integrity": "sha512-zjBN9tSMSuomNDfurL69Gf7+v4D2t5uI1mSZaYJDo88SKpbduhCXqtxH7Tx66iCF6caWYwnBzSM0tnCozmQq5Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-regexp-features-plugin": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.1.tgz", - "integrity": "sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-8.0.1.tgz", + "integrity": "sha512-v0oO83cvT5lwbcIVRShpx4vaHD8AvM9IBowsQuTeP+kGmhh3recJQs33Bl6dlo3/2g9amlznLbFGn4VJbPCJqA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-regexp-features-plugin": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.1.tgz", - "integrity": "sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-8.0.1.tgz", + "integrity": "sha512-MlQeyS0K7gh0XNeLBMS/3Z07HjDOKhA7xm2L18GyxOXyiFHI9E+ZuQ4mFYmcLjluXsE/Wf6dABIqZvKpKw0Z3w==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-regexp-features-plugin": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/preset-env": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.1.tgz", - "integrity": "sha512-CwCMz1Z28UHLI2iE+cbnWT2epPMV9bzzoBGM6A3mOS22VQd/1TPoWItV7S7iL9TkPmPEf5L/QzurmztyyDN9FA==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.24.1", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-validator-option": "^7.23.5", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.1", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.1", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.1", - "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.24.1", - "@babel/plugin-syntax-import-attributes": "^7.24.1", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.24.1", - "@babel/plugin-transform-async-generator-functions": "^7.24.1", - "@babel/plugin-transform-async-to-generator": "^7.24.1", - "@babel/plugin-transform-block-scoped-functions": "^7.24.1", - "@babel/plugin-transform-block-scoping": "^7.24.1", - "@babel/plugin-transform-class-properties": "^7.24.1", - "@babel/plugin-transform-class-static-block": "^7.24.1", - "@babel/plugin-transform-classes": "^7.24.1", - "@babel/plugin-transform-computed-properties": "^7.24.1", - "@babel/plugin-transform-destructuring": "^7.24.1", - "@babel/plugin-transform-dotall-regex": "^7.24.1", - "@babel/plugin-transform-duplicate-keys": "^7.24.1", - "@babel/plugin-transform-dynamic-import": "^7.24.1", - "@babel/plugin-transform-exponentiation-operator": "^7.24.1", - "@babel/plugin-transform-export-namespace-from": "^7.24.1", - "@babel/plugin-transform-for-of": "^7.24.1", - "@babel/plugin-transform-function-name": "^7.24.1", - "@babel/plugin-transform-json-strings": "^7.24.1", - "@babel/plugin-transform-literals": "^7.24.1", - "@babel/plugin-transform-logical-assignment-operators": "^7.24.1", - "@babel/plugin-transform-member-expression-literals": "^7.24.1", - "@babel/plugin-transform-modules-amd": "^7.24.1", - "@babel/plugin-transform-modules-commonjs": "^7.24.1", - "@babel/plugin-transform-modules-systemjs": "^7.24.1", - "@babel/plugin-transform-modules-umd": "^7.24.1", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.24.1", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.1", - "@babel/plugin-transform-numeric-separator": "^7.24.1", - "@babel/plugin-transform-object-rest-spread": "^7.24.1", - "@babel/plugin-transform-object-super": "^7.24.1", - "@babel/plugin-transform-optional-catch-binding": "^7.24.1", - "@babel/plugin-transform-optional-chaining": "^7.24.1", - "@babel/plugin-transform-parameters": "^7.24.1", - "@babel/plugin-transform-private-methods": "^7.24.1", - "@babel/plugin-transform-private-property-in-object": "^7.24.1", - "@babel/plugin-transform-property-literals": "^7.24.1", - "@babel/plugin-transform-regenerator": "^7.24.1", - "@babel/plugin-transform-reserved-words": "^7.24.1", - "@babel/plugin-transform-shorthand-properties": "^7.24.1", - "@babel/plugin-transform-spread": "^7.24.1", - "@babel/plugin-transform-sticky-regex": "^7.24.1", - "@babel/plugin-transform-template-literals": "^7.24.1", - "@babel/plugin-transform-typeof-symbol": "^7.24.1", - "@babel/plugin-transform-unicode-escapes": "^7.24.1", - "@babel/plugin-transform-unicode-property-regex": "^7.24.1", - "@babel/plugin-transform-unicode-regex": "^7.24.1", - "@babel/plugin-transform-unicode-sets-regex": "^7.24.1", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-8.0.1.tgz", + "integrity": "sha512-tiwl69ZQGIbPif28GK8vI/Nm1nYdP+UHXWRnqXl0fjfBS7DWmAs2XvlpVkZyZjVVDxcprcbzCnN93SbuSgz8WQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^8.0.0", + "@babel/helper-compilation-targets": "^8.0.0", + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/helper-validator-option": "^8.0.0", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^8.0.1", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^8.0.1", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^8.0.1", + "@babel/plugin-bugfix-safari-rest-destructuring-rhs-array": "^8.0.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^8.0.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^8.0.1", + "@babel/plugin-transform-arrow-functions": "^8.0.1", + "@babel/plugin-transform-async-generator-functions": "^8.0.1", + "@babel/plugin-transform-async-to-generator": "^8.0.1", + "@babel/plugin-transform-block-scoped-functions": "^8.0.1", + "@babel/plugin-transform-block-scoping": "^8.0.1", + "@babel/plugin-transform-class-properties": "^8.0.1", + "@babel/plugin-transform-class-static-block": "^8.0.1", + "@babel/plugin-transform-classes": "^8.0.1", + "@babel/plugin-transform-computed-properties": "^8.0.1", + "@babel/plugin-transform-destructuring": "^8.0.1", + "@babel/plugin-transform-dotall-regex": "^8.0.1", + "@babel/plugin-transform-duplicate-keys": "^8.0.1", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^8.0.1", + "@babel/plugin-transform-dynamic-import": "^8.0.1", + "@babel/plugin-transform-explicit-resource-management": "^8.0.1", + "@babel/plugin-transform-exponentiation-operator": "^8.0.1", + "@babel/plugin-transform-export-namespace-from": "^8.0.1", + "@babel/plugin-transform-for-of": "^8.0.1", + "@babel/plugin-transform-function-name": "^8.0.1", + "@babel/plugin-transform-json-strings": "^8.0.1", + "@babel/plugin-transform-literals": "^8.0.1", + "@babel/plugin-transform-logical-assignment-operators": "^8.0.1", + "@babel/plugin-transform-member-expression-literals": "^8.0.1", + "@babel/plugin-transform-modules-amd": "^8.0.1", + "@babel/plugin-transform-modules-commonjs": "8.0.1", + "@babel/plugin-transform-modules-systemjs": "^8.0.1", + "@babel/plugin-transform-modules-umd": "^8.0.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^8.0.1", + "@babel/plugin-transform-new-target": "^8.0.1", + "@babel/plugin-transform-nullish-coalescing-operator": "^8.0.1", + "@babel/plugin-transform-numeric-separator": "^8.0.1", + "@babel/plugin-transform-object-rest-spread": "^8.0.1", + "@babel/plugin-transform-object-super": "^8.0.1", + "@babel/plugin-transform-optional-catch-binding": "^8.0.1", + "@babel/plugin-transform-optional-chaining": "^8.0.1", + "@babel/plugin-transform-parameters": "^8.0.1", + "@babel/plugin-transform-private-methods": "^8.0.1", + "@babel/plugin-transform-private-property-in-object": "^8.0.1", + "@babel/plugin-transform-property-literals": "^8.0.1", + "@babel/plugin-transform-regenerator": "^8.0.1", + "@babel/plugin-transform-regexp-modifiers": "^8.0.1", + "@babel/plugin-transform-reserved-words": "^8.0.1", + "@babel/plugin-transform-shorthand-properties": "^8.0.1", + "@babel/plugin-transform-spread": "^8.0.1", + "@babel/plugin-transform-sticky-regex": "^8.0.1", + "@babel/plugin-transform-template-literals": "^8.0.1", + "@babel/plugin-transform-typeof-symbol": "^8.0.1", + "@babel/plugin-transform-unicode-escapes": "^8.0.1", + "@babel/plugin-transform-unicode-property-regex": "^8.0.1", + "@babel/plugin-transform-unicode-regex": "^8.0.1", + "@babel/plugin-transform-unicode-sets-regex": "^8.0.1", "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.10.1", - "babel-plugin-polyfill-regenerator": "^0.6.1", - "core-js-compat": "^3.31.0", - "semver": "^6.3.1" + "babel-plugin-polyfill-corejs3": "^1.0.0-rc.2", + "core-js-compat": "^3.48.0", + "semver": "^7.7.3" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^8.0.0" } }, "node_modules/@babel/preset-modules": { @@ -1635,6 +1965,7 @@ "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/types": "^7.4.4", @@ -1644,55 +1975,121 @@ "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@babel/regjsgen": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", - "dev": true - }, - "node_modules/@babel/runtime": { - "version": "7.29.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.2.tgz", - "integrity": "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==", + "node_modules/@babel/preset-modules/node_modules/@babel/helper-plugin-utils": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz", + "integrity": "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==", "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/template": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", - "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", + "node_modules/@babel/traverse": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-8.0.0.tgz", + "integrity": "sha512-bxTj/W2VclGE6CctlfQOpxg8MPDzXArRqkOBePw8EHfebcjF7fETWSS3BriEECo+UiU/Yblq+xUtSImFu7cTbw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.28.6", - "@babel/parser": "^7.28.6", - "@babel/types": "^7.28.6" + "@babel/code-frame": "^8.0.0", + "@babel/generator": "^8.0.0", + "@babel/helper-globals": "^8.0.0", + "@babel/parser": "^8.0.0", + "@babel/template": "^8.0.0", + "@babel/types": "^8.0.0", + "obug": "^2.1.1" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" } }, - "node_modules/@babel/traverse": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", - "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "node_modules/@babel/traverse/node_modules/@babel/code-frame": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-8.0.0.tgz", + "integrity": "sha512-dYYg153EyN2Ekbqw2zAsbd6/JR+9N2SEoC7YV2GyyqMM7x9bLDTjBD6XBhSMLH0wtIVyJj03jWNriQhaN+eoCw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.29.0", - "@babel/generator": "^7.29.0", - "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.29.0", - "@babel/template": "^7.28.6", - "@babel/types": "^7.29.0", - "debug": "^4.3.1" + "@babel/helper-validator-identifier": "^8.0.0", + "js-tokens": "^10.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/traverse/node_modules/@babel/helper-string-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0.tgz", + "integrity": "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/traverse/node_modules/@babel/helper-validator-identifier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0.tgz", + "integrity": "sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/traverse/node_modules/@babel/parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-8.0.0.tgz", + "integrity": "sha512-aLxAE+imI9bCcyaPrUDjBv3uSkWieifjLe0kuFOZF0zli0L6GCsTmsePnTr55adbIAgYz2zhN1vnFimCBUYcRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^8.0.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/traverse/node_modules/@babel/template": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-8.0.0.tgz", + "integrity": "sha512-eAD0QW/AlbamBbw0FeGiwasbCVPq5ncW0HNVyLP3B9czqLyh4gvw+5JTSNt6le9+ziAU7mqDZsKTHf3jTb4chQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^8.0.0", + "@babel/parser": "^8.0.0", + "@babel/types": "^8.0.0" + }, + "engines": { + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/traverse/node_modules/@babel/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.0.tgz", + "integrity": "sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^8.0.0", + "@babel/helper-validator-identifier": "^8.0.0" + }, + "engines": { + "node": "^22.18.0 || >=24.11.0" } }, + "node_modules/@babel/traverse/node_modules/js-tokens": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-10.0.0.tgz", + "integrity": "sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==", + "dev": true, + "license": "MIT" + }, "node_modules/@babel/types": { "version": "7.29.0", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", @@ -1815,6 +2212,20 @@ "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", "dev": true }, + "node_modules/@types/gensync": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/gensync/-/gensync-1.0.5.tgz", + "integrity": "sha512-MbsRCT7mTikHwKZ0X+LVUTLRrZZRLipTuXEO9qOYO+zmjMVk81axyClMROf6uoPD9MRVu46bx8zoR0Ad9q3NAg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/jsesc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@types/jsesc/-/jsesc-2.5.1.tgz", + "integrity": "sha512-9VN+6yxLOPLOav+7PwjZbxiID2bVaeq0ED4qSQmdQTdjnXJSaCVKTR58t15oqH1H5t8Ng2ZX1SabJVoN9Q34bw==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -2196,59 +2607,111 @@ } }, "node_modules/babel-loader": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", - "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-10.1.1.tgz", + "integrity": "sha512-JwKSzk2kjIe7mgPK+/lyZ2QAaJcpahNAdM+hgR2HI8D0OJVkdj8Rl6J3kaLYki9pwF7P2iWnD8qVv80Lq1ABtg==", "dev": true, + "license": "MIT", "dependencies": { - "find-cache-dir": "^4.0.0", - "schema-utils": "^4.0.0" + "find-up": "^5.0.0" }, "engines": { - "node": ">= 14.15.0" + "node": "^18.20.0 || ^20.10.0 || >=22.0.0" }, "peerDependencies": { - "@babel/core": "^7.12.0", - "webpack": ">=5" + "@babel/core": "^7.12.0 || ^8.0.0-beta.1", + "@rspack/core": "^1.0.0 || ^2.0.0-0", + "webpack": ">=5.61.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } } }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.10", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.10.tgz", - "integrity": "sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ==", + "node_modules/babel-loader/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.6.1", - "semver": "^6.3.1" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.1.tgz", - "integrity": "sha512-XiFei6VGwM4ii6nKC1VCenGD8Z4bjiNYcrdkM8oqM3pbuemmyb8biMgrDX1ZHSbIuMLXatM6JJ/StPYIuTl6MQ==", + "node_modules/babel-loader/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.1", - "core-js-compat": "^3.36.0" + "p-locate": "^5.0.0" }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.1.tgz", - "integrity": "sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g==", + "node_modules/babel-loader/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/babel-loader/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "1.0.0-rc.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-1.0.0-rc.2.tgz", + "integrity": "sha512-CANdCTyNm6Ds/kevG0Rbby/dvRPTvA7K5DLTiUrWBeRMnqp6Okg8idCw5fM3AdbAcxtR23Y9na3WOJRZ3i1hNA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.1" + "@babel/helper-define-polyfill-provider": "^1.0.0-rc.2", + "core-js-compat": "^3.48.0" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" }, "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "@babel/core": "^7.4.0 || ^8.0.0-rc.3" } }, "node_modules/balanced-match": { @@ -2741,12 +3204,6 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, - "node_modules/common-path-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", - "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", - "dev": true - }, "node_modules/compare-angle": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/compare-angle/-/compare-angle-1.0.1.tgz", @@ -2828,12 +3285,13 @@ } }, "node_modules/core-js-compat": { - "version": "3.36.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.1.tgz", - "integrity": "sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA==", + "version": "3.49.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.49.0.tgz", + "integrity": "sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==", "dev": true, + "license": "MIT", "dependencies": { - "browserslist": "^4.23.0" + "browserslist": "^4.28.1" }, "funding": { "type": "opencollective", @@ -2939,23 +3397,6 @@ "resolved": "https://registry.npmjs.org/cubic-hermite/-/cubic-hermite-1.0.0.tgz", "integrity": "sha1-hOOy8nKzFFToOTuZu2rtRRaMFOU=" }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -3131,6 +3572,16 @@ "minimalistic-crypto-utils": "^1.0.1" } }, + "node_modules/empathic": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/empathic/-/empathic-2.0.1.tgz", + "integrity": "sha512-YGRs8knHhKHVShLkFET/rWAU8kmHbOV5LwN938RHI0pljAJ1Gf6SzXsSmRaEzcXTtOOmVqJ5+WtQPL5uigY50Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, "node_modules/end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -3381,107 +3832,6 @@ "cubic-hermite": "^1.0.0" } }, - "node_modules/find-cache-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", - "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", - "dev": true, - "dependencies": { - "common-path-prefix": "^3.0.0", - "pkg-dir": "^7.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-cache-dir/node_modules/find-up": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", - "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", - "dev": true, - "dependencies": { - "locate-path": "^7.1.0", - "path-exists": "^5.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-cache-dir/node_modules/locate-path": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", - "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", - "dev": true, - "dependencies": { - "p-locate": "^6.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-cache-dir/node_modules/p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^1.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-cache-dir/node_modules/p-locate": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", - "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", - "dev": true, - "dependencies": { - "p-limit": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-cache-dir/node_modules/path-exists": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", - "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/find-cache-dir/node_modules/pkg-dir": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", - "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", - "dev": true, - "dependencies": { - "find-up": "^6.3.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", @@ -3965,15 +4315,6 @@ "dev": true, "license": "BSD-2-Clause" }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/glsl-inject-defines": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/glsl-inject-defines/-/glsl-inject-defines-1.0.3.tgz", @@ -4382,6 +4723,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/import-meta-resolve": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz", + "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/incremental-convex-hull": { "version": "1.1.0", "resolved": "git+ssh://git@github.com/plotly/incremental-convex-hull.git#352d9e73861913695fd4e1a4c6ad79898c0c8268", @@ -4620,13 +4972,6 @@ "node": ">= 10.13.0" } }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, - "license": "MIT" - }, "node_modules/jsesc": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", @@ -4719,15 +5064,17 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "version": "11.5.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.1.tgz", + "integrity": "sha512-RPimw/7aMdv2oqRrxKwvZXcPfwBrn/JZ2xYcY9Hus/6LaS3VOAKVWKWgNLCFSiOm1ESXinjsDlidVU7JlnCN2A==", "dev": true, - "dependencies": { - "yallist": "^3.0.2" + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" } }, "node_modules/map-limit": { @@ -4924,12 +5271,6 @@ "to-px": "^1.0.1" } }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "node_modules/multipipe": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.3.1.tgz", @@ -5174,19 +5515,6 @@ "node": ">= 6" } }, - "node_modules/node-stdlib-browser/node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", @@ -5283,6 +5611,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/obug": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.3.tgz", + "integrity": "sha512-9miFgM2OFba7hB+pRgvtV84pYTBaoTHohvmIgiRt6dRIzbwEOIaNaP+dIlGs2fNFoB0SeISs0Jz5WFVRid6Xyg==", + "dev": true, + "funding": [ + "https://github.com/sponsors/sxzz", + "https://opencollective.com/debug" + ], + "license": "MIT", + "engines": { + "node": ">=12.20.0" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -5708,13 +6050,15 @@ "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/regenerate-unicode-properties": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", - "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz", + "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==", "dev": true, + "license": "MIT", "dependencies": { "regenerate": "^1.4.2" }, @@ -5722,53 +6066,44 @@ "node": ">=4" } }, - "node_modules/regenerator-transform": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", - "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, "node_modules/regexpu-core": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", - "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz", + "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsparser": "^0.9.1", + "regenerate-unicode-properties": "^10.2.2", + "regjsgen": "^0.8.0", + "regjsparser": "^0.13.0", "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" + "unicode-match-property-value-ecmascript": "^2.2.1" }, "engines": { "node": ">=4" } }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "dev": true, + "license": "MIT" + }, "node_modules/regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.2.tgz", + "integrity": "sha512-NgRBy2Nx/bE+9F27nVHnqcN5HjyLmecqsqx2PJHu3/IEtADD4WuxuXIVExD5PoSDFVrl78dOonfcOe5O+5nbzQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "jsesc": "~0.5.0" + "jsesc": "~3.1.0" }, "bin": { "regjsparser": "bin/parser" } }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - } - }, "node_modules/repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", @@ -6002,12 +6337,16 @@ } }, "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.4.tgz", + "integrity": "sha512-rUCObTnP32Q08R2uuIrt7r9PlEonuTmtuXYcW6s5kjdlj3xbnwe+21yXptAUYcMAABLkYYTtnmzb3w3EDZfueA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/set-function-length": { @@ -6655,10 +6994,11 @@ "dev": true }, "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -6668,6 +7008,7 @@ "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, + "license": "MIT", "dependencies": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" @@ -6677,19 +7018,21 @@ } }, "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", + "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", + "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -7039,19 +7382,14 @@ "node": ">=0.4" } }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, "node_modules/yocto-queue": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", - "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, + "license": "MIT", "engines": { - "node": ">=12.20" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -7064,256 +7402,441 @@ } }, "dependencies": { - "@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "@babel/code-frame": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", - "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.28.5", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" - } - }, "@babel/compat-data": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.2.tgz", - "integrity": "sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-8.0.0.tgz", + "integrity": "sha512-DOjnob/cXOUgDOozCDeq/aK2p5y8dUIVdf6tNhEV1HQRd6I8aQ4f4fbtHRVEvb6lP3BGomrKHiS8ICAASSVQSw==", "dev": true }, "@babel/core": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", - "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", - "dev": true, - "requires": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.25.0", - "@babel/helper-compilation-targets": "^7.25.2", - "@babel/helper-module-transforms": "^7.25.2", - "@babel/helpers": "^7.25.0", - "@babel/parser": "^7.25.0", - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.2", - "@babel/types": "^7.25.2", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-8.0.1.tgz", + "integrity": "sha512-5FgxM4dLQpMJHSiVATk8foW263dVHQHBVpXYiimNECVWG01f4nFyEbQixeT6Mwvg7TayREJ2gpKl3o2RoMdnqw==", + "dev": true, + "requires": { + "@babel/code-frame": "^8.0.0", + "@babel/generator": "^8.0.0", + "@babel/helper-compilation-targets": "^8.0.0", + "@babel/helpers": "^8.0.0", + "@babel/parser": "^8.0.0", + "@babel/template": "^8.0.0", + "@babel/traverse": "^8.0.0", + "@babel/types": "^8.0.0", + "@types/gensync": "^1.0.5", "convert-source-map": "^2.0.0", - "debug": "^4.1.0", + "empathic": "^2.0.1", "gensync": "^1.0.0-beta.2", + "import-meta-resolve": "^4.2.0", "json5": "^2.2.3", - "semver": "^6.3.1" + "obug": "^2.1.1", + "semver": "^7.7.3" + }, + "dependencies": { + "@babel/code-frame": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-8.0.0.tgz", + "integrity": "sha512-dYYg153EyN2Ekbqw2zAsbd6/JR+9N2SEoC7YV2GyyqMM7x9bLDTjBD6XBhSMLH0wtIVyJj03jWNriQhaN+eoCw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^8.0.0", + "js-tokens": "^10.0.0" + } + }, + "@babel/helper-string-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0.tgz", + "integrity": "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0.tgz", + "integrity": "sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==", + "dev": true + }, + "@babel/parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-8.0.0.tgz", + "integrity": "sha512-aLxAE+imI9bCcyaPrUDjBv3uSkWieifjLe0kuFOZF0zli0L6GCsTmsePnTr55adbIAgYz2zhN1vnFimCBUYcRQ==", + "dev": true, + "requires": { + "@babel/types": "^8.0.0" + } + }, + "@babel/template": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-8.0.0.tgz", + "integrity": "sha512-eAD0QW/AlbamBbw0FeGiwasbCVPq5ncW0HNVyLP3B9czqLyh4gvw+5JTSNt6le9+ziAU7mqDZsKTHf3jTb4chQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^8.0.0", + "@babel/parser": "^8.0.0", + "@babel/types": "^8.0.0" + } + }, + "@babel/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.0.tgz", + "integrity": "sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^8.0.0", + "@babel/helper-validator-identifier": "^8.0.0" + } + }, + "js-tokens": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-10.0.0.tgz", + "integrity": "sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==", + "dev": true + } } }, "@babel/generator": { - "version": "7.29.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", - "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-8.0.0.tgz", + "integrity": "sha512-NT9NrVwJsbSV6Y2FSstWa71EETOnzrjkL5/wX3D2mYHtKM+qvqB1DvR4D0Setb/gDBsHzRICifwEWMO8CnTF6g==", "dev": true, "requires": { - "@babel/parser": "^7.29.0", - "@babel/types": "^7.29.0", + "@babel/parser": "^8.0.0", + "@babel/types": "^8.0.0", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", + "@types/jsesc": "^2.5.0", "jsesc": "^3.0.2" + }, + "dependencies": { + "@babel/helper-string-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0.tgz", + "integrity": "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0.tgz", + "integrity": "sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==", + "dev": true + }, + "@babel/parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-8.0.0.tgz", + "integrity": "sha512-aLxAE+imI9bCcyaPrUDjBv3uSkWieifjLe0kuFOZF0zli0L6GCsTmsePnTr55adbIAgYz2zhN1vnFimCBUYcRQ==", + "dev": true, + "requires": { + "@babel/types": "^8.0.0" + } + }, + "@babel/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.0.tgz", + "integrity": "sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^8.0.0", + "@babel/helper-validator-identifier": "^8.0.0" + } + } } }, "@babel/helper-annotate-as-pure": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", - "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", - "dev": true, - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", - "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-8.0.0.tgz", + "integrity": "sha512-NSpMkMsvvZqzThJ0p1B02cbtA2ObEyfBvq950bmNkyxsxvcxwhvvCB036rKhlEnuBBo30bOrk13u3FzlKSoRrw==", "dev": true, "requires": { - "@babel/types": "^7.22.15" + "@babel/types": "^8.0.0" + }, + "dependencies": { + "@babel/helper-string-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0.tgz", + "integrity": "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0.tgz", + "integrity": "sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==", + "dev": true + }, + "@babel/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.0.tgz", + "integrity": "sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^8.0.0", + "@babel/helper-validator-identifier": "^8.0.0" + } + } } }, "@babel/helper-compilation-targets": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", - "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-8.0.0.tgz", + "integrity": "sha512-JwculLABZvyPvyLBpwU/E/IbH2uM3mnxNtIJpxnIfb24y1PrdVxK5Dqjle4DpgqpGRnwgC7G8IkzPdSXZrO1Ew==", "dev": true, "requires": { - "@babel/compat-data": "^7.25.2", - "@babel/helper-validator-option": "^7.24.8", - "browserslist": "^4.23.1", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" + "@babel/compat-data": "^8.0.0", + "@babel/helper-validator-option": "^8.0.0", + "browserslist": "^4.24.0", + "lru-cache": "^11.0.0", + "semver": "^7.7.3" } }, "@babel/helper-create-class-features-plugin": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.1.tgz", - "integrity": "sha512-1yJa9dX9g//V6fDebXoEfEsxkZHk3Hcbm+zLhyu6qVgYFLvmTALTeV+jNU9e5RnYtioBrGEOdoI2joMSNQ/+aA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-8.0.1.tgz", + "integrity": "sha512-++t3ZktzlLmASAxIlxeXQK9Z2YwUafYGYcvGBFevqOqt16HozVHStUoQvWD09fzAZOb/uJGpUTBuGK41AJAuOA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-member-expression-to-functions": "^7.23.0", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.24.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "semver": "^6.3.1" + "@babel/helper-annotate-as-pure": "^8.0.0", + "@babel/helper-member-expression-to-functions": "^8.0.0", + "@babel/helper-optimise-call-expression": "^8.0.0", + "@babel/helper-replace-supers": "^8.0.1", + "@babel/helper-skip-transparent-expression-wrappers": "^8.0.0", + "@babel/traverse": "^8.0.0", + "semver": "^7.7.3" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", - "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-8.0.1.tgz", + "integrity": "sha512-PydTbcVTiIfVweHMeY1u3MslaD/ZzvnaTNhJp+7ghofelLWshF66Ckc/ZsjStfvRQIKQ4uVG0yEJucyDtyrWgw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "regexpu-core": "^5.3.1", - "semver": "^6.3.1" + "@babel/helper-annotate-as-pure": "^8.0.0", + "regexpu-core": "^6.3.1", + "semver": "^7.7.3" } }, "@babel/helper-define-polyfill-provider": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.1.tgz", - "integrity": "sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" - } - }, - "@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true - }, - "@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "version": "1.0.0-rc.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-1.0.0-rc.2.tgz", + "integrity": "sha512-AWy1lGqBObYp6gYE7TCVnjmCMstbTLEVevkzw/wHjD43XZ8HqOOe+PAg2zjROFl9qEjF6LH+QLxSrXGuQqLwBA==", "dev": true, "requires": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" + "@babel/helper-compilation-targets": "^8.0.0-rc.3 <8.0.0", + "@babel/helper-plugin-utils": "^8.0.0-rc.3 <8.0.0", + "lodash.debounce": "^4.0.8" + }, + "dependencies": { + "@babel/helper-compilation-targets": { + "version": "8.0.0-rc.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-8.0.0-rc.6.tgz", + "integrity": "sha512-jqQD45/yUSy63U8zs9hE5FMXS8J1TLAI/NTMx76C6xWO021e13gJACQvuGmEF7syloC39LkkKwhqtAbMku1rwg==", + "dev": true, + "requires": { + "@babel/compat-data": "^8.0.0-rc.6", + "@babel/helper-validator-option": "^8.0.0-rc.6", + "browserslist": "^4.24.0", + "lru-cache": "^7.14.1", + "semver": "^7.7.3" + } + }, + "@babel/helper-plugin-utils": { + "version": "8.0.0-rc.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-8.0.0-rc.6.tgz", + "integrity": "sha512-sLAjvuIcjzUQJR+CoHwU0JA4i706o71bCJtF+W9sc4KuHK3LCIJCjbKRuzbVn1eubUc66uAEZdBNWSqhLpwp2g==", + "dev": true, + "requires": {} + }, + "lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true + } } }, "@babel/helper-globals": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", - "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-8.0.0.tgz", + "integrity": "sha512-lLozHOM6sWWlxNo8CYqHy4MBZeTvHXNgVPBfPOGsjPKUzHC2Az9QwB6gxdQmpwHl6GlQtbGgS+lj5887guDiLw==", "dev": true }, "@babel/helper-member-expression-to-functions": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", - "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-8.0.0.tgz", + "integrity": "sha512-xkXrMbtk87Gk7+oKBVmBc6EORg/Qwx++AHESldmHkpvG8wgccdhJJFwrzqlF382Fk8wfXhJHWE/g/43QvEGNPQ==", "dev": true, "requires": { - "@babel/types": "^7.23.0" + "@babel/traverse": "^8.0.0", + "@babel/types": "^8.0.0" + }, + "dependencies": { + "@babel/helper-string-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0.tgz", + "integrity": "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0.tgz", + "integrity": "sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==", + "dev": true + }, + "@babel/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.0.tgz", + "integrity": "sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^8.0.0", + "@babel/helper-validator-identifier": "^8.0.0" + } + } } }, "@babel/helper-module-imports": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", - "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-8.0.0.tgz", + "integrity": "sha512-NZ7mSS93o4ndX4KrbD7W8Sf3QT8Qe24PrnFyUcuOPDzK6faqDFKjY9RG7he7+I7FdiQ4llpnosFqzrXa+Vy3Ew==", "dev": true, "requires": { - "@babel/traverse": "^7.28.6", - "@babel/types": "^7.28.6" + "@babel/traverse": "^8.0.0", + "@babel/types": "^8.0.0" + }, + "dependencies": { + "@babel/helper-string-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0.tgz", + "integrity": "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0.tgz", + "integrity": "sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==", + "dev": true + }, + "@babel/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.0.tgz", + "integrity": "sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^8.0.0", + "@babel/helper-validator-identifier": "^8.0.0" + } + } } }, "@babel/helper-module-transforms": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", - "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-8.0.1.tgz", + "integrity": "sha512-UgAhl1kqiW5ciE0yCXqqvnb4H2n3IELJ7lIIQRezwDPilPEZX5i+Rvbja9MFTkwUn2biEiSMeV31aUzR4Lwakw==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.28.6", - "@babel/helper-validator-identifier": "^7.28.5", - "@babel/traverse": "^7.28.6" + "@babel/helper-module-imports": "^8.0.0", + "@babel/helper-validator-identifier": "^8.0.0", + "@babel/traverse": "^8.0.0" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0.tgz", + "integrity": "sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==", + "dev": true + } } }, "@babel/helper-optimise-call-expression": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", - "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-8.0.0.tgz", + "integrity": "sha512-3W6satvtPuCUkUx63S2jMoW9EQNYkADgs1HTfufmL7gCmAulHMKupA/12WNz4A0GMMFn/YnWWwqOT9IZrJHQjg==", "dev": true, "requires": { - "@babel/types": "^7.22.5" + "@babel/types": "^8.0.0" + }, + "dependencies": { + "@babel/helper-string-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0.tgz", + "integrity": "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0.tgz", + "integrity": "sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==", + "dev": true + }, + "@babel/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.0.tgz", + "integrity": "sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^8.0.0", + "@babel/helper-validator-identifier": "^8.0.0" + } + } } }, "@babel/helper-plugin-utils": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", - "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", - "dev": true + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-8.0.1.tgz", + "integrity": "sha512-3PKFgjTyPlhFhorfP+SjKQxLViIL++zWjFOO4hGriYU+Bsm983DxEM1JmDRJVWXV0O9npu+xXRqz7Pbd3mh70g==", + "dev": true, + "requires": {} }, "@babel/helper-remap-async-to-generator": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", - "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-8.0.1.tgz", + "integrity": "sha512-baAKuLEMmu6BCSY3tuiU7qglM1qOZt6F1SrFScA241oNqksxkxfEZEKztlGRmoVns9AQ5UgArH7RsUEjxWnzgQ==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-wrap-function": "^7.22.20" + "@babel/helper-annotate-as-pure": "^8.0.0", + "@babel/helper-wrap-function": "^8.0.0", + "@babel/traverse": "^8.0.0" } }, "@babel/helper-replace-supers": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz", - "integrity": "sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-member-expression-to-functions": "^7.23.0", - "@babel/helper-optimise-call-expression": "^7.22.5" - } - }, - "@babel/helper-simple-access": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", - "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-8.0.1.tgz", + "integrity": "sha512-B1SZADIcy3tmH8CmWvj4SHi/oAPom4UL3uknTc2QRNsPVLFk/sPnZvQL/8kj7Y5omvjMqie0vklvs6XM4OLW5Q==", "dev": true, "requires": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/helper-member-expression-to-functions": "^8.0.0", + "@babel/helper-optimise-call-expression": "^8.0.0", + "@babel/traverse": "^8.0.0" } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", - "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-8.0.0.tgz", + "integrity": "sha512-xmCA9kP3IhySsqhzwIdWGlDN/1A4cCKNBO/uwZx/3YzmDoMePwno2Q5/Bq0q+tYaKbeF940YiKV/kaW8Mzvpjw==", "dev": true, "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, - "requires": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^8.0.0", + "@babel/types": "^8.0.0" + }, + "dependencies": { + "@babel/helper-string-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0.tgz", + "integrity": "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0.tgz", + "integrity": "sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==", + "dev": true + }, + "@babel/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.0.tgz", + "integrity": "sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^8.0.0", + "@babel/helper-validator-identifier": "^8.0.0" + } + } } }, "@babel/helper-string-parser": { @@ -7329,810 +7852,782 @@ "dev": true }, "@babel/helper-validator-option": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", - "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", - "dev": true - }, - "@babel/helper-wrap-function": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", - "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.22.5", - "@babel/template": "^7.22.15", - "@babel/types": "^7.22.19" - } - }, - "@babel/helpers": { - "version": "7.29.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", - "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", - "dev": true, - "requires": { - "@babel/template": "^7.28.6", - "@babel/types": "^7.29.0" - } - }, - "@babel/parser": { - "version": "7.29.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", - "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", - "dev": true, - "requires": { - "@babel/types": "^7.29.0" - } - }, - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz", - "integrity": "sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.24.0" - } - }, - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.1.tgz", - "integrity": "sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.24.1" - } - }, - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.1.tgz", - "integrity": "sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.24.0" - } - }, - "@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0-placeholder-for-preset-env.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", - "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", - "dev": true, - "requires": {} - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-syntax-import-assertions": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz", - "integrity": "sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.24.0" - } - }, - "@babel/plugin-syntax-import-attributes": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.1.tgz", - "integrity": "sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.24.0" - } - }, - "@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-8.0.0.tgz", + "integrity": "sha512-U4Dybxh4WESWHt5XhBeExi4DrY0/DNK1aHpQbsrQXCUbFHuMweT0TpLEWKvaraV2Y6fS+ZXunsZ8zIuZIgvF2Q==", + "dev": true }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "@babel/helper-wrap-function": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-8.0.0.tgz", + "integrity": "sha512-Qpm8+wi5xfDkBfollanwriCcKniFfBmMmaKB01GVM6VGzKXo1fdxosZp04qEr5HM+LKhwr3hG1yRy8+ORsficA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/template": "^8.0.0", + "@babel/traverse": "^8.0.0", + "@babel/types": "^8.0.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-8.0.0.tgz", + "integrity": "sha512-dYYg153EyN2Ekbqw2zAsbd6/JR+9N2SEoC7YV2GyyqMM7x9bLDTjBD6XBhSMLH0wtIVyJj03jWNriQhaN+eoCw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^8.0.0", + "js-tokens": "^10.0.0" + } + }, + "@babel/helper-string-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0.tgz", + "integrity": "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0.tgz", + "integrity": "sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==", + "dev": true + }, + "@babel/parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-8.0.0.tgz", + "integrity": "sha512-aLxAE+imI9bCcyaPrUDjBv3uSkWieifjLe0kuFOZF0zli0L6GCsTmsePnTr55adbIAgYz2zhN1vnFimCBUYcRQ==", + "dev": true, + "requires": { + "@babel/types": "^8.0.0" + } + }, + "@babel/template": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-8.0.0.tgz", + "integrity": "sha512-eAD0QW/AlbamBbw0FeGiwasbCVPq5ncW0HNVyLP3B9czqLyh4gvw+5JTSNt6le9+ziAU7mqDZsKTHf3jTb4chQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^8.0.0", + "@babel/parser": "^8.0.0", + "@babel/types": "^8.0.0" + } + }, + "@babel/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.0.tgz", + "integrity": "sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^8.0.0", + "@babel/helper-validator-identifier": "^8.0.0" + } + }, + "js-tokens": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-10.0.0.tgz", + "integrity": "sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==", + "dev": true + } } }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "@babel/helpers": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-8.0.0.tgz", + "integrity": "sha512-wfbi91pM3py96oIiJEz7qIpyXDytgr9zQC1HEWwlGNVRAEmItuU/0a41ZUKu1sJGyhhOIpc4t5vk4PYzt8wpsg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/template": "^8.0.0", + "@babel/types": "^8.0.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-8.0.0.tgz", + "integrity": "sha512-dYYg153EyN2Ekbqw2zAsbd6/JR+9N2SEoC7YV2GyyqMM7x9bLDTjBD6XBhSMLH0wtIVyJj03jWNriQhaN+eoCw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^8.0.0", + "js-tokens": "^10.0.0" + } + }, + "@babel/helper-string-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0.tgz", + "integrity": "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0.tgz", + "integrity": "sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==", + "dev": true + }, + "@babel/parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-8.0.0.tgz", + "integrity": "sha512-aLxAE+imI9bCcyaPrUDjBv3uSkWieifjLe0kuFOZF0zli0L6GCsTmsePnTr55adbIAgYz2zhN1vnFimCBUYcRQ==", + "dev": true, + "requires": { + "@babel/types": "^8.0.0" + } + }, + "@babel/template": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-8.0.0.tgz", + "integrity": "sha512-eAD0QW/AlbamBbw0FeGiwasbCVPq5ncW0HNVyLP3B9czqLyh4gvw+5JTSNt6le9+ziAU7mqDZsKTHf3jTb4chQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^8.0.0", + "@babel/parser": "^8.0.0", + "@babel/types": "^8.0.0" + } + }, + "@babel/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.0.tgz", + "integrity": "sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^8.0.0", + "@babel/helper-validator-identifier": "^8.0.0" + } + }, + "js-tokens": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-10.0.0.tgz", + "integrity": "sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==", + "dev": true + } } }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-8.0.1.tgz", + "integrity": "sha512-Ytgjjne4RnG3Oig7ik+NfY4ebRY30BPptVkkyu1f72eINJXRM3/bkU++tIc5aPvyLmo4KH20avq0xJ2o+9aEnw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "^8.0.1" } }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-8.0.1.tgz", + "integrity": "sha512-X7pAMBhuKluA7UfwZNvKN0XVVu/AGeo84Z75eJl85rcb8J2aBzLK92btahM1X5h0oi0QIrbe0qIMA/0+4Buk7w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "^8.0.1" } }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-8.0.1.tgz", + "integrity": "sha512-DJviKTxYfH0hFwnMiW4dnPyMGzS3Hrr4zUfXl1zwQ0QiGlGlNYklLoPSYEQr8S7nau0/K7NdQjTh0qbYuyFjCA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "^8.0.1" } }, - "@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "@babel/plugin-bugfix-safari-rest-destructuring-rhs-array": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array/-/plugin-bugfix-safari-rest-destructuring-rhs-array-8.0.1.tgz", + "integrity": "sha512-DmR/N+B9+4PbURFj4+zdnWj49/PFAnK2bn8+E4ZAmwn3J5QCxnbG7Ep6aRfz9M8Aw+rBro0kIJQycvzFpl4buQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/helper-skip-transparent-expression-wrappers": "^8.0.0" } }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-8.0.1.tgz", + "integrity": "sha512-x8bi0LFVD2xkULjfNn+hCMg16yAFHAM9fS/ThSFeYBi+0MP9K6qcY2BZb4urUwC7PYtEy5wPe6TKjOEjXrCGFA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/helper-skip-transparent-expression-wrappers": "^8.0.0", + "@babel/plugin-transform-optional-chaining": "^8.0.1" } }, - "@babel/plugin-syntax-unicode-sets-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", - "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-8.0.1.tgz", + "integrity": "sha512-P8+RN2n7ts2s1vnE+lXdHYf+dhnmcGSen/kWzBsVluT9Sey5AqmcRXYWlHqgQxaNlKTD5YMa1tf5z4d1v8W88w==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz", - "integrity": "sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-8.0.1.tgz", + "integrity": "sha512-o/gr7kRlq3PKLLuYth4udOsrC7geBerti+QtwPeyxMOsEQO1d8kDHqk9r2PtMx2y9i8FG7tzyTerfv1yMLSMsQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-async-generator-functions": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.1.tgz", - "integrity": "sha512-OTkLJM0OtmzcpOgF7MREERUCdCnCBtBsq3vVFbuq/RKMK0/jdYqdMexWi3zNs7Nzd95ase65MbTGrpFJflOb6A==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-8.0.1.tgz", + "integrity": "sha512-kqnSMF1YHBzuiQrl68675i5Ma1oljvo+SJsNEZFZVBu5BUrVIZm9KId3ui2PdtLK2sv2zM8sJnjPDfgLxQlEqQ==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-remap-async-to-generator": "^7.22.20", - "@babel/plugin-syntax-async-generators": "^7.8.4" + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/helper-remap-async-to-generator": "^8.0.1", + "@babel/traverse": "^8.0.0" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.1.tgz", - "integrity": "sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-8.0.1.tgz", + "integrity": "sha512-e1jmmEU4p2Lx64sA1+EF8e8/RxPuegzbXcEbmFp5alDyLE+f2ViUpZ77bRWMXzihTwgVVmn/TOpqDbAuS5g1Ew==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-remap-async-to-generator": "^7.22.20" + "@babel/helper-module-imports": "^8.0.0", + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/helper-remap-async-to-generator": "^8.0.1" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.1.tgz", - "integrity": "sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-8.0.1.tgz", + "integrity": "sha512-0V97/gcf7LIgPieEiK1YT0eXa18XJFSLOTZjzEZhA9SJIqZhD/IwGUrCitBzXSmnGCP7hchwC6svHtJ/Eidcpg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.1.tgz", - "integrity": "sha512-h71T2QQvDgM2SmT29UYU6ozjMlAt7s7CSs5Hvy8f8cf/GM/Z4a2zMfN+fjVGaieeCrXR3EdQl6C4gQG+OgmbKw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-8.0.1.tgz", + "integrity": "sha512-HxiQvKsSCs2jOmMhjDrooHaZYOy6W8bqwXp/zjdgPjsNrda6tK9/CH3a/cVIeg6ge3hSS02ALqvqgIo4rTsuSg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-class-properties": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.1.tgz", - "integrity": "sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-8.0.1.tgz", + "integrity": "sha512-tORnYiVhIHnKj90TgbSZXrO24f9oEpA6MgFxpIDSKKlHv7AzBIRhkMlYevanueLNYaQXqZWarfCgXM4bWTfNiw==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-class-features-plugin": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-class-static-block": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.1.tgz", - "integrity": "sha512-FUHlKCn6J3ERiu8Dv+4eoz7w8+kFLSyeVG4vDAikwADGjUCoHw/JHokyGtr8OR4UjpwPVivyF+h8Q5iv/JmrtA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-8.0.1.tgz", + "integrity": "sha512-NEVK+L0Le8h8tJ+IK0CGS5y9Yi1ZHxLj6M5PeanhMFuq9aSo0XI+Wtmbuyop6fTNukOm7ORNntf/kwid891vqQ==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-class-static-block": "^7.14.5" + "@babel/helper-create-class-features-plugin": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-classes": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.1.tgz", - "integrity": "sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-8.0.1.tgz", + "integrity": "sha512-phwyCES8kIMAdVOFw25ztmgAvkl2G+TvUv7azUYyrlR1Qoo3eLJC/MU3MGUKFZ4BWtsJ1NTJM1lKRLzKbswg7w==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-replace-supers": "^7.24.1", - "@babel/helper-split-export-declaration": "^7.22.6", - "globals": "^11.1.0" + "@babel/helper-annotate-as-pure": "^8.0.0", + "@babel/helper-compilation-targets": "^8.0.0", + "@babel/helper-globals": "^8.0.0", + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/helper-replace-supers": "^8.0.1", + "@babel/traverse": "^8.0.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.1.tgz", - "integrity": "sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-8.0.1.tgz", + "integrity": "sha512-i4l3OGLO8DUDcwdnyraOvILbhqdUf4QgfzhVxSOSzRy49XKXrY7pwaSg9gDSKmhZfNPrEMciBSJSciQh/CjB1A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/template": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-destructuring": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.1.tgz", - "integrity": "sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-8.0.1.tgz", + "integrity": "sha512-RtR8uLDl0QcCmqMNIkM8gmDeYZ3rS0ZH+sa+I6sfc09yFoqfp9AEPgBstq9KyfVb0lFCVSRFfJXCI70FIl5ccw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.1.tgz", - "integrity": "sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-8.0.1.tgz", + "integrity": "sha512-czOUoSaZljJ92yu+bYlXqb/UBN8K9daNCob/B6/7nthSvfGP6YhCnfqD64XWfyb2dN4ypxALNplApoJrsMd4fw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-regexp-features-plugin": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.1.tgz", - "integrity": "sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-8.0.1.tgz", + "integrity": "sha512-kNnVLkxFUEcTtCyB5PFVQ5Xoy88Bk1lU/ZgDu97CW8eNhRH2Wsiy8Sq5l5dFnwtIUYjzsXHU77jUy1W5AtGSIw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^8.0.1" + } + }, + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-8.0.1.tgz", + "integrity": "sha512-Tv43P47o6fuHgBL7HLHQg3WKXohW9CEUGjLtnCDW27yJLK0zKUdTTqREbZbycNHA83hewMjde5tF6ekrHu9bAA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-regexp-features-plugin": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-dynamic-import": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.1.tgz", - "integrity": "sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-8.0.1.tgz", + "integrity": "sha512-AS9GlgKc43tJNRu7yOvLaTko4qmdOb+8M69uNS8i421WLO20eVez7LdG5khKdi8E0LIQpYzzzdGIrdXWnO753g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^8.0.1" + } + }, + "@babel/plugin-transform-explicit-resource-management": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-8.0.1.tgz", + "integrity": "sha512-VzDIYwBlLCpV6mJfloRdJm8HmYnMqs7O+bGha8yfg2kP7jAdxeCw6yZBVBeaKKQUThtSU52iy+3lB7DhYsbOBA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/plugin-transform-destructuring": "^8.0.1" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.1.tgz", - "integrity": "sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-8.0.1.tgz", + "integrity": "sha512-DsZvUUklUmDQ7d2vp+VjqgUWD51mGxhZZ1FPdPP9Hcj0vsgGUKX+zEBGp/vzB1O5PZUxWT/Euq5fu39M9dm9wg==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-export-namespace-from": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.1.tgz", - "integrity": "sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-8.0.1.tgz", + "integrity": "sha512-bFzznm46bvWGaTYKle3iolbBJ+oPBfUjwCPesxlFE3SQ7DaY9EHf/8Y5ZzrodKJi8JDdcAyaVWaDUSVyhULh0g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-for-of": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.1.tgz", - "integrity": "sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-8.0.1.tgz", + "integrity": "sha512-rpeXtgELjpIBQH/+YmyFlD9timPEVCyqY+TNednzoeoTYvXSBEeUvYnYE+BK8rB8m6hHiNK7aL9QWKhGifEJCw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/helper-skip-transparent-expression-wrappers": "^8.0.0" } }, "@babel/plugin-transform-function-name": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.1.tgz", - "integrity": "sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-8.0.1.tgz", + "integrity": "sha512-H1L/JfPf3CqmubuaiZaquXKQ8MRs4YWSsgRllkTviM8TafcCNnlvc4/fJZ3rXP8HmFM+/Bg+TlsPehUI9BtDFA==", "dev": true, "requires": { - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-compilation-targets": "^8.0.0", + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-json-strings": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.1.tgz", - "integrity": "sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-8.0.1.tgz", + "integrity": "sha512-Mowp8X0J6p7ZehLU82B5e65te2uuSeDHyxrEROwEAS2VKXNXssfw5ZMqhY7k9iXTsOv1Xs/49G3lDCj9Vvw8qQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-json-strings": "^7.8.3" + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-literals": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.1.tgz", - "integrity": "sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-8.0.1.tgz", + "integrity": "sha512-ai7kfPRcfyUV1EszXoF1PvL3IuJoCuH08WSEPoRcJTWfZZ55VL/rcfvbVY16QLA3jjbzzSneQSoCtD3L6OyUjw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-logical-assignment-operators": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.1.tgz", - "integrity": "sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-8.0.1.tgz", + "integrity": "sha512-Emvtr5zkEGyCNAmt+qKD5EUh8G0RbxV9EZWrDdX0LuVy5tBq1B3fOIslvVF9aCJmpnwS/AvAT53b9LxAZyXlng==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.1.tgz", - "integrity": "sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-8.0.1.tgz", + "integrity": "sha512-3Axi9abnyGsm/hh6DsKPZ1Cr9fTtKqS7w0Ig5g12mU269YclpH8pV3xMln2vPLexXgUp6S6L+I06d9/YOLfRKA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.1.tgz", - "integrity": "sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-8.0.1.tgz", + "integrity": "sha512-FDdhET8y1YFDNRuoynqSf23WTzbBBpbIB2oRrlFX7YYm9uWtFvJDSD1r/epBSjfPkOjeaaLgRW9xNnt3JGx46A==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-module-transforms": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz", - "integrity": "sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-8.0.1.tgz", + "integrity": "sha512-PMuzulWrrzFNmY3lXSk/tV9NRb7y0eZZLJY4UEo2TKszroxvUZHAPPi+T9FDyrQhod+TQA+t+8/QYaaMpiEuhA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-simple-access": "^7.22.5" + "@babel/helper-module-transforms": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.29.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.4.tgz", - "integrity": "sha512-N7QmZ0xRZfjHOfZeQLJjwgX2zS9pdGHSVl/cjSGlo4dXMqvurfxXDMKY4RqEKzPozV78VMcd0lxyG13mlbKc4w==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-8.0.1.tgz", + "integrity": "sha512-0NEHanXmnFEnfT2dLKTXnu7m8GXFsnxRgteBC2aH21hYMBwAgxu5dcTdi/Eg+ToI1HbZe0CHwz4XRLgRNQhYoQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/helper-validator-identifier": "^7.28.5", - "@babel/traverse": "^7.29.0" + "@babel/helper-module-transforms": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/helper-validator-identifier": "^8.0.0" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0.tgz", + "integrity": "sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==", + "dev": true + } } }, "@babel/plugin-transform-modules-umd": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.1.tgz", - "integrity": "sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-8.0.1.tgz", + "integrity": "sha512-XKTa2J2MdkmbVEeChq9f7Or0VYcsF0NyVBgytRyeN9F+J+ETAB2SHhfkG4toz/ssuU0i+h/QgJ6ddo5YakSQcA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-module-transforms": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", - "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-8.0.1.tgz", + "integrity": "sha512-zCHu+Jr2gTdJE48lN9SV/kXueCW2M79mKtKJc/ttfzzr/jvgdQdCd17RADMqFRQc/25MLxdtjTmlD0HSAMOlIQ==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-new-target": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.1.tgz", - "integrity": "sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-8.0.1.tgz", + "integrity": "sha512-QSQxVg1x4PuOuhWUs4Y9u+x9Y+ER8z6G3tC+bDLBzvoOrNLJrEBQLRnwrTP8e5klihAw6Z+e9X5RjdAKcAGapA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.1.tgz", - "integrity": "sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-8.0.1.tgz", + "integrity": "sha512-AgCJAmQLF7+PtsK79wJqr4xJ2StHCXlz7JL5CVFP4HejJx25Tk6yl1ZrXvi0cKh3VGDVnfVxefxnrpsBirgpyQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-numeric-separator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.1.tgz", - "integrity": "sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-8.0.1.tgz", + "integrity": "sha512-it2DmUyLIA1GQUXlFDEnI+/G89mTgxndnAiZYpW8xYR6LboblfirMqiWJeTna5uypQJg7viTT4D1iEURRtFcfw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-object-rest-spread": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.1.tgz", - "integrity": "sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-8.0.1.tgz", + "integrity": "sha512-VmxkDu6bBdbxRzqn6E93hYucug4OVa6svSO19W//vVzNUGAmQzk3QRyHyyEtfcjSLR3NWfRsWwVM9zExLmd+2w==", "dev": true, "requires": { - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.24.1" + "@babel/helper-compilation-targets": "^8.0.0", + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/plugin-transform-destructuring": "^8.0.1", + "@babel/plugin-transform-parameters": "^8.0.1" } }, "@babel/plugin-transform-object-super": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.1.tgz", - "integrity": "sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-8.0.1.tgz", + "integrity": "sha512-fDkPXRTRKGm25bAq01q82UM4ypPqdVXCwphUUm4t1dL01fGIG0v8KRvT+4BjhMAtRxtPuI34t5Vs7yjRgs3ZgQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-replace-supers": "^7.24.1" + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/helper-replace-supers": "^8.0.1" } }, "@babel/plugin-transform-optional-catch-binding": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.1.tgz", - "integrity": "sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-8.0.1.tgz", + "integrity": "sha512-b2OQ74uGliyATcasTjxGy2O/86UI/n+EN4juB4EMfEwTi9j9uq70PuP0L8fW77vfRY66gO/YoTo/WbIdQ/Si1g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-optional-chaining": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.1.tgz", - "integrity": "sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-8.0.1.tgz", + "integrity": "sha512-WtRS1c94lZGpGHxYLXMEWeoMVcuv8nkiyr8BTs6OYZv7N3Y9xVE8nbdFIl4lDJH6aH8/pLhqAQOL69d/WI9WdA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/helper-skip-transparent-expression-wrappers": "^8.0.0" } }, "@babel/plugin-transform-parameters": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.1.tgz", - "integrity": "sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-8.0.1.tgz", + "integrity": "sha512-IIwRqroW0CYQwR6+3pnmu27z+H98poScWdnov8z6osumMeEsFxAFBBsDS2CFk2jFpPlGqVr89jK/HXO6i5DzxQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-private-methods": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.1.tgz", - "integrity": "sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-8.0.1.tgz", + "integrity": "sha512-TrFCGcXaVDh6S5IRhmLSRTY9H80VTCMQWnZtzBRg4RWg3KCLmdmsmj4M15kZAPZfoPkWL/SJb4em3Py/vOiX8g==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-class-features-plugin": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-private-property-in-object": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.1.tgz", - "integrity": "sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-8.0.1.tgz", + "integrity": "sha512-e+yfOqSYBZaf3PARpiQkjZrpWYgmcFLhK+1tevh2CpHR1O9/36IdyPnAZusESX5nzVV/XZTDAtQBRLa8HPT5Dw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + "@babel/helper-annotate-as-pure": "^8.0.0", + "@babel/helper-create-class-features-plugin": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-property-literals": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.1.tgz", - "integrity": "sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-8.0.1.tgz", + "integrity": "sha512-Z/qx4cxUtYR1nt7XWRutObPxDks98fEYsjWbVeKEqZH6y3AGknmgzCqmHf2FHWZCl1DfoPeuJY+3hZ+35D+2tg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-regenerator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.1.tgz", - "integrity": "sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-8.0.1.tgz", + "integrity": "sha512-1WjCi/45Mn5e0uvz26FdvRe6bTAvN6WAtkHgIjl0w/LkBvrv4Y5bDR+8YY72r7cefXBfwYUXIHSoxQkrIfnjXQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^8.0.1" + } + }, + "@babel/plugin-transform-regexp-modifiers": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-8.0.1.tgz", + "integrity": "sha512-02ITRDBesPdTYU0oShAzERwEPzozOUQSXlz3qrt8JGuhalBJQv9z5NjgHJPC9sS3Fsam8gDtfAEpBnqZwUIdjQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0", - "regenerator-transform": "^0.15.2" + "@babel/helper-create-regexp-features-plugin": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.1.tgz", - "integrity": "sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-8.0.1.tgz", + "integrity": "sha512-+aykZi7ZP3U84veqfJXm3HhPZGddWFi64g7jr0ni6tb1zel+1ey+SL+IRKPoZXFyFqvYEsoqrmx4PyEJRlHl/Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz", - "integrity": "sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-8.0.1.tgz", + "integrity": "sha512-JddANd9yPVH8dYgVoNkqAH5BftnsDxFpG51Zas7sc6F3poz5QWcejHNGO8a/57IX5ByjGSzEmYk9Z7ZMa5MWaw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-spread": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.1.tgz", - "integrity": "sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-8.0.1.tgz", + "integrity": "sha512-O9Bw9FyxlSw1SlMg3S82/GKNZ0x77RPbHezotEy1JTlIM/vk6WO8jW1iF+iTiKLOXNvi+b+LZ9t77Gi+Q0FhGg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/helper-skip-transparent-expression-wrappers": "^8.0.0" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.1.tgz", - "integrity": "sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-8.0.1.tgz", + "integrity": "sha512-IsVP6WrZZQdaG2zLmeKwWiI+ua2NB5L1+f77C2/8z2NCDz7uxlIA/lnwocYOJk9PXcOC2sZgRls3LN4XpNduzQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-template-literals": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.1.tgz", - "integrity": "sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-8.0.1.tgz", + "integrity": "sha512-JXvtj5+BJA9Qv3prDzW2z2DkGTJNmG0BObTdUD03STiu1Jr4fNQkQy3hYZgPL46a2RjcuhwBMYf49BOuJ98gnA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.1.tgz", - "integrity": "sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-8.0.1.tgz", + "integrity": "sha512-+wJoxgxP2gtey0UMUOMhzMMji2XHO/Uu6MXUh/r5Yhc2jngKzK/wFxY2WNe4UCaRcMvCb4gcnB8wIgFXJsocXg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.1.tgz", - "integrity": "sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-8.0.1.tgz", + "integrity": "sha512-TAXJepIJ6vZphytTwcf+LuXi2M2ZWI43VCqNw+1ZZLPP/38Z1A8j4Mahvg8kqDgMOSM/cakk+hedTJCiw3jQuQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-unicode-property-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.1.tgz", - "integrity": "sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-8.0.1.tgz", + "integrity": "sha512-zjBN9tSMSuomNDfurL69Gf7+v4D2t5uI1mSZaYJDo88SKpbduhCXqtxH7Tx66iCF6caWYwnBzSM0tnCozmQq5Q==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-regexp-features-plugin": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.1.tgz", - "integrity": "sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-8.0.1.tgz", + "integrity": "sha512-v0oO83cvT5lwbcIVRShpx4vaHD8AvM9IBowsQuTeP+kGmhh3recJQs33Bl6dlo3/2g9amlznLbFGn4VJbPCJqA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-regexp-features-plugin": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/plugin-transform-unicode-sets-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.1.tgz", - "integrity": "sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-8.0.1.tgz", + "integrity": "sha512-MlQeyS0K7gh0XNeLBMS/3Z07HjDOKhA7xm2L18GyxOXyiFHI9E+ZuQ4mFYmcLjluXsE/Wf6dABIqZvKpKw0Z3w==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-regexp-features-plugin": "^8.0.1", + "@babel/helper-plugin-utils": "^8.0.1" } }, "@babel/preset-env": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.1.tgz", - "integrity": "sha512-CwCMz1Z28UHLI2iE+cbnWT2epPMV9bzzoBGM6A3mOS22VQd/1TPoWItV7S7iL9TkPmPEf5L/QzurmztyyDN9FA==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.24.1", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-validator-option": "^7.23.5", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.1", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.1", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.1", - "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.24.1", - "@babel/plugin-syntax-import-attributes": "^7.24.1", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.24.1", - "@babel/plugin-transform-async-generator-functions": "^7.24.1", - "@babel/plugin-transform-async-to-generator": "^7.24.1", - "@babel/plugin-transform-block-scoped-functions": "^7.24.1", - "@babel/plugin-transform-block-scoping": "^7.24.1", - "@babel/plugin-transform-class-properties": "^7.24.1", - "@babel/plugin-transform-class-static-block": "^7.24.1", - "@babel/plugin-transform-classes": "^7.24.1", - "@babel/plugin-transform-computed-properties": "^7.24.1", - "@babel/plugin-transform-destructuring": "^7.24.1", - "@babel/plugin-transform-dotall-regex": "^7.24.1", - "@babel/plugin-transform-duplicate-keys": "^7.24.1", - "@babel/plugin-transform-dynamic-import": "^7.24.1", - "@babel/plugin-transform-exponentiation-operator": "^7.24.1", - "@babel/plugin-transform-export-namespace-from": "^7.24.1", - "@babel/plugin-transform-for-of": "^7.24.1", - "@babel/plugin-transform-function-name": "^7.24.1", - "@babel/plugin-transform-json-strings": "^7.24.1", - "@babel/plugin-transform-literals": "^7.24.1", - "@babel/plugin-transform-logical-assignment-operators": "^7.24.1", - "@babel/plugin-transform-member-expression-literals": "^7.24.1", - "@babel/plugin-transform-modules-amd": "^7.24.1", - "@babel/plugin-transform-modules-commonjs": "^7.24.1", - "@babel/plugin-transform-modules-systemjs": "^7.24.1", - "@babel/plugin-transform-modules-umd": "^7.24.1", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.24.1", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.1", - "@babel/plugin-transform-numeric-separator": "^7.24.1", - "@babel/plugin-transform-object-rest-spread": "^7.24.1", - "@babel/plugin-transform-object-super": "^7.24.1", - "@babel/plugin-transform-optional-catch-binding": "^7.24.1", - "@babel/plugin-transform-optional-chaining": "^7.24.1", - "@babel/plugin-transform-parameters": "^7.24.1", - "@babel/plugin-transform-private-methods": "^7.24.1", - "@babel/plugin-transform-private-property-in-object": "^7.24.1", - "@babel/plugin-transform-property-literals": "^7.24.1", - "@babel/plugin-transform-regenerator": "^7.24.1", - "@babel/plugin-transform-reserved-words": "^7.24.1", - "@babel/plugin-transform-shorthand-properties": "^7.24.1", - "@babel/plugin-transform-spread": "^7.24.1", - "@babel/plugin-transform-sticky-regex": "^7.24.1", - "@babel/plugin-transform-template-literals": "^7.24.1", - "@babel/plugin-transform-typeof-symbol": "^7.24.1", - "@babel/plugin-transform-unicode-escapes": "^7.24.1", - "@babel/plugin-transform-unicode-property-regex": "^7.24.1", - "@babel/plugin-transform-unicode-regex": "^7.24.1", - "@babel/plugin-transform-unicode-sets-regex": "^7.24.1", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-8.0.1.tgz", + "integrity": "sha512-tiwl69ZQGIbPif28GK8vI/Nm1nYdP+UHXWRnqXl0fjfBS7DWmAs2XvlpVkZyZjVVDxcprcbzCnN93SbuSgz8WQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^8.0.0", + "@babel/helper-compilation-targets": "^8.0.0", + "@babel/helper-plugin-utils": "^8.0.1", + "@babel/helper-validator-option": "^8.0.0", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^8.0.1", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^8.0.1", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^8.0.1", + "@babel/plugin-bugfix-safari-rest-destructuring-rhs-array": "^8.0.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^8.0.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^8.0.1", + "@babel/plugin-transform-arrow-functions": "^8.0.1", + "@babel/plugin-transform-async-generator-functions": "^8.0.1", + "@babel/plugin-transform-async-to-generator": "^8.0.1", + "@babel/plugin-transform-block-scoped-functions": "^8.0.1", + "@babel/plugin-transform-block-scoping": "^8.0.1", + "@babel/plugin-transform-class-properties": "^8.0.1", + "@babel/plugin-transform-class-static-block": "^8.0.1", + "@babel/plugin-transform-classes": "^8.0.1", + "@babel/plugin-transform-computed-properties": "^8.0.1", + "@babel/plugin-transform-destructuring": "^8.0.1", + "@babel/plugin-transform-dotall-regex": "^8.0.1", + "@babel/plugin-transform-duplicate-keys": "^8.0.1", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^8.0.1", + "@babel/plugin-transform-dynamic-import": "^8.0.1", + "@babel/plugin-transform-explicit-resource-management": "^8.0.1", + "@babel/plugin-transform-exponentiation-operator": "^8.0.1", + "@babel/plugin-transform-export-namespace-from": "^8.0.1", + "@babel/plugin-transform-for-of": "^8.0.1", + "@babel/plugin-transform-function-name": "^8.0.1", + "@babel/plugin-transform-json-strings": "^8.0.1", + "@babel/plugin-transform-literals": "^8.0.1", + "@babel/plugin-transform-logical-assignment-operators": "^8.0.1", + "@babel/plugin-transform-member-expression-literals": "^8.0.1", + "@babel/plugin-transform-modules-amd": "^8.0.1", + "@babel/plugin-transform-modules-commonjs": "8.0.1", + "@babel/plugin-transform-modules-systemjs": "^8.0.1", + "@babel/plugin-transform-modules-umd": "^8.0.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^8.0.1", + "@babel/plugin-transform-new-target": "^8.0.1", + "@babel/plugin-transform-nullish-coalescing-operator": "^8.0.1", + "@babel/plugin-transform-numeric-separator": "^8.0.1", + "@babel/plugin-transform-object-rest-spread": "^8.0.1", + "@babel/plugin-transform-object-super": "^8.0.1", + "@babel/plugin-transform-optional-catch-binding": "^8.0.1", + "@babel/plugin-transform-optional-chaining": "^8.0.1", + "@babel/plugin-transform-parameters": "^8.0.1", + "@babel/plugin-transform-private-methods": "^8.0.1", + "@babel/plugin-transform-private-property-in-object": "^8.0.1", + "@babel/plugin-transform-property-literals": "^8.0.1", + "@babel/plugin-transform-regenerator": "^8.0.1", + "@babel/plugin-transform-regexp-modifiers": "^8.0.1", + "@babel/plugin-transform-reserved-words": "^8.0.1", + "@babel/plugin-transform-shorthand-properties": "^8.0.1", + "@babel/plugin-transform-spread": "^8.0.1", + "@babel/plugin-transform-sticky-regex": "^8.0.1", + "@babel/plugin-transform-template-literals": "^8.0.1", + "@babel/plugin-transform-typeof-symbol": "^8.0.1", + "@babel/plugin-transform-unicode-escapes": "^8.0.1", + "@babel/plugin-transform-unicode-property-regex": "^8.0.1", + "@babel/plugin-transform-unicode-regex": "^8.0.1", + "@babel/plugin-transform-unicode-sets-regex": "^8.0.1", "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.10.1", - "babel-plugin-polyfill-regenerator": "^0.6.1", - "core-js-compat": "^3.31.0", - "semver": "^6.3.1" + "babel-plugin-polyfill-corejs3": "^1.0.0-rc.2", + "core-js-compat": "^3.48.0", + "semver": "^7.7.3" } }, "@babel/preset-modules": { @@ -8144,44 +8639,89 @@ "@babel/helper-plugin-utils": "^7.0.0", "@babel/types": "^7.4.4", "esutils": "^2.0.2" - } - }, - "@babel/regjsgen": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", - "dev": true - }, - "@babel/runtime": { - "version": "7.29.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.2.tgz", - "integrity": "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==", - "dev": true - }, - "@babel/template": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", - "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.28.6", - "@babel/parser": "^7.28.6", - "@babel/types": "^7.28.6" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz", + "integrity": "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==", + "dev": true + } } }, "@babel/traverse": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", - "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-8.0.0.tgz", + "integrity": "sha512-bxTj/W2VclGE6CctlfQOpxg8MPDzXArRqkOBePw8EHfebcjF7fETWSS3BriEECo+UiU/Yblq+xUtSImFu7cTbw==", "dev": true, "requires": { - "@babel/code-frame": "^7.29.0", - "@babel/generator": "^7.29.0", - "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.29.0", - "@babel/template": "^7.28.6", - "@babel/types": "^7.29.0", - "debug": "^4.3.1" + "@babel/code-frame": "^8.0.0", + "@babel/generator": "^8.0.0", + "@babel/helper-globals": "^8.0.0", + "@babel/parser": "^8.0.0", + "@babel/template": "^8.0.0", + "@babel/types": "^8.0.0", + "obug": "^2.1.1" + }, + "dependencies": { + "@babel/code-frame": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-8.0.0.tgz", + "integrity": "sha512-dYYg153EyN2Ekbqw2zAsbd6/JR+9N2SEoC7YV2GyyqMM7x9bLDTjBD6XBhSMLH0wtIVyJj03jWNriQhaN+eoCw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^8.0.0", + "js-tokens": "^10.0.0" + } + }, + "@babel/helper-string-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0.tgz", + "integrity": "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0.tgz", + "integrity": "sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==", + "dev": true + }, + "@babel/parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-8.0.0.tgz", + "integrity": "sha512-aLxAE+imI9bCcyaPrUDjBv3uSkWieifjLe0kuFOZF0zli0L6GCsTmsePnTr55adbIAgYz2zhN1vnFimCBUYcRQ==", + "dev": true, + "requires": { + "@babel/types": "^8.0.0" + } + }, + "@babel/template": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-8.0.0.tgz", + "integrity": "sha512-eAD0QW/AlbamBbw0FeGiwasbCVPq5ncW0HNVyLP3B9czqLyh4gvw+5JTSNt6le9+ziAU7mqDZsKTHf3jTb4chQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^8.0.0", + "@babel/parser": "^8.0.0", + "@babel/types": "^8.0.0" + } + }, + "@babel/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.0.tgz", + "integrity": "sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^8.0.0", + "@babel/helper-validator-identifier": "^8.0.0" + } + }, + "js-tokens": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-10.0.0.tgz", + "integrity": "sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==", + "dev": true + } } }, "@babel/types": { @@ -8293,6 +8833,18 @@ "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", "dev": true }, + "@types/gensync": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/gensync/-/gensync-1.0.5.tgz", + "integrity": "sha512-MbsRCT7mTikHwKZ0X+LVUTLRrZZRLipTuXEO9qOYO+zmjMVk81axyClMROf6uoPD9MRVu46bx8zoR0Ad9q3NAg==", + "dev": true + }, + "@types/jsesc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@types/jsesc/-/jsesc-2.5.1.tgz", + "integrity": "sha512-9VN+6yxLOPLOav+7PwjZbxiID2bVaeq0ED4qSQmdQTdjnXJSaCVKTR58t15oqH1H5t8Ng2ZX1SabJVoN9Q34bw==", + "dev": true + }, "@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -8620,43 +9172,61 @@ } }, "babel-loader": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", - "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", - "dev": true, - "requires": { - "find-cache-dir": "^4.0.0", - "schema-utils": "^4.0.0" - } - }, - "babel-plugin-polyfill-corejs2": { - "version": "0.4.10", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.10.tgz", - "integrity": "sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-10.1.1.tgz", + "integrity": "sha512-JwKSzk2kjIe7mgPK+/lyZ2QAaJcpahNAdM+hgR2HI8D0OJVkdj8Rl6J3kaLYki9pwF7P2iWnD8qVv80Lq1ABtg==", "dev": true, "requires": { - "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.6.1", - "semver": "^6.3.1" + "find-up": "^5.0.0" + }, + "dependencies": { + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + } } }, "babel-plugin-polyfill-corejs3": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.1.tgz", - "integrity": "sha512-XiFei6VGwM4ii6nKC1VCenGD8Z4bjiNYcrdkM8oqM3pbuemmyb8biMgrDX1ZHSbIuMLXatM6JJ/StPYIuTl6MQ==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.6.1", - "core-js-compat": "^3.36.0" - } - }, - "babel-plugin-polyfill-regenerator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.1.tgz", - "integrity": "sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g==", + "version": "1.0.0-rc.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-1.0.0-rc.2.tgz", + "integrity": "sha512-CANdCTyNm6Ds/kevG0Rbby/dvRPTvA7K5DLTiUrWBeRMnqp6Okg8idCw5fM3AdbAcxtR23Y9na3WOJRZ3i1hNA==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.6.1" + "@babel/helper-define-polyfill-provider": "^1.0.0-rc.2", + "core-js-compat": "^3.48.0" } }, "balanced-match": { @@ -9029,12 +9599,6 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, - "common-path-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", - "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", - "dev": true - }, "compare-angle": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/compare-angle/-/compare-angle-1.0.1.tgz", @@ -9114,12 +9678,12 @@ } }, "core-js-compat": { - "version": "3.36.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.1.tgz", - "integrity": "sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA==", + "version": "3.49.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.49.0.tgz", + "integrity": "sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==", "dev": true, "requires": { - "browserslist": "^4.23.0" + "browserslist": "^4.28.1" } }, "core-util-is": { @@ -9206,15 +9770,6 @@ "resolved": "https://registry.npmjs.org/cubic-hermite/-/cubic-hermite-1.0.0.tgz", "integrity": "sha1-hOOy8nKzFFToOTuZu2rtRRaMFOU=" }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, "deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -9358,6 +9913,12 @@ "minimalistic-crypto-utils": "^1.0.1" } }, + "empathic": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/empathic/-/empathic-2.0.1.tgz", + "integrity": "sha512-YGRs8knHhKHVShLkFET/rWAU8kmHbOV5LwN938RHI0pljAJ1Gf6SzXsSmRaEzcXTtOOmVqJ5+WtQPL5uigY50Q==", + "dev": true + }, "end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -9532,70 +10093,6 @@ "cubic-hermite": "^1.0.0" } }, - "find-cache-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", - "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", - "dev": true, - "requires": { - "common-path-prefix": "^3.0.0", - "pkg-dir": "^7.0.0" - }, - "dependencies": { - "find-up": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", - "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", - "dev": true, - "requires": { - "locate-path": "^7.1.0", - "path-exists": "^5.0.0" - } - }, - "locate-path": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", - "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", - "dev": true, - "requires": { - "p-locate": "^6.0.0" - } - }, - "p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", - "dev": true, - "requires": { - "yocto-queue": "^1.0.0" - } - }, - "p-locate": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", - "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", - "dev": true, - "requires": { - "p-limit": "^4.0.0" - } - }, - "path-exists": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", - "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", - "dev": true - }, - "pkg-dir": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", - "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", - "dev": true, - "requires": { - "find-up": "^6.3.0" - } - } - } - }, "find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", @@ -10031,12 +10528,6 @@ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "dev": true }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, "glsl-inject-defines": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/glsl-inject-defines/-/glsl-inject-defines-1.0.3.tgz", @@ -10379,6 +10870,12 @@ "resolve-cwd": "^3.0.0" } }, + "import-meta-resolve": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz", + "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==", + "dev": true + }, "incremental-convex-hull": { "version": "git+ssh://git@github.com/plotly/incremental-convex-hull.git#352d9e73861913695fd4e1a4c6ad79898c0c8268", "from": "incremental-convex-hull@plotly/incremental-convex-hull#v1.1.0", @@ -10552,12 +11049,6 @@ "supports-color": "^8.0.0" } }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, "jsesc": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", @@ -10624,13 +11115,10 @@ "dev": true }, "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } + "version": "11.5.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.1.tgz", + "integrity": "sha512-RPimw/7aMdv2oqRrxKwvZXcPfwBrn/JZ2xYcY9Hus/6LaS3VOAKVWKWgNLCFSiOm1ESXinjsDlidVU7JlnCN2A==", + "dev": true }, "map-limit": { "version": "0.0.1", @@ -10805,12 +11293,6 @@ "to-px": "^1.0.1" } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "multipipe": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.3.1.tgz", @@ -11000,12 +11482,6 @@ "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } - }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true } } }, @@ -11080,6 +11556,12 @@ "object-keys": "^1.1.1" } }, + "obug": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.3.tgz", + "integrity": "sha512-9miFgM2OFba7hB+pRgvtV84pYTBaoTHohvmIgiRt6dRIzbwEOIaNaP+dIlGs2fNFoB0SeISs0Jz5WFVRid6Xyg==", + "dev": true + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -11441,52 +11923,41 @@ "dev": true }, "regenerate-unicode-properties": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", - "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz", + "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==", "dev": true, "requires": { "regenerate": "^1.4.2" } }, - "regenerator-transform": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", - "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.4" - } - }, "regexpu-core": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", - "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz", + "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==", "dev": true, "requires": { - "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsparser": "^0.9.1", + "regenerate-unicode-properties": "^10.2.2", + "regjsgen": "^0.8.0", + "regjsparser": "^0.13.0", "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" + "unicode-match-property-value-ecmascript": "^2.2.1" } }, + "regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "dev": true + }, "regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.2.tgz", + "integrity": "sha512-NgRBy2Nx/bE+9F27nVHnqcN5HjyLmecqsqx2PJHu3/IEtADD4WuxuXIVExD5PoSDFVrl78dOonfcOe5O+5nbzQ==", "dev": true, "requires": { - "jsesc": "~0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "dev": true - } + "jsesc": "~3.1.0" } }, "repeat-string": { @@ -11671,9 +12142,9 @@ } }, "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.4.tgz", + "integrity": "sha512-rUCObTnP32Q08R2uuIrt7r9PlEonuTmtuXYcW6s5kjdlj3xbnwe+21yXptAUYcMAABLkYYTtnmzb3w3EDZfueA==", "dev": true }, "set-function-length": { @@ -12193,9 +12664,9 @@ "dev": true }, "unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", "dev": true }, "unicode-match-property-ecmascript": { @@ -12209,15 +12680,15 @@ } }, "unicode-match-property-value-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", + "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", "dev": true }, "unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", + "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", "dev": true }, "union-find": { @@ -12457,16 +12928,10 @@ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, "yocto-queue": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", - "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true }, "zero-crossings": { diff --git a/stackgl_modules/package.json b/stackgl_modules/package.json index fb8b74a7723..163cb347eaf 100644 --- a/stackgl_modules/package.json +++ b/stackgl_modules/package.json @@ -46,10 +46,10 @@ "zero-crossings": "plotly/zero-crossings#v1.1.0" }, "devDependencies": { - "@babel/core": "^7.25.2", - "@babel/plugin-transform-modules-commonjs": "7.24.1", - "@babel/preset-env": "7.24.1", - "babel-loader": "9.1.3", + "@babel/core": "^8.0.1", + "@babel/plugin-transform-modules-commonjs": "8.0.1", + "@babel/preset-env": "8.0.1", + "babel-loader": "10.1.1", "ify-loader": "1.1.0", "node-polyfill-webpack-plugin": "^4.0.0", "webpack": "^5.105.4", diff --git a/topojson/package-lock.json b/topojson/package-lock.json index 5ead83fc2ff..c30459e432d 100644 --- a/topojson/package-lock.json +++ b/topojson/package-lock.json @@ -540,16 +540,16 @@ "license": "ISC" }, "node_modules/form-data": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.5.tgz", - "integrity": "sha512-jqdObeR2rxZZbPSGL+3VckHMYtu+f9//KXBsVny6JSX/pa38Fy+bGjuG8eW/H6USNQWhLi8Num++cU2yOCNz4A==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.6.tgz", + "integrity": "sha512-Ogz/E85h9tlfJzpI6TuFpGcHZFhLrb9Gw8wq9v40CxSCPnv7ahKr6Xgtkn0KYCDQJ8DNn5VoMO8EXr9V5PadyA==", "dev": true, "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", + "hasown": "^2.0.4", "mime-types": "^2.1.35", "safe-buffer": "^5.2.1" }, @@ -697,9 +697,9 @@ } }, "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", "dev": true, "license": "MIT", "dependencies": { From 8895c4c29ce527fa3755cd7c557840b2c3cbb091 Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Wed, 17 Jun 2026 13:24:24 -0400 Subject: [PATCH 170/241] ignore biome rule --- src/lib/slugify.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/lib/slugify.js b/src/lib/slugify.js index 3765b621d12..0b7f10803c5 100644 --- a/src/lib/slugify.js +++ b/src/lib/slugify.js @@ -11,6 +11,8 @@ var FORBIDDEN_CHARS_REGEX = /[\p{S}\p{P}]/gu; // Control chars, format chars (e.g. ZWJ), variation selectors, and the // combining enclosing keycap. Some of these may be left behind after emoji // symbols are removed, so we explicitly remove them here. +// Biome doesn't like seeing variation selectors in regexes, but it's intentional here +// biome-ignore lint/suspicious/noMisleadingCharacterClass: Intentionally matching standalone modifier and control characters var INVISIBLE_CHARS_REGEX = /[\p{Cc}\p{Cf}\uFE00-\uFE0F\u20E3]/gu; var UNICODE_REPLACEMENT_CHAR_REGEX = /�/g; // U+FFFD, the Unicode replacement character From d8e3bf9c798d25d30091eb091c63190897c748fc Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Wed, 17 Jun 2026 16:00:46 -0400 Subject: [PATCH 171/241] Update src/lib/svg_text_utils.js Co-authored-by: Cameron DeCoster --- src/lib/svg_text_utils.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/lib/svg_text_utils.js b/src/lib/svg_text_utils.js index 47abf98bb98..d4bd953684b 100644 --- a/src/lib/svg_text_utils.js +++ b/src/lib/svg_text_utils.js @@ -21,10 +21,7 @@ var FIND_TEX = /([^$]*)([$]+[^$]*[$]+)([^$]*)/; * @return {?Array} the regex match array (truthy) if the string contains tex, * otherwise null (for an empty/missing string or when no tex delimiters are found). */ -function matchTex(str) { - if (!str) return null; - return str.match(FIND_TEX); -} +const matchTex = (str) => str ? str.match(FIND_TEX) : null; exports.matchTex = matchTex; exports.convertToTspans = function(_context, gd, _callback) { From 02f4e884acc0b354424d38f2ae87260db256ff8f Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Thu, 18 Jun 2026 12:15:41 -0400 Subject: [PATCH 172/241] add missing draftlog for PR 7828 --- draftlogs/7828_change.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 draftlogs/7828_change.md diff --git a/draftlogs/7828_change.md b/draftlogs/7828_change.md new file mode 100644 index 00000000000..7673ab111be --- /dev/null +++ b/draftlogs/7828_change.md @@ -0,0 +1 @@ +- Use plot title as default filename for "Download plot" button [[#7828](https://github.com/plotly/plotly.js/pull/7828)] From 8ede0f71974151d0ccd3a344460d6273359e3592 Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Thu, 18 Jun 2026 12:11:01 -0400 Subject: [PATCH 173/241] fix bug where showexponent 'first'/'last' showed no exponents on overlaid axes --- src/plots/cartesian/axes.js | 80 ++++++++++++++++++++++++-------- src/traces/carpet/calc_labels.js | 10 +++- src/types/generated/schema.d.ts | 2 +- test/jasmine/tests/axes_test.js | 29 ++++++++++++ 4 files changed, 99 insertions(+), 22 deletions(-) diff --git a/src/plots/cartesian/axes.js b/src/plots/cartesian/axes.js index 08bfda6f367..d99867a7e50 100644 --- a/src/plots/cartesian/axes.js +++ b/src/plots/cartesian/axes.js @@ -1113,6 +1113,9 @@ axes.calcTicks = function calcTicks(ax, opts) { var obj = { value: x }; if(major) { + // mark first major tick, for showexponent/showtickprefix/showticksuffix 'first' + if(x === x0) obj.first = true; + if(isDLog && (x !== (x | 0))) { obj.simpleLabel = true; } @@ -1255,9 +1258,10 @@ axes.calcTicks = function calcTicks(ax, opts) { tickVals.pop(); } - // save the last tick as well as first, so we can - // show the exponent only on the last one + // save the last tick as well as first ax._tmax = (tickVals[tickVals.length - 1] || {}).value; + // mark the last major tick, for showexponent/showtickprefix/showticksuffix 'last' + if(tickVals.length) tickVals[tickVals.length - 1].last = true; // for showing the rest of a date when the main tick label is only the // latter part: ax._prevDateHead holds what we showed most recently. @@ -1279,7 +1283,8 @@ axes.calcTicks = function calcTicks(ax, opts) { ax, tickVal.value, false, // hover - tickVal.simpleLabel // noSuffixPrefix + tickVal.simpleLabel, // noSuffixPrefix + {first: tickVal.first, last: tickVal.last} // positionFlags ); var p = tickVal.periodX; if(p !== undefined) { @@ -1351,6 +1356,16 @@ function syncTicks(ax) { var ticksOut = []; if(baseAxis._vals) { + // find the indices of the first and last labelled (major, non-noTick) base ticks, + // for showexponent/showtickprefix/showticksuffix 'first'/'last' + var firstMajorIdx = -1; + var lastMajorIdx = -1; + for(var j = 0; j < baseAxis._vals.length; j++) { + if(baseAxis._vals[j].noTick || baseAxis._vals[j].minor) continue; + if(firstMajorIdx === -1) firstMajorIdx = j; + lastMajorIdx = j; + } + for(var i = 0; i < baseAxis._vals.length; i++) { // filter vals with noTick flag if(baseAxis._vals[i].noTick) { @@ -1362,7 +1377,10 @@ function syncTicks(ax) { // get the tick for the current axis based on position var vali = ax.p2l(pos); - var obj = axes.tickText(ax, vali); + var obj = axes.tickText(ax, vali, false, undefined, { + first: i === firstMajorIdx, + last: i === lastMajorIdx, + }); // assign minor ticks if(baseAxis._vals[i].minor) { @@ -1408,10 +1426,27 @@ function arrayTicks(ax, majorOnly) { // except with more precision to the numbers if(!Lib.isArrayOrTypedArray(text)) text = []; + // indices of the first and last in-range major ticks, + // showexponent/showtickprefix/showticksuffix 'first'/'last' + var firstIdx = -1; + var lastIdx = -1; + if(!isMinor) { + for(var k = 0; k < vals.length; k++) { + var valk = tickVal2l(vals[k]); + if(valk > tickMin && valk < tickMax) { + if(firstIdx === -1) firstIdx = k; + lastIdx = k; + } + } + } + for(var i = 0; i < vals.length; i++) { var vali = tickVal2l(vals[i]); if(vali > tickMin && vali < tickMax) { - var obj = axes.tickText(ax, vali, false, String(text[i])); + var obj = axes.tickText(ax, vali, false, String(text[i]), { + first: i === firstIdx, + last: i === lastIdx, + }); if(isMinor) { obj.minor = true; obj.text = ''; @@ -1725,13 +1760,23 @@ axes.tickFirst = function(ax, opts) { } else throw 'unrecognized dtick ' + String(dtick); }; -// draw the text for one tick. -// px,py are the location on gd.paper -// prefix is there so the x axis ticks can be dropped a line -// ax is the axis layout, x is the tick value -// hover is a (truthy) flag for whether to show numbers with a bit -// more precision for hovertext -axes.tickText = function(ax, x, hover, noSuffixPrefix) { +/** + * Compute the text and metadata for one tick. + * + * @param {object} ax: the axis layout object + * @param {number} x: the tick value + * @param {boolean} hover: whether tick being computed for hovertext (as opposed to axis) + * @param {boolean} noSuffixPrefix: whether to skip adding tickprefix and ticksuffix + * @param {object} positionFlags: optional flags describing where this tick sits on the + * axis, used by the showexponent/showtickprefix/showticksuffix 'first'/'last' options: + * - first (boolean): whether this is the first (labelled, major) tick on the axis + * - last (boolean): whether this is the last (labelled, major) tick on the axis + * @return {object} the tick object, including its formatted `text` + */ +axes.tickText = function(ax, x, hover, noSuffixPrefix, positionFlags) { + var first = !!positionFlags?.first; + var last = !!positionFlags?.last; + var out = tickTextObj(ax, x); var arrayMode = ax.tickmode === 'array'; var extraPrecision = hover || arrayMode; @@ -1765,13 +1810,10 @@ axes.tickText = function(ax, x, hover, noSuffixPrefix) { function isHidden(showAttr) { if(showAttr === undefined) return true; if(hover) return showAttr === 'none'; - - var firstOrLast = { - first: ax._tmin, - last: ax._tmax - }[showAttr]; - - return showAttr !== 'all' && x !== firstOrLast; + if(showAttr === 'all') return false; + if(showAttr === 'first') return !first; + if(showAttr === 'last') return !last; + return true; // fallback for the hover is false and showAttr==='none' or another value } var hideexp = hover ? diff --git a/src/traces/carpet/calc_labels.js b/src/traces/carpet/calc_labels.js index 8b7d5a47045..ce75f71fdfc 100644 --- a/src/traces/carpet/calc_labels.js +++ b/src/traces/carpet/calc_labels.js @@ -13,7 +13,10 @@ module.exports = function calcLabels(trace, axis) { gridline = gridlines[i]; if(['start', 'both'].indexOf(axis.showticklabels) !== -1) { - tobj = Axes.tickText(axis, gridline.value); + tobj = Axes.tickText(axis, gridline.value, false, false, { + first: i === 0, + last: i === gridlines.length - 1, + }); extendFlat(tobj, { prefix: prefix, @@ -32,7 +35,10 @@ module.exports = function calcLabels(trace, axis) { } if(['end', 'both'].indexOf(axis.showticklabels) !== -1) { - tobj = Axes.tickText(axis, gridline.value); + tobj = Axes.tickText(axis, gridline.value, false, false, { + first: i === 0, + last: i === gridlines.length - 1, + }); extendFlat(tobj, { endAnchor: false, diff --git a/src/types/generated/schema.d.ts b/src/types/generated/schema.d.ts index 1e05da351d0..ccfbd77a70a 100644 --- a/src/types/generated/schema.d.ts +++ b/src/types/generated/schema.d.ts @@ -12876,7 +12876,7 @@ export interface LayoutAxis { * Minimum: 0 */ ticklen?: number; - /** Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). If *sync*, the number of ticks will sync with the overlayed axis set by `overlaying` property. */ + /** Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). If *sync*, the number of ticks will sync with the overlayed axis set by `overlaying` property. When no other tick info is provided, overlaying (non-categorical) axes default to *sync*, while other axes default to *auto*. */ tickmode?: 'auto' | 'linear' | 'array' | 'sync'; /** Sets a tick label prefix. */ tickprefix?: string; diff --git a/test/jasmine/tests/axes_test.js b/test/jasmine/tests/axes_test.js index 3d1e962312f..5a9457f9ad2 100644 --- a/test/jasmine/tests/axes_test.js +++ b/test/jasmine/tests/axes_test.js @@ -8416,4 +8416,33 @@ describe('test tickmode calculator', function() { }).then(done, done.fail); }); }); + + describe('sync', function() { + it('shows the exponent on a synced overlaying axis with showexponent *first*/*last*', function(done) { + Plotly.newPlot(gd, { + data: [ + {y: [0, 6]}, + {y: [0, 60000], yaxis: 'y2'} + ], + layout: { + yaxis2: { + overlaying: 'y', + exponentformat: 'SI', + showexponent: 'last' + } + } + }).then(function() { + var ax = gd._fullLayout.yaxis2; + expect(ax.tickmode).toBe('sync'); + + var labels = ax._vals + .filter(function(d) { return !d.minor; }) + .map(function(d) { return d.text; }); + + // the multiplier (e.g. 'k') must still appear on the labelled tick + expect(labels.some(function(t) { return /k$/.test(t); })) + .toBe(true, 'expected an SI prefix in: ' + JSON.stringify(labels)); + }).then(done, done.fail); + }); + }); }); From e78427e46a2dea74cd170760856aba0ad836b5d4 Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Thu, 18 Jun 2026 13:09:23 -0400 Subject: [PATCH 174/241] update baseline images --- test/image/baselines/20.png | Bin 85368 -> 86027 bytes .../baselines/candlestick_double-y-axis.png | Bin 88020 -> 88179 bytes .../candlestick_rangeslider_thai.png | Bin 89113 -> 89295 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/test/image/baselines/20.png b/test/image/baselines/20.png index 49c76b32f792998a90ecb80b148f3a06ebe86a2a..374551b3b33701d881b357975df14041c6998314 100644 GIT binary patch literal 86027 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
    fPa^rdU^$b>q2 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 pT`1jJ#J@dHeRmZ9P$E^}U{}Wzxi59m*bzsO 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≪Sdny;Af+g32U0~CM-_!UEi9d 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ℜ>F`d4#MJ8qBkOAa>#%eu^XHr_|WkW;>Zu05$DbRox1rz!QD? z6Q#RXTIY$?nX8P6PQ*@sk!tsj6h=}zYb8Sg>&vItjim`9?+#X?Ct+WGBM5XD7ZNj^ z68|qYh?ccN@EboKOba#n5$!rAbmxGBLg+%~HKDz|q+;WhNR@>bERzst?i+Rw6s5UXe_K;2}PA=QZPDRmicH&zS1f&hX?ixMNDRJ=~Y;3qzCgL(kzdg zBZSqs7l&Zx*R1?uHcg~#YyQ$e7uHxO_era@y;b`>-r%?U^RFgMPhzge649OfxY$+= zE3Jn&4odFWbDd~=N>{c>b%IEvoW<^x5szi94{&U^e5ZsS$+18}@61NE8xFLyJtTs9 z713Snnfsk9VH#amY<#Sy$6-xquhxY83dfZRS3}|+V{4~}%TXf#^!S7tDDWS{ZD|z) z)A}v$p3hYc2kf$q_GSmOdrY*);oL$4?J`vORMNDb6%COj1#if(D3JfD*3 z6K$P&!szd;nD5<4c^zr1)A*eCS^;m|TIP@=(Hp6WjO0?eQnlL~4NB&g>q#k{J6Ga? zX5t{3#e?p1<2<{|4~)tyF=G@;Wzs?8nZxOug_NHi-+XKShz*m{+uoq{TIWunqRST* z?Haz1I%2YbMZ?`4fx%}^5-bi#b%g!ZZ*HgLlHO#_m~{ks7U8oL@0HG;shTECbt3S* zH#VXuf|4?=rrUaPjlwn>Vl5@=%^219$cK!LoZYuTQbK30>7WlBDf$-_laiXmN^23?)xY+v&PN$c5y!f_bzzS~qLf$<- zCg6VdD~5bVpDU>0K83CFj9X=KJH*aol5NBuHLe*3_p%y#2Rd4J(d9N(HaLs_iKdcMrIXrt{d%rnWVmMcLvu>#9k29TaM2t*)YPrQw9AuA%Ee<;+NF5LB-V;h zr)`ohuWq@L!w0QirzjoZ2?Q$bTC0mY$5l0QdEwz%dr;DnAEF5@xgc~(Y-n4@{<_z~ zYIXrLiBl*r3?JW2R69B*Wq1ygOYq@cCJR&ha)(j5n+#?#`wHKDM;4O5{|tR)4sW%O zSl9-iQr?ACU{I5PdMhWOzhiGP)-pa%R~QeM=?gUicQs$HsXlkyrLE3k^DS_{j@-(D z?FBU3wG4PV2ri79#Aor}%_DRQ=ZA|zeeg@{+Loia=w}9Ce1Zu{e%&scf> z;Z-s+GL|+yfJ}+WtiFf{(=gyFw9P$!gq zoCUg0F+?c-WstzNeBQJyZuM__TBRr9_Q%i z?T<&nD~3;D_OQe~L4B{N_yY7O7~Vq#1|7j5eJX5a#R&9IvZ0o9a3b36PA~-={4T8n z_B+Mxn=dx!s(O_92f(MNvu zxBAdbC7^4`w`P-3$T-sLl0OYpxt zO(AtzLNUY3I<*Tjy?%ycrbZ;9peFXa;Ro%-7bZAICd@R%Z!>X+jtYY-`HIVOa!{R+ zll5S8QSBF7-;RcsFWEDyup&v5ip_OdItU;8dR=Z(prdxfICz{$>|z!RRw0o7 ze4K~W66Ck-|Iq?2><$oY4@aB>BK5~@CQC`6-{T;{q>FV9h+_*%zK?(xuwU=RZ6J&i za8ymjn&y*1%#SEd=OC$%$2Cnm~kxq&s>SbNKyfmf%mM2U>NF7P`sO2iQUDX zrbGa0!#36j5;Nk5{vo578dNQ|qXbxXxxxR;l1S&G={~j1|L}uiuKyjF#Q91=;5=3< z>7Cb&qpO=+PCU@aylXfAjV`LTwA^24$1Q%;i~H0cQDr@&nhU&vL<)AUl#YC26cAF3a|LjFn}@=7*}LrcpKSczjxIGX{}dh+B-i%fsqSuXNVMS zaz_;wNy(Ko?$AT%|E{BZU(Ac(z<#j3{T0lo@Dnu#jl4(%zudDL>)BwCsfTO1J3*CC z;WduTO>V|8^^&l9*yaB6a^k_6fbP!>y0%Z3SwncA6v^Kr7MrVC5azX0mm=%ApD58T z60_*u_Bsq>X&%CPg&Rvqhz+LH@&LN=W0Dsi>OWcDB^j2{GrwFDVCi)|Wi|k`{whlF zCSN*}_y9ne0T(-C1E)DtQ{i}z-L$Sx5^-WFKpnXVRjFpWKQ88PKPj<*dCt{iraiON zH2C+_i?D(X7QIF!cMJk{vlk%LG>z7#swvec0MmSb!gTkPaTD^67F=sKp-Uu&)x46I z92sx$4Z|R%x?i5;h7-S$Nbmf8Lo3)w`fnto_YFe*T$K%(u_LcbEbRg|IuWC2Kha{k zqOezXcIWC`oo1-kA_||207zZbO!a({J$pw*g$3Z-$!#6QbYXO3Y1NV$)0yH9 zM*$mWz=APXkY~VWxi-T_+hDh|TdPW8zwp(eyuLEf9eKLn0R#^T4Go;aTL|G~>r3LT zwO;baAM^Sm7wPK`frWneT+rvC@nlKZfvR4&NV~Rl_4%(8q!@OQyNe66&H*7q`^9Z_ z(n4_vi*h!+#rTcpH6{yinM=^|JO6La2hWsDl-Ly0khyG#G&|;((`*)mvk8IIc00Hu zq{j?%)yMAgK)m_```ceR?+8KduK{X*Vo>{!vs>F{nkjnN{V3r4ly|3*Aqo%t7kvRS zkcWMWmgcUS_CtaSRPqc#%xwluE>opKif=2KglCs6Q!nrB+8ftf_s`G%_i3BGRImGD zY&BDb+!IM62B0r@6HBS7W-mV4pFY>?3DOK@_y>u2AlcpDsjH+1$saaJHUJ~1J4O|R z&>=qsz|h}x#&m^EEisfw9h`?Lqo{(KC%)2R_q?5Rb!#NfYh5s)pqX_Z{N*wOp6Oaf zm>7RP{ERPJ!CX23TvIJnm6F?i8gqOF2zaJhHk#6u8QSJJhx$aW0HE)#cH!%*3Z8?R z6Z@T?8Q-4CdgYOI_M>l}_Pf->OPHL~-`^LdYmFB`YTT%RuJ-DT&U^pHd2dEQakRa5 zA~(!uqDqaB!*F8H)uee;AvrmC$^-b<7^<0_9gqzRSR&4kg>&yF@*gAZ)F3vM zFld7qRRq-(TrF1y?q&h=HLqz8%CNi+gl%(AF9nk0VTAM5RTZW}QMw~Md+HVy9d>i))K|= zQ^{tlM-NK2O&ir3-ESB3z|aE2bW*?W=W*X*zfhw;i2)pC-f`xsk=qhz<*lkB~- zXI=x;H3RGnfx#GXa=s9b`Ha7Q6!a0#bB&z!PJ%+*%iEh6PZs_ zTa3vDPT&7CwMB219e34V&HMM4yQ^c!35BLi-D4Ezj!tMVffm=$L-Os|4j4HY)38I8 z;JkN7tc-;~Y;gv5-U!RdhlV_`cDSn1LCV>S?=}zrMsA(MOy0RfxHWr89-WUx`ho$> z<4#`4mZ4xSO-Dvw1&Z46)4}kD$OT;{o`ArH_ubX`WuEf;Mo)jq>vmE7 z_n=I*ot;wwgyNmplqI@s5CfROB4xn&D@b<;M+`s!5TP6ZY4#X z9!XFrclBE*K)Fd94c>vkfJN}P(mI~!gB&5rT{|N=eND=jJ|8y$npB_{$?xH!XA981~V0Yd(DW5g(RSCM<5< z%1>>uPkGAt{DqC(HL~0X>ei51FbM0}&Hnlsaa2FgGf6`^^5pibh`7Av4*;KbYqri{ z1|A7Hm3tOwyz}+$QO`Ms*4DVeh?3{KnGmDP)Pz{utHyH<%f)TscX#(i^lYg>Bbv~o zoiH;XDOA6Q%aJ~pgn6_875?c2I-Pa&Gk7wTw_}3JW=k4%ZVH)nNV+TbtPJ?o?*=}L zb3%R-TDl`FfBZY$b>|7fjEi+eeKj)Mj`gb6d>+y;KVdIAzhaB*^EP!4?FE^S{US!0 zrIZN&a83kr^r9v(L00a887e4xkN*tV*<3_6e%33&X7X3Dl;V8GHLmTGm|FyqoA--- zpT}FWtu6m|K?Tj_u7?XvYH8O^serX^d19^Upr=gHG*P-)8wm$rU7xSOch$;vC-Duv z3c*iIOCtk>YF$xn*v*x(sJwQ0rB3(>h(rcpa@;uW1G+P-|D{!m)7_t4X!QZ?!5%bl zO`EW#bIS@m%r7I>g)d32;D>mtO&Ru`6&3kPT zZDCA2omfc`N`8KwYS~Jd`X6g-el}FwdeQAiU_uONdQ9v{;(N^klE8%f^*APW_OZRD zzB1FmX}*I`xZT~|{$VQT7yB5T{DhGaFTrDQP=agmcL8HxJa+}H8w%voO%nZ$n>msL zf*Dgd1TFy#bB;Ga_tv4ty05rwKp=d}oX>tWO$Ew(`*uKKE}YN9$j$-qIoIc}2Nb3P z9gMhEPX69Q>n<2q2Iq!w^67RcB?LLbDAHxz&h06UFIGN1tvK{4Y27g!jj{_K3Swr- z4c?>U;*+gDy14u0MxTGg#if;j%$#;X8DQY6bx1Wi^vvo3-KE}>6L z)&Aa7Ovmfy3@jywOL{O$W8Py+X+J4aq(kAnN={KPn zVDGfi0?Mc8XU`sReIZuyrwyw03Z3};BF%nd)|Z`K@5R@i5~YZF;|!}9cFSRVa#nd| z^iD@_pR1N0&ichK{Q91K-e8zM339n?P|4pO z>x-dX@L8$}vxcAEM?{g>4^=_}?`iaeRjJXKM0c}Z){2vi42~toGl_AHD3}7>J(!HA zw#qFq#3w&W5q4t!t9hBIwLBCleOPn?bYXzbr!_ugql)16L~1H;R7p?(?c-LPRZhcUOCkxEAdSWR z`O9B(*l?~B2ic)YswiwY1Wq962BL7@>8j0*tA!Dw)40h|YI zPRHy$1eTQo-R(fpGEwInt-<*QbZv8rzW9%>X3tr~7R*-l37c*a#*m_Iw~BL455~K! zIfdHQnvfmkZa4?~G3bd|wtm#xZjw1Glk3D!_U3#z@1tl#7JBu1Umqm(BxhfmnEOnp zk`+TGw7~n}hH4S+O)N4d6HR;L3R`N+7CEOEc$5O^0DVgrW!S@dZB#3Qz=9~R;jA6_ zhxC##^0c5o6jjgj!XWmk!#og;y`B+zHGTKK%cRZ#OAA}J{~;09`Q;F#E`2xHP0MoF z1e?s_m?4JXo(x^TI|0!9fUA7zKEoSL8Vdh^(M5rh1cpCGJBVWyUw6a9?^56-TgYiGpzR8MYx+ghL~QLMBRrrxU|4u-XT{k3AfLR)Vi1ya4lVNbM+jez zCqWX7!M~7$Z@+Z_Xe<@8HiyI~Po6mL$4v*GSEsA566L*rw$k7p7BXti6#)2)0OM*t z3(}2!@;hC1N`}AH(jiPr@BV#Yr>9?v4gq-$6Gf~@uzv|*w8JS|Q9;e0mIOM8l2g;u z{VdtSstO7y^{MTojezhnfz-mPZ^N?~^1Syt^fMa)z*hT>qL=s=sYY*tiKZ!c9{Zz_ zP-u!0$tyU|5vu21X^RJ~x1wmoCqRPot`Qlsf~X=r6CY>QW#J3|3rUv8-d7TYoy=9k z6pXGC*poG;*j5#OR8K6ULlqQMtE{ZlFUIi7)6f0ZQ@fOrNwSn#P#|hhX3~3oG2PM4 z&F+_T*CF?nlrD_rWuxfhhyGX4_H{U0++;CL<^@`0NzXF-r29lLPMF$E6!W%DqyM-|bjAO>tV#WExx22-w~U&ViaAi@#RNGoo8wzeIwxMyg8VNs2T;%|>Au?8E7B&x<4znk^ zr^YvbS(`5JzEu2yZHBz5C^D+W5y8kPSV90|Ow>a5Cqrv@m{3il6@t;R1fEYB70e`D&*Rq!3zZPS-+KHPP%fj; z;lm4$kETcPXm82l2jkZ&Uv}BJlX6K?1|j=P5HqIVR>k=~N)MfLjM@nr0)hbGZgNqa zQa69ff560}$SVB>m2>fs{{ttc&}+n}7`wZ&&tzcG9%Tr_;G_pA=2ea}t8FZ4WF*@A zf5~Dv7g@6+tpYP$mu+|!#%h1?NeZ_m<)l;Hiba63pRUH8KEwEEvvl|)1s9Yb;#!Sk z;Fw!JcM#4G^56wP=LN1H^IGKB1ce|bZc{jUw{##^ z^nD;0%2#9Jt~fMrQ*UlBt2e#+TFP{^Gf8TBxG8lqJ&pH_Halwx8FuV>rF~VKJ@^M` z|E@|W$?#&h#HHKh;T?nKui=ki0uf-y+Pr@*hrKb->Xb%HmU$?=lWzlKbo`ODl3lW9 zg2u1)`OEAoGp?uoeq*@bt&Ggo<|DIp2+IqZtt-0Y^)BrgD01C?vwbg-dq_8i&X@^* zsA9p#H$dYb70Z*!n4+&LYE`%aS_CsBq{dz8wW3QiTQi&Wg&XiRegtWtbP*461H3GG&s4S|nE4+(nE?`9=4VG9 z%FtKJ0y+%9ZyfAVYWg!$g3N4)6a67`Mh5+V$(-n$My4bj26gr&{@3_e#%_rxPAt5T8vASn=OEW{2j(w^Xwku6T6_0N6(iKtgi)4Cksj7B2c5~vt zXNJxB%nJ6WFzwR$GLs=ehq?E9SUvscNOR|x#yU0gwJxE*15BkCi9h3r40@LSDJaub z(f@?agsGwr-RS;13KdJy@M^lc_hohbxg982XXs7X{{`u^eO;$e(B({6Q>$=J7B=`#Au?3*NO+tg z0qE)0B38u1`d^=UmLWPSuqNnf%;dk;a^x(%;bgodK0MDsLLvs#D<@p>Vh1#MLSVw~ zOb_JhNRBJyx|q;L19e^$&@Hy%!#MPvcgc(*EC?WVq-ro6g!>^7Bh!BUhk!iU z^EU2ep||9Ihy0k5#|MNYoT=djy4_@*^-ezn2NwK?KEmIOn01O(Fgn-q+$V6P#JJI} z9iL>XC+xL6{W4YxLEB`B0;+SUddaLq{x*a{KAtQB4-y_XG;obArek=PnYN@U zUf$X`$D_9o1)9>(#%r4kJJ~o}^WxS#^|dUTmalb-1U+|-Zh1wE2fx1kb7F7n$+iSr z%wfH+xPE^fUT^aO0jsWUP~6pA@=jV(H(Bmp<8vvZ^)`HInb*dvU9{KScPHBt1vc0j z8NYt2^HGAyLsV0ATe~OC!EH$nE=L3xIh4oIn#nto`YVB!Z3@FZ`Ja6E=2(=Ig*2#l zV9z-^I)Y}AY!D_M(uaa^B}!h>PE_-sxc10UZOQv8ClKz^Bh*`1*`OX-EU=aK!BTTC~}| z7Tu{49ER0-J|kEGo9G68@~v<2i!l(EHsCsFZ~s!P+oD%bGK7UquRK11tVpG?E?-&x zIeSvr{UMHfdd(UHrymg_d(wrWZmF&LlyFx*o^|X}+e4meH`>s5W|WpgAL2)2y$gHaM-qChPOvUz zZ!s0>Zw0%uYYmkyU!*p(kXm+&Y z&g;9ZB~L|MJSUqYEPJ*EZwD_4^{0v-Ti@)H*T_{>6Qz;cuIV~^oXBqsgOyrIs)BE{ zbC}1wIn|Ti?F^wmB!MKCkHbJH`tbT9mxa4Kuh{l5pYt3Kg@c12PuX!rQ^t+>5<2yC z7b_L}ZeOflS|nCF>j>ktH1%`!C%HTbI^=*=6x$XqL3`{9L7vajO5fF>-^!pI#lLtF zXVbGiRK)vd_s z7QvU=1=9ANck%qcUC^OKp*`44n3|mpsCMzX&popLbIA~Yd3k)K<3UT6vk2)bhQOtl zaZQ|B<@XjtD%+NF|Jtl8vL;|_SOnL&amd_OKG7Q-<{5z*`iY+GW%~$DSO|1gBMox=uE@~ z-`bw>tTx`BIX?c$TB4+9&k7CbVD*ywlq~6IT;sdFXry8<^t9UjrkQ;)UQ1GfyROIA zN)KMl(DSda_rARNjwbtuy*`?)-1~{K^hzAtfLX8n6j8S~0+b|=T3Z!twoCA7{02=kX#;AuEfY4Iis=Vu6S}mLmSyvp~2iY7lv-M8r@d6mhKO<~)UD z{9<}EV)e>jTyjLCl|oJ%vm-kPx9Y=&hn@0_>!a|tz8n~i)Oyi#7)u1`m4syNu^Cry zGHeLmW8gQc_eEt50j{0YFUz?fx4z)%@Uujw0=j+s95OpStyd>A2b)J(ki*g@9|4XuhCjwx6JE@y|2e^alNq_ z(^W6LC3ju)L7vW%^ybq3i+2tyqg&#uM-#1_tmnNhrFffwnSczy=u(mcaV0B|IF?=b z3JZFns+34{)BO~bzdiy;ya++aw#-D+1xYPhn<=!x^_h+_rHbq{f$I>MP>Ry`QJ)4T zzpqPCvO5>PstcSKDd)0`uty-Jifgc{6chGIF8`-C-`U{Omx6`!$Z6UFxA4G!K4WFUq{PA zp#7eg%6-^siO~KW9XTkzy(V&`xySK$AU~TZM8EeHet9cQ%F&U>cX#rv7_<@*Oy~Mo z9W)Zyl0;!X*~stEMQneugbdo^pkiEM>rlY_i3EL4scz(DNbrw<(L-76K_daIVYy)F zs@?W}58l17X*NRW{1B8})4uE0crm(!WV}C`PKJ>Uqx-IFBD_> z{-NogoGy~0Ya*22#|Vkd?{F&~=c`4s@aXM2@2b9>g$2k2)3_X_u2lj;9rCKxt*zjs zB+B`L{LCpp`=a9f1S8VSI;^~umB9j1Xj?l#Ffov)A)Ae`B&DULt&Ig_=nyV`KhaZD zFDAOfzqSHrnTug6y703!)E=G^Ms6wO;aU8FyLdExhb-$uN5{FssKA{-jB~M%pWLBI ztY1~iXHt58O-c%7w8HKJ&cU7-(4Mc)^<`^7j*$I=R?wCTgdt&wvj~jP%09g$x2ZP+ zn;(3C;unJ#|9*K+MA5xtJg7Lm!q@|Mb7?R9>0=hj`ia5Nrh5Mokc3SjkX_x_=x51* zer&su&$nuqd^8_0r4SPrcK{dHI6FALW$(-2(IOaIBwU7}gU3)3$j~b>XEplQ)&A#U zX_&?0vm2-Cbi%iM^UN3jPa&c1{2_Ozp7qe12w0kPaVGXkjr|TUg6f140mtK#^PunV ztmxi2*%=Eo_tnO{YWLT&Ga7wH~IX3wlL*A=foEEVn2|B+0PGLiTeua?KL^M zd`A!r1D;%Wdx@{Y1He(*G^3vcZAOV<_Dr({%%(!%r54Ph-%fxSr| zK7RUiWzq}qsCk;%Vb;$-cmpR)DvFnQihOQzGGMI2ZW_#p#k2y&NPDkeyOw7gK@`M4S%QJqil)ygHkJ2F`6fYJPbLabp6&&dzLaTcW3Z#%1oogga*nZz})wnd6D zB=MTjxnnJ$H%mt+ zIGa9|g*(Z1&1CY!4$R9Y4~!NW2xs$s7qtDDSJ|KIW&&dD)eg>})fU>7iPonstf@(b z?KC2#iv8hf<~lZEyEr@NKA-Qwnw|}gC&RO6Q*XU?WFWE8s2{87KC|Ds>9H}+ zS9rsSg4OCI7kCv$&3ZD2Fo*Y}o(_nt_%C{^1^FHZZ#vQ4?oKDCk2 z(XZh(_R{-1tTHmM8iy)cYX?dti9a76@Z^ASbE;Qf5=I;;AppId^x;U+Y7|dNw_uyj z`paUVX14XKP1|qHWXuIVqs1JM#{x8esG0wIKV*7AXLa-AQR1Zke0x;*>3-Y5I}9ja zf)uS=`bHZo`Z5uI+-w6s)&KD)X)3+Y{byytOf4%gWWZ>|O7sI15* zdaNA$_8C=DyktGJjBU3PI7;m9@i0`dX|n15=daJSSYQY9A!;>RnIm~ddymk@Yuo(> z$29V$cgfv_TAqSDNQAc)pVZoY*HnLEoABOepB7***t=Up^zD4X=WY-YF6WqYYYXtl zl;5ndwKJpGSg9w1Mbny*iOKq{)iDzbi|N)pr$(JO12L!36`PmjQE!Z+nmd!?2i+}I zn~Kdk>{z?PI~BA~7qWLMh=F0|yQ1*E+w>;3Xkbn8O3}@&n-6X4G0|=N#aqPI_Y>zh z46k49kGcDa_0{`56?3z#xjkdQW4cmHZv3+QJ0BhsCBf!sceTdNMcRI0BA2k}EZEA^u@;BdLV3vZbyqYB z^)~n`v0|}%dqZLKkzi)qlfIgwrx!QU3RXb4P#Qi%7WZ_|5o0wE7Fa|lkaf#0j%;u)kJn~wS8;1Up9`5h_jz zxL5z%@s_B{OIP)m*U*K^2Mg+T4trjfN*L-MPS>IT+0RTV(Xows zr(q#{(W)35>vG1Pu-{Qqg5)uKQ0#uqYyH~7TDIN0Bk!WL#r=+c+fwwW>GZi&C&%+`}QRn*byue<1CvcI!2*1a15ZNbS%u@xTc)A-}O+5|#a_Hxa^sj#E%9$M>46{qy|^&PQ> zy2u*HvqiuY-2&8z`q(RO%U|1c^xEzfp*s%QfmdLQisC;3v4HXfKof7l7#Jw1ZU=8s zj`};y{#u8KJx;*TcnAW>hakA0zfeXRTyhJ1RzNG8`2~gh4*Yu;UcjmXv~OeE^MmIG z%8lQ<6F{FopuS#Gzx=^tkUl>6US~KH6M@f##J%)*Bcy1ms!}1GNJL$%jn)$77nuA| zHnimu6H}Xs(3L+Nz#tq=w<`u-9v*jkU&=j-jBJKrk;{HUDo!=P8!V{Yq16@JqZ&ib zTx$27hIqHCyVzsHJQijNu@|5v7p{m0@u}jjT0}H8y?qos(K}MDQK!*1eY6D{Nx{VM zTGZ1Rd|E$#S>r#REwW5Im%xY%(|S~Lcj62#85i9kn>lo<@^p)607bDfbFjj~#)g}k zn%Xl~1YIf$=we7g%sMqS1(ktp9?kwbsOSvrX=Ocl*dPuO%=a_&lBbK^L;od07!Pph@c75pYcWyk)-c@Yu)3gzKym#bj@lBsN-0R16FDk$axa{cD^5|m~>K|L!75>p;>&~#`fx|~!z z%z2c-@s2P@H6;vscGI;x<4us5Xk;s1WWIrqW(D<+RLoGSlV?1fDEbyWpNmhRt|!R% zpqMP~gM2|xaU&sD7gc8ZHxcnh#QraxvIQ;~W>hf2WU&Ruou$f9`BH)J~l*? zognE~M>qxEIPg@Tv;JP=JckB?%O*y6g2LcC#R+>1CvAutO znc~lP8JrBipi3OA%5L>CbEvZ$*Li=zU<}3Ql7R()L7h?Ybp3-zdX^FKU-VvYV|i&K zcwYN%2`m!-vIV9?UNa;UOoaWeg4xGvtQ`BloW@LKkzZuQ&>Nn(%wnOoT%yZ7`C~#1 zvK3@qartMNIJtri0)?C4PHbi0ibP|l7lpjdDsUxZvmQ^4uu;dniXJYbpq%ePJO!EQ z{*_3tr@&!qD%ng*FWyZjST};v3vj>2cuxI>~b%3M53;MkLifl%5QRE zsG)Z3`N1$&Kx{0rLa`*Kfa7l=Z^3K!YEEG@4F>3S2kS}+3=cy?r@?uWTgh(?^rTZ+ICP)=sbI?=25O4kgRdR9WAED@UB@6 z)yo$mok-IsF<&GffsN6d2qIrx(oH7nf1QxO6OsLP?~{pT1d|8J$lr5EE{p>?8`9hx zB35JQS#JM2)nYN^!n$wipMIGpiT+t9SN%>Jd6uM}vHey;wkNPx`-oT{y04ljzu>`u z<*DPl>JO*;KqLA9b*oj7>lJW*QcV)T11W*P=o8RzPgVU)Rl+)f<)-iQ=ni<#Cde?ac-?akBaG~JAc)NJNOCbkd} znnmIe0io^px(KN1WJkuEzR}1GVZc>sK6xryN#N#{1mED9VL`=Nf)+$*d_1Xvp&`Jq z!5g3^NPq5NQQo&)8x|p?Pyjs=*gx`sLh#18-nR4{%ytCT*Vp&*jXmL0iy|Z}ghOUR!)Csk>x&`IGGvup&woTa93x$_YP_F%Fj|UsN^E}ovlz;gTq zfORIjtCRC)kq(jkisUMoXoU2zY9SugH#J%#UlSl*{BfThLj>Cg?DLAUYs>xW1UFv7-3JDTraVZ6Galt5R7s_K1W=;u0b*(^7JRdl^x3p&OK_+-sWqx~c567SFZZaLS9js>>QB+pP38Dx0o*VbV9;bOltHJ$H(H zS|pr!L||ES1Zm99*Jm+~Bn%Co;$daf-0HsvC}oE9D)h3)tbM40&WCwJiB64ofHRIm z%2D{xy{;JX$FUx`C%b{-l5S(EDa`@)!lO^84-3HKljk^nwY`Bn0p?jQ%Bz%2N00%T zHIst2r9)~m#r&po(2Z`z&0^=Rd2Rkp&>$5U+n%QqN;l8`(A4DdD>{JrCPb+krqfTB zAl`$#!^VY;l71o<{a%l%JZycrqBG@^CO9kx3GxAEU}l_dF9I=P&$W-+UTHNn!0RO< zk9<)-z}NpgzRa-75d$e`EpxSn*j}pQih5wFvj+T2-XwGux`yBcgN?>`(erK)Y*|yc z!Xo_kUK=42CbXX+>ZjuF@lE68HAqlN+X@H>u1k6H2qCY!$OLPJAjW+{|%+T zqSE!xKXC(cZXPJa@rG+lHiP_c61WW7p__AE^^ZY)QeeuV>a+9BZBV}5$a9Vfd`g&v zeubDj9b6uR>E1k}TVT{Q+XDr8PYSbJu$2Em^lKjeEOLKDISqv9S*m|_t<&>W{ja^i z7hA}(Th89Chv;e(xIO>fhT-z;{}YT13!u)W{A+)AM6z{+Cwls~*OUB9k)i^i7aG64 z=&lPl{I8F&#Y&Ka?WtE${vV;x$tk5Ed%LPyvh(f#C>8!3G8zL}N>LcwPCo$zC-~74 zIH)a9kFS|dGbPXX*ZDm3KZ6ek`oN;`iuB)CfJmm`uM1yRq&_)L2SIe==^0#x_~a@s zR5<_ngiKHj3gf^BQ_m>33;o%+|K1L&M7XKveLQWv?E6INP41)5cBMRlO77s7YNo@} zW2D2b`iAQS|9PJvLBs{=&c;!TZ=SiavLy^pZ# z@TsXg882RrhE~GRuc0DZ@N(5M*u$Gfs^p-2f4{$6qsXg9FD@Zr6cONpxF&!hcyo?Q zlGYv+Gy8QjBS&br15C5aePO&4si*(F(S;CZxZPKe7YLRjL4Uyh`!P$Zy1p&WFnEh1 zn?i4ulLZjkuDJ|0HJyQ+xx`VSFuiue3h~lm``uyt2K%^Y7 zUU_p~Y%k4*qy~&ffaIWP{eChMW^Z$pU!Wmcs!G4DLEXHYxsi8B5XK~Q>7)QQ)ZmOW zW5r{6w(uB6L!`lDQMxg8`W7g>b_vs&Iwb$xWPG&WV6VI5Ezg06gSyWkb&~{Vo_P2e zKovcU4+E=x8KK6m*t)&7B?pO>2F$o6i?}ETC_tT!y5J3dwu27750JnEm^81}?CIH>fZO}bnkJUkCtBe2{U9T3H3qLB zGswhb8s1>_TnnMz2G?3sW5^p_p~a8^`=vV!+{Vt`h-1}G;OD=mBf#HOOPx4=(j@!x zni9M?!w>;2oX96I9kE{==0?)O{6M}=R|pRtLB(Oy$ZF#VOcnW^q;67xfdu(RIb+#r zE&@|cuvoO*aKuKMjELEk5NSo(KUpuDJm%LNv zC4rn5@q!JgH;~$c>ir}@{j{Zzm54yLuy>jM`z`8Hhao87Ddig0`wrUZqA;fMRoo= zFla5kDhaJX%S+IPR)J5_XIGuMI{-tnAGp+4IRKKZpJ#n5)K?N5-V2rdl8@r&oY`-P zZf{zNncsd8&w1r@OC_bCZ9-v;2U0{b*+9<!B#YzmU!Vc3whFIgKTP z6c<3 z5?DKMK!cphn%wWy31;_NhMQ^Q6?Vq(eVcdS|N8JW&?n@f7Xk6-G|2z7NyWbvrpTlSF8~+e*3TXFFqRMsvimp%JH$mU6dvG116H& boa{mACV~G0;HZ^) literal 85368 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 z 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

    Kj%08xrSiyC@M-YM>JguP|s-k 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

    5!mcNjQEi{*r{eK3%&*(0w9X zy-HBJftCw2>D|YB1B`H?EwF_oW|Sm%cU&8iI`)6_X4r>Ll8DVldKAy^_0<`Q`JY z0ux1B`!;#|tyv^T8OKWDjdPDSk0_$ju&?8|V^fDH=R(>N#I$s@=5b>?m;M*c&zs}! z#Pn{y;45b!OYv37{_z1I7K60F76&VOy>9-F$V}zBKkmk&+X2-O(>o?_Libtgn@wAh|*;z*A^`aO>Eyc#GD(>nd$oZ;dt>U<C4mY$-{&P z2F-$Yj-K@~o!{=xrmRr~oz%F0SHpqzoAL$L%u*onk`#tg%DZ@rbvMp5zu_dap@?@P zI>aIe8z=hR4cqwf#F;utA54<&kEK~5QBzfa(><-g)yurn_g1wcRo_>3(`NgPW^XTc zbEq zakf^T$Hr2gwyaEBUUps&8y%SEP4G}|@LoB+$ZdL_(vw(j0q=W>P)-XObpiqOm-mPX zP#_+cULcG5@OxA6|8-u3PRpL?k&gfMU+^?i41U*==$62BF@lLhTn{cJ6z_?9#{I9L znA8`loBiMKtA7p|YkQc^JsH0Cfq5sd@ClMrACfa%zQ~vwLazfr`_t(r7hLnhX z)6Qo2dsrdY0Z#X=0WY|e!NSOYy>Gom0u$2|4C{Xi(;@9$@z>_?!}UVmdW@aryPy3Y zJSgiT=QqIu^?adVP@Ek_f?WUS{RzXz6;A4hZD}4i(W5^h{qLFhpb0@7vRy$pr1}#I z1MctjC?&yIV;bzUU;H!Hfit*#QL+I~$h7&+M%e!O;P?7LN)zF;SoZ?6|CxmyDS(^O z<>VBor9ymO)}KqYz=H?1NE;P?zcPn#`3R8GBX)dL>O?fyESF__C}9wfLE$D!{XO82 z1#*TN@p}uNP6(yck>+dCLp8E0hUq|uh~l<+lAEylk$RkNmbjQg+9I2+bH#~zXSOjW zjR-H*+mNGZ;Gpi@E`avNyqO2rx5c+vyS+J)4Y*ZJ)hSK5RgIuvLX)hoy+UMHH!F0f z;owTM$u22zH&nnNOxBva*o&m>9F9A$+;L4U9w)BDQWYBj13X{u5B2~xcs2y>f&shI z>A*aX^Vp-_p6}gZykaD*YnqtVkCR&bUig6)_)gs)l8QFRNt|unJxHRQ9D9);vE%eQ zrrDU+LtgTrCa^R=ma-@h&v}sZgv05HaU&lV`95*5KRHrYP~Y2fo-96jSn62hP@Na4 zO?Ph6TLG{|X#836v~uUl8fqT~k42Bqq22hTTpbl=;f-CDvpW=_ozd$7M5fvo(1wug3Foz8Yvb6S15(7bdBEh#6A0_F-n zv!L!_p*yxkibXq(fnjuA#3q_3y67wQzR`JX;uPLyLKSjFMGlACpK~ryBJvKFzh<9h zM`Mus_Z8jxgFAaSzQ!gUDR&v91U5g*QyGK^Xn= z;Oo?&*HQ0;LyZ?udZWuFnY}jLpJUk`|B%kQAY_R4-9AL^#I$9H5zrF|=itd&uC={@ zcf9@v`@k3ZiHG`fW!dh!<*$p=wDRla)f)Sa=s{OPnxml>Nwc#I!?5Ud^(gW%=?*eD z`q%u0wz@E6HQWc?4*nSw->JNP#VbV%U$)wOVTVUvdap_((msYAwzhxbNM-+IPT+yH zm$k*EXUw2`_~TmBGfMg=RZ!fxd$0Sfo{w6Dl861AQ1c`?t;}Wkb?$9WUL|j}P zF^wp^H3uc@_35L@{Fd7f11EZYxaM-(hZ+Yo8wU1Jp2F7)i_6fT!bY}KP*^@1*ify7 z57vi2n#}gX;<=d|-ZEP4+9F>F3Cjv)$g-7tvVUsJ#J)3)(UZ$4G?JKauikK7ABz`d z;wc+ztwHRQ;ZyT&#CG?t`sNF2{hG^7p5IeUL4HI;Xev@t-#V;hLpMUQ07u5IEKBQM z;*QF&vlont9=QXJu4`rkV+~4u3b|i$vj^RS&JMNEBOh(1bJyb_$5RKfqW)Mg_P0ww zkSEOx;~sahp@dJo7Iiy!*S=uwHfriNsY;R8&Ryd5#fMD`U>I$G7elbI!c!sNJ%3t#-+KF`N~ONLE?8*%K` zpXWUKvSGL4i(lT&-6Hn;!F(O^Ri6&M#ja+5Z`em-Qc|z)Zf`J2NUY!4*K@jG?N)D$ z6(@DOPfE{}=?OW4R{)-8q`q#%t?{{EM7)XFA6A-O-V_oQ8W+R3_2is>)Ns6cf$9a@ z14mY)!0alsS)e8CihCjw0?jaB_fGaCVFb3~#yD9epzU_}ipI-zZFu8FJvrfZODO}K11SC|mTH?NZ-#+PQ>5tJ5QEf1};^BIE_ z%|x}ejzmigm29Tk!Jwz&|mOA?h{%Y`!~P-C3wyq!3**UuCK3K=}Bvf4M>DQV&zp z>x-k+a+^g#Y(Cv)D0-bnEu^EzB?ZF!0~vl2!`4++vmZ7#-nt*OApBYiVLBL5l--Px zE7xz2y$N;fPvJ&Do>R<|Y0pdZEc8DM3JQwd5fHf)k-ke8@RO@}D}S)+E69iPq^HLj zX^bK=#JA1?f%0Di4j0nB{9*8EA@$UT_ssKK3tRt;>yUD$aE19eS`vq)1OV(ctI=Fr z8WeIQ4vvq9-$6e&8{s!J%$_2ux-!%&F>}vpmwOBRTu3<5wmQehapUMzJE|-p_#wmvn!w5J#PPfP9i#49hW%a#i!@$S?fUE5c?R9%WrR{zwyfgW= zllkSahuQWi6KZcVlg_KM(is!xQO;Zfc)KI~_?Vj+3UIpij^d{5#B|#$uxsA++VWAy zVDnU$&UR!v;TTaA39V0_kH6Y^^JP4vGa;_!Fr=`a@=Nr%{P96*8SrP}Ts(NH@Nj_@ z45dhW>gZW@N;oVUk{m06$9v2$*Y6kxr@A1+j; z!!Dg4cumR7jDdho4A-Y|av0bIrqlVJ#4|`fOGFQ3%YwrCE;BXErmW|#e;P4cuAQ#3 zZ4*4dzVtMVS51@kJWd5W)8(g@#$%X!_W-u%yF~u;srK@%u=s?5;zHyZljNLFmLvI? z;e;=JiMSoprIR=cHITb=B;pjN?2-E(k0|?AWpG@BR2ekx=f<-s^8|KNg%1T`@t<$y z6Y@k-5hx_%**8rCU54PzPR2`hA_zFG^0S3QaB?d23au-wP3}$vn+oa+^(WQByhBDc z9Jd0E4*m|tpWg}#k!B~%1V3ISL&`fsILXe=PLX4WT{xrQA)WQ)7YZI8o>&{1Qf7y( z5xojzaNav&fOxLi3|K7`3UqsBKeU~ z+4k|5O-$pUsE*X=ik^d7M`!EHm_C)Z4l@?Rq&*c^`Z{rmU)_5#-{M>oO`CzH1jBk8r?yTzNz zri*q&`7pr&0-|_-+4wKj27Sm?{kk zI44bBwjri}W(B$QQ(b;=L)a%@=-@1pyia6)Uk;c~8)Hahbv*fVZGw~R^v1Is-e=M&csR2xb>nV&!ze%!?!cMR^ z1LEGvuHS4qy z!|ky#W*PSdk-V@WJ=>lBsIaus9kVfAUCO2X)fhDpjR<+oWxKfA=5R?E`>vZRZ2{~f z#jBb6!wv$qDhoU(7V|OsQ%UGcke~112E0N5*TN(5x-S1vs#VMSiNmt+3GbGJ zaTxACOEv4kokPRItKsFarxC#I&4mdF3U&;?uN}-S9!*S64w|mcvMAPcnM?ciOKqkO zH)(x$O2eskKXA;C0wif&g3+Z}X~BO&@mr zm&5cDalvD1`36TQVpGl7p=JJt7U%cT0GnA%clZ6L1uKyO?RV<*%DTz5r`d%IEdl^Q zDKj0W+@;_W7ykTjm#KL8|9H$4jxBPLP`Sgvq^0%{zp1OfBu;X5w?S%^&k1^8rgWM- zd8tD=t!C7S2&`J$+6FU)QRL`;I)7R?P$gmAN_sVWFrHi=xN6Af1WsRSoqLYs{TYix z5<3Pb60u^0ePazSt#uQj|ApO_?%YXbGjN;iI+InFNv!IJ=jR9kR>rdpZq*t*5}NjA zO9kpCJg@46^_5>iBg-svLdw!=-?c8rvglebM?9+pC&Nt!Nk+6N5|<$cRu!sCx^BZ zM3Cm*U%J!@<05LlpU<6{SfwavY$zYVsdv~OqYcBi{*+|DHG;$*W;$9J_hH=nEg9C6 zCqaG)=)T4bm(FeTm#5o)#D*ea_yNIKRAd}yKEVqaLhnZ^Pj0XF+Y%^K9pr{V%p$#4 z$e-lmanXAzg4#rzZ8@|m&4$Jha{cuYbc`=IE-jWpFUd?Kc%}GK9Sh z^z{dFr3s``dGM^8ZmQlzeCITg7(LH1SyOVAT4?j;mU79ej0OI{iyMW^a`e z+AJST*>AS)d||56ymm5n#Bv!fdhgl7UMls>EMdT}uXjk)Rb!UOvOiy4eg1-X+jMuu zw=+==+ZjPpEyj7gg{K$Qukke+zrjb<3F=KQFCuW~0hc5B^5le|^pdAKR#S~3UiWtCh7mLD@Ps1qwYQS?7WGlkj!=dlrbPv8|2IL{6>lsCx0-HrVm6>N~}gN z8an2c=HJfu-yVK55>RwWWNZORFXTO*#cJz$mEq?lC3g*#@CXP70D7z)GM6Dy&X*Gy z?JJ<(+h%%(y$P38zhu?(If4)`fQZ{|v3F9|W@Q7>0@*rXf}85$&&C~YBp(3O78Wde z-MxW^m%(D|7Y}4=V<(Noa6$N(XCc&EN@eTRZuGi;Dr94xp8O#JyFt`!JcDMY&0_1o zro9BWgx(%NtZ@psOH(m%Ha}O=(I~;^UtRmj)g%kMEw8P?Pn9XEfL*WZa9r=^>`c9w ztgW{-QjoP&o3U`S5+m!2@8lY=_?*S-)}1m3PUDG<9<7O4J|v(ZA*pOW9m3hT_TUJbMH zjY$E>*f0-VZ)~lukEG*@axbcW@P*F2ZByCqHQ%f1;Cl568JFoMdh6sFIx!?(Du_kPCxKI0wZ`|A&e9IRumIrn|r=kd$2NO-5)E=Fv8 z|8^Q7_O^$f@7Pn=^NhZ;vy*xJgMlbD^SBjq*&7IyfeH5hh#m&|;5`t>kmZ_gU}AaE z>1_QM)TjY{0_o@%$t&E__B~>hspLilikanlG9nj$O&AZ8*iC*I_k^p78%mqK{;PDW zIKpwp*fpI2Zig4%m7qT+JpA9S%WH;u)xnIfU%!@H)I@ENnlvJyOF86UlvK2$8GLkh zQ!CfosWWX2D!?SPo}nxLC3n!!lTxx(P0FhG*X~S6ucZ+S2gl+M+Wp?7ZOnSPK})cp z+qX39Id7{?$(^Typ{C}knZ%V?+2>>xCeqhSXZ^mMzvtXxT?K*4HN9iK4Qq9Ls>x9X zZ#-)L1yzi}ZyanB7jweI3zF{D8Z+~ej54mwCmy2CZeFZ{%Ief~laDPEXL>ucIxf3` zfe5m*Kbvkg$1%)>aB?-8x3rM=4zIQ<`8lgk+g1A=AROXP{e05${iaz(rC$Rq!NL02 z@A1~Kn66$$(DrS7$1paZZ#n%4`oTvgUM(U96@+O_TGM9PSvH$^bPVQF;UoPQuFZfj(e#bj7WPNK+G5fu~ZG>X?fLG62 zXEIdJc5sq$3Wzire+>C+V;bE)8x zBGRi@7$E}?3$L-U@tOA86gi3|$JPB{Wqr#vNBQF?{KQxGUHM_Uj{A_V`j%s=6*kMx zCLSyxWFD1kBRuF2W;?XWj(R-QEy&6RE4I9>UmNMuPsIS2mSh+%?P!)be1!1e$qk9o z_YY-rMai5Nj1}Ub>(w~;#&t-8pvOUKaeJ}H)5bHOZc5V=~#$Z4RcCvNHfZ zEN5JNYeyEUz4cDg9bkQ}OID?l-Mj<}9+O5IXtI2z-fm|X67!JAr+$>EF3?q~TtRU6 z3VO-UPoBsMK6A9e^S8+!#%}JfQ9dW_PzqK1Io?DHbg%>TDDidl))PhAn{cY0ic1pZ zRc3=Z>LnUmQx%yfbleV0VoH3=aMqr7S=)Mj(fjS~KE902fK)<3MTH%@-r5eoEI>pj zw4CapRn`B-#f0;=H8Iqy&&0v0M_cdST$HtyD4HqrK;k#WD+dcj8rh7_zP#Uv|T zU{f+jo*0%F(1{4PEXiODSVNsuUVALSubM7?x+O9C)heqGCIqcuF@cVB9$jtBgl&l( zokFQ4eEix^T!Y!JnW|C0*ZV0;ekYHpyx2>u#q#&x=Z?CAn<%N%+J_gIt8XB^y}%x? zIkI&;UQv828y<3(=!LMg9dz*P39T~pyH}SdJ?)~_3++SHo!}Vn4l;)WC-4ukt&f%G zREw8etwL~Xpo@Thw7|Q3IKu;NHbm+Lwk`DJ4PLz^1$m2{g7e?X)GB|u{JTxNGuwh@ zNm*BB=DG&ff(qECHYs}cSrWy+6I&ia?feanigfW2y)?u|NnMmbzNbbwtAJZfpk2n% zff1;4j-i3>&p0s3%Uz!gY?4%XJz%coH8o#aaIfW&F))D{&KB>jTjCl#cS*<35Oc$p zK}M&I>WbKPJNtX@5{7-RRq2v=o(!GqCbtn#c*p+M7cnSgCWn3bf=rRqKcB(pyI;cq z@gN}j>u5x;pQhY&f7td|Tmf_9g?^TTLr5456r}*W{srG#+w*I?nIg?%HPkbiG~K+6 zo(-P=XaRTk_u_56XOi!$NqhGpF@#H%Q;`zQt)rX#Rn@a$^mo zs+f3lTp1OAjXv~2h>1YOoL&2)LKO*RyM>s!cm|Gi`?_qL8Y4of%**s8yT1eqha}{? zmo5TieD@I11j9kxX9v@p$!vz=aSWUY@~L(bT0xiM{vr$vSVXM9I|_~x{`xI(&o#O{ zJ2A9|Lq$c+dff`ZJS9HJ*N16~On(W%AUCvQE^!9^My?cYn_!@lJ_n;03{m(AJY}u* zAK6M_Mg8jY=z8)H!&htQh(penRb4$*x^;Hy=m%EgPU`~%yDp>Bx&_Y^jM5}LCiVhl z-$H(nm!a(%E>zach>n~E$O^-}mxGAnt`)Sji0dumBP_2m z;aM|;eede^BWZaB-c=_w-R3?!onm<7`xBX{?+eo@QA$TQSp!x|&(@s&vhpy6udOWQ z(X}=GgRcp`PYcgoQ+%LX8I=Re7VP!N4Z<3U(Y@2xbaDqwETWmdzCH`Bv`hLF@^PsH zJVhbc6vmU1W)i}FX*dhjYUTIgYwWN@Ci`Ri)I^h`k_diKBn93&%dt)^<*-3m*yRj( zcM?Ju@mQ*KrHX^YLe*Of1cVw5{#=uv#v=9sa1;jJBXDL>|ZeU5_z%SwE| zU$+?dGdXjjVD}9xbBp_N4$s4yS}QaJg9NToZw)>N(4_PR&3yHv6AL6`oRg}G!a*H@ z$V_+?nwpxU`s+ZXX-7N;)E_KG&V|S@#%(4>t`de9zfci_x z#cll2_~}9PKTA{PTtWl4lAFsZMtI-8dObY^ky)p@VWW;QM8>oRkKQ}9lPrWoN&No# z`FYNd`v5Xsx=*@v02|dJBH%AMnLn7rSx|dWa8)On*1^H%2Hbu@#e3~}W~o%7Fclf> z4_(#Uk|Nb$I-AN)#Xo59^1Q#_&6PfXWMJ{GTrwElp2H#a!U(~NX)ib;-XK{Svx|c`Nk({@$r2bMoV7*F&yj5+Is# z+#jEvO_-ZdRk|M=zt0pQb6%H;p4`i&o%#9Y&^e`B%pz>zEg3)U%Mp}Q6juHQgqZsW z;$C}_3b;!W3j>y3C+MF|aI>o5DrN|wHrARU9Jc70bP4HQO0J`l^JK)U~*JqooiPOThslTxLbF zdfg1GnddFd5=uqmG+Z`~IF$K@!KtYffHw}ndqro`)my;lyCUh5_A{-F9QYS8B*(eZ z6VDY>xZYhy8PwUOkJFtN{3i7QBGMmYc@d1N6~TFpKAT^@*H>5cPzn(-D_pfKF<4NE z(3vz!VJMQk3s3%jv)wS)4;#DuO4<&gVM(8&$Hx=8;;5wbtT&nro$>uu3u-yUNT`j!();?8(pQLsd}8BS zeGiw<((^Rn42^onUOEjw+ksxm1;I^GDbL!y_m_2IKwC&tUzgdYuW{;)H~Ux56Awi4 zKk&HzB%Upr+Z>trK_5;U(akqH4a#xWEao*88Q{`%;9iD)ImZtn`IEwCXcWhCTR_(y zk}GlT#$EP?U4GS$sbt#*dJF3}sS_B%odUt(_f{oqB)^-;VBXWbnY5uz% zT(4LLqOq~D19?H{?AyF45gZL)qf&?(zpWa}FQmB$C}%%6AkuS}`~LFNN}LN|y01E` zJxGp79RkWrbjSo1;O<@Xf~u;}N2(&PWI01J6d)?tjD}=XgsT zpggE@I^nn0N-8Pm5Y06d^p1?gj1?;92B!?I!p^UczmJiHEoaC&JA|%1%(deM&%&4~v7-W->S#{kM9P z|BXz@W?tCG#PyY2YME$j>>&9p!XO>u2NfHqwSJua9x6g_Vuub|isv5tg2J=#)nfrQ zs})ar9LX+d`7ew$3B6xC$)-^_rEpqcDWnUS#VldH^TYn&(xsWeMG@1=FWLp?d!D${T!myrr ze3OVIt-{dJ`YE$RZ86D?`1daxErkoG#LvndK6h8gOI)L0DJ5Tbzv-VZ=QrH%oNwIJ zgE;*uK%tgE#s%xD{R;qt=-+Nv~e>WB^`=qlHjqN;Jd@D%5nyxrCFwuu@iX=%UrsUD1<-P5!euP}^7f`QW$gW!a!Mc1a> zp>N1t>v`kTWvD=TYCHZ~;etg5)Td}OR~tsHAMDnXcjTC)cM(fj2cWWxJsu)sVToUD zXrw$7)`fO24B4F*zj%x;ELz5A;%=yshsaYyB(16yhEQv1&(asN#L1eD(#w%HK9Gu- zTA6oC>852A2-Dk2TZwcfGAUS{>TQ_*-MCV?EL44lm`TqD3KQJi@ZbO^mCdW8v8tGr zk-o?7t>9dB;JH_62%PFQQ#fpVA4uS_ohgLF|F+!{{y*;Evhe-C?%>HSZu2I@=Nj@_ zF{(L1KNXb~b-}(~ai4eoOr^fn`=Rm*V?A=*Ln`Mf>ptJ`a+wZ zD3{G7iXP2yMSyvJS?NZsxAv=cCn#_Y*6F^d@Q_0#v59^tr1HqKSmyiPl};o%Gm%f9 zrytzEecf!0#F!YRZ6$ZYM-J;DZF--UaKaMwsxw20vYU-&7qR;5_hs4Ewc#O7QwIpoX2o@dC7}o`U_Ix@sFlA)h{q{llsdA$c zV&KzUrSd3k73$O$pL_0SvF!4ryUhxA931%5YueGIaL<1^Sznm6`z`+VZM{FIMe8WS zRRN#(8rfWn7hV49gu|#4%zYlzP=JVfZ0MyhEC^juONfwP0wpJjv!<>-{=BQ(dqqnJctI;Zx!;JZKxoUpJYW)7%_Nn?aSvV5$aDI zG)-(J(Cs)2#(Oa!MW$bXu#MQh0HQ6URgwax*HpQFLkV1q*LF*g1) zST8~WaS@0f?`~4-12--y3_FuDo_GRkP=JWf%}W}f7zMWXm}dH1koaDmk?vi4*Xq3S zT!-q1Uauk??1jBCJ`--2LcYXp?O&|nL%S^cVx0S&9-1i8()G1X`Sl6nEsQ|FpTtW7 zaLV#Jjn3hRb3Qp1FSO3@kbT4ALj=uoZr(g0#Bxg|REM^!y@&+ud9yz;lMSAu>kR6$ zo#-o&kJ7=Ll%rlbfk_j*k?nbIJ>WwGd0(Wzj4W{F z))N%tIV+{E#N#UWIl%pR7IAc_jluJVM<%(OYLs@@LEr|C&`>{Su@cduIcEt+;~Anr z@Jk0V7kr8-Vkv_%)JImcC3O}U)>aZf_A$GTw|y)MVnB$ON!dqZKnD#S)|0GJ3!N^1 zi-rcv`P87DyNoWpYh!Ek099|3Y`3(gI~l@hF$_YJSMMxm7(VSB1HDoK=F1cxbGKqezh>}DF`dC%x6FOUvty`KQ zlq9`qw$j#dbcH)PbGTp<>&=XY8PdTb7b@ICZF{(}F*}uw|N0*-;6fr*;$}5}nppFK z^fdipulg`cf7URLM84?TNXMT)q%~fmpPadP?5x9~7UqmiSI(HSUxsi;Zxz~(4@vay ztur~ieuW>NophzH9(O33{7tq0T%fF{*K6f6Q+Q&esE7x`lRScU+ett}Bcyy8j{+Nk z2R!(dxA_uYRP9oE&Sg@9JwfP1#TBNXD7OLG6keuVw*t(H6hdKCSXkIX{U)CJpMk1* zXT6+j@ znCGWY(iPamxT12H-uVgz(FJ=S=Qi=Mny!~dEu5zgiG7X!hX?rbc?j6$^X7{3tS-NQ zmE`wj0Q39v^AV7cg4Np}shD+?64g%|Z=u*H*cNQjt~TdCNk7=xiTFAWKUVV#Nv)WR zL}X#TCh;?$Uj1w2)J|RFNB^lfd-qqOv>K$X{H@SaUJU8%S6vfuDy%dtckgM}>@{8- z(E7k?>KB+SMUc(69p}fGW6{dSjhY+c{;-*1eNvc#eaX4i#t#jr0b9AA{98V5e+*DI z`R)o~xMMQMBm?Nyn6;}Aa>xc+c7qNwua478Zvuu}GWZmRKz-`U5cX=fNp#)DpV%Bu zN4FLN`YNXH%Rmtj15aP3)TE{32^%l!TDM!HU)`spa&?-%R;Y_W`US4$JD>41yBXl&One2f30k9X z?k(Sq&4!GIT0oRtp6(=dyN%guZ&bb0X7mn1=AXL+7=mXuQ|0OzQECBCjHAO_IM!b2 zo|ukE3Q_Vi-XZ4{^doTz&99&XZ#|(NxSB(`vnCRimDKbA>|6AWfRB!wc3y{A1IyZa{^{sU~m;>T!MKNN|KXIP4?0q2CyNlCzjtTMG(Nh{RHrzA_~PqO8>JBw`G7FfZe*xgIsmEA@C zgP|F5IOA3anl{hzqFnXxm0m>Gysaiq-9002&Ow1mtT!9ZWpv-tMtF7o&5&rS7K4b}FB!yjd9 zrHC$BJm?!z-*h;9gYj(@Z+T@OX(T*ouh&gLcmxQTNcg`6T=zoZ5YY;WG|&zvsvdxY z2hzU5oR36an+Tm#VWOz5y@A^ zNj;_ChQbjd(GCCxhbYf;cAqm;8!_moEtkMtgh1=#Y4`An(g;{jPSvQXWvQ&l*D#p? zcW`$C`T`jrdaN$lPlCzj1$PsU7q9mD81hun8vx{r4;zfl<{S5gO`t0T8`&bL(d`h6 z6=BV#6l&J$F#3bcX1}R{K+Lkg#B$*yDPwR{NTMdge+}x(YekhQ(hv2ujTV1g?aTR* zX-J$YNkXr0@ykaHOw4B+HLlR4~xV*cj;36!t$YIsj`3yvn zRR0g9)cC)z-m_?yr&X>o_bIb?Our#qili|_xEeG;N`XHKin+xle-UQYx(T;Jm+MwI(l0E5+;k_{{#Y>`xIsmz~3p)wQ*i&v!@Ss}pf5ukl&g1ir{+?!S>R^@I|m z?Xc1|FYC0uo@*qOX-ypL$hT*hvp> zh(y%mW(*c@qa2;T)Q5(m^ZA$~Vv(nX+saK;TJMV^?_W{j8*w>tccy*RCCxp-c$5e7#TPX^RKv*PKK(uwVU54*c#WCaoM z@#>jK?yg@l>K{@$N{o6KKgp3{nPs7724HE-pA(TjaUWzc&poR2@<@QBz#TM zs)`3ADcljF14eLd6cSGK!_QB>OTL7VdS(Nxk#}q0%1Et|!c*Q0n7i>*5sNQ@qWJ!o zNvZvDO2H$DwX33OU!+#gGkM&>7G}Z7HymFMg7Hg*i7nKT?Y+S7E=NEENIRYJb&Z=jkyuO2g z7cGiIemI#Xs59ugjA)y!E4Xbh){4O)93xy*hA^gh&A>Xs)^&fb< z*GykOsXmu&Xb-ci%zUB)keFp(0Mh-Tl+Ww6W<&RmT{-=@+!@4}!R9uY$fmi`hF{L$ z?Y1>4p1;lOO#*4aBjQrE8bI8;;bK%N;#=1tPWiL5is|RUmbD~L62<9^Kf}+NI|BZ& zTn#HNLDdu94NEP-*HPh)d^hb z$qbH&K(7CK4wT1AhGzcZ%*-;>W9gdlgcr?0I|I>&&X2=pFkOQ2SVuPM0}{ej71s1~ zA}4PJ*QRWgR@Dw{bI=XTc(#*B`yumZxu!6gJZPwIkWa6{8_=q-~ zeyahcIaFWGn$}WM;x&`dXt~i$`P8M^v&#!iX;`;QnEPz``*OoJ^1FIcZU~ou)tk+& zoP-p&a$XakX5R4y@G<*`6yw0YNVjf>^Xicg3U9fp=)O2^OmsB&YJKBRcUHPG7m(MU z6~UilQZGgj6%~~(NhTcjJ^no6<{6vwKRi8gI^*cw_W`c*`5XrYL;_9+^K}59P-tcJ zks!9VALrV0l^B!%zo0;35iDr!8{Njj!ooQBnQ_M%v*VSXeik-le41^nZ}xuK+1U)X zf=~qm$2zk~AlTAhO)fUNILWJ?C#9UAV_-NJ48EM#VrU z2wd0!-ytHC1=S*e(4fx7G4gH@A=AoYq6g^(0b~rSm#%;0&be_ zai<}MsVXSmtJINr;mS zY?}_f`VOL6#YK?L>6n(6QJKoM$@%zm;!&(9(h8~k@bAiv6G{_h)nc=cqY1&u<3uf^ z3PBhnin0NSt|tJi^Di$brh*{*1ANITz@{T$JH<4O-{rM^qihXIhU)O=)1Jr!KH!_w z+SJr1z^!{6dda`uWX5=;JMR?60|b2OJ(->i@D;_Pcvdms*E60{2hO|i*4Hya3<3&K zH!B~4+J8hYi`1S6dt7z)x9*(of$##!xqPO~qm6=r56ShA4;*Vj%2JSIqUY}}!yCd4 zH8j!AZfs8Wg>io#^)pgYySaLNL04;B=J{xrsYJ~=+jMS-&+ea+viYUrfD|-c5etuL zUbH>XXo*AVNO3fbN_F~EzB<5L40~sz9?3gi^$X5KoF_N$jR*exmQ5JGu;5KH<;NdB z_`PmCt*qDy(sW1jbT6i9}vcgKW zGLXsVxhMQ_eo_i=!p0iTOEgX3zKE{=;~V1@+qFSWV*K90c+%`IM+qz!Id=0wGZ@fW z6pX#Bap;9`W~yj7p%2Cr90G^9lPCW(*~B+0dDq2~^F1Cak}twAF4^xAi!Zb{*1rVc z415qbzU0`)An0Kpyb>V$Cx??dMtn8?TborxPPfkY!|>ZE-p308mz_M*B#knid`1O4 zl81D1A$O%zZGl8ac|WB#U!QaJLlC;~XRW_hd9s!r(n)7cv);Y?G_?31E#Up(LQ6-Y zvk(7+3e@gueE1f2kdvjlRk>@#8zXt$j2v~6@`H*4Bsd+)v-g~hrzZz{(Gq%K52*^l%m!UWJ-W@T(4+P~flpf^{V@h8enHmiqR;|!8{jDzuq>f3 z&LMeSVzz_nph_ow`g(8Lt#LZA_86`_#X+UoT)z2afNANTpN8g56X7>;-d4Rc9;5Pq;+o`WNSL+>pY(Jj&&KkCIxjJ&Q4>x!4-^V>9fabg(UM2S^J?eE> zq~yA-@_JasC#T`L8D%4b9kd{-I6;C#v|RcLM;%aL6rWWheE^$`KBH?GdhK%`J!hZj zwb2&yPa9A^Q1y^<;yXCKr3v=8JxUdf`;}CVJ+bBVbF(*!lrj9^`?+n>4rzSVUZ%ko zZ@i{DGik|_ZtUfGlKZ-{-t92sgmM@WXO975uvG=x%YUuEB9p1D04gbgY=e0z;3E?u zAP9}#y^$*Gj!suJ?u*W-_jE}P7E=wgncaJki);-M#M%%PZemu6udak=4c=XBYa72% zFH%7iNLNUW;)nMnUpD4dXmRq_RcIU{$tbk3aX491+nYPb2W82BUyyvt0E_M=#|g!L zvZIu$vuEyyj$Tkk3Ak;%LlRhAbBzN1o=7kRWS1%PaEVXjh!9q$kNQ{Cefze;*%zA>d39Ph5fWWKBwYI5!1CtPytog<0;~Js(@}=J{fE1su#ko84;xes zAf{&m(lSe(0*q!=994pD3ajJmK|qzZ{kSkrzB@V9yU@b6^m|%6G;F#+U)AyGj5!#f zU{ZkmP;Ohuv>fxsww_7}@8F(R1!S{aS691I|bwe0Wx{bCnst2-*W%wTj!61-AS9<(>)m;j`)` zNsS|3glxyn^HnS0v9xM|^Tw3Djd}Y%Mhd*nzW=_?oAQ|@c^==Fj8T1vipsV@I`cuv zm*qV$a)=A@G&a`>0%YUqvbCX6C=B-;b8~lb^S80Nxs{Hps%avefb!cJbBMK^Ti&%E z+xk;+vAp879D3)CeU+Wtgq-sgSPufcMCX*$0Fc5t`bcmDFC%V0p-v%m0vM`0m~X8j z*R^DD-XBCy`l)5%r$A&($;)kblEq;r9bJ3-BC+p={IrL4qZcbp_?GtKzzcPkccN#5 z#n$oa2<6B`#_b?&!T@D{X;YJoR!$_uTHV5WYMPMCsu@{Da+V1SV21)C>Qc{<=vY$a+Xn~Ho$>m5zUenQ zi)Tv&wPRNRJRV8(jt@aD@nQ<$tX!+9T)_3f8~2rh@0Y?t^_g>AOjZ<3`Z=`bgeMh? zMR!lKrLnEVruc2F%+dk5rK?|_*f2^zCzZwBC!G|Y9p@Z&(77rJrbBP?nxFME0_mN^ z%E@JGl=2A+rVFgB!cFu6?$qsGo@p-v{g*{iQtZd?w#v(YE$Dqsp9$F~NaG$X7jNRe zDB&VbEcT23GRoAy_?kE<14HsC^oE|N7#8inQK3Xf>Tkxc5WYPlas%47%vixbNsV3w^f{Y(mSy# z2p#wz_+3m}h))@(3%UgteQjjqA7B8ik7|H|mI(iCD^&7UD6rAiS2{PCNsNs`Af5Do z$&3@N5)aj+aN5V|2g}N89+WxT_(S@Z7vuF~R6;jfms_{L@zp98P|C~8K^PWB|Cb}> zE)WXhwWH=gJB&sTaCV9-mSV`EB#E~dE|s&55Da;DO;POnU9;1b3r$iCR+yopxDB4v zc-u~vu=9FDyu1>XeQQ&BrVH<^ni_9FdW0B@jND&-nZ@B^ZtCs(X0sM?xj|`Enpdx0 zIxTK1p-VMDfu zarKXr&fjl7<%h_8J?ZmV={EiN_b+~*qIY3*wOX=i6(6i8Y|i1?>1JE|f$+$OGMvS2 zJG)k3+w%{^k>u#H|FmvUY%tG@koL8WVq24Mk z*V&fQrexjx0WdU$c^hV`F}xu%Y<$sPg1L^5pP0X5jP6s-vk~rT!#-6;I}-RCO@I5r zZv*OW3bSuQm5 zUpamTr#=U?#`MZLU&fkot@zY!Ii?rZ<3KQ-4qse6CRhAEzfj$Y z2aVukTmSKz6e3oOKF~#;Q|qcKuUPdad9##kJ_7#C%1fR(6A!!aM8V8>PX- z2?0%9K#XD%k9j&F^Wz8zy8kIwS2Z-*pQ@m6_cLY!NuoXwgFZf=G6b(K{LFcFi#CV2 zL^<9P|5ppAaue53q^(O)I=WuUUaCNtr@YVD-N__CDBDLaPn_zj&4*Ob6AE2$J~v1L z7Y|F*W-8_XVnSsSd?3ipYKR79@MSxKElSzuh3YoZxGRC-B1q}O1XJY|edY5$PheyH zC$liR8d|s?JZ86+q9PB^sVZ2zj#u$2ePpmpxd8$+-|`v`ewL{^|B0tBN$^sx8-}yx zF$MoPLuJ?+ph5BxT=Jt}FThjdTWHYISn$WKBVR7@2Z+=kc~rXWYRt9yEi(EzB}lK6 zENfY$oTvc=j#D2-p}H2tu*4~NKK}in{4Ak-Bq#m*fXY)00z91eN7mf$_OvvvZdm8-EC|D}4-4)IsA;enIeo&lu(j|Jg6 zYxP+9vLeWuniNl*>i?lR`22i%zI{8;fp5U9Oa3xj7qhg|Y!d`F+6_^<|sY~aViuvG?k43085A^Gw0rI^q!h|Ei`*<5PrYYc)4U;Ebog`3OpzW zCnq_OJb?%HqX3AOrr^F3OrQl#;~*!SwOk`XOr$rY@BbeibzK*n|JRf(K}}3mD&KRE zw?s$K#~~LKF~E~eU0N%O;V#?d=3Dhk1}`e98+rK*I<|a_gd}pH`CD+2D_4^cboJU` zZ}u&(s}IvCm94kL&Mo zXy4J88C~4&(`!~%v#kd*j@?fLBS*TB2X0!JaW^>e6X-0bqdLnVsu_tyHKk$*&D<$|-E|bL z#iE<%(tm@d*1oem8Uf|ha*5=j1@b&uD*0e?V@389<#*aZm;Y=Z-X*ipG2dkIv2-e7 zAIngS3gi!S`xd$;ZS{Y+>dWsfK(QeTe#NMzq<=aM6h~IF!j!dwDhmz$Q0WVyXNB*# zcC$#nmDuzD08j;2GK*5}1PabBz<63Ar>00vc59pW_2 zP2Us0{s5D}W>`Mds*ez~o0ms(K0e6hlU1bc?93%{wFK{d+(YEPQv^}Nop;C-@p)dO z331I}>*+PGx#E@X@B)Fp0p}o5n#sR`UQoz1%k^M|kuk`H zh=F^k()eM%T+nXU`*vOT2|0=0hC(3d(So05UufH1Dbx+cnzv~R=!@W^AA|*CCT5#Q z*(;5bO1b{l(rcu;msh?UPIUf3$$5-YBwZ`*vwrI?xYrE^Z5?quEdCzB=lvxlMzw^OCss?+V4+fZb%+tvEDObj_< zZPXo7KcItZcO}2)sD*$0O}kV&5^4+L#|rhNq?uSO|L|*2u&=|x6$EJIvyRHhi~*c8 zihdB!s6KuG>l+DDuiVc_NQy36T3WT?wfObx*HiRZ z);t|-I_SU_y@P3SO`8E^Zd` zLO%b3^nrLlD99A7zx!<0ex;0MfZ#p5i67(AxOY|d?e@t<7hM7xGZQuzmnOI)F@O`f zc?DA{)cIyzP#BjzLUFC}(3uIFTQh}Cub#kq>fzlrHk-;CP8lZA|C-SWEhr>NEwFRS z%f`s_R4bjPR8x3bkbWMzzvzom93}64TmrtLb*!bBn2i~S8svh_a@tsQ=Z}7#)y#ra zYOF(i{vGP&`$jTFDFB4h4U)aJBq<0G)9>HK1$V(@0=^=J z*X%t9H8TGnAu#2Odbu765YxeWM99+NVMWHY4zBCr0w&sqq0f2z_`q(ER{=N3Z>NSe zl{a%K|Mv#GYcN`e;TlTYox#CeA7l>^8R)=xvJyNA+2*bW~?|7+w_XNkNOCXk0;s=A)dvV4G{HXu(kP zLLS|d4p+gJsBPdQay{hrG_=kz@7Ncxva-%d^1M6$n)2b^7@dHUGy-=Cz_-;Z3WBGJ z{%lHjCY!C8h)p|aL}BKC+!{e=3EHyx@(<>f)isA$B}e2>Y#opw7%|U4nFX0<%a3yt z_>hs`6E)?$Ra&X*Rc1YIjS&&A&~A9e-uAy7MJSXy6&`p|sM3Qi4t;5VsMPPL{Yp%# zn>t1aZg@c@D|<3}fpjh?*wh=Xy7<{to8*ZZ{F#3@#?RS53UhlZtA?yP74KO@uZ2Pm*qAjEL zAQ0(PWrO(ia=u5r;qFCh$wGK%+_&&aAky<((}W-Ro$r)?edBJANF=I zl$b>Mr$ryfq@HItcwR@MEc!yt?)hPQD{P~!^RY|F{~Zv*;mZOVB8I<3zJ$Z^!$^tB zq)xnEFG~IY@wR77sTnoWP|#W~4-KIO$q)eS_W~K&XFa)BOIxn{>0yV+JPRk>jzn9R z$u(%{0dIaL$1Q{I2IeS2|IpABuD;`qfICGl8LR#~*X?mc5X&AnSip^g=?*IOo*dUp`?`Hmr2$|aB@P5iqputZtEI`s?B7v<&p|+!pg+$LUa&j-VzKX(gB-^{?kCqrzKv<0*zVk z0Tjx-(Bx+S13;mQ0192)2>9;Y4+iSGw;4iJSsRH5VearNh&^@hdvygIaFE%m0FNsP zfoeB;HWkJg(yi4H2oCnpKVe7|)@Qpj4Nex)x-@?UcCV^=9o?Mp4-Ud4R6gFYu?wUg zI!B~Arxw2nY5(k6sB7UrZikHII_jAi3AnGnKkwQ1X3n|F^>uT5#8aP(1P&%{Qd1d= zSca5SVe&j_7aJQ8t0CQ-kI6=b`ZlbE@)d@M*rSmU%Q4oJggyUDq(Eyk-WZfEXMxc` zM51-&Q51A^RTk*S&vrD|@3VB@H74f0ZuWb8B6iXBLh?CgmgpE6Wj)N$QBf=151*{8 z<7h#xAa-{4r4_XnpQb=e#bA@%r^O9=_#G8XPxW}DQE}GJ8m~~h;6t(n=B$#WRRc02 zqQCue8eFw0uWho+S^FTM zdoo(sKCBk>{%y`DQ%FlIgu5Kce8d7x{^bRlxPt@sC^G~oy?ET6d)XtL{gFTMJu*<1WGzC zcj^IOT1!q&g^u@ZPbK$e3UEEh&$)Gi2I31ooAZl^tk(*CVz+#@w?WZ1F3$-&Gj{?# zs39%5x0jHRC}vl}t1zrdWb7C~#@`4hVgtF`yb3C?^I%&ykr+2iP}LXV*JyD1G49g} zuBWcT5zcm|XnkqN>IRQY#M?dmmeppS`TD%FhO$n4-R%Bnw=jzZxkV77C|~Tp!&%N4 zopZTBecUhXsRCFBuN;~a%*ij6ufnNYeSPQ9WF;o%iA|e^`roFqc%AQX&oz8Et-c?` z+!z}R>(6Y%?qs|}ZU4LSf$Z*1hl+2DJC5a)yI6fbQiWDDF!Qkbt!#1d*48c7AQKM{ zj@KRLMiBBI}H_DQezD%>FA^`)n>BH^4e1%d#?SuP*lc!@A>idwb{6g{xzD zWkHL1K!B{330wNXx6=#OKu?!8sr3QLXSn0NMSriZ>Zx94{ZNfco$`ho`p&vAW^yi5;68z;kTdBUwBx(a!DECp;~(KV$>{&;L$g}+;1~7-m9s3g5!%$T?WCHA z%oz~(GR2feS1o}MJrGZpF99UmcD`GRpl!md*h&DzwS(}eY47oBUsqor zvNOH}Y^y+UQO-?G&Nxh33->!qLNz9|9^FTcRZE<8#g*+m62UmGP9FxLRR)D+fgVo zBQqHpm04Ey-ioYbOCn^;%FYZWBQwu+Q+@lrp6BT=uj6#w=N_NWb-l0mXwK#ZTP7QL z{i|<&zG!vL{)+)j%OP&uGx~Kj<0ohzMUCH2MHHToJ0SRj82b3Dxr_grlI4)xN_su! zPC&^c;cA*vv_I-Ho-6jbYqc3nD=LD3?VW3a-$mBG(C`hoyQ+NDv#;@A8oo&@UFJxC z{1Gl&|67}vDhZG^!l9;o*t-7(NY;Yh6^!W`!%&GEGmzx-iy#gCPJGM{Ovp7ttU{|$ zf;@Y8vwmfg4<3HW$T*0*s)}>i5+CGG)QP`5m_BRjNq7V}{No>%vKERk=UpEZ-2pPD z5(p|2Gd5np_2E#dOZ~cxNGjQJjcg=0`m{I}pdOiUe|%~D{wbI>X^eNLro13MAqa%< zW7yxI0`wgp1%{g}{8I{LVDe0N9Xdbo2MfsZ0)G)U{n8x%rqtIg6ui+ftE2^2!Ts&) zkC;zK?r#iVQRlKxox(lXV10gSWvu#XD8=8F9gvDC-0T~(8>^=NFdQWJ>IPA*$=jyPy+LyTP3noz;NC(3 z@=RXNyv@cVXE8EPU3J=Cl>D;TXS2T7fgf@ow10@tOF8p}1C!*lBYB}V;z@8spV#%3 znl@HzOqiIt&R|q>BwD@xm}2tl*C3Ff--L!3=#XT{0+MQQ^(|nLmm3mTs{7vkZilJB zZ}0keQ>t9NLja?I02xp9caTG^sa1om>0rsNFs0c*9)oi0$NFVfxiMH)O+@q(1wDk9 z`aXR%p`lVM^jbRqlUjKrWFepdaX+*68n5+W^R4nsmRzVgIzC*?Y=*9!xn5q@(xsnR zPTV**LRF8ykJUQ9W`X+GZBx*y+OlmdSBtevAPYQIIE?F39}`NRbN)VYxvSs`z1@}p z&_3>OO$Jh3v?60sO?WgosH@(R%~dIp93;q%v;XQ>Oxz~;bSx5Gj(3Z`C2QfC9+13E z#oyK@Mp__KKk=ko^>~KPE>l-2JDLidPB8F?F$9ct zGxaD={)v*c@AR1MN&9mSubv9u2`2td#1TNVOsA2Gws&9>E~cNEoz1cyw0t71Mg2(@ zbEL6R25)X1AB<;dF3nc^)8R$Ac1*L5y{KnryDX#$(=YLwyD z50k8Ne7wLv=dy>(aNF0m1us3M2MPp5zK^jvoA-4v4rBgfrlszgzp!${D*G902Tjs>RbT3tGokP&#wFyn0Hq|$P)p_1?XDx1` zwghMF)Dwyq=>9v5F?J=IHMGPj*_7O>{UfhOF2`gBokW}=j|)BKM=?&cpvJk-Dp(!g{5;+|ZF(ck}lxcQ)Q;PsE*%zA4{QdQ24^;d4YjTbMMK9}?| zb^7+pXW6MmNqq9HHn)12=9*yd(sY;_su0h)Meo=*Jj0a5g6S9s@Zy}PhP%mS%#nwQ z66?>NmJsh9Jl262nBHPlu0*U{{@iJd6A8%MJJxJR(xb=lF#kEA3?}g36*)(GxEm8= zZK_J`@SqB=pb@`ksNpJ|7JQK<83?BQLs1~8PJxDI;cbGjqjGeF>>OBQS2-rRR8iei zZfD;6wOb|RYX8P)eSkDk%*FQ7gYB7npe_+?Tm;ZFK-du{!_Q{qK?iRk)4A}bA2Yq* z*E%1*GW(#LAYRo*5@3Fp@K%R)vx%2Vy_#fAz)YK@oYOjX`ZmlJp53MW9;aJumH_UBRS7EPSk+xcp5{dtRPYWkZ<>vyv=Z=@I|_0QaRZFr55k;Cp~6nMr?riV$q zg@HnM$t|^NB*0Dn+N&E^3Uptc)d49d2h38eiWAPwieScD!$pi2oBMgAE!qti z7xx|wmB;2@u3r!A<|?7vE29R(jcELx&3z^RosDGv*zvJb?4_Ry$4}RIc;$(=BsGJ0 z$zg4l+=D*)!>{pb>Rik50IQoxp{-FPrpv>6a%;^^qngU=18>vALiyr4HO}6=nNA+Y znzW_cYZ3Y$R44ZHUHG6%tf%r3tvXAxy6P;;Batfou35BR=%(Ap5CfQVfYv8L(;7nl zp7WbO5m^Ct+kH<@FaryKQR!JhK?;x(HGm8EcW}kc6Z?FQnK>2lWe*PiVyYzMFok*+ z5kW$;DArjQ+0dq%g{(+qPtA&Oe6X;6yYl+ae_v(49Wwi($Ko+*zX0RX!Ng)5&-7+l zq{mO&hTdMa5yw!knbwOwbzXeXFT;k0<&PhQx^?r6+j@V#OF&>C5!5#tX|nfJq(Zb9 zm!Gp&i1wDL=V_~;j$hZLs;=H6CL;@|sEA+G6%19Im~D0BWqr4I4_|?Q;u+x~i+Ug> zAaWF@Vt0O;s&N{WE8~s9+R*?8+nPNaqL6(jhek70*VJ^sx+$+dF_3KoDq8SSmVSEn z%DTp)OM@@={BT+Ra7+lX!qs|a8^1FIm<9|$zR^BqSZ$Mf-tAK$hK=*(>|XO>V`=GX zLG0a^{Iq&yRxGxkAGMSQr<*A#DQR2Cu1_zs-E6f!li=`ub5p+de$qnmSRH-f3xm1I z>}2Dno=p0wxBmMJKZI_e4sdQ?0~0xpNKU;rlECNrH;V^a?OuxIBTm$cuYUHPhyoAl zh?ma-Nf1fN#btq@RG|2Qej`h4>v2#}BM9jWJ_c{W+bnd=a-D#>T9$?#*0=v|bE3!T3_otu2`SaqhQ!``b0`vc|UmINF2 z&7s(FIF$jLnsYZ(X>6+Epe{CDn-zv}ZBTcppzR*#aJeV#XqDF^esdbDfw$L(Bku zj%J^#x5T+%`WDsoV6^KRVkJ8kQjb zn3yT?O*UR5L}Vdfdc+Vty(96Lk5O2;|XNRZIPw$HDv+WmY;B+>PY zTf8^+P~bE1>Z8>l0&Sb&we)h+mVDCw08&0DsSX_%tu>_LQ_AWom zCyi&T@5qN1ykF=w=+63xuCOS@VVL_ksC?r7_uiXN;^RdZ`@bg6JaBU(m#V#Qtk+>z zNPSO)@;i39W~SiDI`tvr&Zk`KBUR2Ms2U9-?5Zd&#`%y+bOQ5^T*!8YVg!;YdGkxl zQ-}!^OiN3vuNwtGUL9{4>QmpKt5$q%BQqBc2st-w?X zTk2%7EW-wQROZ=diqJn*pOZShsS;m%U1jXesR$+Yq1WH+RNC}G&Mc-~$z;n`nk-UA zPAftf7!xxs*|jw>K(PEVt_C+zRqK?5*sBj86kD-xSTEfpcijHrHM|i-No3{Q7#rCX z&++h~jnJ5%pGWKT`{fZ0A!lpxCuHp3(CLwry3f1~Ox3mo2(LA8F|5T57nIk4`G}1m zCk6qi*aWZWXkpZo;5I{?&akdgdkca~+Alt#dHIKchR_RFR5 zIs2`{RwvMf36%; z?cJ7^;b6L4UfQ%(e&Z6s&u8OO;zkvt!xrD!wRR?=RuT(Pgs)^vMh~_!l72Mao@Pu z6?U)CSgX5wJBWjux#ZZ2eS*8>%nqa;1PV*?O z_~p8{`WS7vyJ?qlyBj~)c~JeuFw=bRoTK^l*ozU@@4qHmcsNdaoK3ush6h~!=gMee zf-j+D6|z}y3$wE#bwv>+R*xD~5e2FfNY71gGlkU;IG$dOWDn*pQWSV5U0NvnTYjMB zQQ)Wjg!+QT;EVFnP<2tK>sRbu=6laSJoUGFflsw3gEJu78tc^R(30}kv>S>YF{FA) za^zwnKYY7SDeB8%cmaH_to`fs2xg2-(FKLl>Z z(=gg51qjFwrf;IX{LdPM5uf&iIU_kP__ zz|7UHcI5-SEf6NkjC_3EW+TA%k$#AC;yXeXf?`;w&aK-dBJr7Q{5iCpZC* zm4Yqd0OW-`XH%SOkE#P%Yimv*v!wQbN)G5PIh*E8s2;?Zor^>mP?!1!yq53CWtYbS zGD?&Fg|`4WMA{e7pD&v{>`wb*F74TjR$den7jM{MbLG)1mW{2TnoZqq3#PuHo+gV2 z0TSup;+axk*jeJa>m13UgMZ}-nMT|;GFfC*OL~W-iNL8y2f^J=!H@GOO{im&e5IZL zyFv!cQjEh1Qe4i%uMTU4OE$ENx+8@25@-4tZ`aH1@?v#?2GYXF86 z=7qIziphK=pc$qEY|?q@d28u|efLuErCYw9e@zANCoZ^7rpk|6WvaG-p?Pz>))Oi)>H2W^jsXH@CeXKJvlQKI#c*C z=R{FH4sOBCNiyj5b_)0~-tqg-U^rj!m~HMc+{Aa*{1Q z+-kuv$nc@N2`3`E-MB(ZNA0;KS$n*IWm+28kp^BjcEbkHuo1k_3fu3{K^Lq2LSH9y zWK>QhAs<-+b*eSrz#oex!NtoZkgQ8%DbbJ`FS|p+aosj3Nt`tu7TAjW+qj!c+oQLI z@fS!)%=T-$pTyyA|pi@G`$hmO_5mX?UTgh>{5 zc8%VGuzC=q!U8l69S4u4R+quk=Tu?)yD?M0_Nx|Mey)r+Jh%Wn?(vHSXU!!A1@$*B z7tTmJ-M*p}w{!@^7R#XF(U~8s@o;{kM9qjn@_FVgteOm3Sg_lMG0A_rjkPH}L+J(= zU%keia%%@Cr`Xn(E>5so9OUuGxN0wyTgL{@&j)dEl@xRIHhz3*R0pjJWuj=9T;NH& zG}l!tXlnL&FK!TFukCI3X1}SZn99wzsBdaIVN@C1omEtKEzY^Ir$0~JH|}Cpn%Rdq zj{VhURw|Z!&*7q%x_l?F@lkiC<5Dc4zw1u_+IQ8vmEkli6GJ08mN1jl!4hyJaBN1} zqRz*Zv}Tm{BJLcPYBhw0xMqnMDtcCZ^H}&x9-EvvA64_NEr)BuxQ$r__hl;H=r#$B zKE02Rxd7uqfl_BdLF>A`v-*^rd*S=(cerL!A;3u*xiY%HOB6jNrwMV zZWD=&nv8QPs)JprhtZjJ9rFah>CZS`PmHuCj$I6bZ5Z)4f$fwVs zk8&Z9isbO~zCfI#nVH^mgI=VRv@h*+sN2sKL_-^~+QuUjWr+KFP6BrP)4V^+wplFPoO*K1)c)Qwq%A*Ep#Rh!yT2`_iPv|lW2rt@YceO@GONm& zHd|Q@0GpH_i*U+ae%GCiU6GmB@?k`dnc}(He=vRvXvrLG@9$%j=KXaF#Bk`I@dND`IQx!CtZTPj93|b-Yw!cO(rNLF`CYE-Djjp!c*e7isj;`W&bDS2JB(HS*^uy zxsBu=(#uUfSRNi-ZNFf`;qjx^vkuFI7#v!aqVir$5!!s**zF50u^yJX6#BxTF00i) z;M2g)RO;peqg--Kl7stZg0Jo9`}~~Bd&yGia{GM}7|U0hD4`?rHm=FaD^`;bR*84W ziFw8?`Ui;nfuuOPDH;ru{;h5ke5LN*lBP1|GM-TI1#J>&Fi7b<^F+- zE-Qx0vHVxOa%$KNks(OeOC!-ToJV+2kiG@dVT%#@{8%~EiYev$FoAG|Ko?{f0Z2_c zWM2$I#7QgbX-2dH9K8%pG0#!ytH;RT<|mbOO32e4ryUQ*?y`69rd^hdXh8fVjUVD` zIy> zgoH$}5}uEbkJ6Uf<8WHYFoW|=bh+hk>CT9*La8SHBAfNw+M0KIX!@H_NGEq#E&izx z(NFZ+fdPz2PyPJ-#M-wfSdZ$%u93n*P@TWfFY~Rdlbo8GBBrBz$*lbB-eQp9>|;poSNT=Se$@a{1}Iu+#k8G*c`%g z^+>r&Y|VEeo7>~H;y|EC|A;yVwJ|M>4g7mrA>QjG;-~anbz}?iN8iZi;%SzK6Z;0o z&l?kS=y#_xa*mirglg6gNLZHAukstvPUu4d@MY{=XC9+UKScfDw9wOP7VsD;*&z}T ziS02TmvESp-Gkz09+1O`ZWw-K>fJg7I#?S0z?|j=ICSaO-WPrkynJAiLJ!KJ{0tU0 z66giUPYNFb+i*`I@o|H4xF~G#P`MK^={E+2$Z0MbVnPSvQEHIQ`W(qZa+(%8st{9Q zMym^`s}eHhfjS2j*I8r~*94duX%HpPHEFSF!bZ@oTwX@J>LzDq%%7iwq7eR~k!d(m z*Bw1p6Sq;-U@BYfN>5&0Bf}+F4c0G=3=9Z>AP2x-ccF=-dU&VOv2}qGmv6=bmObZ~ zMX^00<(Is2=9}IL*EfvBFKYIi#rg z_okAp$;-D}t7RzwtUXg3$=RR=otCLgAkV z`U^I|hHJjXrN1G5a_-?^hlA70h<_Eyb)sLFadyMzdbLTDx{FI?al za<1ybjoL^M7Wz5dV{dT2&=dvUslV$Yk^6xZL8loTeo^U8eZEQ?3odNpj&jeKPNQle za8UQGpTGYkNS=xmjH2h&lxQhvOs*~NLim(=g}rIEg_J7duK*qT)cP4LEUfxFzRC#~ zzb8RMfE{E+5PopD`#B@ek*KgnkIK=>v**O(r#bxb4V=A8G0(sJH%&SG57!vNA(%>< zDC6HNa=51QBe{iHj}8sbEJ(uJkIn;}B&nBhlEkkUDP=~VMZ#J3a`HdQYnI5?7ss*{AmGS+SLzl(6ss*vVG~gN$!cmoGe2FNIy^N!tpTki zqSISv01`bl44uBodAROw+T4e|bZaqxgXp>|1_q%xk||iIJwH^E4MQUeH&}NKYwr(r z!2dcw+ zK@WCSk7!=SEWl4wYhb|!p@|>F(s5iXcmyUvXlT~#=Hv)3%dp6LzER1Fv>daKZZ1xP?2`+=}Pwv4q&y10REBx^(^pOkKwO8 zc<_KIY-x{`V03QW??T8W0)=xyaA8&D>YF~iKi^n(0jsa*7i7v39)y_KXvJNIf> zv1GEWo-z(_3!{&!v=H;Eat9+V7ap3S-n1wxKRLuC9C=s4IRceR_;2eAqKiBnMm?-|W zx|UvH78q)60hZ1OyF*`r-l^&4ux1#$_3G5$hnfPU8B|dEWG&S~)L74qqaSW4_~dL) zT%5q2{?JM#)aC@d1t$Y2m*1oWjY&JC_JB$zQ~NdxIx2xogE>A6z6>k%O!j%($!S z@i}K{?PUhS++PS&o`DHoI;@yVkLC#4Kn2~O^C4gsb5UxfE5p|ibZ%u#&AZoOK{fw% zc{0l90x#Sh*B$xQGHcHfAY!< z;UtX!t^mm^&6vA2dRCt-&o=U{#l%?*|0tdW&u#?HYNcfv>QXsJIs5d)M~)<5aa%-8 zpimXW5qBiE?lw=_LdEss7#QzU0kGopV1I|5NLktOoz$*pZM(gxpy#LKC{PWwg$iAx zjzHGbdMa2MLo}WW<&&n&5pyfg9E+n*o}8)z)KkAq?ainw3>~F>5^rYNNZM3>@LA>$ zA-J}{65&9$0#9MV50HbHSkAR|BAQbh>w;F>vN7sr0v(S8ih2tLE2*9Cf#=3xTI0Qb>aOmn~YlL3n|FM$mKJ^yh zLL~%4O`z)h*1Y0>_KHoUn`leEl&kT(A^yE#=qAA1DdaiG4>RZQDoM3MgA7|265|c< z_`34BLwM@&6`%yDNV$Ithb7vjrI+L3e=QBX-Ch8>v4^S4mRJA9(&4lI!`Y8G4<|sR zeRyWw5PZCP&RFh0wi7Pq922^kiK1aNR4vKL=-*?lcY{rBMQl!A&T0ge;quS7<3+w( zgzLG#U#*5X`~iHQiFxEm*Dr8R|LGtPzlJ?7)*J2$Q4}-vVHD!wK^^|0h#xNXi~Cp^ zZgAB6%;C4FDY*3gkN}6y;fR34#|QrEa~b$+j<*$!;Z2;XXeg2)9y?iY!xje6$OHf$ zrl+QFKoU3sBxd#nFiUQNTGD>{{RwhP5QhTRE4SQ+oK$&M1~{| zR>SC%TS{>hSew!l2-5-bN1yhLg5(hm36B+!wDe>I?6@WN*R>#Kh77D?-vKY}5cwOe zaA4A*48E) z^E&X%jLi@N^3J*+5ov6T`=WuPZXt$ z;W4>p85^Y&OJ_^LV@zmbV!~WO1mX=?IIn;u1znbOY&ndXsbM*izkBztQuSmgY|Bu? z;1CfJF;{r)Zww%l4^xU#yK%r<*QH>>-r$5klgoemc!3wFD{)Vr#KHCmy$P>RT=kB& zK7Wuwe{`!&$Rc-BS_GF2Io1%flokd4BH7>pn5=g#`T17X*209C*=%=f3t7bgl@L3G z-!Gic=NJF{uBj=v5}JUploSR5n_)8O9VWbh&2U*t3InK^&5edcFbQaa?WY@Zj<>eA zQ-4d>!R#4Ba^hh)E4yyWzO8 zsAKr%?v;>00#oV-U?WJjmQp?c@Nb{+XFf1)fvX^I9fqM|Hh5l5ty6n*rpo1;9E6R- zW*GpS8nxIYQ1|)kX-UhOYw?SHPF?sI#8dkS%C<8wqId@+auQnF5RltU^yO+H;$1D2 zW!y5r4cK7cJ=E9}y$>6q)vR}xK!A_Mg=iZ^t3Qu!I6_Ig6%z4<6iZdjTYm!#N0FFW zEES6i+(>m*&_Bhs`hl}53wLlYkN%8=jGTF_1t$#kX%JM_>y7vNt7f`JFnWyT=t9jc zWG7#fu6-qPd-|o9DQ~oD)qSmnf@GfKhV51b)$fMHFc(q|m#9f(&9Tqc#yN-LRP)|k z1i?|`g-)?_>%lkPk%Dv9xzMP$o(~=qumH(Adu>mwZ60UuiDS#Hh;4CP3(TKSLy3Gn zNb3z%83beV5|UM4jbuxu$fNm`I$o%qOR5|5OK6#=cR~M|^O9w+YkT=1w~6NSFb5cH z^Xsv$Dg17Ed%+K0-Q6JEbOM`q}d*;B6RjM)uBCr#kDPeK^=ggn6Fj8XgrHLEO z_}Jc5XlSjpMi=)bLuHO{w*mXLKyzw{=$gZQ<%r)8t~5g-5`R1JE>oN_Tn5X{D8bkW z@=}6;ag-&n45~~+?w($J6-|h{%(Wg_ka$X?#^68TePa19stH|gTm^udM~ilSB`V_{tUXJSu-Q4g zPi2h!vwJ{?bfw-IptdRQ^#2(h6JuGBYqEri7uajA8?RH;ut(NVqKHh7`fmT O48<#|vM;64zW)cCJE|@K diff --git a/test/image/baselines/candlestick_double-y-axis.png b/test/image/baselines/candlestick_double-y-axis.png index 34d4f43bab1122ba620e77231ac090a6704d68cf..fd0c83a5331cb39e6e02f2499de14834f7d83e40 100644 GIT binary patch literal 88179 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�Wc_)9VJN6S0Jg&{8v9?rv4+uYn0HIg>$`VPbSD3tnRu5yQTcyeAk%K<0+AoVM>fxoWd}OyMLj1?m#3X}`BFK_wNN_k*xH-Uom#Qs zp?(5LyUB##Hr4SfyEbQxu~82s1^-38*fgU^8F?@JySazVY60pw&yy#rHL;<#R_WCA z>Zq)$^w}&G`y?4qXcLVQ%HJ9HVaxO^5JS2T5PR7c1GaXsvD=jHH=sQagi)Ag%K%GX z8utebY?m7VkFa&8(0lCT_om`c_2L2~n#7sLPfVZic;KQWdx@{NQy)}Mi!38+h8vyQ ze%Z|8Ifm5d0fCkf|K($){iFHYY@v+u$n&-+^`wEDPc+XFHxd5^d@hMD007AS==fP- zwt@a+@3We!upYvZElW~#kS=p5LYnLz*&IVn>0nvJFhf>e!hnEhZu4)|Sl?DRTK%r! zV?t$e{>4j*x4T)wiz*l7GWXyz{PD_1Ao?Or2(dV)<862Jqf{7UGz?%F0{3n;4^%9_ zjwhIk_M!)O`bGU<=v6^INcYF$>e<-TU!t~4I`ybpQI{>b29CX@Cs}s6i5Dr%#uqo! z@@3CoQ+2Q2p3j95nUx+0K@acmR^9aB3cn9?{qy(?LDOBwkr7z$v&1IQPwnRmXA03}0c(oW$o|vl-^xZDlgbbAT^?ksv+X zuUcDM5O9bwf}dbzysy}H{G7hUvAxAA8{noEbxq!>&Az^`SY?+wIeOxp$X6|^UY{Pp zvEGibsH;vf$WC!LF4pHHkOYR0)|w;t4`_E3^bAg4FuP^vblu!hT&!0xg8h-lF!4ie zti~x4|K_qu8#gej-2xz^ABCXsZ(qZR0({{G8+Ol!%*qe zJchF6I?JICTZoT<$Ca)Jb#8gEk4*{ucmnyAkH*7*nmPgi$fZ~^<#L>K=}XTikti6? znNuWmGO|WNWIzXAEgp%&#=naC^_n|h%v06&Xbn1f-u-BKYXvDG#Q;~kSW0uq$uL_7 zFGZ_j(jd2KLRtU&N^r zP3bBgA{i7E>@Y-U=e23a)!3$#iZj~6+bbvfjSlA}L5 zclvn-YYZpce4qR(jTe9dPwRD)ZOf`GBmo{N)}WSh8f>4Kz#Wo*&?7su0BuS zU!;0o!qoPF5^@_fa0LwQ-o9(z&1q3EM^o_bYqtc!FKVbU_J9tB{rSKWUsRw{Dq={~ znhA8x_tA2xa`ItOVLviiQRvujkgR5wOlf7-+neLsoqTQN?6zUnD=231$!c6iS`;t` z>PX(yHQdfkh{lm1taLT1L~t&dKkqE{YPUh<45O}j3(yx->%B3>!U&)!uki0YnsW(MGj|L`oSkp*ysD*jPQ3eR}V zGsyn9*sd-YZK!i?b$az+*6@JliI1zVmABTZa{qwY=7@@K`ur2t+Ey!%Bl68;U;AgR zqGKU*pv2lY(lLIIan#@#^c1lA)&>0UqFCJT!Tf5iM;WcE6fb(4ktlo;SL79q1?FX4 zbOmmD?3Q-0EPIHwpJZ=z;42Tl8;?JhzyAVIpMG+;KG{%Lq)2$5U;3$jMJvtjC1pn% zYQ_WSzWGf{)yWS4oF@v_pin`y*|x-N@G?TiNRd zhw;NFWo0z8_+^o{lpZMEH@rMRqsw7bP0vOEYEL6Ct0Qa~v9~MS>QAQB2|p<1g%^J~ zFgY4-9X8B+A1#Cu`Cwd5CJ|0%}#vYD=aYUHyg2<@ngDBH@~Zm zZ+{Hq7N(GaA^jkdf_fX!iwJW>>Ve~>*_y1zW`}qutkzLsnAyzI#z-9z|EmRz5|uV> zeRN5XZBm5+R~MU5E?%|zE82cp59nn4FvP_BUMY)oQN?^R=U2>@PEP+kEEg+S4%ft| z%jI$8P>LPzducy3v%Q&qSUCm$M92sO6g|)&INcoc++H3;2a8Pb*wT2m(wk00`fKcm zJT5@JmXBiRuXJqJ8;r*<%~x15oy^8qFUXzNq*t-*b%?;Qm=9e2zos_e6~jXRh$Oi` zuX6Thd;lG)*n4d_SvstE~0Ii~PAjIp8* z_`UitG;}s3K3IuD^%wx{A-|;HT!BqWKp4eXv|jez{if(QOB?>%ASF#A_(ka8LjLsl zIZ^g+QJ|Ob^SvEVBYit?3 zJOl;z*2|&7t@AN|8+QUg=#D^oO`~8i{__vn=s2XS-2v22?)q_^rwknzM3hb6uLI`# zx)^K^Q{>`s?k^?sDrd>! z$Il+Gt$jZmqA19!D@E5$KLYo$5rh0&enMWU;o-=@2uHh2g$fe7VIR))?i_~iwOmRQ zL!cCmGXa}dWEQ`4GaYi!KD^MQ1&W&{ z4SnpW_rM414U*eDjEp`>#HyXfhbIponZVE@4)hVNr&=K*I@- zy=R1+K-|pwux@7e=1j`H>yzvoyL{%w69W{jX82wUmUh?InKe;~58t?=$zn>OMvRyy z858KcYgI8@(}HHR7;Ac4gnE1P01gxjF90x#8*U$t8|>ShBgqMd&B5#7<`=(hmf7ea zYO?q1smkEodoCjkDWH1Kr)n7pZ~lZeUe!Rmcp}I*)AU9*X4|eqJ$9we272}^;FYnD zwtQ;S_N-6{L0YdC!*S0g?>fB?jb)#UQR~CkMQzpS^Lejxyh1Y00AdSDWiD`NG?K9r zJ1!%?!g|_Xd%xcOQ{R&DMKsh@jK8r|i6`zr@p80e_nK&tG%jw(w-b4aDGts`QDw|z zLD+EnOl-E4@55oc5=3cGpI1jMxtCjb&XB3+bm!j{*`1?mrfn~+V$|ZHNfM!fX9B|I z;pOpvzRo;&Dm47)5PhF}E4Zy%M$rQOhQDh(b3@cqE7b(mpnDsXMy+zc6J}p_qFU)B zj1QhQ*n5TkP+x>d4&npNvlQ*NpyyEQG5M8Oo zI3H{Odb;)-_6tQqDobb*Z-3DT`ZlG&Sc1jpMBxRg)N<@@18SB#vp6o@r;iJ>cj#dB z&{h2=;;To)7htuuLjK?rpU!`?5bur#M9V|z>7{46wWn(c@LiDX=dsh+zv#r9Gji}S z0VWNIq&RD^h-yT~qXd=tsj;8bYKaM*z+-rFfPbQ~KUC@`CPM(DWil(7Kao&l7 z!1tdaIE5uM72tIDuG?^`LnWUPXqI;#vm}*C@Z#%6HDcwJ7L`?++70$aFjE%W+nqlJ zfjHyNKT#_Fj}%+_%cRKEXhE#@-?9IZ3;mGA5T34;oZ;*Wt=$#UH35fVv_MSzkdFl1mwkJ3ae^w+;4b~3D; z9pYjinEm|Buqa6u7xkL{$Ya&FFgvRz z8n@-8j9ryBt50mLRHQk3=6MAcJhq1?UXWd@&36zq5$n!Bd^qB1 zq(}`?35NQDcJTPSHflh4tW~l45s^|!m^FPz5EB>>Ii2v&_!HNM^7)hA>J!x2+*xZ; zha`vC0#v0=*5|CV=X*-#{bglAtI`xXs37z6KmZFk{U)ZUVmAuG05ktFU1Cj#D6xtv<`O5Hw+ zn<+7!jQ+BugI|oRD9L*;mLd*V#R?RAfZiM;$aEB{jLktzc zvyOO3*CGjVD3kNlF27+h&4_U;cjjxKx)dXaTsQ(6tFJ#A{TvC>>{eLGi>{O`CMFd=D2GQ?w*9AAEcAsHC&_ZK zVdku*E8|Lql=}l(!D2_CdLb-2mJ$#aG%^lg2EdF3bq@g6%iDMuq`|Y2zq5EeOs6a{ zqe^8{#vB3r4yeU3?-+^SD0lTSWIQ1rQpXp}Gv!az2oCN>PsfyIOw3dgLpsoVo{e0}7REgix$c#Ahwp zsGLemps0838xP|Y3kl4>nXGST*x0Fi_ZBON17-r>1s*v9c`PaYBaV)GNxn=wea%(% zSmGjW@g1QI*jjmpxel&V)O_iW?|v`nUc9KhY-LUdvc)W-3&8<1E5MLMPednYA6-u> zt8W<45uWib-He;VRPx9FKap zQ>x2RV=nc8V}%kX9(-qT^EyGK=v~haopQQUFa5-j5>y+$U(D2YLqQbO0?-I~qJHk5 z6SBsr_zA$$j1jg&>fr=q(Yd!iAizcX_3j<%ME&n~fV2~GY}#P(dzB#!NZWd@Rt`h18LxE zW+rBW`WYZg<$|r7jsvKFadl=LmSC0bSQp>SN9n}JUK9h~BSTZl^#bXVXv2N{kFli; z@<(eqBLuFc&D?c2o^kjn|6rUY`@awjuNn9@K7*3(w6jvln5ZBMp>*v(NNK8(0CXR) zgL2p9;AkpK8xrdN#0CN8cMpcTsJhm<@K}|PAT{EprI8={=B{PRwXE;O1(bI zSE+59T!7oirR%==Di+Vql&&i;01|)+@D0g(cOrg;8qG{niM|Ts4=4w};daji7`ywX zvxTO$af#CTIA4yf3MA%}U}gkf3jo5A^D4>C2ymioq?lP}*;WjQp8d%)#8t;qo4=>! z!P?5d_!YO9lIc_pMe5uqE7!m-KRf+}E>jVkdh7S`9o8|QtnR@}GX;N|mp=!{tg3xf ze{(i>%JqIuY+xi{Oo-pzezv}3u^%iVjA{Xi1WKyFPze7RSa#g`X>k_2{S7W9&#C=A zf@uU)Trhyq3FC!>1%+GZ=i$I15lIoXEMD*dN-HCBVWvq-^}xQ~(8uS*mSw49;RjL? zUu0%uThS82{Pf7->+RH`Tr;0h7d}oBX+S>l-~V*@f#G;<>3efW|5*#2#b2xd;s)1??x7VICx(zQJ0DY z|5mRf7UBC1&fO4EA$_`0(jjG=bhyPtAR{dbDaJ>5Nnp9elZ5pVqK_vL;KwA0aG<81 zqbP8`!^Hg*ki{y71^WC1P(!{f@4KsbKbaFL#C%E7n3-~(|V;AOJwklo&lpwAI}{!?DL&jf%?XYBLy*3mY&0ac|- z&;Qi|+VS@A(uc4>18$1{e60Kn#NQp2Sh1X1AKBK8`!8Eqg|<6l$Q!8*=iUi9PE+ zu%hj^MWiJNh&75OmkIx{dp!68c)zSJR$w_EiXjX=>5{l0((Jmb7EQ4BTH7r$b7LFR zjcM?@9L7r3tlusXfY8eNn)_beU#u56T{eHX&AII-;3~qwJgu>!4kUXvyL+^&21f8@ zO1}}7E;UfY-ut@pHLz8v0_s}8E~fCjBSrpY4MX{PewT($uV@)$vW%r(G{3N1v40+) z5MDT3laRB(598`2$JProxU_gjzLeoYQ&DQeu9Z>ah5OU8XW!-gs~E62pvNP{z1r;o zBfF-8I!~^;?Vn@)y6+41xQh7)Z*zW6+`}6nF=3hq)AygUBRU$YhbRf9qHI^5`_J2W ztBXj|^@4Sj69%>KPjkMcxg5Zbd+kbqr$JaQ`N%iF{}~D(wpu}kR~5>u6Bp=}ejpv* z)~yfZHmavA?l*p@n!5Mct$N)!Czl^i_m)1dEYOX8?&1pbZiWKNMQ0B|YU*F6@j=1D zf~@IX)O{?#h9FFy<0tPzuqS#Py<#tWd&6}5L6zwk;a%18gH7^9S~KIs?y{AIa5v2_ zp2z})I8Kdu-No-u9k?)P^Jg40FSo2CRD242#K}cFTQ5N`SvEUMK_#g~)8SFasd(uZ z1W<~x9eFO~OFAx6YO2qcY;M6!DF?`dGpP6=88lU#Csp-x%7?&*ipfZQeg|Mk4KhT# z(_lIAb0-RoZe2!5$4vvc=xl_rE zx1=tb@e5Z_b%&1&vI$K5I(;`~sreh9N^3i1HbCoS9i*}PeG;)lsbIjkX`%~{cW;s# zZV1v&*!^3SH-#HOj0GfJMEyUVbN91YIq{!zJijo=5B82ygZTUQu)TO>X`e8Fl*os0 zv)~b^!Nx@7g2juYz6(xDUg*07$MajL_3FI?*KWQaFt8S8>)p{3G)P48i<6W@VuRrL zfbYHBZuq2Key~Wm#kfm&A?}HZYfBS>=o6xuCOk6`?epiUKDpr^zDth1kGy2sT~vu( z>F(>&NdTZ)R7roE{%^p(qnLAK;r7Lrp&K3jbe%V~(1Mz|a3i(0{NT)d9j>MKfrYj< zIvCVdK<5PyZv&~F-+f9rT)+?jq$q{nCi}E53^5751JoDH$;e#cZ49=I?>ww=W`j6L z2T{W#1o|opuSjoH)Af*-T+&HH#k*^}sMMXURkdCk5>wET_-1gdF_$>$ukGDH0t#5q z{ed%O_sNy8AzxhysfyyJbC{x{)+4bOyCfeBwn5iwVoI!j*Xi@rRrkL)tHd}|M7H=(RsC9v~JL- zNn_iMZ8vsfG`7{)X>8lJZ8WxR+veGMzjMwQ&+q-*W8=nJb6#`khS^CVfvw9BL!Ts^ z_8pv+)iWGm-{RW^@II!~d^nfu#bL?%Eq(x! zX->GEA^y80S%s@h3_~#nYA3rCO9GP_PpD>bN`PfpdtR6uLQI+>&VkD>bDA0?e0ogJ) zV^SeGhqp-i+Bf+sfs3iY#N!T`InE=U(~<0M?y1k=F#$#{vaduiVB~H)Q1a3|FJDjA zs26o&tDmo8-CWTxqquQn+jZ7qEq*~1M$X~mtmSTDrV;*GP#9avQJAuae5CvPe~Tz2 zm>?@nKmS9Se_VoQ8fo#vV{Yhst9%rS2HtL@U3gp6ojEOa81hq@efR?wQUE<&u{(kk z2lyqkxkDsn<2L=A`y^|UBhn?f{(Hy8#{46K@>Iv>gNET1 zo6cr77Z69jKZ4B#D|cW><+S6mskeL`VyJK;P;m5}#teoA89V8Fgp?Io@6OdH;+y}8 z|G2$yT)+A|Wj?@S*sP{>!9<3RgTR0n889sA0l9<7k_6^P$;+y4z@B^7_SA!1PvJ&y z*52YX2a}b>qb!WwLvyF~GoVDCjny+~4fjNe9cSWGkc%TjEeM!k zqDVb!Y;D=CpTZPbM`HPzKZ|l-L$Z!T|8$s5?b!-CN&}}mH(v9uFLnhsYc=oC9knh9wPsL+N7YHH+1hxjTG=vG}c5}$VH zI88=$R23Z1Fkz+^R?_p{2e*a_+}r?Nm&pX5fzR&zkkrO5npt zN)H#TV)T~j=y>(bCnxcp-Jj@9kC_*sJvv54d~_R><`J!bhbd)O0MIzNA&{LE$Tu0E zcTLa#E|~feA88lWWPB$#Xs~-hSMoWvRA~zVjy-S(_xt~Y$ddpu(aw-D;JMuS_SE}f zt9+M!MwgWS8HV)EE@jEV-~pQKqSE!_AIjU>52jP2lg$4RiUdMGY^sETFB$`R5;!l! znf+5w@GUdVr^JDuICIznwwL|k_^xoc!#N9g#u&Nl_PG#bf6_{yyIMJBW zHE!Q-JEf)Z2?vy6Qz?E&f-su*W*A5Y#Oe87GT&s3Jkg9v#`%~4Raf6A14YE#!O!#O z-iKSC*yJ1Qn)CGikYm$I7$%LY{ATCr3uz{4=gZkN6{riWkVx0JM#fu9vv>BI5Nd!C zjKBoy)}gCEFLVvXdz2SzGs-Xk-V7x1$x|%;KTzoY|3IOiGVixN@%LYAvoW?wTtMeD zx*d%@#t~h*llqr?_bxusN{Yrw2-vVN!!Mg2gZ~V-JRe;@B&03nqRlp*!n&q}MuTIBup&+0i+=ZwX9Ww+-==u27VTZ9$f zOP2G^1RqU?%Vq|oSf$p11leF9pB_Ol^As`<$-dI^=sR;~3tol#2YO+~AfT{-0u4o{ z>jxsogA`;qz5+Z-@|2X6IFx3{bB{=OfW=tcmXR@Y)C(Zy0{)D1Kz>FWo;7YnBqZ=i zV*d|2dJ14ivyAWJ;EdzCcY$1`{#5G@OdI2L2ej|Jk2);Q@Z6VQhDS!OKC=)%_2`z3 zYX#GNCv>vcFZNo*1965dK-x!8gEhA9Y3O#MIkwU!JVXTG>@nR$+6U|%LNcxxQlM|& zP^*-8i5@nmsv_xN;&JQi8c0{<93BQt=EA?pA!B_NC_Ui~{Kyeb*e{#5h9yF!;u{BW zFG?&<3h2u!XUbcuZfLP!wUV+5V}pIZZI<16$^T^%^J5{{Kt6Pz{8mOt!)i?$rF|;7 zpWz4Vf5^QM<%&wl0QT>y4Z18V^u;Cx$9ZF?U3D>UO6;24(lfsd@R1K?qCJ?Uo;&$} zg8K~li~jTs3~|6jR1B4ntMnp^S_q~y%TQrV&yaC%c)>(HKXPbYncOl{6xTdQt26H( zi;~DSO?o-Vm9z;@uqbuU8ZjyQ!ABpIN7pvEg22H&gm#cs+onM-T5{% zGyQc8GdC4_&g_-@!v(h!ZAo5VpZL7xgf`9XyxIBnY9JaQ_HDfGv%!qwI;|o$@g=w! zG86!+ZCN195TNtvG_G77=0K6zS=qndONhK5bjS_Yb4t55KBNfTJN|Z_`wY6kjrl8?vLL7v&ehIG}>VQf7 zGJ+-M6d~2rd~ESR&rrWacLPx2EOR!1SM<24^vzs}JiZ;kI}@FB|K??OT$fGg0Qevg z0NI4nAwk8>kp<&_>-N^97W+&|yAF^b>#LBmJxayZ%i^ie4W+2gk$*DXc1K5*;b=Y{=)MW~6n1r{u$``4ad4Y5`zqYZ!dRoAidSKL8#;lNYcDx#KcmF%0}o>bmy| zf$TiB*e*D9cicD+MBaXqE=~sGk9DJ|XRc0k8V#O&xxfGAZ*0|M^W!Nsb8Vyjq@3bD z`%=2-kOp6W8JRcGh-~K8jEQR*chV}ff|QrNVKJZA>3qBYmmP>#5=Lsb(dzl;TG!BU zK9}tEx`PjxG`6&k01@nGsN|>-Q%!BHZ7-sz4iIKpqT%7eBOxK7$iBwCqe7zGE}_?K z-F5}BKam-kmWIO;KWJ22T&2DDf5r1}`{HUZd3uZeXcAH5q5w*{9qAwx0ym|_vA8&Z zaqZV?MMEWk^2I!w&a4P>=vY(2m#$7G9WlG1wQyu( z4{rgtFRd3ziC5Fb<_r}&>VxC)Cjl{l2~2}6?Ul^Hlap-!F$}*!2!l@#T=9futGf)7 zZH~cACOBTL{<^B@F4l6A8F1j1VUE-QA)l^ZudigEIbi_TCK=qUyFi?v8LFDD`+)Q!xy7XUIr%TsCC~2${A34>7mA zTzW6RC9y*V8Z2xSaKZ%6+=9gGG5QZ~*@)3^*3{I@wp6@d=h?UwLtDDwF*7rt?yW+i z)ps|^`0-xcm3fX%0M1CQQD(2@BFS&Hpgr!Z24vtk0+s}ZMwF$mLt*SU~kVa zqb`2=yd2%~?xv|$Np@w@3Sc}<83*sI{#7P+MvdMcX%-0X6!bh7~Yr_FJ1(?~`AUm{Q8GDNHAKS0ZqP*l6Dnl_mNNG2`wgx5Q8P9cD zlL8MU7G|gN2e?vN>4zD==3}64Vwifpx^=R*r%O00{F%uz6kc{Lx)$W1`#B`3s2(`? z)jE6PGTL0gxB{}7YzK}9OUktgbXw)mOY2P_-qZWzCjaQ5zBgTF$4TuYI=0C3GJu8k zeM2PDc;c?Sv)pLISf;~QxX2xU#5&(^?}ln1;|{4?HUTaO&(0EY>|VH_=@%o{G8f4= z+DHZ5R)_oS;X9ew3(R5y{e{KFAKe58cGwGc^yZX2D@>q&ZfIee81{+(Va=?ckx`yw zR%}?SG0&k}3!|lQ{hqwh2+7y#Q5l~STM-Mq26f-=4SocczN$Y5GS0UX_uuH+vS5iB z&4sSt&N<%j)b7cz23|Oom6f*v+A;j9tZXK)=2__VqJHES0GcChu-=Fe#rLSIJf?`x zh=z#GmrTs5t5c+Djh>2O(Rhb1?d=;vPfFtl_BG8pIYhU6!$y&U=S}hy0k0H>7!4Om zJPAC~3U~8PZ4iNd6~l_HiQUo0c@LyaiY;SC3U_ZA7;XkBalI^KQHd80U1c9#66zgn z*ur1^fiC(rM5?le)?c865lt2sYh&wT`isl6U8j-Wn0 z4U;9B=g8O$YFCkx$kDFp(w{T1*+!w5bQbTDQC!Zq)fg)DN+G)ILDsq!wwEgo)Gc4# zvK(t2!19qcZ^~Gy0^;MglC8abI=x<)`dkPweTNcn#8YOObG?wzIC5%%2Tiw1Qf4ZG z`P3$k+0xPZqBkbePm+<@sQN%2yE}3q$}8)6@KN@(lTzUS=8{O!T@yAxF+uka|H9+7 z=1%{0v-9R^vgP+LRn?*p^OURRgdlBnxD=te3kPe=VjO&rDZ(F`%#wG~5&E>eBo^~L zFP1a-NaYuvU%A>di=I=AF6I9^R30SVmZ4YLLYt*@E1ygMtj8BnpLK>U82gJ!tW$$|Ah{lA zhjR1)eeFi;F*;rO6_S`~m9s|$7!Ir-6_e61^hUM*z&1JG6Eu+g$oZ)@M*xdSlLb(s zu@-x~?+>|=yg!TJw3R?I$sL3vs81-UsBZE>W67lDB^`{$Qu6P?y9L3EUTl>7*6?chiq&e>YL~_W-}YY&yem8~wXgag7Tx z7N@!5_V_$ak!570RbPZIMm(E9eX2DT47Zp(w1>0w8kgK!hs<7s{e_6-0oh<`nk(m{ z(YJ17=0w#wAdfH_iT!?2pRkr!%j?ZyFe6=0sQM6|_03MpdFv~V!>pXmt-8zBL}D(6 zWJTMx1WT>ZJ$-cDFBu?l6&qY|uTVaPB0erWph6ESnnEZLr{!IAF6KcLj_Je$yjq-mQ`2fV<%UG!(2*t%Eri^?;97z zRnAthZv%?EllkO60KnahN$aDajb_Qg!*MnTlS%cNdNX`;K+`M4@Wv9we7N?XeAHaw z;-fLfn+aggC?GycC;>z?Vgv<10+7>WDX+>LwSU`J@@)|h{BxPa>fNbtJGJ=LILZV* z*$9VnDtJQ4p|z6>{U>U*!_i)&Lc5vtn9YF^K2#H`-=_tIdIkRJT>FwIXXg`8pU+NCS3b|v=93MfhOH4wKqn|g~7M{K#6)j0VE9tui^6g z2LE9*TVBwY@7@v^*WQry4aWZ(DMwHRWaR#5hy^gRI8kIH=exi?@A3Cxh92~&ZDSGb z0UV&u$EAR<-FOq2+Y|Do47I)FU;6#XjZMU9z$R{$nLJ91y zQ?H&i&1DYZ{z%gw!Pl2X@paN7;gvC|N&k3_s4gQ1^i;c}c)Y4|Wq{x+N*CM!<`v-V zVISUoo>V<^MG2}Sy;Zz|HUUxabExwzvscnUHgcBVEJ@bVC`jK*;)P%1Oq0x+s@zxh zwZRnmke=9r9tM{Q7Ne}6NZ_aYWksfl!#`Tz(~PSC{0~^gd2#$Rn<&f)k3msIrL1L=_ZB`Vz>>HTie}1?lr-RFS zC!i(;6Fa4I^O#9ZlGE~&Ja|Qrv1D=FEelw40x_huBQSS0%k;YLJsfz^EJScOp5|zB zAOHAYUvigh@;1}qxV|vm-26qcZe_OJUHNyfNK(?9A^%;fDVF2=DSj1Y#8<)GB60KZ@IFo4k z(JzrDt3N7HuU3+ft0ujxh%dP$D?VrkRzf=y8ajcajMuFh0c9qGvVO2?5@c^a;=YCD zTsmPlj!m0K7|+zjLbnu3%WZe_zpn=P-Vxc>?2-G!vC;DyF!*~Bkm8C&0jIOC*ZWOo zlt-9>@(@r02wu0!^thL!VltQ?20Z0qK-;yAR{EZj!q|Y9_Z$ppw;4 z4p*^esS9#w&z3v(z_}&kM73NWP<2ddo(ytqss|NW1w7L z;c_3{rh&!i4z5^srxVATRPcSo>PPs86f8RNM z3xwnm7+S6*N;3n>#BRts68(sSHM^Vn3JVa=Z#~7OQ?IELQ!UP^63DsYH(aSoix+#U zH!WVE;9Cn62X;sRxW0_<6Scpjqo)AC=~<2vgaSSQ~2ST4?mb` z5b(`(fL;v(SklHAUW4&OclNN62T+haM5Gs%MIj{(;h%p;^||vppSL=tEmbZ#UAmR| z=u@P)y24SA@K9jRozViU5cXw2opgEXZ^Q&-^-gm{7Qa^y5!Mj%%wH6yq@Z;k&4zpg z)QBg_;_6z|!0=j3$^Xv|e1z^r$U}11QmI}y)pq_72y||$;3j-=%1PDSg0HnX?VDkJ zBYJ7}n$3_~PQgS^m3S5Z=2Md&LWfA*!70%q&ny}PgY8D19Bmst60h725vWe zSzz+YvH@_=E9#xU`dU_L7LVQNvyozEf!?7&^?8h9`;Su6&Mxm6^H)4Kk3>k0og%ayCEhy_JQ!yC>vg{K^tnb0u)z*@u=Fo;-IAOwt>5ri6-9JCt(sdA=# zdG0pV9aZelMUidbX4}%nKi+@$7ABbDiNF7^(5a-(qXn6zleLF3J8;1<1H1lX1?0d- zOEukbS2Zlvqm%;MrJ)9o6!SFFyX~t)0@e`N*!wU;Bsh|AS6orR5-qf!WS2(LS4p)9 zO4=7))xd*d8(G;5=b>0S@s*_pm^G_^H98EKK&44j;}(vrMVxFTXC5N;kHxf*RQf)i zsylN=QA_*yW`Jw^`1xP3iQXs3wC}Y;I2yFV`hWvn7&5{vmOlx+WX0(aB9=|@Xm}sa zx$&Abi5b~I;ow5HQz#z*i71lOGdiJ(9E>Zk6%A$t$Z5V5*)X>?T)0lUb}*#&tn3A> z?uKYENVJ%Ro6`mxmr#|_4fOW>Q+$xb(PyZqcXo^z&O(pzwzT(2F|@#~ez@}(gaN>n z?4RM3<6UlSMuqJ_RJ@8Dbib< z>627G7fzN~kZ}z?znG_nR0fg?FHA6^;cXFG-6pWE8h1tut3i@zg+phYrQ-J(hjLJN-ppFwdV90shAO{sWrX0(PPf<3$`z_j*8-T zvzqVFu~Q&B(B4l)j3yBn8mEU32j|Zb-shBMg*}p_xB!K#rdqe-6xv zsgIutM4LB;!77{^EHlx1Uj6_Q;?W5Icn(LEMW7YEX|aNEpH2*uQ=I1vA4~)VX%gEz zffO}f>9tY(M3)aLWYOiX_GlMW`lAn_@t`(4jvvNMkaS-1!Q$s?RCWySTmBM~$%M>T z7lm7M(q5v{FEa7>^9cvlxeou!rvrfd)(P*Vcs#bck~PWU8>(>Xiw>$$;PS!zfX;Y# zOVo7UPoVhB!Il10wEymJGy6BvjZFWJcOaz`3^{VapVldt5|HOlE?T|@l=z|CUPoXA zhETyPr5xZegZ{H(?xE~H-~a-W4cJPP>bW7&)|R9>qND>18!CpgL_wzr`6-}3@w%q|Z-i znQfp0-FI&tW<0I89 zr|IotOmbWs>o0wMby$<`w)JwI*zx--_$z}&i8OqO3xW8LamgkBI&UBOW)s7Lp5pl_ zznp^1C9`9tRgj%a*th*Hj+g8)Qw_1?Ut!l4xnul$%uv7$ga5o?d!l&)){8(mJq}27 z^x&F&7RrweUcA0=Vx^|S2g5NWKx`Fr517vZ-UUw_5X06OY03xmUWsL@GZ;`9%1V)K z1~wa&&__Oi9hWuA3A5*daDIQq*`=(v6~kOtI7k>m%argjX%8wesp>8T_~>hFnIuWO zJtH!C#BI{kK`E(y=0X<>b;U^x%P(|5vlqZCBu8NO%Ly|s)~41(TQX!sEsix0-lO%# z1r)A1T_NOpaC53GfFEsK-E}dk*-?{X#5ZQTPBRc0li}sIaAANQjR@ z<;Pkxh2TYEvR!gOtpxxHJ z^9f}~22d;^L{dZof2Z%cB37Av-(3mIPcj+{`I%bH;9RK}RzMFjFsqAjXBg|jp&qa| zNSHTsY7~D?f1qzaE*I6gKdy|!aE%1rKNc)d2(*W^GP7B%;A%hPSHcJo+|lC@HDxTw z&-Q=5+Aig)YCJjUp^D$khvMkdvsyZo0X3AaU(kzKr&S&m-OFb$VQ@-1_;=XWwz>;1 znupx3n{bsc2;I9{;JvDhrMCtsO9KFKmp96$l4uBHOd~xkv$p6?`veLtUv0D-8al|M z?L>{b+!JZU{^4r8^8^b6-gdP^t;!Yj<1=ESD+o_o>;u6YQSn|3Vn?k*0tq7!C3yI|)duaeoxT>hD z5TRswZyM5f@;BPRix!@fZ5~^~rR{L}(|>bxM&8{g?h0mf0j!jI(p|jSP=NDO**gB0 zWw7z;j+hun?0f5B=H8xgrIb>Rmv!%*DA5DL&O_bn2kzgBr|R^v=}y*BQUC@$X*5vwUq6EHu6u{|;dw^K$Jq<8Z3uCo2i_x-^J$ zx5jtoH4jmRpaMJxdGJ1m?tcp4BmHi7b1k(uwavAC`+CWBJm9=7IQQ2I5$3P_-9nOJ z1!pq+Mq%QOl#19IahM_?Vn?x_njRA1V)$2~oi_yvTX}LEt@*B@R~>tIfMpS)ggr@( z3T#NK-aWDL8w)Nr!H7&Fv&Y~5bKK(jug6?pKu&_%vXB_DIezFyA;$g#9oUt>%Nl1W z1~0JqNAK(RirKFmx#0X~qpHj_NzR^IWEsB4GoL({h|A6wT4(Td4L4Hd!)RLb!v2$3 zJe>+?4aMm@?#`qamo)OVx07S}Q)lG_BoTdw7XG}4(QZ&D)o-|>oMoPcVblnEsV~>c z&xh4yO!);GCwL;e%wHwRx!UwNV5)*7d_H9~P#|qkphR_G7qX8y7*HRF0#;oGrFqtO zbcghK%C_tyL6rJb+vK<7kBN1)FN1O!A0NpM98S`-=MvyC{5Ir$(8_h}b%Xd6`Tp9` z31}v!Q)m)b+X&oE893=?fbZqvLHiZ4)mM z?7Y9+pwj0Z3v9@53i`AJ&CNEDp_Vnn>q?$!w))9zp~OUJuDlig<-pCp?tN#B7=-Dx zjhF-)&PM4;Fyn6HisZ>AN9*x*wbciekG8KS5*02e@fgPPDcN2#2D5Yoj>_{pR|r(n zobc6PAP9i*|5p;pcJR4k7E(nATKEQyK`@gSv2oN#{3h9v4!> zWY?QU(Ni< z+?D7(V)?*xn%KG|C$4?wA+_6`Yn^%K8RS{vl1lAbds*7>CN(Dicv5J>sSV4SScd3w z>$r2@SaD`)*9+;hNanpvN(Z88-%4yMauKRmS}06^9*QJFA~h&&zeG+_lV=|1L^2+0 zF(b!GlS~?O&$WXEt-SRj-~$Oo@&kmM6!NiG-Cj8*i78gZNG3>q$W@xGy?%>0`s2Ky zz0TkPVr$+o#s7)q?jT%q7o`;&-Ua_Sx=7ba5@Ec#yCcya>q2mP-;5-&zd>8BHKlR- z@4~=jJU)J-wknYeeWZ|?>_bBnclw6xsVAX*B*r#|0Kpf~EyPI-`z_&9L+Wxr#O=+& zHYeM35#3#$?|Arx0Lda%H>Yk#q&UX)(WZWhHd4?baOZI@P&DX$vP1dew#jC?R}UwA z*F!UAw>_ZEs&+Lqvacma2DolC`R3c4D6jS|h9AG}u}zE9`;GnGEgwWMB9HY*7*RDp zy6MA0oM`227e{N+jUlrfp$OXl(*@YrRCFfI`z-sJ9tqA7u#V3#Ca+!iJw3tJrd?BZ@5`jeAW!>dM zS6OglLF~vJH|jh1b~=B+YT>k)R=!b6c9iq8bXy~Z;+sP=+IHoK4bD&=@jul{{}koi z*p-SO7#t{|pafB{;92zIUA1XOgL!}BWmQmZ*_N+MJ`^VSbxPZ3xXW6 zh#KD9&UbNfaTSTRY^c6RfJL;;aJ(j6dpg{CP9W zO9{{%OovTd#-YTu;}R;;t&&apy0KQ&dE7T9a`7l0w5aO2Y%Jm^NcrL9z07do;fIbh z9`*$1#&#mqEJ3 zzgdpl|2m0T6G|UeM+8ZY0_XnT_(+uMAu8DAe19#{9oJkV=GK;}>(CMp@`XZ&)487w zq#;Ty+Dj$D)c?&)EFe3IF6I{ZpE^keH~J+u`JGwxSN}OJz{;fn;@RuEoP9 zVpKshQ^?33))MN200%`%O7b8Y8|F)tTE6w(^5KreWl5~aa3NgM81wo2va7PxkgBEe z0RL=%fbAgx0OjzW5@wg6&$LCv;6Mow{P?L|1$B`^jY+$Y6{i|98kjw$%f~M}e<0IA zopPPLl`L0R3}2{n(8n1@nF^tayOwXyop=oMs_9HzJNqdPChY!X%XI)-@1T!qG`{k>T%CbZyHm?(; z$Qdqknp-_3rhdgGcfG$6CK96MBEhjp4i3Uh1OnxpnF2kDz)a`}eQK^L`Ww45TC~MX zuQA4>EO{DtF6nk1M~HmxAwy(#MFk0#MS-9$-z(g34)=7?$2X{HYaC0kOvvybCaJArh{&qJ%)uCPkx*g zA+FbPhC64uz(ZJ>&tkrQo3X#=7j%$+Q`m$82fiMDoh+yy%a)?sQhZz8L5A^kzg$MH z2~gT6NZSpr1Dq&t^>sM`j?dy>{txK3)+glUrKZ&Tdc~O>=}_@Pjf*X#wNU2)*yeE6 zpteq$9(>@VkVo+DA)%1@W5F_=RV|-j3#I0;%6i%#1ECCor(gvlIdX;2> zt(peQ+eL(_Bc&Dyc!=v^W1Jz*C9)}md_5e2gX3E{DF@0^5me}McQYeHYx^H_X$TZ< zxQe%}Pt1l3(s53EqgsXG_MqV;(K5Mbqsqst0U#_E}g52z`t!cc<>cGIK`1>s3^3_Mt1Mf-^KfT~jha=rIkfk>;XNb4F(Y8(8 zE)=b$6MhK^%r;)&IluH(G+R?jOSK$FU=ZhsqXd;}78_;}3-xuKWQXA+)5r(z;`!AE zO0+cxWJ=B!X-gJ#R-{?JSN?Xkw;Gl=^bek=jF3<$j1|XzqL3x}W5KWE4Rva^Oerz# z_v>ED-iRs>nb zyJj@W4KoSOm(VngU}v$EzWBTY(+Y>F#~50)cx-uc!|WN#e~TVJz!}M+4<^&xr9r-= zgy-H}8^N=E*f_sdNqS@@cv&rubGRqjigy`yo~HdlCV1c-7%yLJJEB!{VMY?UX6~c6 zvBcktYadO-%VyChn0~;t_KUi-r|xPgYPX0*9UAmXIEyY6>9OF*-s${xxq?m#Ra=Qk zmPYZ7R9t>7y|KPxhhFpCsI|%}xbJKG46J|8wLI0)KMS}VAO2IM$(Ur;SyxoDv3up^ zIaM0UmzQSQAcuib&Pw6<%U+1jX@^MY3rsAOj}WU5G>STTRQ-)P`_}~9I3tX%J7M>d zyb)%(d$rhN-6;sOXFaYxO|BJk=BnD3a)p~I%+>Q-^?dhpm}mVRTtkt@<2Z4lS`<)!#@-=?0&GzhaE!om6d2G6-`)g7av=5HD1*uL)yAD zE)F+uBPhiJ1R_v%oaV*j$`v80pzu23BfR`&Tm|uM-(Cj9?&RQri-8jYd-T6)gGpu( z*s)cE@klVp?GHEIU*~P(O7L;~gIQ;!I1=&r??PGSMd!Q)#Y5M}8Iv7=;WM7x$-ljZQbH>+O{25uhs02@8V-*{dGF%U!B9o{5#^ z75^kM_iAwr$#P$T?;RY>09r(TAiNfD4N$xiNmE8wIVuc?bmP;_)hgL6E-<}ALszjF9H2~_ zG-yq`W`ayn3Qn62a@X@4R5Bb5GPa8~RfG5l5oE=NnK50L_0`#|ve*kP6$9T4u-D6m za{jmYWs}b9>DwCsQOq;W^hl6bP&ktHdX9xM@C8+lYXe?^-i!9v@lh+pMaw^cZWp;z zvh($NgxT>_^-AUp+aHximhX)jxM!maTor5L`SfaldK%Y$Qh?d%eDzHRD|3}Xp#bWm zr|0MJ*chr+xmvA=pZ<=ZH!4|f&Cnrna29WSY^nVh^9e}s47O+m{1LWTdlJS?RTy_X^yvTGUuI?NV^229BWYCz{cS~Hk^ zL;mMMSZ6{628_RWjh2F6z(eqt-vO7cw4IQ(HGam@RffPne;Z3?3Isw3$gammNArpm z3gtC5)7kIWESBqn*<;uPNe!MDI9RxVUUw#0JzwuHgQ;5t& zbAPr{h-O{8bO;DT2pedV*{m~;E7{qt1O$BSfVT>|Z)m;U&3^+3_2#Ed4E^+t=;eZK zC4WiHlTQNF)=(n|8Fn|ot@t*!1cY4^%IxHc$My>Uc{ytY8sd`vq|lI6J-r5u)e5M! zOJ(Cv+s)e5KP(vjp*nJ==T!Kri3*<#^3A@_`g%FL^FF7Dmd?w3{oshU!{;WVCOflq zT%OSocu_Cu>!`_B&fCETsWl9@cxb7@52WbnJkdb^f3*OIeRc^ppNVhyf>>WiGT1M} zQ^!EvLIN)@oylOxJIEfF#p3R>a9^}Lhk2M$ushIicvOOsWw1!C^d*rUcFo$w4TQx- zGa?>chVa}s_C44q$_gr-qDmXWa}}^FeQL@>;(Rb#*JNHtxA{qB9ZMZdRy)_W0;4{f^hcCh_|rc*E`rbRdrs5|Q`o_@8eyL(XFgWmp2rPo{Nr{=TsQixrQ(jVH1 zew_1!nxQbHaPCrr#?WjGFrEkm;<^5~axY7@Y7s9}=s}~fsOe4rvk^On9%^TM#f#=o zr&Up_T#Cx)*IhefsKe3tN4c%C_4#0n~bRF zeLUTh65%rKwb1XJJLvL#R}hLJi7t5N8!>$`w2tK%ql{=R{AVk{PwU#QrRwY>tHV1q z>|g#4JeT=3SkH7Q?KFB!nzcz1>ujA zjF?&Omtol$k`CsfBBr4B3u_kD45FL~k(jnlx^@wA_j=uX)ADp64Sm?h%MLgXxNBa* zn;cGNZ|{(GzMWYgHSI*?1_VIZS}P=E>lh9JDnhZgcQL@~@%H}Ed0^n#0~;>@Lh22P z{>av6?t9IQuhsJtS~9NvK_>1;`B64*n++9}bexI%PCSWt8K{Pmk}x-Z=s%;;B!NI2 zJE*tUn~9#$AR3ZKy-oUrbS|eDy@+0y-W;1ipA$-PBsj-6lA)K$UCz5g+8E|b%WNwz z4X?h?H6I~pm3y3lg|PtyOVtHZZ6@kXRJ=-qt=P+-P`fj?*~{4(^PIU|9S>uNP^t~1=OgTWAx>TG%i>lFvMNqVHw`XbAEuW;P|`5CnO+w(HK9Rubu9Z3kwVPPzqlegz{z-{JU7> zjt_)GcsyaJ-rL*LqlpDfYy81@jc(Gb^KI~`e1OolFVSkTEliePc3|tPm2+MID$(%4 z-=)6>b0td5R;%nWB;qDpix$D5tM%sSmPMA62>;u*0eix3Vgzf_#>$GkdD2!T z;K0!P8~K+u!eMmR7HMZTnrLef8<{@H717}ANawR7wq^MWh5VaFbHphv&~^gqVv~HJ zZNI2~`)Rlyki^#;bm?BIPu_G-{A*DLhUHV1awhy&;#ukVfIRrGSWUPkmfMoS30NV=T zThC{r%l02}WO5ml!UXi-y=E=rG+T%@mxFZslk&z8Q&1v=)I1`ar9jc?h5(10F*bKc ztT&A}Uz>+I%$FtM&(o#>R_u&|qMz>K`pYC|D|bBh8MEsjdujw%m_><}ObQP62z?_|UEaf7ruS4)sn$@&$j z|D9=`MZ6cTcAd1eD*ZOx)IfST%C$Q)WO(irIro$F4;xmjkhOc7@6|6Z$^k%nnMY4Q z1WqDf%qQVH)X7je%7*teb1+5`2AMay?AG}xKe6|?)19!Y#_tVSVr=xNVhS@{L-1U7 z5%m;^?v0~Kf`LdNZr8gxmEeC*-#Aa<#d$&Tj*o9$e{Z}c6%EY@U9@QBMy6l5=IVR{ z6_@@J4(WqIN`QzdY8Y#4kWiH6qCsoQ)E3%?EovM~J3#a*Xn9-H(>t3Cd4MXV`;!+2 znUwEcK61Ms4;(4FD=@V)Uo?S7P{h)Vh!x%v6gV*30DGCx2Mw*vys|Q>@(+%KG(m2M z{hdfYvW%L4{h-6H8cfFHBpLDDGY;$m5)v@gw%uG8ZGxZ9%BuzarOwt%E+((^hE^|b zJo5A&5OsEDL!r9 zm(8l=h}~wjg{YTHCqtS|UF}RG{Zr@;UOuJZ^iA*|=e6^yZl55@|9{sz5WRcytXHE- z(81;5n&V7yenLo3H zI%PD7>fkMb<5>_LC|D(ZFdc6Z&3_f~|Ayfw?M=h$j8&q9zjVZ=tMUa=fB*ujtnw`w zhqkq7Xul=1cx{PtRoBw}mIU`ZJk45b40lGCb`}g3pAaYr0)_^ttrjN=nXMaIpJ%>+I64>m0qIns_QeD53j43mpIZ@mnBbB=V%+VpS>)9+nLm zOy9L#cG?P|MJpr0F~k`bX_q76EegecxduK?C;{MHj$nfT4%$xoD}^=2lWAw-|FHEI zP;o6w+c0n-Sa3@S7F+@(1oz>X+xYtE+HK=>=8TDpXehivi5ijlI&n57j`oiPSy_EcgeC56@nOnd2yIg-!KAG`Wn{- z^Y!1F16&}${Ppwn{9xgTN;)R%_|Gk(kL0G*lEaCjLe3CWY^otj0Hr}n3`r@0eqJ(Y zj+@Bl{Q?d)=?$7+pgp}P?C+OAAa8qhsnH_u5VclD>Ijd2>TE^LU;7E~>n9RIy1S)( z0*F3FKwBhTLo9PVI}b8A=kHwQ9%aQa=;VsmHD=HcME;i0y(Az-50a3P*CqFiNiiJB z{<-0yBM5!YrAKsXhKO!$?z8(o0OJS&*TVw&i{Q5p`oqgw`PExtgUFoAwyYG^3%5+W zM0vNXH3hibm!We(o-R}Fe}VwmfH1Fa^HU9|9$>oOa6(bO{SD(1(ZMm&t%w2mLsawf zTbye_GQjr)+!ajnK+mv=E;w{n<1KossTdj?PJ_9`7)z>`J@*?Ce8z{rm$--k)b#Ux zBsJlEm^y6`nI&-@x;db&0Th6&d#2|3G+Z8u)~`DtA?E+O%n{M zvRsj!<17-KJv*$N{$|mBj~<$QZU2l8jLXU>n_nfb|$mmCRCDuiBHRZUV37ym-MFZ=RO+bB5{y{A0K(y#N&dWq5#+zb1bXZZ!8`m@$+e z75{#o3Q7?B#Z@xL4kz8xZzL81P9TvN-Jm@7N_5VI@sCDBKgTbAj~lOj3U9SLpu82*`QZzGH|?#gTpgbP4rA-ogFy#`;-8$cDUoY>iEylN%c zzkCCr>E8z?i)us-XW@Uw}LA;Q&v2?}riy8w4@<0z|(2rU2G)h-D$WW*450m;T=!Ggilh~LD05bpfK8B8w0Y@}|7QJdRih+d!HgOwXv|Ky|u_$XEeI1F}cd;)K8|uI> zk)AXP4*h$uI#CeRFu$dYiUJ)ar43*rlJ!eAh#L0Oigu6Jv-14>J}zkK{>s{9RWrugEc9Wu4#afR+b>@qC{+*EjUFf3H5Dal8G$ zh+XY8i}6xZw3znf#Kij;QlL~u29UZNL*TOae(>i{R0>O=mE9GP)az%_c4y!MTK}={ z*#3}uwmX6$&H3f-?(Pa`s5lOo;KH{{wkWRr{}Bgz3`Ei&SwKJq@^$RnP5Pj4i@Y=% z+#jGw&jHLtO+4F&nGzNLbk8TYWzXkF;tw1g$;#ec+HL66D9mEt1P2bw+oixK!>7wf zH4WB0IeH!T}T(@F7v{dNOq=iJF?Ad0N3ijwu^lhN5GfN8#a-U9KrD8?A%e;z;h&qeqK`FRD3YUS(oB7`}1&Ag= ztx*2ZRkQ_|_Br?*4&y-AAK@m@MzG-I+s_6-z|fr6x8sG{D`1`jZ?)0(s^MdQppO_- zPq3`I@tbKdSgvsPa+KWyAmVzh$Q*-j{vziSXp`^DMc+G1RJF)6!LB@kaITv-FYb9h z&^9O@^j+I8a6s>ZW5A#~5%=9YKf)jUNybEP&YU+It^Sh59(fi(A&gaPnph2v5%`H9+i@GC2dhmz{iEbVUpKw~D(u^=o;05PyE!O^fotAw8b z5VpMlk}y=n^_;vs^s&whT7Rttc{w>>92$8da$LAquTx6hUuAuWnRvFvh4)u2Ra)vH ziNv`G2(`rxyzD@6Xk#XR`S0rC_Ywd3mN&Z}J;t;dNAb%L)luBE*0^;U%jmb>w$FZL z(82+`8kw461Xry9Ex)b+q$1dH`K5+Q&lAnpGR$fkCvzZW=~ibICBw=EJ8THC`PHCL zw~ETe`VYd%DQO+9<-IPb?zjVLkgF2wq(NdY$FrS&+{z$+IneLX!?8mXoq0Hd*P z6%Z^6zu0I?frW_~z%PY3f#^T6LnOLli*;=CeT#?4Twwlb7X4XBrK2}pyy|kz^gG!+ z8>#C9nJ7BKwBD}Q&BH1o8T>3v89bM0l&?oJ*u%$E`}u*NfnhyfNhwGo;iI>*(^_Ec zJ2T1(!!d$;z#IJy>i|8H#H6M3fuclF0Ejy}047x+5ED2_|1Vq-(Lfx@?4snd&4$xNx1f3#R14rEtyb;aQ2VT+>+X#k)C4M_73sGuC|a4|p;9J8D5 z*_Pm9dr+7^c|EHo4Pf@np}0(9zURc1oMXW_KHGjaP8K-QNNC=FAMO8hqVa~HuhFlb zRblL=*dm`d1GqMi1kg?t_Ix453`q_^B*6s3TA}*E(Ete~Sd&v#6$KQifz{FVk#R23 zYS+x+0kD9cUxam%2(A|*;Rl~@B=g28)%6lp|HykZUxbp@lq1{Y|kf2Q#61}+YkMu+tjD3GMwB3|9; zU1jk)KiE)|-A|M={lg1Y@{fV?=Z_69h$1*BfFVMN_GJwBYwJCiSZN??V!`!2#sD z)-Gc0AEzw<3#tJ2Uk}O4hXGj8nbMX=EGGcUAO0wo8o!Y1J=E zK7;ys_G09vGJ*Q_$=LLoCH_G5f-ro$P8ghVpsm;7508t>F`g-=S#^E@_r_las>FC` zv%*QP1=F{o?ly5)N?ik8z;PgT}y?5Pe-1GTCi~SjVY25i8#ts1K7ZW2R<(E0( z2#EAzpukq#&B^k+O7+8ogT1zglkCr?D33V82LDkSu|+LLS=g=OADw4LpSe5^sr@?WQDa%omxN z-j($O^|#2=-nHLPmxH@lCxO$BqziP{)!+7Vu#M}-YmlFy(6@uDEK!%xh|W%$Pbam2 zre<(kzhYt1`@cQzJ*lvU4c>%y3A_m90iDbhd6SAVx?CCE12cMC z{HDDpCN?&bRP@2`y06=yI&$1u&=AC#Nh(4d@RNQRW}Gqbb#TcEAk!^TqIe?ad4MNIF8lECfGZcRZd*LZ39u;zn;jUdy8Vg?|^+~70* zNcRF)NE&lc{pf69z)^K)YX__lbP7PI8XHpq+UB@r$Np%u^#HTVLR#o~`-)7SyWEY? z698lPfMMpp7@}ekPEtStt{2vph`kdmmj`W=pNK{7CM^q&c?9e`x`WZ%S8;&3MEzy1 z|D!iBNo`-Do3Z(>F|25N&fsqgRT=LQQn=b{)Jm0HfZaRr6b3*Q^(;j&;emQVsi?mSsxq~TO_Gy{3!_htF8ZgBPlUF^pBU}-WX>-*%;rAgve}SQ%^;eYUkqtI zMIj&}_9Ak&!`bGid|sD&cz#@cmbI{;BfK8~m}ud6Ee|%Nw+uaFgs|&qXHJ}q2E%U_ z0MLDUcD6XsDJKnxJ0TA1h6M8sA{3gIx5mvCZ31k`H_P|&>NfD_Or5*wW3gvPOF20? z0j56fzS@<_dlCG|na7Lu!Q+z2%(4asA%@l!F&17M*BY@Q|4t|*3x3gRGhDCR*SX@}>xvtY2K-U>Ue=->a-(3dAl9JN}ykG`0xfkW0y_^^kzcG(lh+eT)Uo&iKyIGqR3YazPP zYn#f}87P(!qGj4*l%#i9H->zh<*V?3D)W=7_^U;C+t-G0Ez8*|&Sv+X_1Z=nRh-Ke=?8#FEyUX&9_FD;3Y!c)lL`01e=2o-L6ScR(vUcapGzp|0xN zA44_W&IRQ(T^jkT_}d05{b1WaR43B4TfvSF91fAhfvbjDm~Pf#Rb^$-IQ%L$^nkvx zT^e$7d~QCNu*=LTu*tW!{UID1>g5))R&#$r62P+pt&1N^B<6~|2$g_VP=?|tN(tvo z9Vn@ufc*umJ=q;oUtvp+=ZDqeCvQB?gOA3Oq-Z_akT5VXT_f*Aqk4id!V%6swa1*d zHCJ4a0}dES`zOjO&*Q$dhrDxBf4}uATugj?@MULq69&0N22jcAUcV=mxbD@r>e+5& z4he~BS>lTM&*9LmfKPH2tOe#fM{d}C5M;fD^7usXNk^cA(~2H0AXh8REuH(~CrMze zftZk%`!yC2KOju`8IwoJ;p}eL5JGx=9f!Y?QODU|{ zCN|&aob6W81;qUh^h6~3pw?IcgF&+aa_+c=^%&SOwQuiQ`}7SO#5OX9suWW}92%=x zf`_6A+4cl-9J%!ew*PN0+kYlpzk@RAJp$);{3!WKRF035abCR% zY|Pj`#_M$f4>p`uH>=N2UzOk45CFuB$jc~v7X3Ro2eD0j!w7F8;oY; zBTt=M=lz5@GmuLYJFJ{pKk@Y(suM;GOiWC43}x2QC^W~sW~Or7jFjEJE@ zXc45RL$A_Jm7=VO9Ob^2D1TWVQBtYwr02jh9E_pb;t(6oegz!mes3PP&%SlhubB~y z%%b=2d#ucdk8y=7S96di<&OV@1tgpey>V=q-|#CZI|*?l^n;7Tep<&^Tg7lxW`#M8 zjl|_PU;|3f{Xzq8hH->BnINUhBX6$mT6$b2XADY(b$8vOoot1W1us}B3*X9}U^@vXbY@bYotX{Kv1Gct$%s{(k zn$A$W>pGfV_pL)6@z%@gCW=7+#WCp)Q>UW~Lrt@!Qkk4Fr<0`uR?|PUuKTFH%|g?9 z=Yc1+eRDL=Kj?+a;|gL`Xi6)?Xq&b2{G>pD*Jq7hB0Vtj-R=e1XCY!eB7|IJl8CWK z1Q~RhN}dHXA%+uGWdZ$8IR=7~g(ESi+RE0it3_M7Kv8+e>}$1gsbuC* zCsjhV+%m0pZtHKo-^7&*M}v@0SSqa2Q((2a3aM{*odzlTw|jf zT>GC2AKl0EuXZB~gaJ_QATc!4;rt5rsR%~xJ!Kbpm>8C`fV6eBJp|3i7~NH_a?7rL zHu@QM8f~-IwPJ6BW5x%nb?=)N2ZZ*FJBOwQ406$x$O&HKHJlU(o;lD`1ru8P7N~Cv z7NcCF3x!^@;Wou~^c?AAVr2i$MSBR{<4z9!jPb*&tWX+M&y<}LLI66&cv|-zWWMiu z3k@l8{cbP!{CD4SctNKinC4hHPz$w%$NQblZ|&}6X;r&YXzfI+0Djgp>%B47?z)7C ziCbB@`v6HJ(Lhq73=f()no+YPQ_4A85aQGryT$!R#;hg2bhm9E31zRTqSB=`relge z%0H02c@ZP6ltt~a&iQWcb#m!S3}ef#D>RMg98w@Bt^mYh`u{Wzfut$AL8L7D~Q5}`?5IksI!PWmIo#9Pt&-pB= zl>B&+Bk==5Q3Ze9Hcfoz=b9S6Ie3P*5;Fb$w z_oJO;?DiO{?2scI38$@y*~ztcA8E`R_P@H;!Oi$MElKESWP@i0}Xfbzf875_^LSWH?)bAw*tKJe`gm)AdMiD*=u z*pb7DV1iMeS1{J3q;K~z+(OU9tE1jYw{Bkl0D%Da8Fdz^eeTSfQd@r@{TXby(YrEd zHp@bH0@KE*(>;P{ciEcWZq;|YbW*EROv0RQ5KOH3*^8r43{T0V+8%cG`R-m89Lv?N zR}GaKO9sAXJdvT%jv_^qzTT)g>JOH`tf8k121XR$e~YF6h}qVDX1@@PrCtGETm1~_ zvA%X$)&d3;kfzy1YM;<&jEM)f=@x?&e)c<0;T-#c=DRxL?Nxl9bheP#ycQHPz@D+v zipht%s2$L^<%uqhoPU}7G~(_-hB{1Ho82dF>D?WsanRdNcj(^1AF)MkQ+s#yp4~_+ zsA@GA#FO6l-!scF2tb=2fi{FXL&9|lN(bm>;oSNk83MOa{6uw9#}dqtJfUJN1vu~f zU71Z4^0v-GBP4U2^&-3P`Y`rru)*JlZ0DUJDMo$#v~n6ds|`koH6wyA*QP6-1wNDN;zavY&SnSFUT-a--1wblm1Bm-_IjTk*iU@I}u#Sncj zj*Jr$B=>F*C5otriVn={c1jwQp|p!_9C8o1izX^g{2v^K6zOg@(gUajl5`-uv>4YXh`3R}HiP(htDw%MCF5;Q)>Ip=vjt&1!ds|3RM)Osy|&qE zs2ta0khuOc0FCy}nl<a}RH(YNW?g~6+1_{z_u$<_zjVl@{7tG(PTs?J1b}IJ z7&7~L3q|Hk=d#3W*YJnsJ+H+T)nBrroIC)De42u+8Vri|1nb}xK!N$X(_yyaRW*mc z3*)m9&=2>eL+>;me(0QR2f}ZP0tt3IyRwHv*@#@^F|<}}c{v$2+W#E14ls%!KWXT(*U8gTUd5@ZZr zsS-*iR)*QGVc-Xayzz>xpjo1IR|u_loc7_HmyO$KIu5YtC*yYQ1a9S-X(upCjqCfI zZO)sTYvS3@7AH;@T#5sMTE5N;AvVKf2v6phpJ?dsG)HGV27j*2RqC>d1dxjM?8XS= z`2863=V4lXR9(~6%!$kvjS_G>UEhUW4OhTCJZH%ftfx&WT)HL(l<*OUM^?qBsCHGCM2S^!>d(7?0-LIS$IX)+?+>iIg zAeErM-*DwR(@Ac5!=pxc>AqPrB}MY|NL{<Fisa409#Il9dm7!j3lh}Hs$)uA=v5*G!o#5|1tCwP3y+Ns zpP-$ZhJXO!Kw7t|AY9VN4)C4d6$)i20!Z z3|9nwjS2%t(@8ty!#XU~cL?c;wS9&PIy6>vgYLtwmfIEAo}H@%gv5{ewPQ%@y-CjN z*Szwd?o+7H$?+l6YC_es-p9=}KtR@>2on(h_XYvn zkTDQY11}G#$FXTd|9`H>@Opu|c|`zn)3?Wm_kXVbn}>e+ob)B@NHpmu;=dqaA{*!k zjK6>G^-Gw_D>Uw)zcmWrOX;AD{u6)13w}u^^BBc40XW&;xNoHp#Pxr1Y;Rw(m&k%N zRmRu9Z;){d9Rc;PTR}j#03tlM>G-W+=+O|W{}7FTPuTcN$j24@J9K~qe~k?p^Z&$5 z{PhA_d&qeJfD+Zh$FPCvgdE{=zm#3_W>n&NqpNI0Qf{~PbPa!0xD z=68kHKb93Phiz=8Yx|XvWbyws+1|>;6-5WGF3yiU`?aCc;~U52@Z0b-GMeg_A4^-# zohQmmv}z)qWayS$>PzP+Flir79;lZ{18@ku1Nu#>zRKA@U@PL;mu^|uM-)#8m0`P% zU*J6?4NRM1SRXgz`t+GP)=jL$;RAUt%ECi8?sU)y(SW-~4ope{8&-h`DIDVv0>!%hgV&6 zGjI(_>;kb%4mgecloCr9OkW7lVwaAQ%Sk$BHY?>-gbJycuBTZm{x z;>K|kJaOq=-4u$8V~HhqIl->l)X#zMldo^~xG!AfaX@h{x76SyK9)#k6f!+69^hQz z*1oF?q(&d=APnVmtY$Rb6hWFlD{%Awg9X&~6<}?Pss@t!%+hk+H=IZCE5-rvQ;F#Z zd{dslu-a6S>~})1My7#C*c8?;oy%+xEZP-sTC3vU%n{UC>I~kh)Ssj0gL*ybMd&9;*^4uTC@5)NL3a(P4 zW+4{Pi@e7kos)_Cf{*=Z>aAA}sn|TCL+Ng9zV6rfG3S@P79-k%6{`Bchq$dHU==p^MKvQ<}xZH1u;P2<&3F-yfPa`4EmK7Mh8Y&WrMV|5@>i z%_(@-XXbcgpuXr_xlk^J;lnre(vpun$&u4`H;e4#k}C>hGiT0dRsvsyk@4^jbL<_K$L^8E{W zm)PZ#8AToZnATF$0;Q?zbNKvz(NgAYYU7(F&Fx|VDbZS)CMt~psba;JUT${*pezqp zlpM-Cp}G&S$L7morK2vYns<$G{duR*jPBAwG5?uhqK|XXGTgvv!HIe{r~d20y-|7A z=N7CV`R#gTq9O9A3>mGZ@WgOorb4PjvP$oi;%Xpl)-M@H-`#yPnpmnsa@NbWbjh|2+joJitACRLqG9+jG&<%|l|NR*)edLm!JuMAa{ifd6yKhdH3?V_lh zyJGw<7e88MWxQ!~;%DAuY}e=tPLR_>vG?~!u*o7#5ANGmSyeXbq=C9pDXjL_-JIit z2+<^iQn}H>8WO^!^dN8KVOdgbEI~ZbM_7{5np^fL@?jxxX^C_|{1hQ6vWmbA>uE7ths6dasHZ$EMNNuROw+jrF9PKi)_ ze1*jsiDPCIeM}rgnD9)})DMD*#9`?5KXg!+{(_W5S%-V&-9SFxmYJj!`xMKZ3UX7g z|0@eKK+c$t++PN zgd$_^nwxPpUX|?k-4{n&pKO3b?Wwp-{^DSPLVzdy!R3Q)+XqZz9rI|9Um{{W9*nsJ zY~L^FlLUpsS)&cG34|_xqzFu*@T6VPrBn4-typQRbk1OXP~uk|&tvp#mRF3LtDAo4 zwLLP%MD#kjd(78cojStVxnK=wpOc%%UU1nS(l{MVA^LkaiZ zRh}OA>%YWS(y^%Jb&YeiflHZGn`n>N|qAPMZQ;b%_o_gS){rs|OdHAi zg^yN^KT;x7|Gd?AyH%HR&S1WedD3!QpC*Fx+sFahcX0~(*{-ZKcrT?u5K=) z6LmyCShSngr)U`{%0aK&`Zm%k<64%9TUTsEN7m#%>H0vUn^wtR;1Q|yozUts4Gk^d z**DhAHPw#g`Z^~cG6i%5C%0OBz>|jQEPj}|QEeanOrERxD1(ch8hy=@O&>R?VF|+3 zGz8+x(?_l~5Hp*&=!#Cys6+5hknfU;FvLieNGlb%HZ^?X7pH)Omux7)RT5_6D@S`S zy@Q*u)}U+hl;GGxdQSfFbH)eLHZ4{2Iu))N1N%nBF{vMIl(kda%ScQFy!yt~#!d@g z80ikJ%JW-dub#@U*o(j1^gfHAo#nqPRF6b~>w$wrab{}GV%IEYT?Z1c@4pZkM=RBu zXO)Jo%0#<=!y# zJ3jpk@j8>JP`X_JNP@<*$X;S5CZRyLhFaF?vQyz=H`@<$nOo~9R(I0Ab)%6>ibtPU zBYzuNTC~tSe)XceB%``Wu;;2~=q}b$HumG`k$c#J!%Tr`$QfT@->3PWsSvr{_&~;W zGf+w;dZ4}-i(jCYOT8yW$8!NqUNWc0RB|1NQi5|U>y>MKSI=H|ux-V$nZn{`2_koE z;O47n*~DmLkp&U$Pj+_mZ#^dLRIsm=hCQKZ;~ z+kPf0cFszJAF<`roH5_lbYd}x*&Oj>jQb)BQNs1Shg1N9RfrCtoqB@u2N@S`<&vwt z56riV8kWL5;@d0NKPy63S3b!DS-iBmFKO<4YnJXW2V|!hv>i6!%HJ0HJpEm=U1ojm`q9n%giP*LRz6Jc{44tE}D)gi&#pRf;R= z7Dm(;TaYFB$;v=ul!gXB{&V3~dI&h&4XTN4xvI+-rw8joe>R3VY{zQRIbUqyy}pU7 zM0T~}vkbCml!E4P39nLuZxErBa#Lo6f9{A zi`)%;66A+3gHmHPF;=V?R%Yv@O604Gc4$rNz7`_9aR?Vl7Y@>U6VyF`Z2iX*Lyzb< z3$Z?^Nw%Jc?U6)WK9;hnAEe(|&WjOfh6KW}_ev_i!jlcalZ=vS3e>ji8zkBU;^-;% zM5I&4P{mQfJdU`0n{=G2V%4~CKBrQN*FCQ@Ec!aJg|W3e+-l~}j#UH-7Y6yQ6IsK( z_U|IK-V>}OD{s4}rn31ZD~u+N87!VqB9BZ!Ekx^dMSNNWgkLS61i(+pF+xLkQFH`F zjD%_hUJENJwhFcd=eQi;73pLRw9y;oCHA2!YJcKW(lj%_SM52rVv>(;{eFd8%_=pq z8(}MqIA8Y*-ddq1qIrNkhH=X-nALqgM1m&)Q~R?#S$L>@F=qZ;c`1CWOM3w3H~Hs# z)gq@ej`ycLU>4Q0`!|YpOeG}XKiNcHybaK17uAvZMK;f=eh*jW?GNOwPfv@#+RBnB ze>$ZNZ4y2GDkYYxznvOfj|+BkC;9d((b!_ZS_fhBynF1u&&;p-kO=BG-VHZDx=8({ zS2uctMI+yo?PPo{onIm1W~nzCs`k;uQ2-*@BfZLrb0+Ygpe)gu5D=BrQSGTn zMw;w4tfHQU@hjxu$wVmSUi#dhy&m?`+8%+(fOk^3q&;%W?x#gX=n zORXKx>W@#2N(I%P{y^GlyC9@U9BWzOc3|Edke^t^D7+?a)skV-TB?qjf3@vQ&$%_y z)P(X5Xb2FpFBN#lS8!s+8{Jg*z ztt>M$ewU~{fTyPsZZR_Z#*S2_#k#f;yIm%FhEM)-CxD8no1rgKY4YCh)Dt3I?>3tD@;^oS*QA6@h6?JGn>jo?RD$r%W7N;bFAk$ZEDbDyEz0Zi1u(@OMw#ZP^Qx*qglG2ul0g?84T&*Fm^D*Ui-s(P1>LqXLQAcW(T7Q%Q z?5MYtlav%D&}E>#H<6BlhjjPtmh^w>oHfDCscVq8(%A&T%!iOv_h=>`q>6P{0_~G_ z4;JcX(A4Z%i&d$HSOs1xsZpH9zhR{EkoOSM#}gAqYE+@rwh8?l;JM2wx%2&YXW~{e z9m8I=$Y|!FJe^PbSyYc8Iyr>zGXjO#O|03YSvmH(^@5SB>gerz=`tr`qdvv(51B|mxFyY|D{s8| z3y$+!y*Evm^inmlg0{Vg#S%FL@GcMTqGaEFOqDeyOFPJhqtS~AC=DY&zvJUBJ1rpJ z?NqY2-aQ)1!|1cCbxeNLFT1 z*Vdax{$w1fxPaf;P!q&nZr!9ZD^=9N@s$`iGQK}#RaDO8`|?yXZ@?C+89+D02iSy)pV;JnDOiLD z16Fsjj;RH)p&}w%@uEm2gd&M>M`iV$@TcjY9NT-{6}Ff`g;K$9-38a$_~sG^(3qm) zq~5v*Qui9?>N&c?swClIF;YLG#@bpBlCr@(`S5-NP%!A7Ns84QCdDn2y5O3Y0-cXj zwm^x!0JJx$Oe$Nsvu})y?%%xF{W_r#V@x{_P{}t!%@)XxuvDpRE6rR43yTWxbMhL! zRXyiQgK9-jnz$2E7$qoE=I#cQ+>s2Nbrz%PF{ZOFxcvxa4FM%fj+(e) z8bkAze!jl63{}f#?Y@p~S<;jyej+(JEsK6=HJ4nC%auQicg;W16Rpu8`EvhzAPWKj z0;-(Z@%in#tz{(jXCg;a%Vmqw|UB&3dSZ7ny*gqn(-~JHl13moW%DIckxgA zT|VVK07W=Sk)N7($`5e#ofd{S-queQO|~PX?m6F3>_*Q4bo-;*_@VEfA;X@Hel z4eRhrZkJe8DMc{(hzu4@iTb)RlL;T;j|$>X$mi#8mGkLl`I=fV-^XNWz=Cc8yBqrGM9F^JO%rc) z#{#YYx=!QQ#fX%>EUP9_nXZOpM_dD^l#Az~IB`j*62BU5+z>v>X%jJRn2Cu-wXoaw zdR=#>TDMmIp2K6IJG=7YveX=*XJq5z?8f@}Yx=e^^|P>0CLLT9>1}OmCa1;aRrF;4pncmROu0!>-z+;8D@gM03NVY}6T?WVzKziq5%7IAgyig7y3 zjKsW2c1ssGSv=}}OCdJcZ0n&cq7Hur687${Z>*srKT;%$l4YEHS!Rm`=~u}R94761 z@FbF7&)^RRmGh24*l6zQMY^})eFc|I-E(zp?|%6yAF?|X$-9}DF9P|x`9Z=;3ZVn6 z>JpCYRoy>T1tt=%NlWCMU82D1bq7^cW1M0o*TlqEw%rIAqta-ldV7XpB55Chvodfk zkvZ&V)>XD}QC74a+AvpRRncKV9)JugtV_eflE@@5D1@Z(I3H1TW_1uk-%DiVxpSO< zw+aF)-&L_bWp1b}n1N>KwG8cpS1WDSY}ocA+--Zclej`{>M;=b z^K&p-PDSje%QyIKtdML8XU30v+M=B-T{!)B9i>&tX17qrdJRBI_t9k=d^AIvGxl)$MKAMBl+mSJkqgU1ed zrusMANiTDtybJci_(kJ&(N5BslX1Cm##GyG>582LLGyV(PfCY+Kie2@BVO_Me(qAe z1aO<4wEUc#7)J*GceNLvrQ-$7?zHjJ1a|_R_0l4Q+3!@|ga`+5OV|EfGu%9hi#^~g zsm15`Ma6B8zuj5o#REqQ{gNN)jJrq|QE+X>Qk!;|83yk#xt(9IF>!wddQd@*0`~5n zSKbD$wFLn}lQJ4&xmLFxBzI(mPYzs69~OvmxXsg-;O9Tg5Y5lGgaFyH;HcXJUJ6Gg zaYEL(yrZT-fAF!BiFmzVYFca;6>Mx2-Iy2$oon)3OVj$Jq{5j5^ojkGNPt@y+3H_G zOX+<@IG2-T&c2~Ip2@MEbR$32L~~nY)bOkYNOoy@5<~dDv+3l=)Fi+o|fmLyF*CiezeRe~tdWIl2ChX{fFG%hJ%D zhsFGdi8;V%bu(GPqn5%aU-D)y6?Z7ye_<=$g@eK?$d{Nm+Z8G}hUnqj6RLGo^iWcZq=dw6dp})FZ$)_qw{rB>_3I4@{Si#&J zdP^eE7pknB%R|$cEhw9juxc%cV;)4!Gpu4bQzj2uvdBDUh4K}pK9MjvIG&Aq zMWx*y9~L?7#)hr56g(^yxMU_6sj0jl)R{86lv-C{foV^qSt|J^%Hx1(EZ1sKo@d>N zS;kiP^IHV-eH3H)_P`N3!x(iAGQYSo)BFqw-@N2mL7ju9NGp5c##{%}&bB*VJ6AXd zL~^!O)VvSixIq(FuI z3LzTYsE~rLt{wG!=<};QHnDF9dL;UN zX^SRhO6g`))yx;^4IyA^!U{xk4pAyLMxn#_!AqxZe?i6`$RTqq*1-Pp!Qr9-yxQI* z71_?y9&GQ|2?Mo`0XNx zqK2cFm)ysBl&O%GKs)6=D#bsa9_|i?Uj3{x+^Zx^&$UhqcQs952X?XlUa+4 z@cm+pbCk^d@Mk^=V^^RI`qf#ar6VGeM}p@gUTyW#$JKVP5ExxQn4vj(y1cH%UHS9W zAHfaXY3zwL+F>81M$-8c^VDU%-x(~^-}qDlg;p2}5+u|l_2#3+s9Y>lDMQ+ksxEwm zc^zv@fJWm{M1w?VYqGb~sU&ADyY{ACg@ZT#*Ev1Q3bo&7MqKzps>*pls|wbuvwY57 zWBYa6uD>A;B4TL3mA_OA?r}5;1(G{H8Rk)Mp5AbK3bnalhdv$=HyKURZX{YA?1}Tw z_+gR5unePV(a=0~Ysc8g6b7U_K7O(5U+UkBj4VfBW81{xvmTx@j8ov2e)o9eK`Ani=UpIU4=~?nh@9*68_=YQ)r#?gL3)Y)MF{A1eCt+08|m62>{MFN8?{pE zk}LN8DYeI27AU7fg0dw9RZ>=f$^3d8-axY8B60m@I#%Jjhe2^cN%5)>TQQs-3%|M) z@maW*9u)rlma2O#@D=G+D(y2CiW33MI>3+0Q6fM>Ch|tNrg5*{)x9CpY zztGC!8o?^U()o2_W3t$XM(n3SVfoxj<;zjWFEz?$*lY z*yZFm47&^c+NU8cXiE`1O76(I804ypKdC6wAE%nxPzaFHs?W`-E6TTtGA%7N_wIuX zA$vh@-hcgKD4cj(O~)=?6S~+RWk_{FLv}bEm?e)dmZ|q)NFi3JgcaB0DKjTtxJKmZ zT`Zf*3i7CDU=3sLHtQfLH~7LMT?{M;gK)t@^+3vQ@Y9@c2TMZ;OeGX{U{x>QjDZb1 zOsup$jU*i~;pp*HVaK|7uQ3hqiq7d1hEL%R>em+Sm;A4YQ0cs}g`-zhNu?ZT5p$&` zr&=%5zv`<#ah`)K36yayZXS9!T{%|kor?_D%Xej5YGWsFll*d+^U!I+RDi;jM#57l zT?pZ@q(zJMNAX`-3Bcb+y!wjJv^U+`Xh|2-OSQpJQTtgow6_GX17PeCxdFVnTGCST2XVc$1R;GFk39H~X> z98=hGm+!Ijt9|Rx#3Ku({#jb@;`-z^kRy46cco#8&c(F*N0Cvk!hHRq=RkTG`V8j$ zuJr!J>oo>r+Ls!^p@S)yL^aQvy^aKB)ObSNuCG!*UT{Y4r$p%*IZQ-$;g?E!*DAcs zh|aGhSB)6p6ianb!mWHGHf7vdfY=jnE%(~Ebrc1j_ge@29wXzyv8^xD^x3Wyg?XN6 z>G%E}Ih>zMHhn|CE=r$&aWLtiAbW6AUqrf%=@hdHDxWX%+dxxLK}x@_ZD!SHIKN5+ zYP1hB!G7HdA7u?uexD_>V4W=zE1R1m(LC@mu1Drj1`9yB=g7uylh(1SPLEt-zM8v zvir_xM#Wfjz`E-Yw7xq&cT@hPmyb% z3!qiEWu26`%}n9iA}pn`z|%3Sg)@pTfSO7k4!mj6FIv(8q<^pg{-K`?WLlCIA0*{* zes1+Lr82d8dR&5C>pWz)LPMqDiyHujG%?ApZHij@5SE9)wts@j?`C8>0GNr$9# zcXufuB@IeHh0I_gqh!B6sEs{@Pr&uv5WM7-~*-nu1ktyT6F zsl+A|u-ml2gbgH<$3B5uBSB|Yj~H+}RvTQ{&AG9t z6O(w`aOA*sr#H3B3$hIvkD-6qyx^V=^u8^130OY4Q&*d8D_1l%0kE#8n=Cv&LwdQ! z-k)hjpW?43c;2g3qL^0i-OhH~hcGIi->z1pO5YwN0cbN^k}hrjLfCM^b)}9VzA6zv z|I(m13r)VmQl1gZoumhfHbGj0Hun#G4-1z)1)*xaHwnl6PT#%? zZ8vl7<)>&IFye!OiWtM_XuK2qDpjm3v2UMTQwwk4rmMz;{jEZR{MEL0TQdt4ZuI#5zu)*CJlMMehr`tW+0Q z_U^>bKA7}T3>_#fo`hadjSb4CY3R=s@gD3{zI;gAKEF%rA(wGn)GM++Sky5je~(I_ zhsy>8)KHq|pjO_#2kvgsMrrHB%rCC4v0fxz_MHk=?G@l`m|obn?j56?2{t($NrRU5 z%^oX4Zl>c)j#Da~U9!F<)+XzmINj1v_XXLUF*(euUPWWxpUtT1wIU~!I|48wXR<~M z28D)u)OruW;`uD+JVRXaJ{FR}KAa;3Ob|mzpDcL3ltW>ej+;c0OX$jE&>TYh5(Ck7 z6BJovXuYqArGfLXo~{fo)1ogZ4PDDJ(|a!p2HHL_RCS6O&4dmQW7zcwOr(&|w_#2? zx)jOfob0E4DcD_gcs1}iSsQ@jBYNwgMDhH7N^@1-UK%Z2dX~R+h98 zrr#C{KZKaqtSSg1Wy6ah2xs(+)5K~b>5)*JkD_=-c|6qVUjr22l?l(UV9}lwP|dV& zW=Nt(aSoNpD14T}Px7ju;~4mq2(0PyY%=Yv0%_tM3q)|UJ9nnEU* zd?m{LZ+Y{2%rgx0^EJT|#>lzQh}07$S%vK6#X*#`{kdyz!BEh2IZ^N8%NSH>qr_Tl zq{o6<;h%*MVFuQ;nQtB_fE!+SLBnT&6#@_3UhU1TiGFJ8>3IM#aTu?Si!Mk#UH znHG(K)YD+-UL=^RGuG6Izt+*apkpld5T?7Hk@AZ+zS6VPs10J6>+GJ3l(x0L zja-TSz8wB(cC2#y`wpdNS^?4rpWN*eabf^Vi4`NViDO0c;akxGYDfeyB?R*~HWzC) zJw>+DdRTXR>s=7unXtlld}1m;!djWgb&#@mFO$?xa)w=rHUA~TC3HXeq9)yN3UyWa zFxFMHr#h&evNM|1Sqhb0%;su*#jY}C;jL5M5U*7ivQIBcOt)61yeDF#x!HFI^vA}$KMJYT1zYeI ziACJ#IH7;g3VIK3Gc#L;3S^P!-U+qa>E1MNn4MXVMgq5J*RwMrjSG$sFGQ&$xD?ll zqiP&(;SXq%4>$V)7-dzE>7JfYwm@7!8y!T;SUXgWx{=a)59Wo~5{c-1*gPB>YRvUV zoQYGON#@(0Q~HLp?w%2YMU|&KZ%mjZzJP{p;ov^9k-Cp;G0T1>ab}MqPa@v~K*5{P z-SH0r@GRkMeYQSA$OdDTbvGDb3V7f)z>ADwKl@m7kc!36hq%&u-z+SPF5H;(ev$ zKd^9w@9S8T!{JQNjuoBLkDHko@NwP1Bzl92PH~jnh}+yVg{aj>Wc6g7rh+FtHkCe;vOom3sa2{4!O$fetvnt?Iv~{Y1<0()$ zr-x`!s475;QQJ-=Kzgr}Bc!9A+;U~Tbji*4B5P_*BgyDg1a=&7;J6zVa9%VTc8w`o zUWr;h@CtmhcWakmz(97hF9Blim4Z!8OzxVr*Q&wGs~GGT@Rk{KAh{y{x z3Etl>f)vr|SlJzcWPf*HgHo`fq-ZrAE-?1VHeO7G&dO`K-0cA@LV=jAFpcJp03!zrUNzDGGTpc z@}LjD*=J3zS>;J?*tSS+IdiL$V@5YSSRo?0bw#27(#p39TT+Ph&|tF8fG}sSyH_NwL{=bd|3n|A6HiQc`@Q)T*G# z(JtT88%|EN(_F&4=)L~MvpiH33cMqhG6T*p#I{Z?C>blW{BZCMdxC{6$()N-vEjDt z84WFv6-Ny!+q<&2!tX##hV$NkJ>GH3k9C+uI6DUgR)WsLoUZ=L8O-0I&x zpYN7+z0o;1O22Tb2ROlR8|lMvKt^OM*F=q% z*EKw#KKq3(ldg2ywM(mWVjKLM2-qUew^)^rl&i5+66R zvpu{_<~a4BGf$U_*VSNUNT8`D3uQ085kIJxjLDChY1Wt|9%YJN^S=9xiU&g#Db|J` zsuy;c?B1Z6kb{iF%pYTCI_Vb+4MaJ@=B(M&srJqApskmfQ}m@B>N$wN6R;{;JP+ZZ zb0I>B=L~dCP2bm+j-FbU<)0Z0@ib9Ox!?xkuYl1QUJ(ckb@fPicH|g}t4mNA_=S?* zL90o{MOV{nP4|7~$h^pNFQ=wiw*I=~%mcry`n^DYFP6tVjMIyQ{_Jz-Nx%WtH`_APJRPbA7}m-QYsXwr>*Fz|+Sj zfg132_cfYJ8?I;z+kFXVv5cLfsGD2Ps0@Y8J^Qt=g_bxsuZ~2nhj0WGZPmM-bw2d1 z=H;Pq7K2K{Iz@SmzoWu~V=pTufi)N;4|PNc_A!@k7Q4G^wpQYV_B8qVe%&Dt_tM)5 zlVow?CMzU=J!59E59({EuPEqQT^tM!h|*QgjAZ@oB!j1|Y%|K8TIrE5YIZYVUz7rv z(v`$YVmj&56M>^#v6O+7(cu=!6z6j=)D=x`g%));*X!QnvF<Go^UvYs@s_uL<}} zG~r)xShruwuZ~kXH(cBwAr)O6$c!KD-J5^6ezM~~e`BGod~%XkUU(HsM6SCy=sDHI z+R)kk%`Q|Nf&QL}UM^>UHjOei(8>fL#^I9Tbx7=IJ1CluwI6p_T~DYS1`aiO$MUWR zNP3XQfCLlloBcE7*t~kLAQY%^%8nVGVwnfJ5*dvT-ibx`Te`8;S3^YINa+&QyKhbu z#`ABqiEm%`roX3>7c^jh;=QhB(D7&`=J#2EtE$5ynV}oRi?oW09?da7GAMzC`;ekJ zSF`yMFBbl(yEYI`32}`_dno?OvQ){Y_2q$%jQObm+cdmD1lpE;k8+W~hhqi`n#nni zX~pQy9b$mlGQ~ z`;=D23CZsl2->u;5dt()UXzPz2S|<1FqM=Tm|)6IV<;uUKU?Os zwDeL-&%EW^!(Q6y0&qjQ(g$62+c!j2J`)_gPi@|RWP%$SjKgk<7w?skxH72vQrqLk z48M9su&};){UGp1mWC87)an_0^kW(J9$FW%OwYM?$Z6~fpjD9qU{*^a*dblIKiT{8*`GB6b z!NeR|TBlfw4JEKqRClWjW z-=DOrRZj<#0~c1X)&uI32U+G%9(11z4@O$%2BuK9C5AgtWAa@o=I%acC9-UB7cWQG^cYzQ z&hR&T+5=5Cv4zuY3G@U;i6jVJU_SF@j~^xniu4r(PEsTpJ?U{SR&JpqXHVgQP; z2X4f`5T;2nymnmKTT{Y#X@)eXa&?Rsn94!U&vgTWhpX(Q6HId>z3qtopO56evqT}M zRSU4Aa@G8dep0OpdH7JzliW?S64Co)?Wo}nU61v<#yA@P+cj4Q z<9TxcRSW<}BhO$~$bR?mToKbWRbAxF*-7c9(xyuBMCpt`VUW)}jIIrdA`}K~?hsU9 zMcb>gxGvaJRnDx7R)8JepD5%!;x1DX&gwaAu$@d}m87D&aE66VEcGh1suVaQ2Lk2= z>E=PHb_*#y4dKK*d$Erk&W4fv9}nRQ8?k*rA1y0v%vWh@^SOLlHOJHVd>%HOev88k zJFc0Kewsr9xc1mFrL8Ep)*bV>g>t}WjTqGEp`*`^O?a{KCb+4@P$qcR9<;$C+h$Uu z&zXsAu~?5$?pRrS^upprU7$|;7jdiBu^Jb84%4Y9&!#|~(3F9smFJJ-3##<>9)fuG zPEU^OMaAU{DvSb|G20>20*0e4X%UM(ZyDBw*~Hi2Y&smwuRTD86(MUcT0DJxqCEMy zy)E;P{Vo<1ieIPG6aio-ppHE<=j!m-Es-{8d~(7c2*g45P{~~7-nSZG>er8l@(v81 z)f;F@RFFsSqaX?sg~Eou4Sm7D<1&7wkq<<)*N?RepNaB$ACDMGQHX1pm&aiZYosTP zAP&8D43E-~B+?{f00*^(M6!$Ojj`v_PI{CWevXL~mJF#oV&fj=<1uU6ha5a5(g5w& zlpQ0ja5*AO-*rjzVq4|ZZRui1ctt@GP6@QjXgIXWJvp!<^{QOoGP9(*e^2P1;y;Zl z$fmt=zx8FiW|DdE3qqvoTFb&mMv?K)GGg)Db*-L*OIvS)OxNiNh!0fVo}!(sOk8qs z%w0sXeh;`Pu4`GZUAlb5#*H%@xniys?bkYME@wz*75_G9E~Tc>AU7^dM=+O!9@AM!Hp}e3ew|VkHO6y!DB+XTW$; zk=dVNud1sCFeU2|?pf;!=O>M#?T;@UIpo~KtVYcAu3G>e)RK|fMdT&PsFk|#(XnRZ za8J!^->HakNi^;7`pb<;eXT+1CIjRAMIrp6*D8S_nTBSlF5!iQWT;GZbUNW zIg|>nF7vA7K!Vc6nXI$MRoemmv)R5APbkdg&gGEb0fAblF&#xk2V2o7$QU6iE6jH` zQP;=wZAI_Aif(0=Qd|&C1Viy-*PajG0!%}L6g>$qwb0y7E7aG96!N-a}hbUWtSAqKuK?bd`NIK${B|Mq>(`%e^$XF1I8mn%%^T% zE8DQc`Z0#2bzH^>CPz9K?Hn~Xbv@mxG|qZ=Or+tN|Y6WH&P zE0Sv4O;O5<8a1VQdfc0&aY&b#cIG9`<0zb1W-V^SJlgxr*asu+E-)oeQYsd~3a2?e1 z9VJ~KH?CgKZjlJCFzw5uFti50Oe?#orF>xWWQ*%;(Y(yVGjm=r=mJw6_TWoCI=B5y@H5NoGy0k{9)_g@2(z zmwngr+>9ZLE^qcKQNpx%CnU-A`{dfvqj%$%B}N5Y)`&+sv<&;1_qt+}K@1>{&suh$ zQ{^)69k{WNtY#fkCJbn#^8uTLn%dq^SDTxyK0Df71r)S}kNckCf20YT6Oll>09h#G zptzc)SjQ+mu5~J_~@ex{19t;49cyZ~fH(-(B*QNN$e zfr+wg2+YG#z#a^r>`Rq$(yYeE9wfu7S=nOCw(sX-4fJBUH{&rGt`s?4D0}fPXS@KB zTVoI}0EUE-?Xf)03{AAOBy6K9QPHiGAAiLzRn*8}(E-hLqI4HqFUAAE%jJ%7L?etxP0Avl!Hh*5&8nN47cJO7?X8ziQCp@F|9C?6txxYlEIHgB%>3XdAM@*Q<)L!wI&W~h5&og&BdX04jrfih@b z?|LJ9z*R9%Yc~;x&!(XuDNK}2tPMzBVRv7*Qb`k>MC?O&kh0;NVaz6>7eucrHK$Ew zJ2D1wSTlXJquQ#upOoxk)ZE^Ft)%V6qVBPyB%VE9G;fS+ujcG58DXBNq*D3L&qVF| zQ@3iNR)|b~)U>HZ0_DkWngDhLfK4Q(A1hO0tSZLpb`xExG`dy>tplVhq9Q;gOBui8 zbEA5Nn=JgAjsx&2)`{0mB;Byl6cbJxLJRdn# zxjM>s+@C9|(d3dNF}^ye$bz1Nds2`hts&5m(j2SyQVrM&8=fY}J1)i_n3Pv^e>+tu z1@$K*;_O*&XVi0gNG0{Yjn$!Yel7VrI6_*su>E_ac)E=5z1#x33bxlb&q^D+46~an z=~iyIlK`b6KJwvcR_aR})^mDFxeqlIfiao(XI>}FgZ-}^E^}`e(QHF-I-`;>?rwod z=SmTwg>rITf!e*esZ|RM79c}kVHesuATK;GxUpIs^?Nq6xsvAXm!VU{cb!F||%x;Y*A!|U~ zkEJ`(Cw>vxb8}*{2$uW8r`syejFXOOCcJ?`C{Jh6j!egz$RxRS5Wo17Nc7ZM$rJUm zN{06#2RtveOpcrMP88CZuOUiY@YGd62@dE)<*eVznXVpP69NHU7(g;e)~wc)Qn-3K zU5yr*ux>pfhe8Q=LmFUvzgdxB8KNj!Fm}gdC@^pbq+3mhm2-pnd|I3sF*Ju0YHQ<> zsM}*(q50ou0p2I3#?x5-x;bs^x>{H{!~#|irZv-xm8;{(;o>AtX`aDzDfhm;IT+b2 zuU%_GHb&^M@%ORe%$HVp?1@w!a|0=hl=Q>_V_FxPInH?V&5~Dz+gJ-q?TIdBN2bjW z5|s3EQuo#PHEPx?w9QZt%nxTbhMtg|)61^Q?!FX{4&x|E6hDX|_32Yc1XFL2NXeM` zU8we^7dQ}rK10G?@l^#pB2GpS z3d3G4tQBb~;3;rcw|Dy8k&&Vf!2r2BW%qg;d%WeN>ik)|m~REYdftr?O#wGfI!tlj z?ce~}WqQr2#zpQP8C$TOHimtY10oulW(~y8cDg4qwP&V1=lHewnG}-bN^mv6k>Xun zadDyYD!IKLNe2M*u;nQfak<3gux=U}RylaCNb{B*ls%Ey8rs+IfV}6tL1-E78~_HP zl#eEt(!rH4w!S4%C2dA&wGOQtn@2{A%e@=&2fRR#CzP&YdYl>++V=M7iNl<-SI2uh@sXibn?;ng7E!-Dv;lZYbBtEO9)_KL8)!v&+6JPi5(tkoN@VW^<$kX#~`j~~zW)(UK%4%KuD)#7+9 z)O>x97OhMTYvPhj9m@BP4A!k~Y9HPF;eImQp$BwzI=$cK$i6HPS;;qTQ>c5?<5f49o);Hqit<$>M8Uc9Rv? znGVfI0?A|SzO0J)^y_bMmbenC6wb>k$v|fn+-lxWv4*Erx6G5+-7g>Uckg>X^FESD zF`>dvxLu(t_L-6kFbz{*u3V=9=<1Km*J^;w$uY7O`y^Y&OuR=YMx{jsC;*RDMvS+2 z0NEDkc>%LrW>pvqd;PHxPk|ja(JbLDk}+_{VWC^~B5o?4p_VYUH=}9ZV7XNNn`24w z>+;0NWk&jGoCUj$V;jfgRsu&P{8&-UZCN4xWCiUFxx8I{g{O6Pr%z5CcVs7SW68TD ziA!|u!iM;IpVOHnopcM0%2$(M-an$%sLTsqoFtEMZ!R?dLQx_-PaZ4&&9rKMajE6V zksF&us~cK^q3pD*R?%))+>plt*aC{sMYV7nq=dmVJbcbN-EvJ2BOH5;8e|Hb`gfnq zBPm}v7-55%u9{rWzld}r60tXLN=-OBb(#Y31`?&*4)5RtEGScPOIM=^utUpsdPvn+ zU>imIi15WHCPV!3ZiOG=1jt~sTFKs7a4d=1kSpdrBP+A6j&aS8;^CZzubiz@k*;>W zRyBWt(8yrJp=(Rn;<6B{`+WS;BvUfkJtp7w<^Cp}M-DWDn98hd2nUqDU>40?QtyV! zpm1(%e2nOG2QRNv{XQ>%Y&X`0VsR5KQjUjJz8{0xV7<_Pt*&wH1~FKWdNd!i?Cv?? zsQRozNREuI29EiHN2bsC;287rQ2L9_N^FAV{!aFr3j* zUwLw3uL!-jt=ixLF<`a2*d+H_qyh=2Mn1KpWrD&+T-(|Nv+J7O?I`<0HW_W77-a)%dF-^QS$qVI3#M_@U87#)62tB{d*tzW46`$G` zuTe%+)j3W*(VT)4%CQ8b{gEZHKXMo7 zz&WU_@fI&&QqZPneDl;ExAIjYe{!Tlf!QOdn-(WS!WSQM?*bEdyJa@m_DW}Lf^X`I zs*8nB?BS&sfDL{WF}t~gC#d`bQYYOab2OC%0HIISSMIWUzUTgxATyS><@>8u5=(+q z>PQ5S;B4L3_R)an|MHOc+lo(tqZ%hmjD+yD=1Jg7RRCx21 z!s>_>nw0dhPuj6y=?w+Fa~W1-CHA~l52c8qo)B5rRMx%Js@=D=$>VgN)gjBIG3%GI zj&MRV(KN!^;>kxxLix=MmXQu4axr|J#2x)!$QEAe`0{(nt-ZO#$~hs4W z4?2oZN}WsdEEID;Fn|1+QtD%n2n1fn$$!d2qbqb3mapsm+6tPTOp9a5W8pSz$}*8) zF=vzajoD=P!Y27>^KvH2@Y81pRbQpe3Y9={)=j95@%OgLzKmv+X!Ofk4CeqT3dWpP zbCkgRc~XUir%~6=)V7()0R*T#l^|Xq7+BL_Ouj*8x__EfOA9&C@f#%W8Vowu_Et7X zZIvA~Xzq z*h)vHp3aQDJ4L{lqXm7eH#vfzQfmG$|r3t`&`z z_|ct|k*VOz!pW~EF_D>CAzQsh9Gr`&3??qiA=!>p8v)K6oLWZD;~$XUc*Giv~h(` zL@YgMGeA`WOHW)6r~*iMN(f-Hfc}*-3t{}}n@`;-n;D>NFgIJ%Sw~>@3tYP&RCHXV zuhKN6S`JHqbkv2$q*xm!s{28_Q0)X_I7T6?Z*e}oMfppzD5N{SPh-7?rL+xL$@Nm+ zx%K_R;J5-H#G*Ym2pRXGeN$fZ3tfEn*3(KjCF73%pQ_iuun zpVbS25h;Z;+JX3~EoR}IUtBx?z@u$q2q6HKK+AzI>0u*4!13kZKZy`9;J^RFr1DUlTM3{HiU9;T za$QlfM8#!*qWQTB`b*X5cfjY;ZXgwB5)e+&-jai@^@;Bf|E|BQX| z&zpZ%F%HK2JjKg~L4}ux$oy07p8^Xw=p>Q%>5)EJ&HuGF*dI~>d-JCYcmIP7`=?I; zz1#!Ji_x#M8wC#eKZXMTNvaH=L39Uh0Pjt*Kd`F5Edca(G$CoyXFh-h@Py`Q5dUjy z4}=at9n@y9wU_PRC;tMI`Q2U7ggn8c52*oo?0uGx{x62HAU?>oA3-&wktJYnm|^?i z^v7E$sUd6df7eFJ0JNZ=KSIU~=JmzBjSBFk^_n9qTV6{Nh2i%|OrokzMs)O96ag&$tj{e67d^|3kX_^P9MY zP;Xz-0Z6_kLgBr#=(WV5-*v`?7JB|9-xy0MQ3%DGbKYgn8WZpZNd;IQx(3 zEDG!e#$4n$|9Uw(c_;pb_vecWE&HQ9l}RcjRCGd?W<8sSB5E0mbjmA;f?o zwEV|r=#hYc2req)zlqd0Ng#9n!1@Au`gFp~{_-3Uh7i)fBk z@fUO39}ANP!&8=aQU-r!N&XEr{C5@7vKi%10y}fc*CLVsX`Vkdz@|aS5Rw8;_!!j; z^Ka_spDuV1EDTaYponp$GF z8Im&NznuKn7kuH-r6Njzo*r@XgCqT4(gQdi6cFC1@L(^8Q2P4U=<~DsBRL31z&SSs z!ArVPRPO&g4EX2IWh^8x+7I|pNc#Sf`tL#|m{D0vP_%&LcP9eU|DhqL(0;WudRWH; q90bI}gIOcI4g>@QEO_38hWP6EC|X%Lpab|1gtWMVSeeMHcmD(4#rvuN literal 88020 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Ⓢ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

    rD$4J?E?^ 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

    Uv$KpvaVrsDBos>PeX!Z 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 z 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 P_$Mu{Aofw@#ryvQ^xjuV diff --git a/test/image/baselines/candlestick_rangeslider_thai.png b/test/image/baselines/candlestick_rangeslider_thai.png index 345a3e4dab513f1fb88b4c603fffe9106cdc6def..5057aaa71971bbbd441516bc755157e18c3d742d 100644 GIT binary patch literal 89295 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�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

    EyPhy)NM*2Q7}M5%W{(ATLm|+FFJ;hj#mrTT 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 From 401e72cafa027abcdc4ac8ddb00d3c8bd40f77d1 Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Fri, 19 Jun 2026 13:28:24 -0400 Subject: [PATCH 175/241] changes for merge, part 2 (remove 'keepdata' argument from plots.graphJson call) --- src/plots/plots.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plots/plots.js b/src/plots/plots.js index b2bb7c96ea4..47684744520 100644 --- a/src/plots/plots.js +++ b/src/plots/plots.js @@ -121,7 +121,7 @@ plots.sendDataToCloud = function(gd, serverURL) { // Build the request body: the chart JSON plus the plotly.js version used to // generate it, so Cloud can host the chart with a compatible plotly.js version. - var chart = plots.graphJson(gd, false, 'keepdata', 'object'); + var chart = plots.graphJson(gd, false, 'object'); chart.version = version; // Open the Cloud login page in a new tab. We keep a reference so we can post From d6ee07c3a5cb146d2065d2a67074058867ef2fdd Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Thu, 18 Jun 2026 18:13:24 -0600 Subject: [PATCH 176/241] refactor: Remove deprecation warning --- src/traces/choropleth/defaults.js | 10 ---------- src/traces/scattergeo/attributes.js | 6 ------ src/traces/scattergeo/defaults.js | 10 ---------- src/types/generated/schema.d.ts | 4 ++-- test/plot-schema.json | 4 ++-- 5 files changed, 4 insertions(+), 30 deletions(-) diff --git a/src/traces/choropleth/defaults.js b/src/traces/choropleth/defaults.js index 795167eb3ca..7b1e5c4dff1 100644 --- a/src/traces/choropleth/defaults.js +++ b/src/traces/choropleth/defaults.js @@ -4,12 +4,6 @@ var Lib = require('../../lib'); var colorscaleDefaults = require('../../components/colorscale/defaults'); var attributes = require('./attributes'); -const locationmodeBreakingChangeWarning = [ - 'The library used by the *country names* `locationmode` option is changing in the next major version.', - 'Some country names in existing plots may not work in the new version.', - 'To ensure consistent behavior, consider setting `locationmode` to *ISO-3*.' -].join(' '); - module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) { function coerce(attr, dflt) { return Lib.coerce(traceIn, traceOut, attributes, attr, dflt); @@ -34,10 +28,6 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout var locationMode = coerce('locationmode', locationmodeDflt); - if (locationMode === 'country names') { - Lib.warn(locationmodeBreakingChangeWarning); - } - if (locationMode === 'geojson-id') { coerce('featureidkey'); } diff --git a/src/traces/scattergeo/attributes.js b/src/traces/scattergeo/attributes.js index 9059261f671..1aeddeb5474 100644 --- a/src/traces/scattergeo/attributes.js +++ b/src/traces/scattergeo/attributes.js @@ -14,11 +14,6 @@ var scatterMarkerAttrs = scatterAttrs.marker; var scatterLineAttrs = scatterAttrs.line; var scatterMarkerLineAttrs = scatterMarkerAttrs.line; -const breakingChangeWarning = [ - 'The library used by the *country names* `locationmode` option is changing in an upcoming version.', - 'Country names in existing plots may not work in the new version.' -].join(' '); - module.exports = overrideAll( { lon: { @@ -43,7 +38,6 @@ module.exports = overrideAll( values: ['ISO-3', 'USA-states', 'country names', 'geojson-id'], dflt: 'ISO-3', description: [ - breakingChangeWarning, 'Determines the set of locations used to match entries in `locations`', 'to regions on the map.', 'Values *ISO-3*, *USA-states*, *country names* correspond to features on', diff --git a/src/traces/scattergeo/defaults.js b/src/traces/scattergeo/defaults.js index 88e20a17ff7..32629884b8a 100644 --- a/src/traces/scattergeo/defaults.js +++ b/src/traces/scattergeo/defaults.js @@ -10,12 +10,6 @@ var handleFillColorDefaults = require('../scatter/fillcolor_defaults'); var attributes = require('./attributes'); -const locationmodeBreakingChangeWarning = [ - 'The library used by the *country names* `locationmode` option is changing in the next major version.', - 'Some country names in existing plots may not work in the new version.', - 'To ensure consistent behavior, consider setting `locationmode` to *ISO-3*.' -].join(' '); - module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) { function coerce(attr, dflt) { return Lib.coerce(traceIn, traceOut, attributes, attr, dflt); @@ -33,10 +27,6 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout var locationMode = coerce('locationmode', locationmodeDflt); - if (locationMode === 'country names') { - Lib.warn(locationmodeBreakingChangeWarning); - } - if (locationMode === 'geojson-id') { coerce('featureidkey'); } diff --git a/src/types/generated/schema.d.ts b/src/types/generated/schema.d.ts index f927fc11032..b3c5da5ff2e 100644 --- a/src/types/generated/schema.d.ts +++ b/src/types/generated/schema.d.ts @@ -2346,7 +2346,7 @@ export interface ChoroplethData { */ legendwidth?: number; /** - * The library used by the *country names* `locationmode` option is changing in an upcoming version. Country names in existing plots may not work in the new version. Determines the set of locations used to match entries in `locations` to regions on the map. Values *ISO-3*, *USA-states*, *country names* correspond to features on the base map and value *geojson-id* corresponds to features from a custom GeoJSON linked to the `geojson` attribute. *USA-states* accepts both two-letter abbreviations (e.g. *CA*) and full state names (e.g. *California*). + * Determines the set of locations used to match entries in `locations` to regions on the map. Values *ISO-3*, *USA-states*, *country names* correspond to features on the base map and value *geojson-id* corresponds to features from a custom GeoJSON linked to the `geojson` attribute. *USA-states* accepts both two-letter abbreviations (e.g. *CA*) and full state names (e.g. *California*). * @default 'ISO-3' */ locationmode?: 'ISO-3' | 'USA-states' | 'country names' | 'geojson-id'; @@ -8240,7 +8240,7 @@ export interface ScattergeoData { width?: number; }; /** - * The library used by the *country names* `locationmode` option is changing in an upcoming version. Country names in existing plots may not work in the new version. Determines the set of locations used to match entries in `locations` to regions on the map. Values *ISO-3*, *USA-states*, *country names* correspond to features on the base map and value *geojson-id* corresponds to features from a custom GeoJSON linked to the `geojson` attribute. *USA-states* accepts both two-letter abbreviations (e.g. *CA*) and full state names (e.g. *California*). + * Determines the set of locations used to match entries in `locations` to regions on the map. Values *ISO-3*, *USA-states*, *country names* correspond to features on the base map and value *geojson-id* corresponds to features from a custom GeoJSON linked to the `geojson` attribute. *USA-states* accepts both two-letter abbreviations (e.g. *CA*) and full state names (e.g. *California*). * @default 'ISO-3' */ locationmode?: 'ISO-3' | 'USA-states' | 'country names' | 'geojson-id'; diff --git a/test/plot-schema.json b/test/plot-schema.json index 160a59285ca..b18bd8e6062 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -24133,7 +24133,7 @@ "valType": "number" }, "locationmode": { - "description": "The library used by the *country names* `locationmode` option is changing in an upcoming version. Country names in existing plots may not work in the new version. Determines the set of locations used to match entries in `locations` to regions on the map. Values *ISO-3*, *USA-states*, *country names* correspond to features on the base map and value *geojson-id* corresponds to features from a custom GeoJSON linked to the `geojson` attribute. *USA-states* accepts both two-letter abbreviations (e.g. *CA*) and full state names (e.g. *California*).", + "description": "Determines the set of locations used to match entries in `locations` to regions on the map. Values *ISO-3*, *USA-states*, *country names* correspond to features on the base map and value *geojson-id* corresponds to features from a custom GeoJSON linked to the `geojson` attribute. *USA-states* accepts both two-letter abbreviations (e.g. *CA*) and full state names (e.g. *California*).", "dflt": "ISO-3", "editType": "calc", "valType": "enumerated", @@ -61010,7 +61010,7 @@ } }, "locationmode": { - "description": "The library used by the *country names* `locationmode` option is changing in an upcoming version. Country names in existing plots may not work in the new version. Determines the set of locations used to match entries in `locations` to regions on the map. Values *ISO-3*, *USA-states*, *country names* correspond to features on the base map and value *geojson-id* corresponds to features from a custom GeoJSON linked to the `geojson` attribute. *USA-states* accepts both two-letter abbreviations (e.g. *CA*) and full state names (e.g. *California*).", + "description": "Determines the set of locations used to match entries in `locations` to regions on the map. Values *ISO-3*, *USA-states*, *country names* correspond to features on the base map and value *geojson-id* corresponds to features from a custom GeoJSON linked to the `geojson` attribute. *USA-states* accepts both two-letter abbreviations (e.g. *CA*) and full state names (e.g. *California*).", "dflt": "ISO-3", "editType": "calc", "valType": "enumerated", From 734ce036ad1680b7e309e929b088ec2d3f4f2449 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Mon, 22 Jun 2026 12:28:59 -0600 Subject: [PATCH 177/241] feat: Replace country-regex with country-iso-search --- package-lock.json | 14 +++++++----- package.json | 2 +- src/lib/custom_country_codes.ts | 39 +++++++++++++++++++++++++++++++++ src/lib/geo_location_utils.js | 15 +++++-------- 4 files changed, 54 insertions(+), 16 deletions(-) create mode 100644 src/lib/custom_country_codes.ts diff --git a/package-lock.json b/package-lock.json index 1bcc20791d3..674a406a1e1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,7 +21,7 @@ "color": "^5.0.0", "color-normalize": "1.5.0", "color-rgba": "3.0.0", - "country-regex": "^1.1.0", + "country-iso-search": "^0.1.1", "d3-force": "^1.2.1", "d3-format": "^1.4.5", "d3-geo": "^1.12.1", @@ -2634,10 +2634,14 @@ "node": ">= 0.10" } }, - "node_modules/country-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/country-regex/-/country-regex-1.1.0.tgz", - "integrity": "sha1-UcMz3N8Sknt+XuucEKyBEqYSCJY=" + "node_modules/country-iso-search": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/country-iso-search/-/country-iso-search-0.1.1.tgz", + "integrity": "sha512-JJxdoVmgZW3F4DdQ4Jq3NuVfqsk6XoHq8PE8QXNIv1BVwAKyJum2dahC7hsW+v60xwH7pm7g8BwCJ05aUabApg==", + "license": "MIT", + "engines": { + "node": ">=20" + } }, "node_modules/create-require": { "version": "1.1.1", diff --git a/package.json b/package.json index a62cdd26db4..232ecaab025 100644 --- a/package.json +++ b/package.json @@ -83,7 +83,7 @@ "color": "^5.0.0", "color-normalize": "1.5.0", "color-rgba": "3.0.0", - "country-regex": "^1.1.0", + "country-iso-search": "^0.1.1", "d3-force": "^1.2.1", "d3-format": "^1.4.5", "d3-geo": "^1.12.1", diff --git a/src/lib/custom_country_codes.ts b/src/lib/custom_country_codes.ts new file mode 100644 index 00000000000..5006a2162f1 --- /dev/null +++ b/src/lib/custom_country_codes.ts @@ -0,0 +1,39 @@ +import type { CountryRecord } from 'country-iso-search'; + +export const COUNTRIES_X: ReadonlyArray = [ + { + iso3: 'XAC', + iso2: '', + m49: '', + name: 'Aksai Chin', + aliases: [] + }, + { + iso3: 'XAP', + iso2: '', + m49: '', + name: 'Arunachal Pradesh', + aliases: [] + }, + { + iso3: 'XBT', + iso2: '', + m49: '', + name: 'Bir Tawil', + aliases: [] + }, + { + iso3: 'XHT', + iso2: '', + m49: '', + name: 'Halaib Triangle', + aliases: [] + }, + { + iso3: 'XJK', + iso2: '', + m49: '', + name: 'Jammu and Kashmir', + aliases: [] + } +]; diff --git a/src/lib/geo_location_utils.js b/src/lib/geo_location_utils.js index 55338602fd8..2e2b6a792a8 100644 --- a/src/lib/geo_location_utils.js +++ b/src/lib/geo_location_utils.js @@ -1,7 +1,7 @@ 'use strict'; var d3 = require('@plotly/d3'); -var countryRegex = require('country-regex'); +const { COUNTRIES, createLookup } = require('country-iso-search'); var { area: turfArea } = require('@turf/area'); var { centroid: turfCentroid } = require('@turf/centroid'); var { bbox: turfBbox } = require('@turf/bbox'); @@ -12,9 +12,9 @@ var isPlainObject = require('./is_plain_object'); var nestedProperty = require('./nested_property'); var polygon = require('./polygon'); const { usaLocationAbbreviations, usaLocationList } = require('./usa_location_names'); +const { COUNTRIES_X } = require('./custom_country_codes'); -// make list of all country iso3 ids from at runtime -var countryIds = Object.keys(countryRegex); +const { lookupAlpha3 } = createLookup([...COUNTRIES, ...COUNTRIES_X]); var locationmodeToIdFinder = { 'ISO-3': identity, @@ -23,13 +23,8 @@ var locationmodeToIdFinder = { }; function countryNameToISO3(countryName) { - for (var i = 0; i < countryIds.length; i++) { - var iso3 = countryIds[i]; - var regex = new RegExp(countryRegex[iso3]); - - if (regex.test(countryName.trim().toLowerCase())) return iso3; - } - + const iso3 = lookupAlpha3(countryName); + if (iso3) return iso3; loggers.log('Unrecognized country name: ' + countryName + '.'); return false; From 1555cb50aac424513a9647d00d543ee039abe6ff Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Mon, 22 Jun 2026 12:47:48 -0600 Subject: [PATCH 178/241] Add regression tests --- test/jasmine/tests/geo_test.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/test/jasmine/tests/geo_test.js b/test/jasmine/tests/geo_test.js index 403e30a55a2..d75451d1923 100644 --- a/test/jasmine/tests/geo_test.js +++ b/test/jasmine/tests/geo_test.js @@ -886,6 +886,18 @@ describe('geojson / topojson utils', function() { expect(out).toEqual(false); }); + + it('with *country names* locationmode and an ISO 3166-1 short-name suffix', () => { + const out = _locationToFeature(topojson, 'Korea, Republic of', 'country names'); + + expect(out.id).toEqual('KOR'); + }); + + it('with *country names* locationmode and a custom country code', () => { + const out = _locationToFeature(topojson, 'Aksai Chin', 'country names'); + + expect(out.id).toEqual('XAC'); + }); }); describe('should distinguish between US and US Virgin Island', function() { From 0a8f7f6d4c943d59621b33de3fae1b3861340630 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Mon, 22 Jun 2026 13:09:37 -0600 Subject: [PATCH 179/241] Add draftlog --- draftlogs/7856_add.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 draftlogs/7856_add.md diff --git a/draftlogs/7856_add.md b/draftlogs/7856_add.md new file mode 100644 index 00000000000..cbf444e3986 --- /dev/null +++ b/draftlogs/7856_add.md @@ -0,0 +1 @@ +- Replace `country-regex` with `country-iso-search` to search for country names in choropleth, scattergeo traces [[#7856](https://github.com/plotly/plotly.js/pull/7856)] From 48cc7b8bb7bb45abca685e49d9d2c3704c4163ea Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Mon, 22 Jun 2026 16:53:32 -0600 Subject: [PATCH 180/241] Add description for COUNTRIES_X --- src/lib/custom_country_codes.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/lib/custom_country_codes.ts b/src/lib/custom_country_codes.ts index 5006a2162f1..aa3985eda34 100644 --- a/src/lib/custom_country_codes.ts +++ b/src/lib/custom_country_codes.ts @@ -1,5 +1,11 @@ import type { CountryRecord } from 'country-iso-search'; +/** + * Plotly-specific country records for disputed and unrecognized territories + * that are not part of ISO 3166-1. Each entry uses an ISO3-like code in the + * `X` range (reserved by ISO 3166-1 for user-assigned codes) so these regions + * can be looked up alongside standard countries from `country-iso-search`. + */ export const COUNTRIES_X: ReadonlyArray = [ { iso3: 'XAC', From 520bb7f52268495789c251cd020f0cf1f878a3f3 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Tue, 23 Jun 2026 14:24:13 -0600 Subject: [PATCH 181/241] chore: Update "engines" to specify Node 22 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 232ecaab025..aba8bc9a5bd 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "plotly" ], "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" }, "scripts": { "custom-bundle": "node tasks/custom_bundle.mjs", From 980eb9a997244a3d3db798228fa687a5c4c0b287 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Tue, 23 Jun 2026 14:28:35 -0600 Subject: [PATCH 182/241] build: Add .nvmrc file, use in workflows --- .github/actions/setup-workspace/action.yml | 7 +------ .github/workflows/ci.yml | 9 +++------ .github/workflows/publish-dist.yml | 2 +- .gitignore | 1 + .nvmrc | 1 + 5 files changed, 7 insertions(+), 13 deletions(-) create mode 100644 .nvmrc diff --git a/.github/actions/setup-workspace/action.yml b/.github/actions/setup-workspace/action.yml index c2e39d0f41b..20e1ff20727 100644 --- a/.github/actions/setup-workspace/action.yml +++ b/.github/actions/setup-workspace/action.yml @@ -1,17 +1,12 @@ name: 'Setup Workspace' description: 'Setup Node.js, install dependencies, and download build artifacts' -inputs: - node-version: - description: 'Node.js version to use' - default: '18' - runs: using: 'composite' steps: - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6 with: - node-version: ${{ inputs.node-version }} + node-version-file: '.nvmrc' cache: 'npm' - name: Install dependencies diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 721c3be1377..a3d33ff8f32 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,9 +14,6 @@ concurrency: group: ci-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true -env: - NODE_VERSION: '18' - jobs: detect-changes: runs-on: ubuntu-latest @@ -60,7 +57,7 @@ jobs: - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6 with: - node-version: ${{ env.NODE_VERSION }} + node-version-file: '.nvmrc' cache: 'npm' - name: Install dependencies @@ -613,7 +610,7 @@ jobs: - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6 with: - node-version: ${{ env.NODE_VERSION }} + node-version-file: '.nvmrc' cache: 'npm' - name: Set up build environment @@ -644,7 +641,7 @@ jobs: - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6 with: - node-version: ${{ env.NODE_VERSION }} + node-version-file: '.nvmrc' cache: 'npm' - name: Set up build environment diff --git a/.github/workflows/publish-dist.yml b/.github/workflows/publish-dist.yml index eded04faf93..37af1dadb8a 100644 --- a/.github/workflows/publish-dist.yml +++ b/.github/workflows/publish-dist.yml @@ -25,7 +25,7 @@ jobs: - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6 with: - node-version: '22.14.0' + node-version-file: '.nvmrc' cache: 'npm' - name: Set up build environment diff --git a/.gitignore b/.gitignore index 96cc0a9b7e2..c216f5288ab 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,4 @@ tags !.github/ !.gitignore !.npmignore +!.nvmrc diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 00000000000..1c9aeda807d --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +22.23.0 From 00bc295a2b2598cd5f39e99cdf17f65e2b5d4b30 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Tue, 23 Jun 2026 14:29:01 -0600 Subject: [PATCH 183/241] Update Node version in npm script --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index aba8bc9a5bd..255130b79ab 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "start": "node devtools/test_dashboard/server.mjs", "baseline": "node test/image/make_baseline.mjs", "noci-baseline": "npm run cibuild && ./tasks/noci_test.sh image && git checkout dist && echo 'Please do not commit unless the change was expected!'", - "preversion": "check-node-version --node 18 --npm 10 && npm-link-check && npm ls --prod --all", + "preversion": "check-node-version --node 22 --npm 10 && npm-link-check && npm ls --prod --all", "version": "npm run build && git add -A lib dist build src/version.js", "postversion": "node -e \"console.log('Version bumped and committed. If ok, run: git push && git push --tags')\"", "postpublish": "node tasks/sync_packages.js" From 99d880eeeac71f22bbe3fab785dba3f4a64213fe Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Tue, 23 Jun 2026 14:34:29 -0600 Subject: [PATCH 184/241] Update docs --- CONTRIBUTING.md | 2 +- CUSTOM_BUNDLE.md | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 76d8f962e0b..4f956acbb96 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -78,7 +78,7 @@ We use the following [labels](https://github.com/plotly/plotly.js/labels) to tra #### Prerequisites - git -- [node.js](https://nodejs.org/en/). We recommend using node.js v18.x. +- [node.js](https://nodejs.org/en/). We recommend using node.js v22.x. Upgrading and managing node versions can be easily done using [`nvm`](https://github.com/nvm-sh/nvm) or its Windows alternatives. - [`npm`](https://www.npmjs.com/) v10.x and up to ensure that the diff --git a/CUSTOM_BUNDLE.md b/CUSTOM_BUNDLE.md index 40bccd62bba..3d62bc884d4 100644 --- a/CUSTOM_BUNDLE.md +++ b/CUSTOM_BUNDLE.md @@ -5,8 +5,9 @@ Make sure you have the versions of node/npm that's recommended: - plotly.js before 2.5: Node 12/npm 6 - plotly.js from 2.5: Node 16/npm 8 - plotly.js from 2.35: Node 18/npm 10 +- plotly.js from 4.0: Node 22/npm 10 -To download a specific node version look [here](https://nodejs.org/en/download/package-manager). +To download a specific node version look [here](https://nodejs.org/en/download). Note: For CI, it's faster to do `git clone --depth 1` to only get one commit. From 59e9a9e2dab621d45946a2488c958c1e63671eff Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Tue, 23 Jun 2026 14:57:09 -0600 Subject: [PATCH 185/241] Update lock file --- package-lock.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index 674a406a1e1..50e82c31009 100644 --- a/package-lock.json +++ b/package-lock.json @@ -114,7 +114,7 @@ "virtual-webgl": "^1.0.7" }, "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } }, "node_modules/@asamuzakjp/css-color": { From 0f007c6df13bf8e8c234e1c70ccf76507dad9137 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Tue, 23 Jun 2026 15:25:10 -0600 Subject: [PATCH 186/241] Switch to composite action to use .nvmrc specified version of Node --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a3d33ff8f32..4072bdcaa07 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -267,7 +267,7 @@ jobs: chrome-version: 'stable' - name: Run noCI tests - uses: coactions/setup-xvfb@b6b4fcfb9f5a895edadc3bc76318fae0ac17c8b3 # v1 + uses: ./.github/actions/run-xvfb with: run: ./tasks/noci_test.sh jasmine From 1e83547c0d250315642fa9142bd32ab145c7b3a7 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Tue, 23 Jun 2026 15:29:20 -0600 Subject: [PATCH 187/241] Add draftlog --- draftlogs/7861_change.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 draftlogs/7861_change.md diff --git a/draftlogs/7861_change.md b/draftlogs/7861_change.md new file mode 100644 index 00000000000..4779bfd84d8 --- /dev/null +++ b/draftlogs/7861_change.md @@ -0,0 +1 @@ +- Update minimum required Node version to 22 [[#7861](https://github.com/plotly/plotly.js/pull/7861)] From 7c74abe893a18d0b53989d7db90b9f2cd2a92815 Mon Sep 17 00:00:00 2001 From: John Degner Date: Tue, 21 Oct 2025 13:56:52 -0700 Subject: [PATCH 188/241] Add scatterquiver trace type --- lib/index-strict.js | 1 + lib/index.js | 1 + lib/scatterquiver.js | 3 + src/traces/scatterquiver/attributes.js | 207 +++ src/traces/scatterquiver/calc.js | 55 + src/traces/scatterquiver/defaults.js | 68 + src/traces/scatterquiver/event_data.js | 10 + src/traces/scatterquiver/hover.js | 75 + src/traces/scatterquiver/index.js | 31 + src/traces/scatterquiver/plot.js | 120 ++ src/traces/scatterquiver/select_points.js | 39 + src/traces/scatterquiver/style.js | 16 + test/plot-schema.json | 1563 +++++++++++++++++++++ 13 files changed, 2189 insertions(+) create mode 100644 lib/scatterquiver.js create mode 100644 src/traces/scatterquiver/attributes.js create mode 100644 src/traces/scatterquiver/calc.js create mode 100644 src/traces/scatterquiver/defaults.js create mode 100644 src/traces/scatterquiver/event_data.js create mode 100644 src/traces/scatterquiver/hover.js create mode 100644 src/traces/scatterquiver/index.js create mode 100644 src/traces/scatterquiver/plot.js create mode 100644 src/traces/scatterquiver/select_points.js create mode 100644 src/traces/scatterquiver/style.js diff --git a/lib/index-strict.js b/lib/index-strict.js index cac9738bff8..8e332c3b56d 100644 --- a/lib/index-strict.js +++ b/lib/index-strict.js @@ -52,6 +52,7 @@ Plotly.register([ require('../src/traces/scatterpolargl/strict'), require('./barpolar'), require('./scattersmith'), + require('./scatterquiver'), // components require('./calendars'), diff --git a/lib/index.js b/lib/index.js index d4cb5bdcc87..d234cfca3ea 100644 --- a/lib/index.js +++ b/lib/index.js @@ -52,6 +52,7 @@ Plotly.register([ require('./scatterpolargl'), require('./barpolar'), require('./scattersmith'), + require('./scatterquiver'), // components require('./calendars'), diff --git a/lib/scatterquiver.js b/lib/scatterquiver.js new file mode 100644 index 00000000000..f3d08677cc2 --- /dev/null +++ b/lib/scatterquiver.js @@ -0,0 +1,3 @@ +'use strict'; + +module.exports = require('../src/traces/scatterquiver'); diff --git a/src/traces/scatterquiver/attributes.js b/src/traces/scatterquiver/attributes.js new file mode 100644 index 00000000000..6a72329cee5 --- /dev/null +++ b/src/traces/scatterquiver/attributes.js @@ -0,0 +1,207 @@ +'use strict'; + +var baseAttrs = require('../../plots/attributes'); +var hovertemplateAttrs = require('../../plots/template_attributes').hovertemplateAttrs; +var fontAttrs = require('../../plots/font_attributes'); +var dash = require('../../components/drawing/attributes').dash; + +var extendFlat = require('../../lib/extend').extendFlat; + +var attrs = { + x: { + valType: 'data_array', + editType: 'calc+clearAxisTypes', + anim: true, + description: 'Sets the x coordinates of the arrow locations.' + }, + y: { + valType: 'data_array', + editType: 'calc+clearAxisTypes', + anim: true, + description: 'Sets the y coordinates of the arrow locations.' + }, + u: { + valType: 'data_array', + editType: 'calc', + anim: true, + description: 'Sets the x components of the arrow vectors.' + }, + v: { + valType: 'data_array', + editType: 'calc', + anim: true, + description: 'Sets the y components of the arrow vectors.' + }, + scale: { + valType: 'number', + dflt: 0.1, + min: 0, + max: 1, + editType: 'calc', + description: 'Scales size of the arrows (ideally to avoid overlap). Default = 0.1' + }, + arrow_scale: { + valType: 'number', + dflt: 0.3, + min: 0, + max: 1, + editType: 'calc', + description: 'Value multiplied to length of barb to get length of arrowhead. Default = 0.3' + }, + angle: { + valType: 'number', + dflt: Math.PI / 9, + min: 0, + max: Math.PI / 2, + editType: 'calc', + description: 'Angle of arrowhead in radians. Default = π/9' + }, + scaleratio: { + valType: 'number', + min: 0, + editType: 'calc', + description: 'The ratio between the scale of the y-axis and the scale of the x-axis (scale_y / scale_x). Default = null, the scale ratio is not fixed.' + }, + hoverdistance: { + valType: 'number', + min: -1, + dflt: 20, + editType: 'calc', + description: 'Maximum distance (in pixels) to look for nearby arrows on hover.' + }, + + // Line styling for arrows + line: { + color: { + valType: 'color', + dflt: '#000', + editType: 'style', + description: 'Sets the color of the arrow lines.' + }, + width: { + valType: 'number', + min: 0, + dflt: 1, + editType: 'style', + description: 'Sets the width (in px) of the arrow lines.' + }, + dash: dash, + shape: { + valType: 'enumerated', + values: ['linear', 'spline', 'hv', 'vh', 'hvh', 'vhv'], + dflt: 'linear', + editType: 'plot', + description: 'Determines the line shape.' + }, + smoothing: { + valType: 'number', + min: 0, + max: 1.3, + dflt: 1, + editType: 'plot', + description: 'Has an effect only if `shape` is set to *spline*. Sets the amount of smoothing.' + }, + simplify: { + valType: 'boolean', + dflt: true, + editType: 'plot', + description: 'Simplifies lines by removing nearly-overlapping points.' + }, + editType: 'style' + }, + + // Text and labels + text: { + valType: 'data_array', + editType: 'calc', + anim: true, + description: 'Sets text elements associated with each (x,y) pair.' + }, + textposition: { + valType: 'enumerated', + values: [ + 'top left', 'top center', 'top right', + 'middle left', 'middle center', 'middle right', + 'bottom left', 'bottom center', 'bottom right' + ], + dflt: 'middle center', + editType: 'calc', + description: 'Sets the positions of the `text` elements with respects to the (x,y) coordinates.' + }, + // Text font + textfont: fontAttrs({ + editType: 'calc', + colorEditType: 'style', + arrayOk: true, + description: 'Sets the text font.' + }), + + // Selection and styling + selected: { + line: { + color: { + valType: 'color', + editType: 'style', + description: 'Sets the line color of selected points.' + }, + width: { + valType: 'number', + min: 0, + editType: 'style', + description: 'Sets the line width of selected points.' + }, + editType: 'style' + }, + textfont: { + color: { + valType: 'color', + editType: 'style', + description: 'Sets the text font color of selected points, applied only when a selection exists.' + }, + editType: 'style' + }, + editType: 'style' + }, + unselected: { + line: { + color: { + valType: 'color', + editType: 'style', + description: 'Sets the line color of unselected points.' + }, + width: { + valType: 'number', + min: 0, + editType: 'style', + description: 'Sets the line width of unselected points.' + }, + editType: 'style' + }, + textfont: { + color: { + valType: 'color', + editType: 'style', + description: 'Sets the text font color of unselected points, applied only when a selection exists.' + }, + editType: 'style' + }, + editType: 'style' + } +}; + +// Extend with base attributes (includes hoverinfo, etc.) +extendFlat(attrs, baseAttrs); + +// Add hoverinfo with proper flags for quiver +// We need to create a new object to avoid mutating the shared base attributes +attrs.hoverinfo = extendFlat({}, baseAttrs.hoverinfo, { + flags: ['x', 'y', 'u', 'v', 'text', 'name'], + dflt: 'all' +}); + +// Add hovertemplate +attrs.hovertemplate = extendFlat({}, hovertemplateAttrs({}, { + keys: ['x', 'y', 'u', 'v', 'text', 'name'] +})); + +module.exports = attrs; \ No newline at end of file diff --git a/src/traces/scatterquiver/calc.js b/src/traces/scatterquiver/calc.js new file mode 100644 index 00000000000..f502d19bc4c --- /dev/null +++ b/src/traces/scatterquiver/calc.js @@ -0,0 +1,55 @@ +'use strict'; + +var Lib = require('../../lib'); + +/** + * Main calculation function for scatterquiver trace + * Creates calcdata with arrow path data for each vector + */ +module.exports = function calc(gd, trace) { + var x = trace.x; + var y = trace.y; + var u = trace.u; + var v = trace.v; + var scale = trace.scale; + var arrowScale = trace.arrow_scale; + var angle = trace.angle; + var scaleRatio = trace.scaleratio; + + // Create calcdata - one complete arrow per entry + var calcdata = []; + var len = x.length; + + for(var i = 0; i < len; i++) { + // Calculate arrow components + var dx = u[i] * scale * (scaleRatio || 1); + var dy = v[i] * scale; + var barbLen = Math.sqrt(dx * dx / (scaleRatio || 1) + dy * dy); + var arrowLen = barbLen * arrowScale; + var barbAng = Math.atan2(dy, dx / (scaleRatio || 1)); + + var ang1 = barbAng + angle; + var ang2 = barbAng - angle; + + var endX = x[i] + dx; + var endY = y[i] + dy; + + var point1X = endX - arrowLen * Math.cos(ang1) * (scaleRatio || 1); + var point1Y = endY - arrowLen * Math.sin(ang1); + var point2X = endX - arrowLen * Math.cos(ang2) * (scaleRatio || 1); + var point2Y = endY - arrowLen * Math.sin(ang2); + + // Create complete arrow as one path: shaft + arrow head + var arrowPath = [ + { x: x[i], y: y[i], i: i }, // Start point + { x: endX, y: endY, i: i }, // End of shaft + { x: point1X, y: point1Y, i: i }, // Arrow head point 1 + { x: endX, y: endY, i: i }, // Back to end + { x: point2X, y: point2Y, i: i } // Arrow head point 2 + ]; + + calcdata.push(arrowPath); + } + + return calcdata; +}; \ No newline at end of file diff --git a/src/traces/scatterquiver/defaults.js b/src/traces/scatterquiver/defaults.js new file mode 100644 index 00000000000..651e6dd2775 --- /dev/null +++ b/src/traces/scatterquiver/defaults.js @@ -0,0 +1,68 @@ +'use strict'; + +var Lib = require('../../lib'); +var attributes = require('./attributes'); + +module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) { + // Selection styling - use coerce to set proper defaults + function coerce(attr, dflt) { + return Lib.coerce(traceIn, traceOut, attributes, attr, dflt); + } + + // Coerce x and y data arrays (this ensures proper data structure for category ordering) + var x = coerce('x'); + var y = coerce('y'); + var u = coerce('u'); + var v = coerce('v'); + + // Simple validation - check if we have the required arrays + if(!x || !Array.isArray(x) || x.length === 0 || + !y || !Array.isArray(y) || y.length === 0 || + !u || !Array.isArray(u) || u.length === 0 || + !v || !Array.isArray(v) || v.length === 0) { + traceOut.visible = false; + return; + } + + // Set basic properties + traceOut.type = 'scatterquiver'; + traceOut.visible = true; + + // Set default values using coerce + coerce('scale', 0.1); + coerce('arrow_scale', 0.3); + coerce('angle', Math.PI / 9); + coerce('scaleratio'); + coerce('hoverdistance', 20); + + // Line styling + traceOut.line = { + color: traceIn.line && traceIn.line.color ? traceIn.line.color : defaultColor, + width: traceIn.line && traceIn.line.width ? traceIn.line.width : 1, + dash: traceIn.line && traceIn.line.dash ? traceIn.line.dash : 'solid', + shape: traceIn.line && traceIn.line.shape ? traceIn.line.shape : 'linear', + smoothing: traceIn.line && traceIn.line.smoothing ? traceIn.line.smoothing : 1, + simplify: traceIn.line && traceIn.line.simplify !== undefined ? traceIn.line.simplify : true + }; + + // Hover and interaction - let the plots module handle hoverinfo defaults + // traceOut.hoverinfo will be set by Lib.coerceHoverinfo in plots.js + traceOut.hovertemplate = traceIn.hovertemplate; + + // Text + traceOut.text = traceIn.text; + traceOut.textposition = traceIn.textposition || 'middle center'; + + // Use Lib.coerceFont to set textfont properly + Lib.coerceFont(coerce, 'textfont', layout.font); + + coerce('selected.line.color'); + coerce('selected.line.width'); + coerce('selected.textfont.color'); + coerce('unselected.line.color'); + coerce('unselected.line.width'); + coerce('unselected.textfont.color'); + + // Set the data length + traceOut._length = x.length; +}; \ No newline at end of file diff --git a/src/traces/scatterquiver/event_data.js b/src/traces/scatterquiver/event_data.js new file mode 100644 index 00000000000..faecde95abb --- /dev/null +++ b/src/traces/scatterquiver/event_data.js @@ -0,0 +1,10 @@ +'use strict'; + +module.exports = function eventData(out, pt, trace, cd, pointNumber) { + out.x = pt.x; + out.y = pt.y; + out.u = trace.u[pointNumber]; + out.v = trace.v[pointNumber]; + out.pointNumber = pointNumber; + out.trace = trace; +}; diff --git a/src/traces/scatterquiver/hover.js b/src/traces/scatterquiver/hover.js new file mode 100644 index 00000000000..e5502dcbc0a --- /dev/null +++ b/src/traces/scatterquiver/hover.js @@ -0,0 +1,75 @@ +'use strict'; + +var Lib = require('../../lib'); +var Fx = require('../../components/fx'); +var Registry = require('../../registry'); + +module.exports = function hoverPoints(pointData, xval, yval, hovermode) { + var cd = pointData.cd; + var trace = cd[0].trace; + var xa = pointData.xa; + var ya = pointData.ya; + var xpx = xa.c2p(xval); + var ypx = ya.c2p(yval); + + // Find the closest arrow to the hover point + var minDistance = Infinity; + var closestPoint = null; + var closestIndex = -1; + + // Check each arrow segment + for(var i = 0; i < cd.length; i++) { + var segment = cd[i]; + if(segment.length < 2) continue; + + // Calculate distance to the start point of the arrow + var x1 = xa.c2p(segment[0].x); + var y1 = ya.c2p(segment[0].y); + + var distance = Math.sqrt((xpx - x1) * (xpx - x1) + (ypx - y1) * (ypx - y1)); + + if(distance < minDistance) { + minDistance = distance; + closestPoint = segment[0]; // Use the start point for hover data + closestIndex = i; + } + } + + if(!closestPoint || minDistance > (trace.hoverdistance || 20)) return; + + // Create hover point data with proper label values and spikeline support + var hoverPoint = { + x: closestPoint.x, + y: closestPoint.y, + u: trace.u[closestIndex], + v: trace.v[closestIndex], + text: trace.text ? trace.text[closestIndex] : '', + name: trace.name || '', + trace: trace, + index: closestIndex, + // Set label values for proper hover formatting + xLabelVal: closestPoint.x, + yLabelVal: closestPoint.y, + uLabelVal: trace.u[closestIndex], + vLabelVal: trace.v[closestIndex], + // Add spikeline support + xa: pointData.xa, + ya: pointData.ya, + x0: closestPoint.x, + x1: closestPoint.x, + y0: closestPoint.y, + y1: closestPoint.y, + distance: minDistance, + spikeDistance: minDistance, + curveNumber: trace.index, + color: trace.line ? trace.line.color : 'blue' + }; + + // Set hover text + var hovertext = trace.hovertext || trace.text; + if(hovertext && hovertext[closestIndex]) { + hoverPoint.hovertext = hovertext[closestIndex]; + } + + return [hoverPoint]; +}; \ No newline at end of file diff --git a/src/traces/scatterquiver/index.js b/src/traces/scatterquiver/index.js new file mode 100644 index 00000000000..b476090cc53 --- /dev/null +++ b/src/traces/scatterquiver/index.js @@ -0,0 +1,31 @@ +'use strict'; + +module.exports = { + moduleType: 'trace', + name: 'scatterquiver', + basePlotModule: require('../../plots/cartesian'), + categories: [ + 'cartesian', 'svg', 'showLegend', 'scatter-like', 'zoomScale' + ], + + attributes: require('./attributes'), + supplyDefaults: require('./defaults'), + calc: require('./calc'), + plot: require('./plot'), + style: require('./style'), + styleOnSelect: require('../scatter/style').styleOnSelect, + hoverPoints: require('./hover'), + eventData: require('./event_data'), + selectPoints: require('./select_points'), + animatable: true, + + meta: { + description: [ + 'The scatterquiver trace type visualizes vector fields using arrows.', + 'Specify a vector field using 4 1D arrays:', + '2 position arrays `x`, `y` and 2 vector component arrays `u`, `v`.', + 'The arrows are drawn exactly at the positions given by `x` and `y`.', + 'Arrow length and direction are determined by `u` and `v` components.' + ].join(' ') + } +}; diff --git a/src/traces/scatterquiver/plot.js b/src/traces/scatterquiver/plot.js new file mode 100644 index 00000000000..36a9bb4cb7e --- /dev/null +++ b/src/traces/scatterquiver/plot.js @@ -0,0 +1,120 @@ +'use strict'; + +var d3 = require('@plotly/d3'); + +var Registry = require('../../registry'); +var Lib = require('../../lib'); +var Drawing = require('../../components/drawing'); + +module.exports = function plot(gd, plotinfo, cdscatter, scatterLayer, transitionOpts, makeOnCompleteCallback) { + var join, onComplete; + + // If transition config is provided, then it is only a partial replot and traces not + // updated are removed. + var isFullReplot = !transitionOpts; + var hasTransition = !!transitionOpts && transitionOpts.duration > 0; + + join = scatterLayer.selectAll('g.trace') + .data(cdscatter, function(d) { return d[0].trace.uid; }); + + // Append new traces: + join.enter().append('g') + .attr('class', function(d) { + return 'trace scatterquiver trace' + d[0].trace.uid; + }) + .style('stroke-miterlimit', 2); + join.order(); + + if(hasTransition) { + if(makeOnCompleteCallback) { + onComplete = makeOnCompleteCallback(); + } + + var transition = d3.transition() + .duration(transitionOpts.duration) + .ease(transitionOpts.easing) + .each('end', function() { + onComplete && onComplete(); + }) + .each('interrupt', function() { + onComplete && onComplete(); + }); + + transition.each(function() { + scatterLayer.selectAll('g.trace').each(function(d, i) { + plotOne(gd, i, plotinfo, d, cdscatter, this, transitionOpts); + }); + }); + } else { + join.each(function(d, i) { + plotOne(gd, i, plotinfo, d, cdscatter, this, transitionOpts); + }); + } + + if(isFullReplot) { + join.exit().remove(); + } +}; + +function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transitionOpts) { + var trace = cdscatter[0].trace; + var xa = plotinfo.xaxis; + var ya = plotinfo.yaxis; + var fullLayout = gd._fullLayout; + + // Create line group for arrows + var lines = d3.select(element).selectAll('g.lines') + .data([cdscatter]); + + lines.enter().append('g') + .classed('lines', true); + + Drawing.setClipUrl(lines, plotinfo.layerClipId, gd); + + // Create line segments for each arrow + var lineSegments = lines.selectAll('path.js-line') + .data(cdscatter); + + lineSegments.enter().append('path') + .classed('js-line', true) + .style('vector-effect', 'non-scaling-stroke'); + + lineSegments.exit().remove(); + + // Update line segments + lineSegments.each(function(d) { + var path = d3.select(this); + var segment = d; + + if(segment.length === 0) return; + + // Convert data coordinates to pixel coordinates + var pixelCoords = segment.map(function(point) { + return { + x: xa.c2p(point.x), + y: ya.c2p(point.y) + }; + }); + + // Create SVG path from pixel coordinates + var pathData = 'M' + pixelCoords[0].x + ',' + pixelCoords[0].y; + for(var i = 1; i < pixelCoords.length; i++) { + pathData += 'L' + pixelCoords[i].x + ',' + pixelCoords[i].y; + } + + path.attr('d', pathData); + }); + + // Apply styling using Plotly's standard styling system + Drawing.lineGroupStyle(lineSegments, trace.line && trace.line.width, trace.line && trace.line.color, trace.line && trace.line.dash); + + // Handle transitions + if(transitionOpts && transitionOpts.duration > 0) { + var transition = d3.transition() + .duration(transitionOpts.duration) + .ease(transitionOpts.easing); + + lineSegments.transition(transition) + .style('opacity', 1); + } +} \ No newline at end of file diff --git a/src/traces/scatterquiver/select_points.js b/src/traces/scatterquiver/select_points.js new file mode 100644 index 00000000000..e169b1b9517 --- /dev/null +++ b/src/traces/scatterquiver/select_points.js @@ -0,0 +1,39 @@ +'use strict'; + +module.exports = function selectPoints(searchInfo, selectionTester) { + var cd = searchInfo.cd; + var xa = searchInfo.xaxis; + var ya = searchInfo.yaxis; + var selection = []; + var trace = cd[0].trace; + var i; + var segment; + var x; + var y; + + if(selectionTester === false) { // clear selection + for(i = 0; i < cd.length; i++) { + cd[i].selected = 0; + } + } else { + for(i = 0; i < cd.length; i++) { + segment = cd[i]; + // Use the start point of the arrow for selection testing + x = xa.c2p(segment[0].x); + y = ya.c2p(segment[0].y); + + if((segment[0].i !== null) && selectionTester.contains([x, y], false, i, searchInfo)) { + selection.push({ + pointNumber: segment[0].i, + x: xa.c2d(segment[0].x), + y: ya.c2d(segment[0].y) + }); + segment.selected = 1; + } else { + segment.selected = 0; + } + } + } + + return selection; +}; diff --git a/src/traces/scatterquiver/style.js b/src/traces/scatterquiver/style.js new file mode 100644 index 00000000000..deb72e21718 --- /dev/null +++ b/src/traces/scatterquiver/style.js @@ -0,0 +1,16 @@ +'use strict'; + +var d3 = require('@plotly/d3'); + +var Drawing = require('../../components/drawing'); +var Lib = require('../../lib'); + +module.exports = function style(gd, calcTrace) { + if(!calcTrace || !calcTrace.length || !calcTrace[0]) return; + + var trace = calcTrace[0].trace; + var s = d3.select(gd).selectAll('g.trace' + trace.uid); + + s.selectAll('path.js-line') + .call(Drawing.lineGroupStyle, trace.line || {}); +}; diff --git a/test/plot-schema.json b/test/plot-schema.json index 78614b86693..c869e669c43 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -57621,6 +57621,1569 @@ }, "type": "pie" }, + "quiver": { + "animatable": true, + "attributes": { + "anchor": { + "description": "Sets the arrows' anchor with respect to their (x,y) positions. Use *tail* to place (x,y) at the base, *tip* to place (x,y) at the head, or *cm*/*center*/*middle* to center the arrow on (x,y).", + "dflt": "tail", + "editType": "calc", + "valType": "enumerated", + "values": [ + "tip", + "tail", + "cm", + "center", + "middle" + ] + }, + "arrow_scale": { + "description": "Deprecated alias for `arrowsize`-based sizing. Prefer using `arrowsize`.", + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + "arrowsize": { + "description": "Scales the size of the arrow head relative to a base size. Higher values produce larger heads.", + "dflt": 1, + "editType": "calc", + "min": 0.3, + "valType": "number" + }, + "arrowwidth": { + "description": "Sets the width (in px) of the arrow line (alias of `line.width`).", + "editType": "style", + "min": 0.1, + "valType": "number" + }, + "autocolorscale": { + "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "c": { + "anim": true, + "description": "Sets the scalar values used to map colors via the colorscale. If not provided, the magnitude sqrt(u^2 + v^2) is used.", + "editType": "calc", + "valType": "data_array" + }, + "cauto": { + "description": "Determines whether or not the color domain is computed with respect to the input data (here u/v norm) or the bounds set in `cmin` and `cmax` Defaults to `false` when `cmin` and `cmax` are set by the user.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "cmax": { + "description": "Sets the upper bound of the color domain. Value should have the same units as u/v norm and if set, `cmin` must be set as well.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "cmid": { + "description": "Sets the mid-point of the color domain by scaling `cmin` and/or `cmax` to be equidistant to this point. Value should have the same units as u/v norm. Has no effect when `cauto` is `false`.", + "dflt": null, + "editType": "calc", + "impliedEdits": {}, + "valType": "number" + }, + "cmin": { + "description": "Sets the lower bound of the color domain. Value should have the same units as u/v norm and if set, `cmax` must be set as well.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "coloraxis": { + "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.", + "dflt": null, + "editType": "calc", + "regex": "/^coloraxis([2-9]|[1-9][0-9]+)?$/", + "valType": "subplotid" + }, + "colorbar": { + "bgcolor": { + "description": "Sets the color of padded area.", + "dflt": "rgba(0,0,0,0)", + "editType": "colorbars", + "valType": "color" + }, + "bordercolor": { + "description": "Sets the axis line color.", + "dflt": "#444", + "editType": "colorbars", + "valType": "color" + }, + "borderwidth": { + "description": "Sets the width (in px) or the border enclosing this color bar.", + "dflt": 0, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "dtick": { + "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*", + "editType": "colorbars", + "impliedEdits": { + "tickmode": "linear" + }, + "valType": "any" + }, + "editType": "colorbars", + "exponentformat": { + "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from \"femto\" f (10^-15) to \"tera\" T (10^12). *SI extended* covers instead the full SI range from \"quecto\" q (10^-30) to \"quetta\" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation.", + "dflt": "B", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "none", + "e", + "E", + "power", + "SI", + "B", + "SI extended" + ] + }, + "labelalias": { + "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax.", + "dflt": false, + "editType": "colorbars", + "valType": "any" + }, + "len": { + "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.", + "dflt": 1, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "lenmode": { + "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.", + "dflt": "fraction", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "fraction", + "pixels" + ] + }, + "minexponent": { + "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.", + "dflt": 3, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "nticks": { + "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.", + "dflt": 0, + "editType": "colorbars", + "min": 0, + "valType": "integer" + }, + "orientation": { + "description": "Sets the orientation of the colorbar.", + "dflt": "v", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "h", + "v" + ] + }, + "outlinecolor": { + "description": "Sets the axis line color.", + "dflt": "#444", + "editType": "colorbars", + "valType": "color" + }, + "outlinewidth": { + "description": "Sets the width (in px) of the axis line.", + "dflt": 1, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "role": "object", + "separatethousands": { + "description": "If \"true\", even 4-digit integers are separated", + "dflt": false, + "editType": "colorbars", + "valType": "boolean" + }, + "showexponent": { + "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.", + "dflt": "all", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "showticklabels": { + "description": "Determines whether or not the tick labels are drawn.", + "dflt": true, + "editType": "colorbars", + "valType": "boolean" + }, + "showtickprefix": { + "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.", + "dflt": "all", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "showticksuffix": { + "description": "Same as `showtickprefix` but for tick suffixes.", + "dflt": "all", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "thickness": { + "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.", + "dflt": 30, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "thicknessmode": { + "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.", + "dflt": "pixels", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "fraction", + "pixels" + ] + }, + "tick0": { + "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears.", + "editType": "colorbars", + "impliedEdits": { + "tickmode": "linear" + }, + "valType": "any" + }, + "tickangle": { + "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.", + "dflt": "auto", + "editType": "colorbars", + "valType": "angle" + }, + "tickcolor": { + "description": "Sets the tick color.", + "dflt": "#444", + "editType": "colorbars", + "valType": "color" + }, + "tickfont": { + "color": { + "editType": "colorbars", + "valType": "color" + }, + "description": "Sets the color bar's tick label font", + "editType": "colorbars", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "colorbars", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "colorbars", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "colorbars", + "valType": "string" + }, + "size": { + "editType": "colorbars", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "colorbars", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "tickformat": { + "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*", + "dflt": "", + "editType": "colorbars", + "valType": "string" + }, + "tickformatstops": { + "items": { + "tickformatstop": { + "dtickrange": { + "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*", + "editType": "colorbars", + "items": [ + { + "editType": "colorbars", + "valType": "any" + }, + { + "editType": "colorbars", + "valType": "any" + } + ], + "valType": "info_array" + }, + "editType": "colorbars", + "enabled": { + "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.", + "dflt": true, + "editType": "colorbars", + "valType": "boolean" + }, + "name": { + "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.", + "editType": "colorbars", + "valType": "string" + }, + "role": "object", + "templateitemname": { + "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.", + "editType": "colorbars", + "valType": "string" + }, + "value": { + "description": "string - dtickformat for described zoom level, the same as *tickformat*", + "dflt": "", + "editType": "colorbars", + "valType": "string" + } + } + }, + "role": "object" + }, + "ticklabeloverflow": { + "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "allow", + "hide past div", + "hide past domain" + ] + }, + "ticklabelposition": { + "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.", + "dflt": "outside", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "outside", + "inside", + "outside top", + "inside top", + "outside left", + "inside left", + "outside right", + "inside right", + "outside bottom", + "inside bottom" + ] + }, + "ticklabelstep": { + "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.", + "dflt": 1, + "editType": "colorbars", + "min": 1, + "valType": "integer" + }, + "ticklen": { + "description": "Sets the tick length (in px).", + "dflt": 5, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "tickmode": { + "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).", + "editType": "colorbars", + "impliedEdits": {}, + "valType": "enumerated", + "values": [ + "auto", + "linear", + "array" + ] + }, + "tickprefix": { + "description": "Sets a tick label prefix.", + "dflt": "", + "editType": "colorbars", + "valType": "string" + }, + "ticks": { + "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.", + "dflt": "", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "outside", + "inside", + "" + ] + }, + "ticksuffix": { + "description": "Sets a tick label suffix.", + "dflt": "", + "editType": "colorbars", + "valType": "string" + }, + "ticktext": { + "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", + "editType": "colorbars", + "valType": "data_array" + }, + "ticktextsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", + "editType": "none", + "valType": "string" + }, + "tickvals": { + "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", + "editType": "colorbars", + "valType": "data_array" + }, + "tickvalssrc": { + "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", + "editType": "none", + "valType": "string" + }, + "tickwidth": { + "description": "Sets the tick width (in px).", + "dflt": 1, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "title": { + "editType": "colorbars", + "font": { + "color": { + "editType": "colorbars", + "valType": "color" + }, + "description": "Sets this color bar's title font.", + "editType": "colorbars", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "colorbars", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "colorbars", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "colorbars", + "valType": "string" + }, + "size": { + "editType": "colorbars", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "colorbars", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "role": "object", + "side": { + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "right", + "top", + "bottom" + ] + }, + "text": { + "description": "Sets the title of the color bar.", + "editType": "colorbars", + "valType": "string" + } + }, + "x": { + "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.", + "editType": "colorbars", + "valType": "number" + }, + "xanchor": { + "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "left", + "center", + "right" + ] + }, + "xpad": { + "description": "Sets the amount of padding (in px) along the x direction.", + "dflt": 10, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "xref": { + "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.", + "dflt": "paper", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "container", + "paper" + ] + }, + "y": { + "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.", + "editType": "colorbars", + "valType": "number" + }, + "yanchor": { + "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "top", + "middle", + "bottom" + ] + }, + "ypad": { + "description": "Sets the amount of padding (in px) along the y direction.", + "dflt": 10, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "yref": { + "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.", + "dflt": "paper", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "container", + "paper" + ] + } + }, + "colorscale": { + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "autocolorscale": false + }, + "valType": "colorscale" + }, + "csrc": { + "description": "Sets the source reference on Chart Studio Cloud for `c`.", + "editType": "none", + "valType": "string" + }, + "customdata": { + "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements", + "editType": "calc", + "valType": "data_array" + }, + "customdatasrc": { + "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", + "editType": "none", + "valType": "string" + }, + "hoverdistance": { + "description": "Maximum distance (in pixels) to look for nearby arrows on hover.", + "dflt": 20, + "editType": "calc", + "min": -1, + "valType": "number" + }, + "hoverinfo": { + "arrayOk": true, + "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.", + "dflt": "all", + "editType": "none", + "extras": [ + "all", + "none", + "skip" + ], + "flags": [ + "x", + "y", + "u", + "v", + "text", + "name" + ], + "valType": "flaglist" + }, + "hoverinfosrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", + "editType": "none", + "valType": "string" + }, + "hoverlabel": { + "align": { + "arrayOk": true, + "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines", + "dflt": "auto", + "editType": "none", + "valType": "enumerated", + "values": [ + "left", + "right", + "auto" + ] + }, + "alignsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `align`.", + "editType": "none", + "valType": "string" + }, + "bgcolor": { + "arrayOk": true, + "description": "Sets the background color of the hover labels for this trace", + "editType": "none", + "valType": "color" + }, + "bgcolorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", + "editType": "none", + "valType": "string" + }, + "bordercolor": { + "arrayOk": true, + "description": "Sets the border color of the hover labels for this trace.", + "editType": "none", + "valType": "color" + }, + "bordercolorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", + "editType": "none", + "valType": "string" + }, + "editType": "none", + "font": { + "color": { + "arrayOk": true, + "editType": "none", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "description": "Sets the font used in hover labels.", + "editType": "none", + "family": { + "arrayOk": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "none", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "familysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `family`.", + "editType": "none", + "valType": "string" + }, + "lineposition": { + "arrayOk": true, + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "none", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "linepositionsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", + "editType": "none", + "valType": "string" + }, + "role": "object", + "shadow": { + "arrayOk": true, + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "none", + "valType": "string" + }, + "shadowsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", + "editType": "none", + "valType": "string" + }, + "size": { + "arrayOk": true, + "editType": "none", + "min": 1, + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "style": { + "arrayOk": true, + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "none", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "stylesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `style`.", + "editType": "none", + "valType": "string" + }, + "textcase": { + "arrayOk": true, + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "none", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "textcasesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", + "editType": "none", + "valType": "string" + }, + "variant": { + "arrayOk": true, + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "none", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "variantsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `variant`.", + "editType": "none", + "valType": "string" + }, + "weight": { + "arrayOk": true, + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "none", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + }, + "weightsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `weight`.", + "editType": "none", + "valType": "string" + } + }, + "namelength": { + "arrayOk": true, + "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.", + "dflt": 15, + "editType": "none", + "min": -1, + "valType": "integer" + }, + "namelengthsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", + "editType": "none", + "valType": "string" + }, + "role": "object", + "showarrow": { + "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", + "dflt": true, + "editType": "none", + "valType": "boolean" + } + }, + "hovertemplate": { + "arrayOk": true, + "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `x`, `y`, `u`, `v`, `text` and `name`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``.", + "dflt": "", + "editType": "none", + "valType": "string" + }, + "hovertemplatesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", + "editType": "none", + "valType": "string" + }, + "ids": { + "anim": true, + "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", + "editType": "calc", + "valType": "data_array" + }, + "idssrc": { + "description": "Sets the source reference on Chart Studio Cloud for `ids`.", + "editType": "none", + "valType": "string" + }, + "legend": { + "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", + "dflt": "legend", + "editType": "style", + "valType": "subplotid" + }, + "legendgroup": { + "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.", + "dflt": "", + "editType": "style", + "valType": "string" + }, + "legendgrouptitle": { + "editType": "style", + "font": { + "color": { + "editType": "style", + "valType": "color" + }, + "description": "Sets this legend group's title font.", + "editType": "style", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "style", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "style", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "style", + "valType": "string" + }, + "size": { + "editType": "style", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "style", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "style", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "style", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "style", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "role": "object", + "text": { + "description": "Sets the title of the legend group.", + "dflt": "", + "editType": "style", + "valType": "string" + } + }, + "legendrank": { + "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.", + "dflt": 1000, + "editType": "style", + "valType": "number" + }, + "legendwidth": { + "description": "Sets the width (in px or fraction) of the legend for this trace.", + "editType": "style", + "min": 0, + "valType": "number" + }, + "line": { + "color": { + "description": "Sets the color of the arrow lines.", + "dflt": "#000", + "editType": "style", + "valType": "color" + }, + "dash": { + "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", + "dflt": "solid", + "editType": "style", + "valType": "string", + "values": [ + "solid", + "dot", + "dash", + "longdash", + "dashdot", + "longdashdot" + ] + }, + "editType": "style", + "role": "object", + "shape": { + "description": "Determines the line shape.", + "dflt": "linear", + "editType": "plot", + "valType": "enumerated", + "values": [ + "linear", + "spline", + "hv", + "vh", + "hvh", + "vhv" + ] + }, + "simplify": { + "description": "Simplifies lines by removing nearly-overlapping points.", + "dflt": true, + "editType": "plot", + "valType": "boolean" + }, + "smoothing": { + "description": "Has an effect only if `shape` is set to *spline*. Sets the amount of smoothing.", + "dflt": 1, + "editType": "plot", + "max": 1.3, + "min": 0, + "valType": "number" + }, + "width": { + "description": "Sets the width (in px) of the arrow lines.", + "dflt": 1, + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "meta": { + "arrayOk": true, + "description": "Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index.", + "editType": "plot", + "valType": "any" + }, + "metasrc": { + "description": "Sets the source reference on Chart Studio Cloud for `meta`.", + "editType": "none", + "valType": "string" + }, + "name": { + "description": "Sets the trace name. The trace name appears as the legend item and on hover.", + "editType": "style", + "valType": "string" + }, + "opacity": { + "description": "Sets the opacity of the trace.", + "dflt": 1, + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "reversescale": { + "description": "Reverses the color mapping if true. If true, `cmin` will correspond to the last color in the array and `cmax` will correspond to the first color.", + "dflt": false, + "editType": "plot", + "valType": "boolean" + }, + "selected": { + "editType": "style", + "line": { + "color": { + "description": "Sets the line color of selected points.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "role": "object", + "width": { + "description": "Sets the line width of selected points.", + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "role": "object", + "textfont": { + "color": { + "description": "Sets the text font color of selected points, applied only when a selection exists.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "role": "object" + } + }, + "selectedpoints": { + "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.", + "editType": "calc", + "valType": "any" + }, + "showlegend": { + "description": "Determines whether or not an item corresponding to this trace is shown in the legend.", + "dflt": true, + "editType": "style", + "valType": "boolean" + }, + "showscale": { + "description": "Determines whether or not a colorbar is displayed for this trace.", + "dflt": true, + "editType": "calc", + "valType": "boolean" + }, + "sizemode": { + "description": "Determines whether `sizeref` is set as a *scaled* (unitless) scalar (normalized by the max u/v norm in the vector field), as an *absolute* value (in the same units as the vector field), or *raw* to use the raw vector lengths.", + "dflt": "scaled", + "editType": "calc", + "valType": "enumerated", + "values": [ + "scaled", + "absolute", + "raw" + ] + }, + "sizeref": { + "description": "Adjusts the arrow size scaling. The arrow length is determined by the vector norm multiplied by `sizeref`, optionally normalized when `sizemode` is *scaled*.", + "editType": "calc", + "min": 0, + "valType": "number" + }, + "stream": { + "editType": "calc", + "maxpoints": { + "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", + "dflt": 500, + "editType": "calc", + "max": 10000, + "min": 0, + "valType": "number" + }, + "role": "object", + "token": { + "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", + "editType": "calc", + "noBlank": true, + "strict": true, + "valType": "string" + } + }, + "text": { + "anim": true, + "description": "Sets text elements associated with each (x,y) pair.", + "editType": "calc", + "valType": "data_array" + }, + "textfont": { + "color": { + "arrayOk": true, + "editType": "style", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "description": "Sets the text font.", + "editType": "calc", + "family": { + "arrayOk": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "calc", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "familysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `family`.", + "editType": "none", + "valType": "string" + }, + "lineposition": { + "arrayOk": true, + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "calc", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "linepositionsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", + "editType": "none", + "valType": "string" + }, + "role": "object", + "shadow": { + "arrayOk": true, + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "calc", + "valType": "string" + }, + "shadowsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", + "editType": "none", + "valType": "string" + }, + "size": { + "arrayOk": true, + "editType": "calc", + "min": 1, + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "style": { + "arrayOk": true, + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "stylesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `style`.", + "editType": "none", + "valType": "string" + }, + "textcase": { + "arrayOk": true, + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "textcasesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", + "editType": "none", + "valType": "string" + }, + "variant": { + "arrayOk": true, + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "variantsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `variant`.", + "editType": "none", + "valType": "string" + }, + "weight": { + "arrayOk": true, + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "calc", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + }, + "weightsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `weight`.", + "editType": "none", + "valType": "string" + } + }, + "textposition": { + "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.", + "dflt": "middle center", + "editType": "calc", + "valType": "enumerated", + "values": [ + "top left", + "top center", + "top right", + "middle left", + "middle center", + "middle right", + "bottom left", + "bottom center", + "bottom right" + ] + }, + "textsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `text`.", + "editType": "none", + "valType": "string" + }, + "type": "quiver", + "u": { + "anim": true, + "description": "Sets the x components of the arrow vectors.", + "editType": "calc", + "valType": "data_array" + }, + "uid": { + "anim": true, + "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", + "editType": "plot", + "valType": "string" + }, + "uirevision": { + "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves.", + "editType": "none", + "valType": "any" + }, + "unselected": { + "editType": "style", + "line": { + "color": { + "description": "Sets the line color of unselected points.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "role": "object", + "width": { + "description": "Sets the line width of unselected points.", + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "role": "object", + "textfont": { + "color": { + "description": "Sets the text font color of unselected points, applied only when a selection exists.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "role": "object" + } + }, + "usrc": { + "description": "Sets the source reference on Chart Studio Cloud for `u`.", + "editType": "none", + "valType": "string" + }, + "v": { + "anim": true, + "description": "Sets the y components of the arrow vectors.", + "editType": "calc", + "valType": "data_array" + }, + "visible": { + "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).", + "dflt": true, + "editType": "calc", + "valType": "enumerated", + "values": [ + true, + false, + "legendonly" + ] + }, + "vsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `v`.", + "editType": "none", + "valType": "string" + }, + "x": { + "anim": true, + "description": "Sets the x coordinates of the arrow locations.", + "editType": "calc+clearAxisTypes", + "valType": "data_array" + }, + "xaxis": { + "description": "Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on.", + "dflt": "x", + "editType": "calc+clearAxisTypes", + "valType": "subplotid" + }, + "xsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `x`.", + "editType": "none", + "valType": "string" + }, + "y": { + "anim": true, + "description": "Sets the y coordinates of the arrow locations.", + "editType": "calc+clearAxisTypes", + "valType": "data_array" + }, + "yaxis": { + "description": "Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on.", + "dflt": "y", + "editType": "calc+clearAxisTypes", + "valType": "subplotid" + }, + "ysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `y`.", + "editType": "none", + "valType": "string" + } + }, + "categories": [ + "cartesian", + "svg", + "showLegend", + "scatter-like", + "zoomScale" + ], + "meta": { + "description": "The quiver trace type visualizes vector fields using arrows. Specify a vector field using 4 1D arrays: 2 position arrays `x`, `y` and 2 vector component arrays `u`, `v`. The arrows are drawn exactly at the positions given by `x` and `y`. Arrow length and direction are determined by `u` and `v` components." + }, + "type": "quiver" + }, "sankey": { "animatable": false, "attributes": { From 100bd88d81aa237e28e522c28635298a26399782 Mon Sep 17 00:00:00 2001 From: John Degner Date: Wed, 22 Oct 2025 08:43:35 -0700 Subject: [PATCH 189/241] Ensure no-gl-jasmine tests pass --- src/traces/scatterquiver/calc.js | 76 +++++++++++++--------------- src/traces/scatterquiver/defaults.js | 18 +++++-- src/traces/scatterquiver/hover.js | 38 +++++++------- src/traces/scatterquiver/plot.js | 62 ++++++++++++++++------- 4 files changed, 111 insertions(+), 83 deletions(-) diff --git a/src/traces/scatterquiver/calc.js b/src/traces/scatterquiver/calc.js index f502d19bc4c..28e11e95116 100644 --- a/src/traces/scatterquiver/calc.js +++ b/src/traces/scatterquiver/calc.js @@ -1,55 +1,47 @@ 'use strict'; var Lib = require('../../lib'); +var Axes = require('../../plots/cartesian/axes'); +var isNumeric = require('fast-isnumeric'); +var BADNUM = require('../../constants/numerical').BADNUM; +var scatterCalc = require('../scatter/calc'); /** * Main calculation function for scatterquiver trace * Creates calcdata with arrow path data for each vector */ module.exports = function calc(gd, trace) { - var x = trace.x; - var y = trace.y; - var u = trace.u; - var v = trace.v; - var scale = trace.scale; - var arrowScale = trace.arrow_scale; - var angle = trace.angle; - var scaleRatio = trace.scaleratio; - - // Create calcdata - one complete arrow per entry - var calcdata = []; - var len = x.length; - + // Map x/y through axes so category/date values become numeric calcdata + var xa = trace._xA = Axes.getFromId(gd, trace.xaxis || 'x', 'x'); + var ya = trace._yA = Axes.getFromId(gd, trace.yaxis || 'y', 'y'); + + var xVals = xa.makeCalcdata(trace, 'x'); + var yVals = ya.makeCalcdata(trace, 'y'); + + // u/v are read in plot using the original trace arrays via cdi.i + + var len = Math.min(xVals.length, yVals.length); + trace._length = len; + var cd = new Array(len); + for(var i = 0; i < len; i++) { - // Calculate arrow components - var dx = u[i] * scale * (scaleRatio || 1); - var dy = v[i] * scale; - var barbLen = Math.sqrt(dx * dx / (scaleRatio || 1) + dy * dy); - var arrowLen = barbLen * arrowScale; - var barbAng = Math.atan2(dy, dx / (scaleRatio || 1)); - - var ang1 = barbAng + angle; - var ang2 = barbAng - angle; - - var endX = x[i] + dx; - var endY = y[i] + dy; - - var point1X = endX - arrowLen * Math.cos(ang1) * (scaleRatio || 1); - var point1Y = endY - arrowLen * Math.sin(ang1); - var point2X = endX - arrowLen * Math.cos(ang2) * (scaleRatio || 1); - var point2Y = endY - arrowLen * Math.sin(ang2); - - // Create complete arrow as one path: shaft + arrow head - var arrowPath = [ - { x: x[i], y: y[i], i: i }, // Start point - { x: endX, y: endY, i: i }, // End of shaft - { x: point1X, y: point1Y, i: i }, // Arrow head point 1 - { x: endX, y: endY, i: i }, // Back to end - { x: point2X, y: point2Y, i: i } // Arrow head point 2 - ]; - - calcdata.push(arrowPath); + var cdi = cd[i] = { i: i }; + var xValid = isNumeric(xVals[i]); + var yValid = isNumeric(yVals[i]); + + if(xValid && yValid) { + cdi.x = xVals[i]; + cdi.y = yVals[i]; + } else { + cdi.x = BADNUM; + cdi.y = BADNUM; + } + + // No additional props; keep minimal to avoid collisions with generic fields (e.g. `v`) } - return calcdata; + // Ensure axes are expanded and categories registered like scatter traces do + scatterCalc.calcAxisExpansion(gd, trace, xa, ya, xVals, yVals); + + return cd; }; \ No newline at end of file diff --git a/src/traces/scatterquiver/defaults.js b/src/traces/scatterquiver/defaults.js index 651e6dd2775..1992c520baf 100644 --- a/src/traces/scatterquiver/defaults.js +++ b/src/traces/scatterquiver/defaults.js @@ -17,16 +17,24 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout // Simple validation - check if we have the required arrays if(!x || !Array.isArray(x) || x.length === 0 || - !y || !Array.isArray(y) || y.length === 0 || - !u || !Array.isArray(u) || u.length === 0 || - !v || !Array.isArray(v) || v.length === 0) { + !y || !Array.isArray(y) || y.length === 0) { traceOut.visible = false; return; } + // If u/v are missing, default to zeros so the trace participates in calc/category logic + var len = Math.min(x.length, y.length); + if(!Array.isArray(u) || u.length === 0) { + traceOut.u = new Array(len); + for(var i = 0; i < len; i++) traceOut.u[i] = 0; + } + if(!Array.isArray(v) || v.length === 0) { + traceOut.v = new Array(len); + for(var j = 0; j < len; j++) traceOut.v[j] = 0; + } + // Set basic properties traceOut.type = 'scatterquiver'; - traceOut.visible = true; // Set default values using coerce coerce('scale', 0.1); @@ -64,5 +72,5 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout coerce('unselected.textfont.color'); // Set the data length - traceOut._length = x.length; + traceOut._length = len; }; \ No newline at end of file diff --git a/src/traces/scatterquiver/hover.js b/src/traces/scatterquiver/hover.js index e5502dcbc0a..d786ea3afc3 100644 --- a/src/traces/scatterquiver/hover.js +++ b/src/traces/scatterquiver/hover.js @@ -12,47 +12,47 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode) { var xpx = xa.c2p(xval); var ypx = ya.c2p(yval); - // Find the closest arrow to the hover point + // Find the closest arrow base point to the hover point var minDistance = Infinity; var closestPoint = null; var closestIndex = -1; - // Check each arrow segment + // Each cd[i] is a calcdata point object with x/y for(var i = 0; i < cd.length; i++) { - var segment = cd[i]; - if(segment.length < 2) continue; + var cdi = cd[i]; + if(cdi.x === undefined || cdi.y === undefined) continue; + + var px = xa.c2p(cdi.x); + var py = ya.c2p(cdi.y); + + var distance = Math.sqrt((xpx - px) * (xpx - px) + (ypx - py) * (ypx - py)); - // Calculate distance to the start point of the arrow - var x1 = xa.c2p(segment[0].x); - var y1 = ya.c2p(segment[0].y); - - var distance = Math.sqrt((xpx - x1) * (xpx - x1) + (ypx - y1) * (ypx - y1)); - if(distance < minDistance) { minDistance = distance; - closestPoint = segment[0]; // Use the start point for hover data + closestPoint = cdi; closestIndex = i; } } - if(!closestPoint || minDistance > (trace.hoverdistance || 20)) return; + var maxHoverDist = pointData.distance === Infinity ? Infinity : (trace.hoverdistance || 20); + if(!closestPoint || minDistance > maxHoverDist) return; // Create hover point data with proper label values and spikeline support var hoverPoint = { x: closestPoint.x, y: closestPoint.y, - u: trace.u[closestIndex], - v: trace.v[closestIndex], - text: trace.text ? trace.text[closestIndex] : '', + u: trace.u ? trace.u[closestIndex] : undefined, + v: trace.v ? trace.v[closestIndex] : undefined, + text: Array.isArray(trace.text) ? trace.text[closestIndex] : trace.text, name: trace.name || '', trace: trace, index: closestIndex, - // Set label values for proper hover formatting + // Label values for formatting xLabelVal: closestPoint.x, yLabelVal: closestPoint.y, - uLabelVal: trace.u[closestIndex], - vLabelVal: trace.v[closestIndex], - // Add spikeline support + uLabelVal: trace.u ? trace.u[closestIndex] : undefined, + vLabelVal: trace.v ? trace.v[closestIndex] : undefined, + // Spikeline support xa: pointData.xa, ya: pointData.ya, x0: closestPoint.x, diff --git a/src/traces/scatterquiver/plot.js b/src/traces/scatterquiver/plot.js index 36a9bb4cb7e..87e2d754926 100644 --- a/src/traces/scatterquiver/plot.js +++ b/src/traces/scatterquiver/plot.js @@ -71,7 +71,7 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition Drawing.setClipUrl(lines, plotinfo.layerClipId, gd); - // Create line segments for each arrow + // Create one path per data point (arrow) var lineSegments = lines.selectAll('path.js-line') .data(cdscatter); @@ -82,26 +82,54 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition lineSegments.exit().remove(); // Update line segments - lineSegments.each(function(d) { + lineSegments.each(function(cdi) { var path = d3.select(this); - var segment = d; - - if(segment.length === 0) return; - - // Convert data coordinates to pixel coordinates - var pixelCoords = segment.map(function(point) { - return { - x: xa.c2p(point.x), - y: ya.c2p(point.y) - }; - }); - // Create SVG path from pixel coordinates - var pathData = 'M' + pixelCoords[0].x + ',' + pixelCoords[0].y; - for(var i = 1; i < pixelCoords.length; i++) { - pathData += 'L' + pixelCoords[i].x + ',' + pixelCoords[i].y; + // Skip invalid points + if(cdi.x === undefined || cdi.y === undefined) { + path.attr('d', null); + return; } + // Compute arrow in data space + var scale = trace.scale || 1; + var scaleRatio = trace.scaleratio || 1; + var arrowScale = trace.arrow_scale || 0.2; + var angle = trace.angle || Math.PI / 12; // small default + + var u = (trace.u && trace.u[cdi.i]) || 0; + var v = (trace.v && trace.v[cdi.i]) || 0; + + var dx = u * scale * scaleRatio; + var dy = v * scale; + var barbLen = Math.sqrt((dx * dx) / scaleRatio + dy * dy); + var arrowLen = barbLen * arrowScale; + var barbAng = Math.atan2(dy, dx / scaleRatio); + + var ang1 = barbAng + angle; + var ang2 = barbAng - angle; + + var x0 = cdi.x; + var y0 = cdi.y; + var x1 = x0 + dx; + var y1 = y0 + dy; + + var xh1 = x1 - arrowLen * Math.cos(ang1) * scaleRatio; + var yh1 = y1 - arrowLen * Math.sin(ang1); + var xh2 = x1 - arrowLen * Math.cos(ang2) * scaleRatio; + var yh2 = y1 - arrowLen * Math.sin(ang2); + + // Convert to pixels + var p0x = xa.c2p(x0); + var p0y = ya.c2p(y0); + var p1x = xa.c2p(x1); + var p1y = ya.c2p(y1); + var ph1x = xa.c2p(xh1); + var ph1y = ya.c2p(yh1); + var ph2x = xa.c2p(xh2); + var ph2y = ya.c2p(yh2); + + var pathData = 'M' + p0x + ',' + p0y + 'L' + p1x + ',' + p1y + 'L' + ph1x + ',' + ph1y + 'L' + p1x + ',' + p1y + 'L' + ph2x + ',' + ph2y; path.attr('d', pathData); }); From 3f24d4a9d453061e1e23558da93c608b94a6f24a Mon Sep 17 00:00:00 2001 From: John Degner Date: Sun, 2 Nov 2025 09:59:30 -0800 Subject: [PATCH 190/241] Name plot type quiver not scatterquiver --- lib/index-strict.js | 2 +- lib/index.js | 2 +- lib/quiver.js | 5 + lib/scatterquiver.js | 3 - .../{scatterquiver => quiver}/attributes.js | 4 +- src/traces/{scatterquiver => quiver}/calc.js | 8 +- .../{scatterquiver => quiver}/defaults.js | 6 +- .../{scatterquiver => quiver}/event_data.js | 2 + src/traces/{scatterquiver => quiver}/hover.js | 4 +- src/traces/{scatterquiver => quiver}/index.js | 6 +- src/traces/{scatterquiver => quiver}/plot.js | 6 +- .../select_points.js | 2 + src/traces/{scatterquiver => quiver}/style.js | 2 + test/plot-schema.json | 12055 ++++++++++++++++ 14 files changed, 12090 insertions(+), 17 deletions(-) create mode 100644 lib/quiver.js delete mode 100644 lib/scatterquiver.js rename src/traces/{scatterquiver => quiver}/attributes.js (99%) rename src/traces/{scatterquiver => quiver}/calc.js (89%) rename src/traces/{scatterquiver => quiver}/defaults.js (98%) rename src/traces/{scatterquiver => quiver}/event_data.js (99%) rename src/traces/{scatterquiver => quiver}/hover.js (99%) rename src/traces/{scatterquiver => quiver}/index.js (89%) rename src/traces/{scatterquiver => quiver}/plot.js (98%) rename src/traces/{scatterquiver => quiver}/select_points.js (99%) rename src/traces/{scatterquiver => quiver}/style.js (99%) diff --git a/lib/index-strict.js b/lib/index-strict.js index 8e332c3b56d..c5d1c092056 100644 --- a/lib/index-strict.js +++ b/lib/index-strict.js @@ -52,7 +52,7 @@ Plotly.register([ require('../src/traces/scatterpolargl/strict'), require('./barpolar'), require('./scattersmith'), - require('./scatterquiver'), + require('./quiver'), // components require('./calendars'), diff --git a/lib/index.js b/lib/index.js index d234cfca3ea..73f4f0a29b8 100644 --- a/lib/index.js +++ b/lib/index.js @@ -52,7 +52,7 @@ Plotly.register([ require('./scatterpolargl'), require('./barpolar'), require('./scattersmith'), - require('./scatterquiver'), + require('./quiver'), // components require('./calendars'), diff --git a/lib/quiver.js b/lib/quiver.js new file mode 100644 index 00000000000..0368a75e500 --- /dev/null +++ b/lib/quiver.js @@ -0,0 +1,5 @@ +'use strict'; + +module.exports = require('../src/traces/quiver'); + + diff --git a/lib/scatterquiver.js b/lib/scatterquiver.js deleted file mode 100644 index f3d08677cc2..00000000000 --- a/lib/scatterquiver.js +++ /dev/null @@ -1,3 +0,0 @@ -'use strict'; - -module.exports = require('../src/traces/scatterquiver'); diff --git a/src/traces/scatterquiver/attributes.js b/src/traces/quiver/attributes.js similarity index 99% rename from src/traces/scatterquiver/attributes.js rename to src/traces/quiver/attributes.js index 6a72329cee5..5586bc37783 100644 --- a/src/traces/scatterquiver/attributes.js +++ b/src/traces/quiver/attributes.js @@ -204,4 +204,6 @@ attrs.hovertemplate = extendFlat({}, hovertemplateAttrs({}, { keys: ['x', 'y', 'u', 'v', 'text', 'name'] })); -module.exports = attrs; \ No newline at end of file +module.exports = attrs; + + diff --git a/src/traces/scatterquiver/calc.js b/src/traces/quiver/calc.js similarity index 89% rename from src/traces/scatterquiver/calc.js rename to src/traces/quiver/calc.js index 28e11e95116..1fd8877bef7 100644 --- a/src/traces/scatterquiver/calc.js +++ b/src/traces/quiver/calc.js @@ -7,7 +7,7 @@ var BADNUM = require('../../constants/numerical').BADNUM; var scatterCalc = require('../scatter/calc'); /** - * Main calculation function for scatterquiver trace + * Main calculation function for quiver trace * Creates calcdata with arrow path data for each vector */ module.exports = function calc(gd, trace) { @@ -36,12 +36,12 @@ module.exports = function calc(gd, trace) { cdi.x = BADNUM; cdi.y = BADNUM; } - - // No additional props; keep minimal to avoid collisions with generic fields (e.g. `v`) } // Ensure axes are expanded and categories registered like scatter traces do scatterCalc.calcAxisExpansion(gd, trace, xa, ya, xVals, yVals); return cd; -}; \ No newline at end of file +}; + + diff --git a/src/traces/scatterquiver/defaults.js b/src/traces/quiver/defaults.js similarity index 98% rename from src/traces/scatterquiver/defaults.js rename to src/traces/quiver/defaults.js index 1992c520baf..2584e758286 100644 --- a/src/traces/scatterquiver/defaults.js +++ b/src/traces/quiver/defaults.js @@ -34,7 +34,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout } // Set basic properties - traceOut.type = 'scatterquiver'; + traceOut.type = 'quiver'; // Set default values using coerce coerce('scale', 0.1); @@ -73,4 +73,6 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout // Set the data length traceOut._length = len; -}; \ No newline at end of file +}; + + diff --git a/src/traces/scatterquiver/event_data.js b/src/traces/quiver/event_data.js similarity index 99% rename from src/traces/scatterquiver/event_data.js rename to src/traces/quiver/event_data.js index faecde95abb..c744a23a152 100644 --- a/src/traces/scatterquiver/event_data.js +++ b/src/traces/quiver/event_data.js @@ -8,3 +8,5 @@ module.exports = function eventData(out, pt, trace, cd, pointNumber) { out.pointNumber = pointNumber; out.trace = trace; }; + + diff --git a/src/traces/scatterquiver/hover.js b/src/traces/quiver/hover.js similarity index 99% rename from src/traces/scatterquiver/hover.js rename to src/traces/quiver/hover.js index d786ea3afc3..d9a3d4573fb 100644 --- a/src/traces/scatterquiver/hover.js +++ b/src/traces/quiver/hover.js @@ -72,4 +72,6 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode) { } return [hoverPoint]; -}; \ No newline at end of file +}; + + diff --git a/src/traces/scatterquiver/index.js b/src/traces/quiver/index.js similarity index 89% rename from src/traces/scatterquiver/index.js rename to src/traces/quiver/index.js index b476090cc53..82850f0840b 100644 --- a/src/traces/scatterquiver/index.js +++ b/src/traces/quiver/index.js @@ -2,7 +2,7 @@ module.exports = { moduleType: 'trace', - name: 'scatterquiver', + name: 'quiver', basePlotModule: require('../../plots/cartesian'), categories: [ 'cartesian', 'svg', 'showLegend', 'scatter-like', 'zoomScale' @@ -21,7 +21,7 @@ module.exports = { meta: { description: [ - 'The scatterquiver trace type visualizes vector fields using arrows.', + 'The quiver trace type visualizes vector fields using arrows.', 'Specify a vector field using 4 1D arrays:', '2 position arrays `x`, `y` and 2 vector component arrays `u`, `v`.', 'The arrows are drawn exactly at the positions given by `x` and `y`.', @@ -29,3 +29,5 @@ module.exports = { ].join(' ') } }; + + diff --git a/src/traces/scatterquiver/plot.js b/src/traces/quiver/plot.js similarity index 98% rename from src/traces/scatterquiver/plot.js rename to src/traces/quiver/plot.js index 87e2d754926..c1f67b156df 100644 --- a/src/traces/scatterquiver/plot.js +++ b/src/traces/quiver/plot.js @@ -20,7 +20,7 @@ module.exports = function plot(gd, plotinfo, cdscatter, scatterLayer, transition // Append new traces: join.enter().append('g') .attr('class', function(d) { - return 'trace scatterquiver trace' + d[0].trace.uid; + return 'trace quiver trace' + d[0].trace.uid; }) .style('stroke-miterlimit', 2); join.order(); @@ -145,4 +145,6 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition lineSegments.transition(transition) .style('opacity', 1); } -} \ No newline at end of file +} + + diff --git a/src/traces/scatterquiver/select_points.js b/src/traces/quiver/select_points.js similarity index 99% rename from src/traces/scatterquiver/select_points.js rename to src/traces/quiver/select_points.js index e169b1b9517..d2dfa2d1dab 100644 --- a/src/traces/scatterquiver/select_points.js +++ b/src/traces/quiver/select_points.js @@ -37,3 +37,5 @@ module.exports = function selectPoints(searchInfo, selectionTester) { return selection; }; + + diff --git a/src/traces/scatterquiver/style.js b/src/traces/quiver/style.js similarity index 99% rename from src/traces/scatterquiver/style.js rename to src/traces/quiver/style.js index deb72e21718..30da22034c9 100644 --- a/src/traces/scatterquiver/style.js +++ b/src/traces/quiver/style.js @@ -14,3 +14,5 @@ module.exports = function style(gd, calcTrace) { s.selectAll('path.js-line') .call(Drawing.lineGroupStyle, trace.line || {}); }; + + diff --git a/test/plot-schema.json b/test/plot-schema.json index c869e669c43..79d1efd658a 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -15067,6 +15067,12061 @@ "valType": "string" } }, +<<<<<<< HEAD +======= + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "calc", + "valType": "string" + }, + "size": { + "editType": "calc", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "calc", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "role": "object", + "side": { + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "editType": "calc", + "valType": "enumerated", + "values": [ + "right", + "top", + "bottom" + ] + }, + "text": { + "description": "Sets the title of the color bar.", + "editType": "calc", + "valType": "string" + } + }, + "x": { + "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.", + "editType": "calc", + "valType": "number" + }, + "xanchor": { + "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.", + "editType": "calc", + "valType": "enumerated", + "values": [ + "left", + "center", + "right" + ] + }, + "xpad": { + "description": "Sets the amount of padding (in px) along the x direction.", + "dflt": 10, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "xref": { + "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.", + "dflt": "paper", + "editType": "calc", + "valType": "enumerated", + "values": [ + "container", + "paper" + ] + }, + "y": { + "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.", + "editType": "calc", + "valType": "number" + }, + "yanchor": { + "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.", + "editType": "calc", + "valType": "enumerated", + "values": [ + "top", + "middle", + "bottom" + ] + }, + "ypad": { + "description": "Sets the amount of padding (in px) along the y direction.", + "dflt": 10, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "yref": { + "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.", + "dflt": "paper", + "editType": "calc", + "valType": "enumerated", + "values": [ + "container", + "paper" + ] + } + }, + "colorscale": { + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "autocolorscale": false + }, + "valType": "colorscale" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "editType": "calc", + "opacity": { + "arrayOk": true, + "description": "Sets the marker opacity.", + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + "opacitysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", + "editType": "none", + "valType": "string" + }, + "reversescale": { + "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "role": "object", + "showscale": { + "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "size": { + "arrayOk": true, + "description": "Sets the marker size (in px).", + "dflt": 6, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "sizemin": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points.", + "dflt": 0, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "sizemode": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels.", + "dflt": "diameter", + "editType": "calc", + "valType": "enumerated", + "values": [ + "diameter", + "area" + ] + }, + "sizeref": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`.", + "dflt": 1, + "editType": "calc", + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "symbol": { + "arrayOk": true, + "description": "Sets the marker symbol. Full list: https://www.mapbox.com/maki-icons/ Note that the array `marker.color` and `marker.size` are only available for *circle* symbols.", + "dflt": "circle", + "editType": "calc", + "valType": "string" + }, + "symbolsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", + "editType": "none", + "valType": "string" + } + }, + "meta": { + "arrayOk": true, + "description": "Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index.", + "editType": "plot", + "valType": "any" + }, + "metasrc": { + "description": "Sets the source reference on Chart Studio Cloud for `meta`.", + "editType": "none", + "valType": "string" + }, + "mode": { + "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover.", + "dflt": "markers", + "editType": "calc", + "extras": [ + "none" + ], + "flags": [ + "lines", + "markers", + "text" + ], + "valType": "flaglist" + }, + "name": { + "description": "Sets the trace name. The trace name appears as the legend item and on hover.", + "editType": "style", + "valType": "string" + }, + "opacity": { + "description": "Sets the opacity of the trace.", + "dflt": 1, + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "selected": { + "editType": "calc", + "marker": { + "color": { + "description": "Sets the marker color of selected points.", + "editType": "calc", + "valType": "color" + }, + "editType": "calc", + "opacity": { + "description": "Sets the marker opacity of selected points.", + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + "role": "object", + "size": { + "description": "Sets the marker size of selected points.", + "editType": "calc", + "min": 0, + "valType": "number" + } + }, + "role": "object" + }, + "selectedpoints": { + "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.", + "editType": "calc", + "valType": "any" + }, + "showlegend": { + "description": "Determines whether or not an item corresponding to this trace is shown in the legend.", + "dflt": true, + "editType": "style", + "valType": "boolean" + }, + "stream": { + "editType": "calc", + "maxpoints": { + "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", + "dflt": 500, + "editType": "calc", + "max": 10000, + "min": 0, + "valType": "number" + }, + "role": "object", + "token": { + "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", + "editType": "calc", + "noBlank": true, + "strict": true, + "valType": "string" + } + }, + "subplot": { + "description": "Sets a reference between this trace's data coordinates and a map subplot. If *map* (the default value), the data refer to `layout.map`. If *map2*, the data refer to `layout.map2`, and so on.", + "dflt": "map", + "editType": "calc", + "valType": "subplotid" + }, + "text": { + "arrayOk": true, + "description": "Sets text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", + "dflt": "", + "editType": "calc", + "valType": "string" + }, + "textfont": { + "color": { + "editType": "calc", + "valType": "color" + }, + "description": "Sets the icon text font (color=map.layer.paint.text-color, size=map.layer.layout.text-size). Has an effect only when `type` is set to *symbol*.", + "editType": "calc", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "dflt": "Open Sans Regular, Arial Unicode MS Regular", + "editType": "calc", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "role": "object", + "size": { + "editType": "calc", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "calc", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "textposition": { + "arrayOk": false, + "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.", + "dflt": "middle center", + "editType": "calc", + "valType": "enumerated", + "values": [ + "top left", + "top center", + "top right", + "middle left", + "middle center", + "middle right", + "bottom left", + "bottom center", + "bottom right" + ] + }, + "textsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `text`.", + "editType": "none", + "valType": "string" + }, + "texttemplate": { + "arrayOk": true, + "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `lat`, `lon` and `text`.", + "dflt": "", + "editType": "calc", + "valType": "string" + }, + "texttemplatefallback": { + "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", + "dflt": "-", + "editType": "calc", + "valType": "any" + }, + "texttemplatesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", + "editType": "none", + "valType": "string" + }, + "type": "scattermap", + "uid": { + "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", + "editType": "plot", + "valType": "string" + }, + "uirevision": { + "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves.", + "editType": "none", + "valType": "any" + }, + "unselected": { + "editType": "calc", + "marker": { + "color": { + "description": "Sets the marker color of unselected points, applied only when a selection exists.", + "editType": "calc", + "valType": "color" + }, + "editType": "calc", + "opacity": { + "description": "Sets the marker opacity of unselected points, applied only when a selection exists.", + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + "role": "object", + "size": { + "description": "Sets the marker size of unselected points, applied only when a selection exists.", + "editType": "calc", + "min": 0, + "valType": "number" + } + }, + "role": "object" + }, + "visible": { + "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).", + "dflt": true, + "editType": "calc", + "valType": "enumerated", + "values": [ + true, + false, + "legendonly" + ] + } + }, + "categories": [ + "map", + "gl", + "symbols", + "showLegend", + "scatter-like" + ], + "meta": { + "description": "The data visualized as scatter point, lines or marker symbols on a MapLibre GL geographic map is provided by longitude/latitude pairs in `lon` and `lat`.", + "hrName": "scatter_map" + }, + "type": "scattermap" + }, + "scattermapbox": { + "animatable": false, + "attributes": { + "below": { + "description": "Determines if this scattermapbox trace's layers are to be inserted before the layer with the specified ID. By default, scattermapbox layers are inserted above all the base layers. To place the scattermapbox layers above every other layer, set `below` to *''*.", + "editType": "calc", + "valType": "string" + }, + "cluster": { + "color": { + "arrayOk": true, + "description": "Sets the color for each cluster step.", + "editType": "calc", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "editType": "calc", + "enabled": { + "description": "Determines whether clustering is enabled or disabled.", + "editType": "calc", + "valType": "boolean" + }, + "maxzoom": { + "description": "Sets the maximum zoom level. At zoom levels equal to or greater than this, points will never be clustered.", + "dflt": 24, + "editType": "calc", + "max": 24, + "min": 0, + "valType": "number" + }, + "opacity": { + "arrayOk": true, + "description": "Sets the marker opacity.", + "dflt": 1, + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + "opacitysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", + "editType": "none", + "valType": "string" + }, + "role": "object", + "size": { + "arrayOk": true, + "description": "Sets the size for each cluster step.", + "dflt": 20, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "step": { + "arrayOk": true, + "description": "Sets how many points it takes to create a cluster or advance to the next cluster step. Use this in conjunction with arrays for `size` and / or `color`. If an integer, steps start at multiples of this number. If an array, each step extends from the given value until one less than the next value.", + "dflt": -1, + "editType": "calc", + "min": -1, + "valType": "number" + }, + "stepsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `step`.", + "editType": "none", + "valType": "string" + } + }, + "connectgaps": { + "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "customdata": { + "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements", + "editType": "calc", + "valType": "data_array" + }, + "customdatasrc": { + "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", + "editType": "none", + "valType": "string" + }, + "fill": { + "description": "Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape.", + "dflt": "none", + "editType": "calc", + "valType": "enumerated", + "values": [ + "none", + "toself" + ] + }, + "fillcolor": { + "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available.", + "editType": "calc", + "valType": "color" + }, + "hoverinfo": { + "arrayOk": true, + "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.", + "dflt": "all", + "editType": "calc", + "extras": [ + "all", + "none", + "skip" + ], + "flags": [ + "lon", + "lat", + "text", + "name" + ], + "valType": "flaglist" + }, + "hoverinfosrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", + "editType": "none", + "valType": "string" + }, + "hoverlabel": { + "align": { + "arrayOk": true, + "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines", + "dflt": "auto", + "editType": "none", + "valType": "enumerated", + "values": [ + "left", + "right", + "auto" + ] + }, + "alignsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `align`.", + "editType": "none", + "valType": "string" + }, + "bgcolor": { + "arrayOk": true, + "description": "Sets the background color of the hover labels for this trace", + "editType": "none", + "valType": "color" + }, + "bgcolorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", + "editType": "none", + "valType": "string" + }, + "bordercolor": { + "arrayOk": true, + "description": "Sets the border color of the hover labels for this trace.", + "editType": "none", + "valType": "color" + }, + "bordercolorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", + "editType": "none", + "valType": "string" + }, + "editType": "none", + "font": { + "color": { + "arrayOk": true, + "editType": "none", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "description": "Sets the font used in hover labels.", + "editType": "none", + "family": { + "arrayOk": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "none", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "familysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `family`.", + "editType": "none", + "valType": "string" + }, + "lineposition": { + "arrayOk": true, + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "none", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "linepositionsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", + "editType": "none", + "valType": "string" + }, + "role": "object", + "shadow": { + "arrayOk": true, + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "none", + "valType": "string" + }, + "shadowsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", + "editType": "none", + "valType": "string" + }, + "size": { + "arrayOk": true, + "editType": "none", + "min": 1, + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "style": { + "arrayOk": true, + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "none", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "stylesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `style`.", + "editType": "none", + "valType": "string" + }, + "textcase": { + "arrayOk": true, + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "none", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "textcasesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", + "editType": "none", + "valType": "string" + }, + "variant": { + "arrayOk": true, + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "none", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "variantsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `variant`.", + "editType": "none", + "valType": "string" + }, + "weight": { + "arrayOk": true, + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "none", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + }, + "weightsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `weight`.", + "editType": "none", + "valType": "string" + } + }, + "namelength": { + "arrayOk": true, + "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.", + "dflt": 15, + "editType": "none", + "min": -1, + "valType": "integer" + }, + "namelengthsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", + "editType": "none", + "valType": "string" + }, + "role": "object", + "showarrow": { + "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", + "dflt": true, + "editType": "none", + "valType": "boolean" + } + }, + "hovertemplate": { + "arrayOk": true, + "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``.", + "dflt": "", + "editType": "calc", + "valType": "string" + }, + "hovertemplatefallback": { + "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", + "dflt": "-", + "editType": "calc", + "valType": "any" + }, + "hovertemplatesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", + "editType": "none", + "valType": "string" + }, + "hovertext": { + "arrayOk": true, + "description": "Sets hover text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", + "dflt": "", + "editType": "calc", + "valType": "string" + }, + "hovertextsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", + "editType": "none", + "valType": "string" + }, + "ids": { + "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", + "editType": "calc", + "valType": "data_array" + }, + "idssrc": { + "description": "Sets the source reference on Chart Studio Cloud for `ids`.", + "editType": "none", + "valType": "string" + }, + "lat": { + "description": "Sets the latitude coordinates (in degrees North).", + "editType": "calc", + "valType": "data_array" + }, + "latsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `lat`.", + "editType": "none", + "valType": "string" + }, + "legend": { + "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", + "dflt": "legend", + "editType": "style", + "valType": "subplotid" + }, + "legendgroup": { + "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.", + "dflt": "", + "editType": "style", + "valType": "string" + }, + "legendgrouptitle": { + "editType": "style", + "font": { + "color": { + "editType": "style", + "valType": "color" + }, + "description": "Sets this legend group's title font.", + "editType": "style", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "style", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "style", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "style", + "valType": "string" + }, + "size": { + "editType": "style", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "style", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "style", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "style", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "style", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "role": "object", + "text": { + "description": "Sets the title of the legend group.", + "dflt": "", + "editType": "style", + "valType": "string" + } + }, + "legendrank": { + "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.", + "dflt": 1000, + "editType": "style", + "valType": "number" + }, + "legendwidth": { + "description": "Sets the width (in px or fraction) of the legend for this trace.", + "editType": "style", + "min": 0, + "valType": "number" + }, + "line": { + "color": { + "description": "Sets the line color.", + "editType": "calc", + "valType": "color" + }, + "editType": "calc", + "role": "object", + "width": { + "description": "Sets the line width (in px).", + "dflt": 2, + "editType": "calc", + "min": 0, + "valType": "number" + } + }, + "lon": { + "description": "Sets the longitude coordinates (in degrees East).", + "editType": "calc", + "valType": "data_array" + }, + "lonsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `lon`.", + "editType": "none", + "valType": "string" + }, + "marker": { + "allowoverlap": { + "description": "Flag to draw all symbols, even if they overlap.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "angle": { + "arrayOk": true, + "description": "Sets the marker orientation from true North, in degrees clockwise. When using the *auto* default, no rotation would be applied in perspective views which is different from using a zero angle.", + "dflt": "auto", + "editType": "calc", + "valType": "number" + }, + "anglesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `angle`.", + "editType": "none", + "valType": "string" + }, + "autocolorscale": { + "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "cauto": { + "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "cmax": { + "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "cmid": { + "description": "Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`.", + "dflt": null, + "editType": "calc", + "impliedEdits": {}, + "valType": "number" + }, + "cmin": { + "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "color": { + "arrayOk": true, + "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.", + "editType": "calc", + "valType": "color" + }, + "coloraxis": { + "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.", + "dflt": null, + "editType": "calc", + "regex": "/^coloraxis([2-9]|[1-9][0-9]+)?$/", + "valType": "subplotid" + }, + "colorbar": { + "bgcolor": { + "description": "Sets the color of padded area.", + "dflt": "rgba(0,0,0,0)", + "editType": "calc", + "valType": "color" + }, + "bordercolor": { + "description": "Sets the axis line color.", + "dflt": "#444", + "editType": "calc", + "valType": "color" + }, + "borderwidth": { + "description": "Sets the width (in px) or the border enclosing this color bar.", + "dflt": 0, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "dtick": { + "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*", + "editType": "calc", + "impliedEdits": { + "tickmode": "linear" + }, + "valType": "any" + }, + "editType": "calc", + "exponentformat": { + "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from \"femto\" f (10^-15) to \"tera\" T (10^12). *SI extended* covers instead the full SI range from \"quecto\" q (10^-30) to \"quetta\" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation.", + "dflt": "B", + "editType": "calc", + "valType": "enumerated", + "values": [ + "none", + "e", + "E", + "power", + "SI", + "B", + "SI extended" + ] + }, + "labelalias": { + "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax.", + "dflt": false, + "editType": "calc", + "valType": "any" + }, + "len": { + "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.", + "dflt": 1, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "lenmode": { + "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.", + "dflt": "fraction", + "editType": "calc", + "valType": "enumerated", + "values": [ + "fraction", + "pixels" + ] + }, + "minexponent": { + "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.", + "dflt": 3, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "nticks": { + "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.", + "dflt": 0, + "editType": "calc", + "min": 0, + "valType": "integer" + }, + "orientation": { + "description": "Sets the orientation of the colorbar.", + "dflt": "v", + "editType": "calc", + "valType": "enumerated", + "values": [ + "h", + "v" + ] + }, + "outlinecolor": { + "description": "Sets the axis line color.", + "dflt": "#444", + "editType": "calc", + "valType": "color" + }, + "outlinewidth": { + "description": "Sets the width (in px) of the axis line.", + "dflt": 1, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "role": "object", + "separatethousands": { + "description": "If \"true\", even 4-digit integers are separated", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "showexponent": { + "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.", + "dflt": "all", + "editType": "calc", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "showticklabels": { + "description": "Determines whether or not the tick labels are drawn.", + "dflt": true, + "editType": "calc", + "valType": "boolean" + }, + "showtickprefix": { + "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.", + "dflt": "all", + "editType": "calc", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "showticksuffix": { + "description": "Same as `showtickprefix` but for tick suffixes.", + "dflt": "all", + "editType": "calc", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "thickness": { + "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.", + "dflt": 30, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "thicknessmode": { + "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.", + "dflt": "pixels", + "editType": "calc", + "valType": "enumerated", + "values": [ + "fraction", + "pixels" + ] + }, + "tick0": { + "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears.", + "editType": "calc", + "impliedEdits": { + "tickmode": "linear" + }, + "valType": "any" + }, + "tickangle": { + "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.", + "dflt": "auto", + "editType": "calc", + "valType": "angle" + }, + "tickcolor": { + "description": "Sets the tick color.", + "dflt": "#444", + "editType": "calc", + "valType": "color" + }, + "tickfont": { + "color": { + "editType": "calc", + "valType": "color" + }, + "description": "Sets the color bar's tick label font", + "editType": "calc", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "calc", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "calc", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "calc", + "valType": "string" + }, + "size": { + "editType": "calc", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "calc", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "tickformat": { + "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*", + "dflt": "", + "editType": "calc", + "valType": "string" + }, + "tickformatstops": { + "items": { + "tickformatstop": { + "dtickrange": { + "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*", + "editType": "calc", + "items": [ + { + "editType": "calc", + "valType": "any" + }, + { + "editType": "calc", + "valType": "any" + } + ], + "valType": "info_array" + }, + "editType": "calc", + "enabled": { + "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.", + "dflt": true, + "editType": "calc", + "valType": "boolean" + }, + "name": { + "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.", + "editType": "calc", + "valType": "string" + }, + "role": "object", + "templateitemname": { + "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.", + "editType": "calc", + "valType": "string" + }, + "value": { + "description": "string - dtickformat for described zoom level, the same as *tickformat*", + "dflt": "", + "editType": "calc", + "valType": "string" + } + } + }, + "role": "object" + }, + "ticklabeloverflow": { + "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.", + "editType": "calc", + "valType": "enumerated", + "values": [ + "allow", + "hide past div", + "hide past domain" + ] + }, + "ticklabelposition": { + "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.", + "dflt": "outside", + "editType": "calc", + "valType": "enumerated", + "values": [ + "outside", + "inside", + "outside top", + "inside top", + "outside left", + "inside left", + "outside right", + "inside right", + "outside bottom", + "inside bottom" + ] + }, + "ticklabelstep": { + "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.", + "dflt": 1, + "editType": "calc", + "min": 1, + "valType": "integer" + }, + "ticklen": { + "description": "Sets the tick length (in px).", + "dflt": 5, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "tickmode": { + "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).", + "editType": "calc", + "impliedEdits": {}, + "valType": "enumerated", + "values": [ + "auto", + "linear", + "array" + ] + }, + "tickprefix": { + "description": "Sets a tick label prefix.", + "dflt": "", + "editType": "calc", + "valType": "string" + }, + "ticks": { + "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.", + "dflt": "", + "editType": "calc", + "valType": "enumerated", + "values": [ + "outside", + "inside", + "" + ] + }, + "ticksuffix": { + "description": "Sets a tick label suffix.", + "dflt": "", + "editType": "calc", + "valType": "string" + }, + "ticktext": { + "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", + "editType": "calc", + "valType": "data_array" + }, + "ticktextsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", + "editType": "none", + "valType": "string" + }, + "tickvals": { + "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", + "editType": "calc", + "valType": "data_array" + }, + "tickvalssrc": { + "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", + "editType": "none", + "valType": "string" + }, + "tickwidth": { + "description": "Sets the tick width (in px).", + "dflt": 1, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "title": { + "editType": "calc", + "font": { + "color": { + "editType": "calc", + "valType": "color" + }, + "description": "Sets this color bar's title font.", + "editType": "calc", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "calc", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "calc", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "calc", + "valType": "string" + }, + "size": { + "editType": "calc", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "calc", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "role": "object", + "side": { + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "editType": "calc", + "valType": "enumerated", + "values": [ + "right", + "top", + "bottom" + ] + }, + "text": { + "description": "Sets the title of the color bar.", + "editType": "calc", + "valType": "string" + } + }, + "x": { + "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.", + "editType": "calc", + "valType": "number" + }, + "xanchor": { + "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.", + "editType": "calc", + "valType": "enumerated", + "values": [ + "left", + "center", + "right" + ] + }, + "xpad": { + "description": "Sets the amount of padding (in px) along the x direction.", + "dflt": 10, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "xref": { + "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.", + "dflt": "paper", + "editType": "calc", + "valType": "enumerated", + "values": [ + "container", + "paper" + ] + }, + "y": { + "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.", + "editType": "calc", + "valType": "number" + }, + "yanchor": { + "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.", + "editType": "calc", + "valType": "enumerated", + "values": [ + "top", + "middle", + "bottom" + ] + }, + "ypad": { + "description": "Sets the amount of padding (in px) along the y direction.", + "dflt": 10, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "yref": { + "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.", + "dflt": "paper", + "editType": "calc", + "valType": "enumerated", + "values": [ + "container", + "paper" + ] + } + }, + "colorscale": { + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "autocolorscale": false + }, + "valType": "colorscale" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "editType": "calc", + "opacity": { + "arrayOk": true, + "description": "Sets the marker opacity.", + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + "opacitysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", + "editType": "none", + "valType": "string" + }, + "reversescale": { + "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "role": "object", + "showscale": { + "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "size": { + "arrayOk": true, + "description": "Sets the marker size (in px).", + "dflt": 6, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "sizemin": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points.", + "dflt": 0, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "sizemode": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels.", + "dflt": "diameter", + "editType": "calc", + "valType": "enumerated", + "values": [ + "diameter", + "area" + ] + }, + "sizeref": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`.", + "dflt": 1, + "editType": "calc", + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "symbol": { + "arrayOk": true, + "description": "Sets the marker symbol. Full list: https://www.mapbox.com/maki-icons/ Note that the array `marker.color` and `marker.size` are only available for *circle* symbols.", + "dflt": "circle", + "editType": "calc", + "valType": "string" + }, + "symbolsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", + "editType": "none", + "valType": "string" + } + }, + "meta": { + "arrayOk": true, + "description": "Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index.", + "editType": "plot", + "valType": "any" + }, + "metasrc": { + "description": "Sets the source reference on Chart Studio Cloud for `meta`.", + "editType": "none", + "valType": "string" + }, + "mode": { + "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover.", + "dflt": "markers", + "editType": "calc", + "extras": [ + "none" + ], + "flags": [ + "lines", + "markers", + "text" + ], + "valType": "flaglist" + }, + "name": { + "description": "Sets the trace name. The trace name appears as the legend item and on hover.", + "editType": "style", + "valType": "string" + }, + "opacity": { + "description": "Sets the opacity of the trace.", + "dflt": 1, + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "selected": { + "editType": "calc", + "marker": { + "color": { + "description": "Sets the marker color of selected points.", + "editType": "calc", + "valType": "color" + }, + "editType": "calc", + "opacity": { + "description": "Sets the marker opacity of selected points.", + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + "role": "object", + "size": { + "description": "Sets the marker size of selected points.", + "editType": "calc", + "min": 0, + "valType": "number" + } + }, + "role": "object" + }, + "selectedpoints": { + "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.", + "editType": "calc", + "valType": "any" + }, + "showlegend": { + "description": "Determines whether or not an item corresponding to this trace is shown in the legend.", + "dflt": true, + "editType": "style", + "valType": "boolean" + }, + "stream": { + "editType": "calc", + "maxpoints": { + "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", + "dflt": 500, + "editType": "calc", + "max": 10000, + "min": 0, + "valType": "number" + }, + "role": "object", + "token": { + "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", + "editType": "calc", + "noBlank": true, + "strict": true, + "valType": "string" + } + }, + "subplot": { + "description": "mapbox subplots and traces are deprecated! Please consider switching to `map` subplots and traces. Learn more at: https://plotly.com/python/maplibre-migration/ as well as https://plotly.com/javascript/maplibre-migration/ Sets a reference between this trace's data coordinates and a mapbox subplot. If *mapbox* (the default value), the data refer to `layout.mapbox`. If *mapbox2*, the data refer to `layout.mapbox2`, and so on.", + "dflt": "mapbox", + "editType": "calc", + "valType": "subplotid" + }, + "text": { + "arrayOk": true, + "description": "Sets text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", + "dflt": "", + "editType": "calc", + "valType": "string" + }, + "textfont": { + "color": { + "editType": "calc", + "valType": "color" + }, + "description": "Sets the icon text font (color=mapbox.layer.paint.text-color, size=mapbox.layer.layout.text-size). Has an effect only when `type` is set to *symbol*.", + "editType": "calc", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "dflt": "Open Sans Regular, Arial Unicode MS Regular", + "editType": "calc", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "role": "object", + "size": { + "editType": "calc", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "calc", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "textposition": { + "arrayOk": false, + "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.", + "dflt": "middle center", + "editType": "calc", + "valType": "enumerated", + "values": [ + "top left", + "top center", + "top right", + "middle left", + "middle center", + "middle right", + "bottom left", + "bottom center", + "bottom right" + ] + }, + "textsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `text`.", + "editType": "none", + "valType": "string" + }, + "texttemplate": { + "arrayOk": true, + "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `lat`, `lon` and `text`.", + "dflt": "", + "editType": "calc", + "valType": "string" + }, + "texttemplatefallback": { + "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", + "dflt": "-", + "editType": "calc", + "valType": "any" + }, + "texttemplatesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", + "editType": "none", + "valType": "string" + }, + "type": "scattermapbox", + "uid": { + "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", + "editType": "plot", + "valType": "string" + }, + "uirevision": { + "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves.", + "editType": "none", + "valType": "any" + }, + "unselected": { + "editType": "calc", + "marker": { + "color": { + "description": "Sets the marker color of unselected points, applied only when a selection exists.", + "editType": "calc", + "valType": "color" + }, + "editType": "calc", + "opacity": { + "description": "Sets the marker opacity of unselected points, applied only when a selection exists.", + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + "role": "object", + "size": { + "description": "Sets the marker size of unselected points, applied only when a selection exists.", + "editType": "calc", + "min": 0, + "valType": "number" + } + }, + "role": "object" + }, + "visible": { + "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).", + "dflt": true, + "editType": "calc", + "valType": "enumerated", + "values": [ + true, + false, + "legendonly" + ] + } + }, + "categories": [ + "mapbox", + "gl", + "symbols", + "showLegend", + "scatter-like" + ], + "meta": { + "description": "*scattermapbox* trace is deprecated! Please consider switching to the *scattermap* trace type and `map` subplots. Learn more at: https://plotly.com/python/maplibre-migration/ as well as https://plotly.com/javascript/maplibre-migration/ The data visualized as scatter point, lines or marker symbols on a Mapbox GL geographic map is provided by longitude/latitude pairs in `lon` and `lat`.", + "hrName": "scatter_mapbox" + }, + "type": "scattermapbox" + }, + "scatterpolar": { + "animatable": false, + "attributes": { + "cliponaxis": { + "description": "Determines whether or not markers and text nodes are clipped about the subplot axes. To show markers and text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*.", + "dflt": false, + "editType": "plot", + "valType": "boolean" + }, + "connectgaps": { + "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "customdata": { + "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements", + "editType": "calc", + "valType": "data_array" + }, + "customdatasrc": { + "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", + "editType": "none", + "valType": "string" + }, + "dr": { + "description": "Sets the r coordinate step.", + "dflt": 1, + "editType": "calc", + "valType": "number" + }, + "dtheta": { + "description": "Sets the theta coordinate step. By default, the `dtheta` step equals the subplot's period divided by the length of the `r` coordinates.", + "editType": "calc", + "valType": "number" + }, + "fill": { + "description": "Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. scatterpolar has a subset of the options available to scatter. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other.", + "dflt": "none", + "editType": "calc", + "valType": "enumerated", + "values": [ + "none", + "toself", + "tonext" + ] + }, + "fillcolor": { + "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available.", + "editType": "style", + "valType": "color" + }, + "hoverinfo": { + "arrayOk": true, + "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.", + "dflt": "all", + "editType": "none", + "extras": [ + "all", + "none", + "skip" + ], + "flags": [ + "r", + "theta", + "text", + "name" + ], + "valType": "flaglist" + }, + "hoverinfosrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", + "editType": "none", + "valType": "string" + }, + "hoverlabel": { + "align": { + "arrayOk": true, + "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines", + "dflt": "auto", + "editType": "none", + "valType": "enumerated", + "values": [ + "left", + "right", + "auto" + ] + }, + "alignsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `align`.", + "editType": "none", + "valType": "string" + }, + "bgcolor": { + "arrayOk": true, + "description": "Sets the background color of the hover labels for this trace", + "editType": "none", + "valType": "color" + }, + "bgcolorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", + "editType": "none", + "valType": "string" + }, + "bordercolor": { + "arrayOk": true, + "description": "Sets the border color of the hover labels for this trace.", + "editType": "none", + "valType": "color" + }, + "bordercolorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", + "editType": "none", + "valType": "string" + }, + "editType": "none", + "font": { + "color": { + "arrayOk": true, + "editType": "none", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "description": "Sets the font used in hover labels.", + "editType": "none", + "family": { + "arrayOk": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "none", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "familysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `family`.", + "editType": "none", + "valType": "string" + }, + "lineposition": { + "arrayOk": true, + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "none", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "linepositionsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", + "editType": "none", + "valType": "string" + }, + "role": "object", + "shadow": { + "arrayOk": true, + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "none", + "valType": "string" + }, + "shadowsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", + "editType": "none", + "valType": "string" + }, + "size": { + "arrayOk": true, + "editType": "none", + "min": 1, + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "style": { + "arrayOk": true, + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "none", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "stylesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `style`.", + "editType": "none", + "valType": "string" + }, + "textcase": { + "arrayOk": true, + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "none", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "textcasesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", + "editType": "none", + "valType": "string" + }, + "variant": { + "arrayOk": true, + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "none", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "variantsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `variant`.", + "editType": "none", + "valType": "string" + }, + "weight": { + "arrayOk": true, + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "none", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + }, + "weightsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `weight`.", + "editType": "none", + "valType": "string" + } + }, + "namelength": { + "arrayOk": true, + "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.", + "dflt": 15, + "editType": "none", + "min": -1, + "valType": "integer" + }, + "namelengthsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", + "editType": "none", + "valType": "string" + }, + "role": "object", + "showarrow": { + "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", + "dflt": true, + "editType": "none", + "valType": "boolean" + } + }, + "hoveron": { + "description": "Do the hover effects highlight individual points (markers or line points) or do they highlight filled regions? If the fill is *toself* or *tonext* and there are no markers or text, then the default is *fills*, otherwise it is *points*.", + "editType": "style", + "flags": [ + "points", + "fills" + ], + "valType": "flaglist" + }, + "hovertemplate": { + "arrayOk": true, + "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``.", + "dflt": "", + "editType": "none", + "valType": "string" + }, + "hovertemplatefallback": { + "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", + "dflt": "-", + "editType": "none", + "valType": "any" + }, + "hovertemplatesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", + "editType": "none", + "valType": "string" + }, + "hovertext": { + "arrayOk": true, + "description": "Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", + "dflt": "", + "editType": "style", + "valType": "string" + }, + "hovertextsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", + "editType": "none", + "valType": "string" + }, + "ids": { + "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", + "editType": "calc", + "valType": "data_array" + }, + "idssrc": { + "description": "Sets the source reference on Chart Studio Cloud for `ids`.", + "editType": "none", + "valType": "string" + }, + "legend": { + "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", + "dflt": "legend", + "editType": "style", + "valType": "subplotid" + }, + "legendgroup": { + "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.", + "dflt": "", + "editType": "style", + "valType": "string" + }, + "legendgrouptitle": { + "editType": "style", + "font": { + "color": { + "editType": "style", + "valType": "color" + }, + "description": "Sets this legend group's title font.", + "editType": "style", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "style", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "style", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "style", + "valType": "string" + }, + "size": { + "editType": "style", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "style", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "style", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "style", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "style", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "role": "object", + "text": { + "description": "Sets the title of the legend group.", + "dflt": "", + "editType": "style", + "valType": "string" + } + }, + "legendrank": { + "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.", + "dflt": 1000, + "editType": "style", + "valType": "number" + }, + "legendwidth": { + "description": "Sets the width (in px or fraction) of the legend for this trace.", + "editType": "style", + "min": 0, + "valType": "number" + }, + "line": { + "backoff": { + "arrayOk": true, + "description": "Sets the line back off from the end point of the nth line segment (in px). This option is useful e.g. to avoid overlap with arrowhead markers. With *auto* the lines would trim before markers if `marker.angleref` is set to *previous*.", + "dflt": "auto", + "editType": "plot", + "min": 0, + "valType": "number" + }, + "backoffsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `backoff`.", + "editType": "none", + "valType": "string" + }, + "color": { + "description": "Sets the line color.", + "editType": "style", + "valType": "color" + }, + "dash": { + "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", + "dflt": "solid", + "editType": "style", + "valType": "string", + "values": [ + "solid", + "dot", + "dash", + "longdash", + "dashdot", + "longdashdot" + ] + }, + "editType": "calc", + "role": "object", + "shape": { + "description": "Determines the line shape. With *spline* the lines are drawn using spline interpolation. The other available values correspond to step-wise line shapes.", + "dflt": "linear", + "editType": "plot", + "valType": "enumerated", + "values": [ + "linear", + "spline" + ] + }, + "smoothing": { + "description": "Has an effect only if `shape` is set to *spline* Sets the amount of smoothing. *0* corresponds to no smoothing (equivalent to a *linear* shape).", + "dflt": 1, + "editType": "plot", + "max": 1.3, + "min": 0, + "valType": "number" + }, + "width": { + "description": "Sets the line width (in px).", + "dflt": 2, + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "marker": { + "angle": { + "arrayOk": true, + "description": "Sets the marker angle in respect to `angleref`.", + "dflt": 0, + "editType": "plot", + "valType": "angle" + }, + "angleref": { + "description": "Sets the reference for marker angle. With *previous*, angle 0 points along the line from the previous point to this one. With *up*, angle 0 points toward the top of the screen.", + "dflt": "up", + "editType": "plot", + "valType": "enumerated", + "values": [ + "previous", + "up" + ] + }, + "anglesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `angle`.", + "editType": "none", + "valType": "string" + }, + "autocolorscale": { + "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "cauto": { + "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "cmax": { + "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well.", + "dflt": null, + "editType": "plot", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "cmid": { + "description": "Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`.", + "dflt": null, + "editType": "calc", + "impliedEdits": {}, + "valType": "number" + }, + "cmin": { + "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well.", + "dflt": null, + "editType": "plot", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "color": { + "arrayOk": true, + "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.", + "editType": "style", + "valType": "color" + }, + "coloraxis": { + "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.", + "dflt": null, + "editType": "calc", + "regex": "/^coloraxis([2-9]|[1-9][0-9]+)?$/", + "valType": "subplotid" + }, + "colorbar": { + "bgcolor": { + "description": "Sets the color of padded area.", + "dflt": "rgba(0,0,0,0)", + "editType": "colorbars", + "valType": "color" + }, + "bordercolor": { + "description": "Sets the axis line color.", + "dflt": "#444", + "editType": "colorbars", + "valType": "color" + }, + "borderwidth": { + "description": "Sets the width (in px) or the border enclosing this color bar.", + "dflt": 0, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "dtick": { + "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*", + "editType": "colorbars", + "impliedEdits": { + "tickmode": "linear" + }, + "valType": "any" + }, + "editType": "colorbars", + "exponentformat": { + "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from \"femto\" f (10^-15) to \"tera\" T (10^12). *SI extended* covers instead the full SI range from \"quecto\" q (10^-30) to \"quetta\" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation.", + "dflt": "B", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "none", + "e", + "E", + "power", + "SI", + "B", + "SI extended" + ] + }, + "labelalias": { + "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax.", + "dflt": false, + "editType": "colorbars", + "valType": "any" + }, + "len": { + "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.", + "dflt": 1, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "lenmode": { + "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.", + "dflt": "fraction", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "fraction", + "pixels" + ] + }, + "minexponent": { + "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.", + "dflt": 3, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "nticks": { + "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.", + "dflt": 0, + "editType": "colorbars", + "min": 0, + "valType": "integer" + }, + "orientation": { + "description": "Sets the orientation of the colorbar.", + "dflt": "v", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "h", + "v" + ] + }, + "outlinecolor": { + "description": "Sets the axis line color.", + "dflt": "#444", + "editType": "colorbars", + "valType": "color" + }, + "outlinewidth": { + "description": "Sets the width (in px) of the axis line.", + "dflt": 1, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "role": "object", + "separatethousands": { + "description": "If \"true\", even 4-digit integers are separated", + "dflt": false, + "editType": "colorbars", + "valType": "boolean" + }, + "showexponent": { + "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.", + "dflt": "all", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "showticklabels": { + "description": "Determines whether or not the tick labels are drawn.", + "dflt": true, + "editType": "colorbars", + "valType": "boolean" + }, + "showtickprefix": { + "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.", + "dflt": "all", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "showticksuffix": { + "description": "Same as `showtickprefix` but for tick suffixes.", + "dflt": "all", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "thickness": { + "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.", + "dflt": 30, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "thicknessmode": { + "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.", + "dflt": "pixels", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "fraction", + "pixels" + ] + }, + "tick0": { + "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears.", + "editType": "colorbars", + "impliedEdits": { + "tickmode": "linear" + }, + "valType": "any" + }, + "tickangle": { + "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.", + "dflt": "auto", + "editType": "colorbars", + "valType": "angle" + }, + "tickcolor": { + "description": "Sets the tick color.", + "dflt": "#444", + "editType": "colorbars", + "valType": "color" + }, + "tickfont": { + "color": { + "editType": "colorbars", + "valType": "color" + }, + "description": "Sets the color bar's tick label font", + "editType": "colorbars", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "colorbars", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "colorbars", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "colorbars", + "valType": "string" + }, + "size": { + "editType": "colorbars", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "colorbars", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "tickformat": { + "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*", + "dflt": "", + "editType": "colorbars", + "valType": "string" + }, + "tickformatstops": { + "items": { + "tickformatstop": { + "dtickrange": { + "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*", + "editType": "colorbars", + "items": [ + { + "editType": "colorbars", + "valType": "any" + }, + { + "editType": "colorbars", + "valType": "any" + } + ], + "valType": "info_array" + }, + "editType": "colorbars", + "enabled": { + "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.", + "dflt": true, + "editType": "colorbars", + "valType": "boolean" + }, + "name": { + "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.", + "editType": "colorbars", + "valType": "string" + }, + "role": "object", + "templateitemname": { + "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.", + "editType": "colorbars", + "valType": "string" + }, + "value": { + "description": "string - dtickformat for described zoom level, the same as *tickformat*", + "dflt": "", + "editType": "colorbars", + "valType": "string" + } + } + }, + "role": "object" + }, + "ticklabeloverflow": { + "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "allow", + "hide past div", + "hide past domain" + ] + }, + "ticklabelposition": { + "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.", + "dflt": "outside", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "outside", + "inside", + "outside top", + "inside top", + "outside left", + "inside left", + "outside right", + "inside right", + "outside bottom", + "inside bottom" + ] + }, + "ticklabelstep": { + "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.", + "dflt": 1, + "editType": "colorbars", + "min": 1, + "valType": "integer" + }, + "ticklen": { + "description": "Sets the tick length (in px).", + "dflt": 5, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "tickmode": { + "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).", + "editType": "colorbars", + "impliedEdits": {}, + "valType": "enumerated", + "values": [ + "auto", + "linear", + "array" + ] + }, + "tickprefix": { + "description": "Sets a tick label prefix.", + "dflt": "", + "editType": "colorbars", + "valType": "string" + }, + "ticks": { + "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.", + "dflt": "", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "outside", + "inside", + "" + ] + }, + "ticksuffix": { + "description": "Sets a tick label suffix.", + "dflt": "", + "editType": "colorbars", + "valType": "string" + }, + "ticktext": { + "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", + "editType": "colorbars", + "valType": "data_array" + }, + "ticktextsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", + "editType": "none", + "valType": "string" + }, + "tickvals": { + "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", + "editType": "colorbars", + "valType": "data_array" + }, + "tickvalssrc": { + "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", + "editType": "none", + "valType": "string" + }, + "tickwidth": { + "description": "Sets the tick width (in px).", + "dflt": 1, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "title": { + "editType": "colorbars", + "font": { + "color": { + "editType": "colorbars", + "valType": "color" + }, + "description": "Sets this color bar's title font.", + "editType": "colorbars", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "colorbars", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "colorbars", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "colorbars", + "valType": "string" + }, + "size": { + "editType": "colorbars", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "colorbars", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "role": "object", + "side": { + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "right", + "top", + "bottom" + ] + }, + "text": { + "description": "Sets the title of the color bar.", + "editType": "colorbars", + "valType": "string" + } + }, + "x": { + "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.", + "editType": "colorbars", + "valType": "number" + }, + "xanchor": { + "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "left", + "center", + "right" + ] + }, + "xpad": { + "description": "Sets the amount of padding (in px) along the x direction.", + "dflt": 10, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "xref": { + "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.", + "dflt": "paper", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "container", + "paper" + ] + }, + "y": { + "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.", + "editType": "colorbars", + "valType": "number" + }, + "yanchor": { + "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "top", + "middle", + "bottom" + ] + }, + "ypad": { + "description": "Sets the amount of padding (in px) along the y direction.", + "dflt": 10, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "yref": { + "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.", + "dflt": "paper", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "container", + "paper" + ] + } + }, + "colorscale": { + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "autocolorscale": false + }, + "valType": "colorscale" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "editType": "calc", + "gradient": { + "color": { + "arrayOk": true, + "description": "Sets the final color of the gradient fill: the center color for radial, the right for horizontal, or the bottom for vertical.", + "editType": "calc", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "editType": "calc", + "role": "object", + "type": { + "arrayOk": true, + "description": "Sets the type of gradient used to fill the markers", + "dflt": "none", + "editType": "calc", + "valType": "enumerated", + "values": [ + "radial", + "horizontal", + "vertical", + "none" + ] + }, + "typesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `type`.", + "editType": "none", + "valType": "string" + } + }, + "line": { + "autocolorscale": { + "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. Has an effect only if in `marker.line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "cauto": { + "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.line.color`) or the bounds set in `marker.line.cmin` and `marker.line.cmax` Has an effect only if in `marker.line.color` is set to a numerical array. Defaults to `false` when `marker.line.cmin` and `marker.line.cmax` are set by the user.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "cmax": { + "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmin` must be set as well.", + "dflt": null, + "editType": "plot", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "cmid": { + "description": "Sets the mid-point of the color domain by scaling `marker.line.cmin` and/or `marker.line.cmax` to be equidistant to this point. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color`. Has no effect when `marker.line.cauto` is `false`.", + "dflt": null, + "editType": "calc", + "impliedEdits": {}, + "valType": "number" + }, + "cmin": { + "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmax` must be set as well.", + "dflt": null, + "editType": "plot", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "color": { + "arrayOk": true, + "description": "Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set.", + "editType": "style", + "valType": "color" + }, + "coloraxis": { + "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.", + "dflt": null, + "editType": "calc", + "regex": "/^coloraxis([2-9]|[1-9][0-9]+)?$/", + "valType": "subplotid" + }, + "colorscale": { + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "autocolorscale": false + }, + "valType": "colorscale" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "editType": "calc", + "reversescale": { + "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.", + "dflt": false, + "editType": "plot", + "valType": "boolean" + }, + "role": "object", + "width": { + "arrayOk": true, + "description": "Sets the width (in px) of the lines bounding the marker points.", + "editType": "style", + "min": 0, + "valType": "number" + }, + "widthsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `width`.", + "editType": "none", + "valType": "string" + } + }, + "maxdisplayed": { + "description": "Sets a maximum number of points to be drawn on the graph. *0* corresponds to no limit.", + "dflt": 0, + "editType": "plot", + "min": 0, + "valType": "number" + }, + "opacity": { + "arrayOk": true, + "description": "Sets the marker opacity.", + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "opacitysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", + "editType": "none", + "valType": "string" + }, + "reversescale": { + "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", + "dflt": false, + "editType": "plot", + "valType": "boolean" + }, + "role": "object", + "showscale": { + "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "size": { + "arrayOk": true, + "description": "Sets the marker size (in px).", + "dflt": 6, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "sizemin": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points.", + "dflt": 0, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "sizemode": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels.", + "dflt": "diameter", + "editType": "calc", + "valType": "enumerated", + "values": [ + "diameter", + "area" + ] + }, + "sizeref": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`.", + "dflt": 1, + "editType": "calc", + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "standoff": { + "arrayOk": true, + "description": "Moves the marker away from the data point in the direction of `angle` (in px). This can be useful for example if you have another marker at this location and you want to point an arrowhead marker at it.", + "dflt": 0, + "editType": "plot", + "min": 0, + "valType": "number" + }, + "standoffsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `standoff`.", + "editType": "none", + "valType": "string" + }, + "symbol": { + "arrayOk": true, + "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.", + "dflt": "circle", + "editType": "style", + "valType": "enumerated", + "values": [ + 0, + "0", + "circle", + 100, + "100", + "circle-open", + 200, + "200", + "circle-dot", + 300, + "300", + "circle-open-dot", + 1, + "1", + "square", + 101, + "101", + "square-open", + 201, + "201", + "square-dot", + 301, + "301", + "square-open-dot", + 2, + "2", + "diamond", + 102, + "102", + "diamond-open", + 202, + "202", + "diamond-dot", + 302, + "302", + "diamond-open-dot", + 3, + "3", + "cross", + 103, + "103", + "cross-open", + 203, + "203", + "cross-dot", + 303, + "303", + "cross-open-dot", + 4, + "4", + "x", + 104, + "104", + "x-open", + 204, + "204", + "x-dot", + 304, + "304", + "x-open-dot", + 5, + "5", + "triangle-up", + 105, + "105", + "triangle-up-open", + 205, + "205", + "triangle-up-dot", + 305, + "305", + "triangle-up-open-dot", + 6, + "6", + "triangle-down", + 106, + "106", + "triangle-down-open", + 206, + "206", + "triangle-down-dot", + 306, + "306", + "triangle-down-open-dot", + 7, + "7", + "triangle-left", + 107, + "107", + "triangle-left-open", + 207, + "207", + "triangle-left-dot", + 307, + "307", + "triangle-left-open-dot", + 8, + "8", + "triangle-right", + 108, + "108", + "triangle-right-open", + 208, + "208", + "triangle-right-dot", + 308, + "308", + "triangle-right-open-dot", + 9, + "9", + "triangle-ne", + 109, + "109", + "triangle-ne-open", + 209, + "209", + "triangle-ne-dot", + 309, + "309", + "triangle-ne-open-dot", + 10, + "10", + "triangle-se", + 110, + "110", + "triangle-se-open", + 210, + "210", + "triangle-se-dot", + 310, + "310", + "triangle-se-open-dot", + 11, + "11", + "triangle-sw", + 111, + "111", + "triangle-sw-open", + 211, + "211", + "triangle-sw-dot", + 311, + "311", + "triangle-sw-open-dot", + 12, + "12", + "triangle-nw", + 112, + "112", + "triangle-nw-open", + 212, + "212", + "triangle-nw-dot", + 312, + "312", + "triangle-nw-open-dot", + 13, + "13", + "pentagon", + 113, + "113", + "pentagon-open", + 213, + "213", + "pentagon-dot", + 313, + "313", + "pentagon-open-dot", + 14, + "14", + "hexagon", + 114, + "114", + "hexagon-open", + 214, + "214", + "hexagon-dot", + 314, + "314", + "hexagon-open-dot", + 15, + "15", + "hexagon2", + 115, + "115", + "hexagon2-open", + 215, + "215", + "hexagon2-dot", + 315, + "315", + "hexagon2-open-dot", + 16, + "16", + "octagon", + 116, + "116", + "octagon-open", + 216, + "216", + "octagon-dot", + 316, + "316", + "octagon-open-dot", + 17, + "17", + "star", + 117, + "117", + "star-open", + 217, + "217", + "star-dot", + 317, + "317", + "star-open-dot", + 18, + "18", + "hexagram", + 118, + "118", + "hexagram-open", + 218, + "218", + "hexagram-dot", + 318, + "318", + "hexagram-open-dot", + 19, + "19", + "star-triangle-up", + 119, + "119", + "star-triangle-up-open", + 219, + "219", + "star-triangle-up-dot", + 319, + "319", + "star-triangle-up-open-dot", + 20, + "20", + "star-triangle-down", + 120, + "120", + "star-triangle-down-open", + 220, + "220", + "star-triangle-down-dot", + 320, + "320", + "star-triangle-down-open-dot", + 21, + "21", + "star-square", + 121, + "121", + "star-square-open", + 221, + "221", + "star-square-dot", + 321, + "321", + "star-square-open-dot", + 22, + "22", + "star-diamond", + 122, + "122", + "star-diamond-open", + 222, + "222", + "star-diamond-dot", + 322, + "322", + "star-diamond-open-dot", + 23, + "23", + "diamond-tall", + 123, + "123", + "diamond-tall-open", + 223, + "223", + "diamond-tall-dot", + 323, + "323", + "diamond-tall-open-dot", + 24, + "24", + "diamond-wide", + 124, + "124", + "diamond-wide-open", + 224, + "224", + "diamond-wide-dot", + 324, + "324", + "diamond-wide-open-dot", + 25, + "25", + "hourglass", + 125, + "125", + "hourglass-open", + 26, + "26", + "bowtie", + 126, + "126", + "bowtie-open", + 27, + "27", + "circle-cross", + 127, + "127", + "circle-cross-open", + 28, + "28", + "circle-x", + 128, + "128", + "circle-x-open", + 29, + "29", + "square-cross", + 129, + "129", + "square-cross-open", + 30, + "30", + "square-x", + 130, + "130", + "square-x-open", + 31, + "31", + "diamond-cross", + 131, + "131", + "diamond-cross-open", + 32, + "32", + "diamond-x", + 132, + "132", + "diamond-x-open", + 33, + "33", + "cross-thin", + 133, + "133", + "cross-thin-open", + 34, + "34", + "x-thin", + 134, + "134", + "x-thin-open", + 35, + "35", + "asterisk", + 135, + "135", + "asterisk-open", + 36, + "36", + "hash", + 136, + "136", + "hash-open", + 236, + "236", + "hash-dot", + 336, + "336", + "hash-open-dot", + 37, + "37", + "y-up", + 137, + "137", + "y-up-open", + 38, + "38", + "y-down", + 138, + "138", + "y-down-open", + 39, + "39", + "y-left", + 139, + "139", + "y-left-open", + 40, + "40", + "y-right", + 140, + "140", + "y-right-open", + 41, + "41", + "line-ew", + 141, + "141", + "line-ew-open", + 42, + "42", + "line-ns", + 142, + "142", + "line-ns-open", + 43, + "43", + "line-ne", + 143, + "143", + "line-ne-open", + 44, + "44", + "line-nw", + 144, + "144", + "line-nw-open", + 45, + "45", + "arrow-up", + 145, + "145", + "arrow-up-open", + 46, + "46", + "arrow-down", + 146, + "146", + "arrow-down-open", + 47, + "47", + "arrow-left", + 147, + "147", + "arrow-left-open", + 48, + "48", + "arrow-right", + 148, + "148", + "arrow-right-open", + 49, + "49", + "arrow-bar-up", + 149, + "149", + "arrow-bar-up-open", + 50, + "50", + "arrow-bar-down", + 150, + "150", + "arrow-bar-down-open", + 51, + "51", + "arrow-bar-left", + 151, + "151", + "arrow-bar-left-open", + 52, + "52", + "arrow-bar-right", + 152, + "152", + "arrow-bar-right-open", + 53, + "53", + "arrow", + 153, + "153", + "arrow-open", + 54, + "54", + "arrow-wide", + 154, + "154", + "arrow-wide-open" + ] + }, + "symbolsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", + "editType": "none", + "valType": "string" + } + }, + "meta": { + "arrayOk": true, + "description": "Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index.", + "editType": "plot", + "valType": "any" + }, + "metasrc": { + "description": "Sets the source reference on Chart Studio Cloud for `meta`.", + "editType": "none", + "valType": "string" + }, + "mode": { + "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*.", + "editType": "calc", + "extras": [ + "none" + ], + "flags": [ + "lines", + "markers", + "text" + ], + "valType": "flaglist" + }, + "name": { + "description": "Sets the trace name. The trace name appears as the legend item and on hover.", + "editType": "style", + "valType": "string" + }, + "opacity": { + "description": "Sets the opacity of the trace.", + "dflt": 1, + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "r": { + "description": "Sets the radial coordinates", + "editType": "calc+clearAxisTypes", + "valType": "data_array" + }, + "r0": { + "description": "Alternate to `r`. Builds a linear space of r coordinates. Use with `dr` where `r0` is the starting coordinate and `dr` the step.", + "dflt": 0, + "editType": "calc+clearAxisTypes", + "valType": "any" + }, + "rsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `r`.", + "editType": "none", + "valType": "string" + }, + "selected": { + "editType": "style", + "marker": { + "color": { + "description": "Sets the marker color of selected points.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "opacity": { + "description": "Sets the marker opacity of selected points.", + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "role": "object", + "size": { + "description": "Sets the marker size of selected points.", + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "role": "object", + "textfont": { + "color": { + "description": "Sets the text font color of selected points.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "role": "object" + } + }, + "selectedpoints": { + "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.", + "editType": "calc", + "valType": "any" + }, + "showlegend": { + "description": "Determines whether or not an item corresponding to this trace is shown in the legend.", + "dflt": true, + "editType": "style", + "valType": "boolean" + }, + "stream": { + "editType": "calc", + "maxpoints": { + "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", + "dflt": 500, + "editType": "calc", + "max": 10000, + "min": 0, + "valType": "number" + }, + "role": "object", + "token": { + "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", + "editType": "calc", + "noBlank": true, + "strict": true, + "valType": "string" + } + }, + "subplot": { + "description": "Sets a reference between this trace's data coordinates and a polar subplot. If *polar* (the default value), the data refer to `layout.polar`. If *polar2*, the data refer to `layout.polar2`, and so on.", + "dflt": "polar", + "editType": "calc", + "valType": "subplotid" + }, + "text": { + "arrayOk": true, + "description": "Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", + "dflt": "", + "editType": "calc", + "valType": "string" + }, + "textfont": { + "color": { + "arrayOk": true, + "editType": "style", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "description": "Sets the text font.", + "editType": "calc", + "family": { + "arrayOk": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "calc", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "familysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `family`.", + "editType": "none", + "valType": "string" + }, + "lineposition": { + "arrayOk": true, + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "calc", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "linepositionsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", + "editType": "none", + "valType": "string" + }, + "role": "object", + "shadow": { + "arrayOk": true, + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "calc", + "valType": "string" + }, + "shadowsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", + "editType": "none", + "valType": "string" + }, + "size": { + "arrayOk": true, + "editType": "calc", + "min": 1, + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "style": { + "arrayOk": true, + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "stylesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `style`.", + "editType": "none", + "valType": "string" + }, + "textcase": { + "arrayOk": true, + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "textcasesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", + "editType": "none", + "valType": "string" + }, + "variant": { + "arrayOk": true, + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "variantsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `variant`.", + "editType": "none", + "valType": "string" + }, + "weight": { + "arrayOk": true, + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "calc", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + }, + "weightsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `weight`.", + "editType": "none", + "valType": "string" + } + }, + "textposition": { + "arrayOk": true, + "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.", + "dflt": "middle center", + "editType": "calc", + "valType": "enumerated", + "values": [ + "top left", + "top center", + "top right", + "middle left", + "middle center", + "middle right", + "bottom left", + "bottom center", + "bottom right" + ] + }, + "textpositionsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", + "editType": "none", + "valType": "string" + }, + "textsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `text`.", + "editType": "none", + "valType": "string" + }, + "texttemplate": { + "arrayOk": true, + "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `r`, `theta` and `text`.", + "dflt": "", + "editType": "plot", + "valType": "string" + }, + "texttemplatefallback": { + "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", + "dflt": "-", + "editType": "plot", + "valType": "any" + }, + "texttemplatesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", + "editType": "none", + "valType": "string" + }, + "theta": { + "description": "Sets the angular coordinates", + "editType": "calc+clearAxisTypes", + "valType": "data_array" + }, + "theta0": { + "description": "Alternate to `theta`. Builds a linear space of theta coordinates. Use with `dtheta` where `theta0` is the starting coordinate and `dtheta` the step.", + "dflt": 0, + "editType": "calc+clearAxisTypes", + "valType": "any" + }, + "thetasrc": { + "description": "Sets the source reference on Chart Studio Cloud for `theta`.", + "editType": "none", + "valType": "string" + }, + "thetaunit": { + "description": "Sets the unit of input *theta* values. Has an effect only when on *linear* angular axes.", + "dflt": "degrees", + "editType": "calc+clearAxisTypes", + "valType": "enumerated", + "values": [ + "radians", + "degrees", + "gradians" + ] + }, + "type": "scatterpolar", + "uid": { + "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", + "editType": "plot", + "valType": "string" + }, + "uirevision": { + "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves.", + "editType": "none", + "valType": "any" + }, + "unselected": { + "editType": "style", + "marker": { + "color": { + "description": "Sets the marker color of unselected points, applied only when a selection exists.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "opacity": { + "description": "Sets the marker opacity of unselected points, applied only when a selection exists.", + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "role": "object", + "size": { + "description": "Sets the marker size of unselected points, applied only when a selection exists.", + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "role": "object", + "textfont": { + "color": { + "description": "Sets the text font color of unselected points, applied only when a selection exists.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "role": "object" + } + }, + "visible": { + "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).", + "dflt": true, + "editType": "calc", + "valType": "enumerated", + "values": [ + true, + false, + "legendonly" + ] + } + }, + "categories": [ + "polar", + "symbols", + "showLegend", + "scatter-like" + ], + "meta": { + "description": "The scatterpolar trace type encompasses line charts, scatter charts, text charts, and bubble charts in polar coordinates. The data visualized as scatter point or lines is set in `r` (radial) and `theta` (angular) coordinates Text (appearing either on the chart or on hover only) is via `text`. Bubble charts are achieved by setting `marker.size` and/or `marker.color` to numerical arrays.", + "hrName": "scatter_polar" + }, + "type": "scatterpolar" + }, + "scatterpolargl": { + "animatable": false, + "attributes": { + "connectgaps": { + "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "customdata": { + "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements", + "editType": "calc", + "valType": "data_array" + }, + "customdatasrc": { + "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", + "editType": "none", + "valType": "string" + }, + "dr": { + "description": "Sets the r coordinate step.", + "dflt": 1, + "editType": "calc", + "valType": "number" + }, + "dtheta": { + "description": "Sets the theta coordinate step. By default, the `dtheta` step equals the subplot's period divided by the length of the `r` coordinates.", + "editType": "calc", + "valType": "number" + }, + "fill": { + "description": "Sets the area to fill with a solid color. Defaults to *none* unless this trace is stacked, then it gets *tonexty* (*tonextx*) if `orientation` is *v* (*h*) Use with `fillcolor` if not *none*. *tozerox* and *tozeroy* fill to x=0 and y=0 respectively. *tonextx* and *tonexty* fill between the endpoints of this trace and the endpoints of the trace before it, connecting those endpoints with straight lines (to make a stacked area graph); if there is no trace before it, they behave like *tozerox* and *tozeroy*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other. Traces in a `stackgroup` will only fill to (or be filled to) other traces in the same group. With multiple `stackgroup`s or some traces stacked and some not, if fill-linked traces are not already consecutive, the later ones will be pushed down in the drawing order.", + "dflt": "none", + "editType": "calc", + "valType": "enumerated", + "values": [ + "none", + "tozeroy", + "tozerox", + "tonexty", + "tonextx", + "toself", + "tonext" + ] + }, + "fillcolor": { + "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available.", + "editType": "calc", + "valType": "color" + }, + "hoverinfo": { + "arrayOk": true, + "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.", + "dflt": "all", + "editType": "none", + "extras": [ + "all", + "none", + "skip" + ], + "flags": [ + "r", + "theta", + "text", + "name" + ], + "valType": "flaglist" + }, + "hoverinfosrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", + "editType": "none", + "valType": "string" + }, + "hoverlabel": { + "align": { + "arrayOk": true, + "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines", + "dflt": "auto", + "editType": "none", + "valType": "enumerated", + "values": [ + "left", + "right", + "auto" + ] + }, + "alignsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `align`.", + "editType": "none", + "valType": "string" + }, + "bgcolor": { + "arrayOk": true, + "description": "Sets the background color of the hover labels for this trace", + "editType": "none", + "valType": "color" + }, + "bgcolorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", + "editType": "none", + "valType": "string" + }, + "bordercolor": { + "arrayOk": true, + "description": "Sets the border color of the hover labels for this trace.", + "editType": "none", + "valType": "color" + }, + "bordercolorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", + "editType": "none", + "valType": "string" + }, + "editType": "none", + "font": { + "color": { + "arrayOk": true, + "editType": "none", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "description": "Sets the font used in hover labels.", + "editType": "none", + "family": { + "arrayOk": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "none", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "familysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `family`.", + "editType": "none", + "valType": "string" + }, + "lineposition": { + "arrayOk": true, + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "none", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "linepositionsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", + "editType": "none", + "valType": "string" + }, + "role": "object", + "shadow": { + "arrayOk": true, + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "none", + "valType": "string" + }, + "shadowsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", + "editType": "none", + "valType": "string" + }, + "size": { + "arrayOk": true, + "editType": "none", + "min": 1, + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "style": { + "arrayOk": true, + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "none", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "stylesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `style`.", + "editType": "none", + "valType": "string" + }, + "textcase": { + "arrayOk": true, + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "none", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "textcasesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", + "editType": "none", + "valType": "string" + }, + "variant": { + "arrayOk": true, + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "none", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "variantsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `variant`.", + "editType": "none", + "valType": "string" + }, + "weight": { + "arrayOk": true, + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "none", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + }, + "weightsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `weight`.", + "editType": "none", + "valType": "string" + } + }, + "namelength": { + "arrayOk": true, + "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.", + "dflt": 15, + "editType": "none", + "min": -1, + "valType": "integer" + }, + "namelengthsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", + "editType": "none", + "valType": "string" + }, + "role": "object", + "showarrow": { + "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", + "dflt": true, + "editType": "none", + "valType": "boolean" + } + }, + "hovertemplate": { + "arrayOk": true, + "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``.", + "dflt": "", + "editType": "none", + "valType": "string" + }, + "hovertemplatefallback": { + "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", + "dflt": "-", + "editType": "none", + "valType": "any" + }, + "hovertemplatesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", + "editType": "none", + "valType": "string" + }, + "hovertext": { + "arrayOk": true, + "description": "Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", + "dflt": "", + "editType": "style", + "valType": "string" + }, + "hovertextsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", + "editType": "none", + "valType": "string" + }, + "ids": { + "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", + "editType": "calc", + "valType": "data_array" + }, + "idssrc": { + "description": "Sets the source reference on Chart Studio Cloud for `ids`.", + "editType": "none", + "valType": "string" + }, + "legend": { + "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", + "dflt": "legend", + "editType": "style", + "valType": "subplotid" + }, + "legendgroup": { + "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.", + "dflt": "", + "editType": "style", + "valType": "string" + }, + "legendgrouptitle": { + "editType": "style", + "font": { + "color": { + "editType": "style", + "valType": "color" + }, + "description": "Sets this legend group's title font.", + "editType": "style", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "style", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "style", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "style", + "valType": "string" + }, + "size": { + "editType": "style", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "style", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "style", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "style", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "style", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "role": "object", + "text": { + "description": "Sets the title of the legend group.", + "dflt": "", + "editType": "style", + "valType": "string" + } + }, + "legendrank": { + "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.", + "dflt": 1000, + "editType": "style", + "valType": "number" + }, + "legendwidth": { + "description": "Sets the width (in px or fraction) of the legend for this trace.", + "editType": "style", + "min": 0, + "valType": "number" + }, + "line": { + "color": { + "description": "Sets the line color.", + "editType": "calc", + "valType": "color" + }, + "dash": { + "description": "Sets the style of the lines.", + "dflt": "solid", + "editType": "calc", + "valType": "enumerated", + "values": [ + "dash", + "dashdot", + "dot", + "longdash", + "longdashdot", + "solid" + ] + }, + "editType": "calc", + "role": "object", + "width": { + "description": "Sets the line width (in px).", + "dflt": 2, + "editType": "calc", + "min": 0, + "valType": "number" + } + }, + "marker": { + "angle": { + "arrayOk": true, + "description": "Sets the marker angle in respect to `angleref`.", + "dflt": 0, + "editType": "calc", + "valType": "angle" + }, + "anglesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `angle`.", + "editType": "none", + "valType": "string" + }, + "autocolorscale": { + "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "cauto": { + "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "cmax": { + "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "cmid": { + "description": "Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`.", + "dflt": null, + "editType": "calc", + "impliedEdits": {}, + "valType": "number" + }, + "cmin": { + "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "color": { + "arrayOk": true, + "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.", + "editType": "calc", + "valType": "color" + }, + "coloraxis": { + "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.", + "dflt": null, + "editType": "calc", + "regex": "/^coloraxis([2-9]|[1-9][0-9]+)?$/", + "valType": "subplotid" + }, + "colorbar": { + "bgcolor": { + "description": "Sets the color of padded area.", + "dflt": "rgba(0,0,0,0)", + "editType": "calc", + "valType": "color" + }, + "bordercolor": { + "description": "Sets the axis line color.", + "dflt": "#444", + "editType": "calc", + "valType": "color" + }, + "borderwidth": { + "description": "Sets the width (in px) or the border enclosing this color bar.", + "dflt": 0, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "dtick": { + "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*", + "editType": "calc", + "impliedEdits": { + "tickmode": "linear" + }, + "valType": "any" + }, + "editType": "calc", + "exponentformat": { + "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from \"femto\" f (10^-15) to \"tera\" T (10^12). *SI extended* covers instead the full SI range from \"quecto\" q (10^-30) to \"quetta\" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation.", + "dflt": "B", + "editType": "calc", + "valType": "enumerated", + "values": [ + "none", + "e", + "E", + "power", + "SI", + "B", + "SI extended" + ] + }, + "labelalias": { + "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax.", + "dflt": false, + "editType": "calc", + "valType": "any" + }, + "len": { + "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.", + "dflt": 1, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "lenmode": { + "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.", + "dflt": "fraction", + "editType": "calc", + "valType": "enumerated", + "values": [ + "fraction", + "pixels" + ] + }, + "minexponent": { + "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.", + "dflt": 3, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "nticks": { + "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.", + "dflt": 0, + "editType": "calc", + "min": 0, + "valType": "integer" + }, + "orientation": { + "description": "Sets the orientation of the colorbar.", + "dflt": "v", + "editType": "calc", + "valType": "enumerated", + "values": [ + "h", + "v" + ] + }, + "outlinecolor": { + "description": "Sets the axis line color.", + "dflt": "#444", + "editType": "calc", + "valType": "color" + }, + "outlinewidth": { + "description": "Sets the width (in px) of the axis line.", + "dflt": 1, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "role": "object", + "separatethousands": { + "description": "If \"true\", even 4-digit integers are separated", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "showexponent": { + "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.", + "dflt": "all", + "editType": "calc", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "showticklabels": { + "description": "Determines whether or not the tick labels are drawn.", + "dflt": true, + "editType": "calc", + "valType": "boolean" + }, + "showtickprefix": { + "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.", + "dflt": "all", + "editType": "calc", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "showticksuffix": { + "description": "Same as `showtickprefix` but for tick suffixes.", + "dflt": "all", + "editType": "calc", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "thickness": { + "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.", + "dflt": 30, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "thicknessmode": { + "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.", + "dflt": "pixels", + "editType": "calc", + "valType": "enumerated", + "values": [ + "fraction", + "pixels" + ] + }, + "tick0": { + "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears.", + "editType": "calc", + "impliedEdits": { + "tickmode": "linear" + }, + "valType": "any" + }, + "tickangle": { + "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.", + "dflt": "auto", + "editType": "calc", + "valType": "angle" + }, + "tickcolor": { + "description": "Sets the tick color.", + "dflt": "#444", + "editType": "calc", + "valType": "color" + }, + "tickfont": { + "color": { + "editType": "calc", + "valType": "color" + }, + "description": "Sets the color bar's tick label font", + "editType": "calc", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "calc", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "calc", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "calc", + "valType": "string" + }, + "size": { + "editType": "calc", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "calc", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "tickformat": { + "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*", + "dflt": "", + "editType": "calc", + "valType": "string" + }, + "tickformatstops": { + "items": { + "tickformatstop": { + "dtickrange": { + "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*", + "editType": "calc", + "items": [ + { + "editType": "calc", + "valType": "any" + }, + { + "editType": "calc", + "valType": "any" + } + ], + "valType": "info_array" + }, + "editType": "calc", + "enabled": { + "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.", + "dflt": true, + "editType": "calc", + "valType": "boolean" + }, + "name": { + "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.", + "editType": "calc", + "valType": "string" + }, + "role": "object", + "templateitemname": { + "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.", + "editType": "calc", + "valType": "string" + }, + "value": { + "description": "string - dtickformat for described zoom level, the same as *tickformat*", + "dflt": "", + "editType": "calc", + "valType": "string" + } + } + }, + "role": "object" + }, + "ticklabeloverflow": { + "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.", + "editType": "calc", + "valType": "enumerated", + "values": [ + "allow", + "hide past div", + "hide past domain" + ] + }, + "ticklabelposition": { + "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.", + "dflt": "outside", + "editType": "calc", + "valType": "enumerated", + "values": [ + "outside", + "inside", + "outside top", + "inside top", + "outside left", + "inside left", + "outside right", + "inside right", + "outside bottom", + "inside bottom" + ] + }, + "ticklabelstep": { + "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.", + "dflt": 1, + "editType": "calc", + "min": 1, + "valType": "integer" + }, + "ticklen": { + "description": "Sets the tick length (in px).", + "dflt": 5, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "tickmode": { + "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).", + "editType": "calc", + "impliedEdits": {}, + "valType": "enumerated", + "values": [ + "auto", + "linear", + "array" + ] + }, + "tickprefix": { + "description": "Sets a tick label prefix.", + "dflt": "", + "editType": "calc", + "valType": "string" + }, + "ticks": { + "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.", + "dflt": "", + "editType": "calc", + "valType": "enumerated", + "values": [ + "outside", + "inside", + "" + ] + }, + "ticksuffix": { + "description": "Sets a tick label suffix.", + "dflt": "", + "editType": "calc", + "valType": "string" + }, + "ticktext": { + "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", + "editType": "calc", + "valType": "data_array" + }, + "ticktextsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", + "editType": "none", + "valType": "string" + }, + "tickvals": { + "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", + "editType": "calc", + "valType": "data_array" + }, + "tickvalssrc": { + "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", + "editType": "none", + "valType": "string" + }, + "tickwidth": { + "description": "Sets the tick width (in px).", + "dflt": 1, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "title": { + "editType": "calc", + "font": { + "color": { + "editType": "calc", + "valType": "color" + }, + "description": "Sets this color bar's title font.", + "editType": "calc", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "calc", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "calc", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "calc", + "valType": "string" + }, + "size": { + "editType": "calc", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "calc", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "role": "object", + "side": { + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "editType": "calc", + "valType": "enumerated", + "values": [ + "right", + "top", + "bottom" + ] + }, + "text": { + "description": "Sets the title of the color bar.", + "editType": "calc", + "valType": "string" + } + }, + "x": { + "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.", + "editType": "calc", + "valType": "number" + }, + "xanchor": { + "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.", + "editType": "calc", + "valType": "enumerated", + "values": [ + "left", + "center", + "right" + ] + }, + "xpad": { + "description": "Sets the amount of padding (in px) along the x direction.", + "dflt": 10, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "xref": { + "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.", + "dflt": "paper", + "editType": "calc", + "valType": "enumerated", + "values": [ + "container", + "paper" + ] + }, + "y": { + "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.", + "editType": "calc", + "valType": "number" + }, + "yanchor": { + "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.", + "editType": "calc", + "valType": "enumerated", + "values": [ + "top", + "middle", + "bottom" + ] + }, + "ypad": { + "description": "Sets the amount of padding (in px) along the y direction.", + "dflt": 10, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "yref": { + "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.", + "dflt": "paper", + "editType": "calc", + "valType": "enumerated", + "values": [ + "container", + "paper" + ] + } + }, + "colorscale": { + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "autocolorscale": false + }, + "valType": "colorscale" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "editType": "calc", + "line": { + "autocolorscale": { + "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. Has an effect only if in `marker.line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "cauto": { + "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.line.color`) or the bounds set in `marker.line.cmin` and `marker.line.cmax` Has an effect only if in `marker.line.color` is set to a numerical array. Defaults to `false` when `marker.line.cmin` and `marker.line.cmax` are set by the user.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "cmax": { + "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmin` must be set as well.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "cmid": { + "description": "Sets the mid-point of the color domain by scaling `marker.line.cmin` and/or `marker.line.cmax` to be equidistant to this point. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color`. Has no effect when `marker.line.cauto` is `false`.", + "dflt": null, + "editType": "calc", + "impliedEdits": {}, + "valType": "number" + }, + "cmin": { + "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmax` must be set as well.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "color": { + "arrayOk": true, + "description": "Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set.", + "editType": "calc", + "valType": "color" + }, + "coloraxis": { + "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.", + "dflt": null, + "editType": "calc", + "regex": "/^coloraxis([2-9]|[1-9][0-9]+)?$/", + "valType": "subplotid" + }, + "colorscale": { + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "autocolorscale": false + }, + "valType": "colorscale" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "editType": "calc", + "reversescale": { + "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "role": "object", + "width": { + "arrayOk": true, + "description": "Sets the width (in px) of the lines bounding the marker points.", + "editType": "calc", + "min": 0, + "valType": "number" + }, + "widthsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `width`.", + "editType": "none", + "valType": "string" + } + }, + "opacity": { + "arrayOk": true, + "description": "Sets the marker opacity.", + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + "opacitysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", + "editType": "none", + "valType": "string" + }, + "reversescale": { + "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "role": "object", + "showscale": { + "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "size": { + "arrayOk": true, + "description": "Sets the marker size (in px).", + "dflt": 6, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "sizemin": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points.", + "dflt": 0, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "sizemode": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels.", + "dflt": "diameter", + "editType": "calc", + "valType": "enumerated", + "values": [ + "diameter", + "area" + ] + }, + "sizeref": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`.", + "dflt": 1, + "editType": "calc", + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "symbol": { + "arrayOk": true, + "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.", + "dflt": "circle", + "editType": "calc", + "valType": "enumerated", + "values": [ + 0, + "0", + "circle", + 100, + "100", + "circle-open", + 200, + "200", + "circle-dot", + 300, + "300", + "circle-open-dot", + 1, + "1", + "square", + 101, + "101", + "square-open", + 201, + "201", + "square-dot", + 301, + "301", + "square-open-dot", + 2, + "2", + "diamond", + 102, + "102", + "diamond-open", + 202, + "202", + "diamond-dot", + 302, + "302", + "diamond-open-dot", + 3, + "3", + "cross", + 103, + "103", + "cross-open", + 203, + "203", + "cross-dot", + 303, + "303", + "cross-open-dot", + 4, + "4", + "x", + 104, + "104", + "x-open", + 204, + "204", + "x-dot", + 304, + "304", + "x-open-dot", + 5, + "5", + "triangle-up", + 105, + "105", + "triangle-up-open", + 205, + "205", + "triangle-up-dot", + 305, + "305", + "triangle-up-open-dot", + 6, + "6", + "triangle-down", + 106, + "106", + "triangle-down-open", + 206, + "206", + "triangle-down-dot", + 306, + "306", + "triangle-down-open-dot", + 7, + "7", + "triangle-left", + 107, + "107", + "triangle-left-open", + 207, + "207", + "triangle-left-dot", + 307, + "307", + "triangle-left-open-dot", + 8, + "8", + "triangle-right", + 108, + "108", + "triangle-right-open", + 208, + "208", + "triangle-right-dot", + 308, + "308", + "triangle-right-open-dot", + 9, + "9", + "triangle-ne", + 109, + "109", + "triangle-ne-open", + 209, + "209", + "triangle-ne-dot", + 309, + "309", + "triangle-ne-open-dot", + 10, + "10", + "triangle-se", + 110, + "110", + "triangle-se-open", + 210, + "210", + "triangle-se-dot", + 310, + "310", + "triangle-se-open-dot", + 11, + "11", + "triangle-sw", + 111, + "111", + "triangle-sw-open", + 211, + "211", + "triangle-sw-dot", + 311, + "311", + "triangle-sw-open-dot", + 12, + "12", + "triangle-nw", + 112, + "112", + "triangle-nw-open", + 212, + "212", + "triangle-nw-dot", + 312, + "312", + "triangle-nw-open-dot", + 13, + "13", + "pentagon", + 113, + "113", + "pentagon-open", + 213, + "213", + "pentagon-dot", + 313, + "313", + "pentagon-open-dot", + 14, + "14", + "hexagon", + 114, + "114", + "hexagon-open", + 214, + "214", + "hexagon-dot", + 314, + "314", + "hexagon-open-dot", + 15, + "15", + "hexagon2", + 115, + "115", + "hexagon2-open", + 215, + "215", + "hexagon2-dot", + 315, + "315", + "hexagon2-open-dot", + 16, + "16", + "octagon", + 116, + "116", + "octagon-open", + 216, + "216", + "octagon-dot", + 316, + "316", + "octagon-open-dot", + 17, + "17", + "star", + 117, + "117", + "star-open", + 217, + "217", + "star-dot", + 317, + "317", + "star-open-dot", + 18, + "18", + "hexagram", + 118, + "118", + "hexagram-open", + 218, + "218", + "hexagram-dot", + 318, + "318", + "hexagram-open-dot", + 19, + "19", + "star-triangle-up", + 119, + "119", + "star-triangle-up-open", + 219, + "219", + "star-triangle-up-dot", + 319, + "319", + "star-triangle-up-open-dot", + 20, + "20", + "star-triangle-down", + 120, + "120", + "star-triangle-down-open", + 220, + "220", + "star-triangle-down-dot", + 320, + "320", + "star-triangle-down-open-dot", + 21, + "21", + "star-square", + 121, + "121", + "star-square-open", + 221, + "221", + "star-square-dot", + 321, + "321", + "star-square-open-dot", + 22, + "22", + "star-diamond", + 122, + "122", + "star-diamond-open", + 222, + "222", + "star-diamond-dot", + 322, + "322", + "star-diamond-open-dot", + 23, + "23", + "diamond-tall", + 123, + "123", + "diamond-tall-open", + 223, + "223", + "diamond-tall-dot", + 323, + "323", + "diamond-tall-open-dot", + 24, + "24", + "diamond-wide", + 124, + "124", + "diamond-wide-open", + 224, + "224", + "diamond-wide-dot", + 324, + "324", + "diamond-wide-open-dot", + 25, + "25", + "hourglass", + 125, + "125", + "hourglass-open", + 26, + "26", + "bowtie", + 126, + "126", + "bowtie-open", + 27, + "27", + "circle-cross", + 127, + "127", + "circle-cross-open", + 28, + "28", + "circle-x", + 128, + "128", + "circle-x-open", + 29, + "29", + "square-cross", + 129, + "129", + "square-cross-open", + 30, + "30", + "square-x", + 130, + "130", + "square-x-open", + 31, + "31", + "diamond-cross", + 131, + "131", + "diamond-cross-open", + 32, + "32", + "diamond-x", + 132, + "132", + "diamond-x-open", + 33, + "33", + "cross-thin", + 133, + "133", + "cross-thin-open", + 34, + "34", + "x-thin", + 134, + "134", + "x-thin-open", + 35, + "35", + "asterisk", + 135, + "135", + "asterisk-open", + 36, + "36", + "hash", + 136, + "136", + "hash-open", + 236, + "236", + "hash-dot", + 336, + "336", + "hash-open-dot", + 37, + "37", + "y-up", + 137, + "137", + "y-up-open", + 38, + "38", + "y-down", + 138, + "138", + "y-down-open", + 39, + "39", + "y-left", + 139, + "139", + "y-left-open", + 40, + "40", + "y-right", + 140, + "140", + "y-right-open", + 41, + "41", + "line-ew", + 141, + "141", + "line-ew-open", + 42, + "42", + "line-ns", + 142, + "142", + "line-ns-open", + 43, + "43", + "line-ne", + 143, + "143", + "line-ne-open", + 44, + "44", + "line-nw", + 144, + "144", + "line-nw-open", + 45, + "45", + "arrow-up", + 145, + "145", + "arrow-up-open", + 46, + "46", + "arrow-down", + 146, + "146", + "arrow-down-open", + 47, + "47", + "arrow-left", + 147, + "147", + "arrow-left-open", + 48, + "48", + "arrow-right", + 148, + "148", + "arrow-right-open", + 49, + "49", + "arrow-bar-up", + 149, + "149", + "arrow-bar-up-open", + 50, + "50", + "arrow-bar-down", + 150, + "150", + "arrow-bar-down-open", + 51, + "51", + "arrow-bar-left", + 151, + "151", + "arrow-bar-left-open", + 52, + "52", + "arrow-bar-right", + 152, + "152", + "arrow-bar-right-open", + 53, + "53", + "arrow", + 153, + "153", + "arrow-open", + 54, + "54", + "arrow-wide", + 154, + "154", + "arrow-wide-open" + ] + }, + "symbolsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", + "editType": "none", + "valType": "string" + } + }, + "meta": { + "arrayOk": true, + "description": "Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index.", + "editType": "plot", + "valType": "any" + }, + "metasrc": { + "description": "Sets the source reference on Chart Studio Cloud for `meta`.", + "editType": "none", + "valType": "string" + }, + "mode": { + "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*.", + "editType": "calc", + "extras": [ + "none" + ], + "flags": [ + "lines", + "markers", + "text" + ], + "valType": "flaglist" + }, + "name": { + "description": "Sets the trace name. The trace name appears as the legend item and on hover.", + "editType": "style", + "valType": "string" + }, + "opacity": { + "description": "Sets the opacity of the trace.", + "dflt": 1, + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "r": { + "description": "Sets the radial coordinates", + "editType": "calc+clearAxisTypes", + "valType": "data_array" + }, + "r0": { + "description": "Alternate to `r`. Builds a linear space of r coordinates. Use with `dr` where `r0` is the starting coordinate and `dr` the step.", + "dflt": 0, + "editType": "calc+clearAxisTypes", + "valType": "any" + }, + "rsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `r`.", + "editType": "none", + "valType": "string" + }, + "selected": { + "editType": "style", + "marker": { + "color": { + "description": "Sets the marker color of selected points.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "opacity": { + "description": "Sets the marker opacity of selected points.", + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "role": "object", + "size": { + "description": "Sets the marker size of selected points.", + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "role": "object", + "textfont": { + "color": { + "description": "Sets the text font color of selected points.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "role": "object" + } + }, + "selectedpoints": { + "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.", + "editType": "calc", + "valType": "any" + }, + "showlegend": { + "description": "Determines whether or not an item corresponding to this trace is shown in the legend.", + "dflt": true, + "editType": "style", + "valType": "boolean" + }, + "stream": { + "editType": "calc", + "maxpoints": { + "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", + "dflt": 500, + "editType": "calc", + "max": 10000, + "min": 0, + "valType": "number" + }, + "role": "object", + "token": { + "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", + "editType": "calc", + "noBlank": true, + "strict": true, + "valType": "string" + } + }, + "subplot": { + "description": "Sets a reference between this trace's data coordinates and a polar subplot. If *polar* (the default value), the data refer to `layout.polar`. If *polar2*, the data refer to `layout.polar2`, and so on.", + "dflt": "polar", + "editType": "calc", + "valType": "subplotid" + }, + "text": { + "arrayOk": true, + "description": "Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", + "dflt": "", + "editType": "calc", + "valType": "string" + }, + "textfont": { + "color": { + "arrayOk": true, + "editType": "calc", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "description": "Sets the text font.", + "editType": "calc", + "family": { + "arrayOk": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "calc", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "familysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `family`.", + "editType": "none", + "valType": "string" + }, + "role": "object", + "size": { + "arrayOk": true, + "editType": "calc", + "min": 1, + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "style": { + "arrayOk": true, + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "stylesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `style`.", + "editType": "none", + "valType": "string" + }, + "variant": { + "arrayOk": true, + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "small-caps" + ] + }, + "variantsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `variant`.", + "editType": "none", + "valType": "string" + }, + "weight": { + "arrayOk": true, + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "bold" + ] + }, + "weightsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `weight`.", + "editType": "none", + "valType": "string" + } + }, + "textposition": { + "arrayOk": true, + "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.", + "dflt": "middle center", + "editType": "calc", + "valType": "enumerated", + "values": [ + "top left", + "top center", + "top right", + "middle left", + "middle center", + "middle right", + "bottom left", + "bottom center", + "bottom right" + ] + }, + "textpositionsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", + "editType": "none", + "valType": "string" + }, + "textsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `text`.", + "editType": "none", + "valType": "string" + }, + "texttemplate": { + "arrayOk": true, + "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `r`, `theta` and `text`.", + "dflt": "", + "editType": "plot", + "valType": "string" + }, + "texttemplatefallback": { + "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", + "dflt": "-", + "editType": "plot", + "valType": "any" + }, + "texttemplatesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", + "editType": "none", + "valType": "string" + }, + "theta": { + "description": "Sets the angular coordinates", + "editType": "calc+clearAxisTypes", + "valType": "data_array" + }, + "theta0": { + "description": "Alternate to `theta`. Builds a linear space of theta coordinates. Use with `dtheta` where `theta0` is the starting coordinate and `dtheta` the step.", + "dflt": 0, + "editType": "calc+clearAxisTypes", + "valType": "any" + }, + "thetasrc": { + "description": "Sets the source reference on Chart Studio Cloud for `theta`.", + "editType": "none", + "valType": "string" + }, + "thetaunit": { + "description": "Sets the unit of input *theta* values. Has an effect only when on *linear* angular axes.", + "dflt": "degrees", + "editType": "calc+clearAxisTypes", + "valType": "enumerated", + "values": [ + "radians", + "degrees", + "gradians" + ] + }, + "type": "scatterpolargl", + "uid": { + "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", + "editType": "plot", + "valType": "string" + }, + "uirevision": { + "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves.", + "editType": "none", + "valType": "any" + }, + "unselected": { + "editType": "style", + "marker": { + "color": { + "description": "Sets the marker color of unselected points, applied only when a selection exists.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "opacity": { + "description": "Sets the marker opacity of unselected points, applied only when a selection exists.", + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "role": "object", + "size": { + "description": "Sets the marker size of unselected points, applied only when a selection exists.", + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "role": "object", + "textfont": { + "color": { + "description": "Sets the text font color of unselected points, applied only when a selection exists.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "role": "object" + } + }, + "visible": { + "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).", + "dflt": true, + "editType": "calc", + "valType": "enumerated", + "values": [ + true, + false, + "legendonly" + ] + } + }, + "categories": [ + "gl", + "regl", + "polar", + "symbols", + "showLegend", + "scatter-like" + ], + "meta": { + "description": "The scatterpolargl trace type encompasses line charts, scatter charts, and bubble charts in polar coordinates using the WebGL plotting engine. The data visualized as scatter point or lines is set in `r` (radial) and `theta` (angular) coordinates Bubble charts are achieved by setting `marker.size` and/or `marker.color` to numerical arrays.", + "hrName": "scatter_polar_gl" + }, + "type": "scatterpolargl" + }, + "quiver": { + "animatable": true, + "attributes": { + "angle": { + "description": "Angle of arrowhead in radians. Default = π/9", + "dflt": 0.3490658503988659, + "editType": "calc", + "max": 1.5707963267948966, + "min": 0, + "valType": "number" + }, + "arrow_scale": { + "description": "Value multiplied to length of barb to get length of arrowhead. Default = 0.3", + "dflt": 0.3, + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + "customdata": { + "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements", + "editType": "calc", + "valType": "data_array" + }, + "customdatasrc": { + "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", + "editType": "none", + "valType": "string" + }, + "hoverdistance": { + "description": "Maximum distance (in pixels) to look for nearby arrows on hover.", + "dflt": 20, + "editType": "calc", + "min": -1, + "valType": "number" + }, + "hoverinfo": { + "arrayOk": true, + "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.", + "dflt": "all", + "editType": "none", + "extras": [ + "all", + "none", + "skip" + ], + "flags": [ + "x", + "y", + "u", + "v", + "text", + "name" + ], + "valType": "flaglist" + }, + "hoverinfosrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", + "editType": "none", + "valType": "string" + }, + "hoverlabel": { + "align": { + "arrayOk": true, + "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines", + "dflt": "auto", + "editType": "none", + "valType": "enumerated", + "values": [ + "left", + "right", + "auto" + ] + }, + "alignsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `align`.", + "editType": "none", + "valType": "string" + }, + "bgcolor": { + "arrayOk": true, + "description": "Sets the background color of the hover labels for this trace", + "editType": "none", + "valType": "color" + }, + "bgcolorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", + "editType": "none", + "valType": "string" + }, + "bordercolor": { + "arrayOk": true, + "description": "Sets the border color of the hover labels for this trace.", + "editType": "none", + "valType": "color" + }, + "bordercolorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", + "editType": "none", + "valType": "string" + }, + "editType": "none", + "font": { + "color": { + "arrayOk": true, + "editType": "none", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "description": "Sets the font used in hover labels.", + "editType": "none", + "family": { + "arrayOk": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "none", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "familysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `family`.", + "editType": "none", + "valType": "string" + }, + "lineposition": { + "arrayOk": true, + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "none", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "linepositionsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", + "editType": "none", + "valType": "string" + }, + "role": "object", + "shadow": { + "arrayOk": true, + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "none", + "valType": "string" + }, + "shadowsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", + "editType": "none", + "valType": "string" + }, + "size": { + "arrayOk": true, + "editType": "none", + "min": 1, + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "style": { + "arrayOk": true, + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "none", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "stylesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `style`.", + "editType": "none", + "valType": "string" + }, + "textcase": { + "arrayOk": true, + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "none", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "textcasesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", + "editType": "none", + "valType": "string" + }, + "variant": { + "arrayOk": true, + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "none", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "variantsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `variant`.", + "editType": "none", + "valType": "string" + }, + "weight": { + "arrayOk": true, + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "none", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + }, + "weightsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `weight`.", + "editType": "none", + "valType": "string" + } + }, + "namelength": { + "arrayOk": true, + "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.", + "dflt": 15, + "editType": "none", + "min": -1, + "valType": "integer" + }, + "namelengthsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", + "editType": "none", + "valType": "string" + }, + "role": "object", + "showarrow": { + "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", + "dflt": true, + "editType": "none", + "valType": "boolean" + } + }, + "hovertemplate": { + "arrayOk": true, + "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `x`, `y`, `u`, `v`, `text` and `name`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``.", + "dflt": "", + "editType": "none", + "valType": "string" + }, + "hovertemplatesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", + "editType": "none", + "valType": "string" + }, + "ids": { + "anim": true, + "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", + "editType": "calc", + "valType": "data_array" + }, + "idssrc": { + "description": "Sets the source reference on Chart Studio Cloud for `ids`.", + "editType": "none", + "valType": "string" + }, + "legend": { + "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", + "dflt": "legend", + "editType": "style", + "valType": "subplotid" + }, + "legendgroup": { + "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.", + "dflt": "", + "editType": "style", + "valType": "string" + }, + "legendgrouptitle": { + "editType": "style", + "font": { + "color": { + "editType": "style", + "valType": "color" + }, + "description": "Sets this legend group's title font.", + "editType": "style", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "style", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "style", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "style", + "valType": "string" + }, + "size": { + "editType": "style", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "style", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "style", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "style", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "style", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "role": "object", + "text": { + "description": "Sets the title of the legend group.", + "dflt": "", + "editType": "style", + "valType": "string" + } + }, + "legendrank": { + "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.", + "dflt": 1000, + "editType": "style", + "valType": "number" + }, + "legendwidth": { + "description": "Sets the width (in px or fraction) of the legend for this trace.", + "editType": "style", + "min": 0, + "valType": "number" + }, + "line": { + "color": { + "description": "Sets the color of the arrow lines.", + "dflt": "#000", + "editType": "style", + "valType": "color" + }, + "dash": { + "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", + "dflt": "solid", + "editType": "style", + "valType": "string", + "values": [ + "solid", + "dot", + "dash", + "longdash", + "dashdot", + "longdashdot" + ] + }, + "editType": "style", + "role": "object", + "shape": { + "description": "Determines the line shape.", + "dflt": "linear", + "editType": "plot", + "valType": "enumerated", + "values": [ + "linear", + "spline", + "hv", + "vh", + "hvh", + "vhv" + ] + }, + "simplify": { + "description": "Simplifies lines by removing nearly-overlapping points.", + "dflt": true, + "editType": "plot", + "valType": "boolean" + }, + "smoothing": { + "description": "Has an effect only if `shape` is set to *spline*. Sets the amount of smoothing.", + "dflt": 1, + "editType": "plot", + "max": 1.3, + "min": 0, + "valType": "number" + }, + "width": { + "description": "Sets the width (in px) of the arrow lines.", + "dflt": 1, + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "meta": { + "arrayOk": true, + "description": "Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index.", + "editType": "plot", + "valType": "any" + }, + "metasrc": { + "description": "Sets the source reference on Chart Studio Cloud for `meta`.", + "editType": "none", + "valType": "string" + }, + "name": { + "description": "Sets the trace name. The trace name appears as the legend item and on hover.", + "editType": "style", + "valType": "string" + }, + "opacity": { + "description": "Sets the opacity of the trace.", + "dflt": 1, + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "scale": { + "description": "Scales size of the arrows (ideally to avoid overlap). Default = 0.1", + "dflt": 0.1, + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + "scaleratio": { + "description": "The ratio between the scale of the y-axis and the scale of the x-axis (scale_y / scale_x). Default = null, the scale ratio is not fixed.", + "editType": "calc", + "min": 0, + "valType": "number" + }, + "selected": { + "editType": "style", + "line": { + "color": { + "description": "Sets the line color of selected points.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "role": "object", + "width": { + "description": "Sets the line width of selected points.", + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "role": "object", + "textfont": { + "color": { + "description": "Sets the text font color of selected points, applied only when a selection exists.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "role": "object" + } + }, + "selectedpoints": { + "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.", + "editType": "calc", + "valType": "any" + }, + "showlegend": { + "description": "Determines whether or not an item corresponding to this trace is shown in the legend.", + "dflt": true, + "editType": "style", + "valType": "boolean" + }, + "stream": { + "editType": "calc", + "maxpoints": { + "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", + "dflt": 500, + "editType": "calc", + "max": 10000, + "min": 0, + "valType": "number" + }, + "role": "object", + "token": { + "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", + "editType": "calc", + "noBlank": true, + "strict": true, + "valType": "string" + } + }, + "text": { + "anim": true, + "description": "Sets text elements associated with each (x,y) pair.", + "editType": "calc", + "valType": "data_array" + }, + "textfont": { + "color": { + "arrayOk": true, + "editType": "style", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "description": "Sets the text font.", + "editType": "calc", + "family": { + "arrayOk": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "calc", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "familysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `family`.", + "editType": "none", + "valType": "string" + }, + "lineposition": { + "arrayOk": true, + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "calc", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "linepositionsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", + "editType": "none", + "valType": "string" + }, + "role": "object", + "shadow": { + "arrayOk": true, + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "calc", + "valType": "string" + }, + "shadowsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", + "editType": "none", + "valType": "string" + }, + "size": { + "arrayOk": true, + "editType": "calc", + "min": 1, + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "style": { + "arrayOk": true, + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "stylesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `style`.", + "editType": "none", + "valType": "string" + }, + "textcase": { + "arrayOk": true, + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "textcasesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", + "editType": "none", + "valType": "string" + }, + "variant": { + "arrayOk": true, + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "variantsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `variant`.", + "editType": "none", + "valType": "string" + }, + "weight": { + "arrayOk": true, + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "calc", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + }, + "weightsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `weight`.", + "editType": "none", + "valType": "string" + } + }, + "textposition": { + "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.", + "dflt": "middle center", + "editType": "calc", + "valType": "enumerated", + "values": [ + "top left", + "top center", + "top right", + "middle left", + "middle center", + "middle right", + "bottom left", + "bottom center", + "bottom right" + ] + }, + "textsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `text`.", + "editType": "none", + "valType": "string" + }, + "type": "quiver", + "u": { + "anim": true, + "description": "Sets the x components of the arrow vectors.", + "editType": "calc", + "valType": "data_array" + }, + "uid": { + "anim": true, + "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", + "editType": "plot", + "valType": "string" + }, + "uirevision": { + "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves.", + "editType": "none", + "valType": "any" + }, + "unselected": { + "editType": "style", + "line": { + "color": { + "description": "Sets the line color of unselected points.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "role": "object", + "width": { + "description": "Sets the line width of unselected points.", + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "role": "object", + "textfont": { + "color": { + "description": "Sets the text font color of unselected points, applied only when a selection exists.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "role": "object" + } + }, + "usrc": { + "description": "Sets the source reference on Chart Studio Cloud for `u`.", + "editType": "none", + "valType": "string" + }, + "v": { + "anim": true, + "description": "Sets the y components of the arrow vectors.", + "editType": "calc", + "valType": "data_array" + }, + "visible": { + "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).", + "dflt": true, + "editType": "calc", + "valType": "enumerated", + "values": [ + true, + false, + "legendonly" + ] + }, + "vsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `v`.", + "editType": "none", + "valType": "string" + }, + "x": { + "anim": true, + "description": "Sets the x coordinates of the arrow locations.", + "editType": "calc+clearAxisTypes", + "valType": "data_array" + }, + "xaxis": { + "description": "Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on.", + "dflt": "x", + "editType": "calc+clearAxisTypes", + "valType": "subplotid" + }, + "xsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `x`.", + "editType": "none", + "valType": "string" + }, + "y": { + "anim": true, + "description": "Sets the y coordinates of the arrow locations.", + "editType": "calc+clearAxisTypes", + "valType": "data_array" + }, + "yaxis": { + "description": "Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on.", + "dflt": "y", + "editType": "calc+clearAxisTypes", + "valType": "subplotid" + }, + "ysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `y`.", + "editType": "none", + "valType": "string" + } + }, + "categories": [ + "cartesian", + "svg", + "showLegend", + "scatter-like", + "zoomScale" + ], + "meta": { + "description": "The quiver trace type visualizes vector fields using arrows. Specify a vector field using 4 1D arrays: 2 position arrays `x`, `y` and 2 vector component arrays `u`, `v`. The arrows are drawn exactly at the positions given by `x` and `y`. Arrow length and direction are determined by `u` and `v` components." + }, + "type": "quiver" + }, + "scattersmith": { + "animatable": false, + "attributes": { + "cliponaxis": { + "description": "Determines whether or not markers and text nodes are clipped about the subplot axes. To show markers and text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*.", + "dflt": false, + "editType": "plot", + "valType": "boolean" + }, + "connectgaps": { + "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "customdata": { + "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements", + "editType": "calc", + "valType": "data_array" + }, + "customdatasrc": { + "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", + "editType": "none", + "valType": "string" + }, + "fill": { + "description": "Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. scattersmith has a subset of the options available to scatter. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other.", + "dflt": "none", + "editType": "calc", + "valType": "enumerated", + "values": [ + "none", + "toself", + "tonext" + ] + }, + "fillcolor": { + "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available.", + "editType": "style", + "valType": "color" + }, + "hoverinfo": { + "arrayOk": true, + "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.", + "dflt": "all", + "editType": "none", + "extras": [ + "all", + "none", + "skip" + ], + "flags": [ + "real", + "imag", + "text", + "name" + ], + "valType": "flaglist" + }, + "hoverinfosrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", + "editType": "none", + "valType": "string" + }, + "hoverlabel": { + "align": { + "arrayOk": true, + "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines", + "dflt": "auto", + "editType": "none", + "valType": "enumerated", + "values": [ + "left", + "right", + "auto" + ] + }, + "alignsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `align`.", + "editType": "none", + "valType": "string" + }, + "bgcolor": { + "arrayOk": true, + "description": "Sets the background color of the hover labels for this trace", + "editType": "none", + "valType": "color" + }, + "bgcolorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", + "editType": "none", + "valType": "string" + }, + "bordercolor": { + "arrayOk": true, + "description": "Sets the border color of the hover labels for this trace.", + "editType": "none", + "valType": "color" + }, + "bordercolorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", + "editType": "none", + "valType": "string" + }, + "editType": "none", + "font": { + "color": { + "arrayOk": true, + "editType": "none", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "description": "Sets the font used in hover labels.", + "editType": "none", + "family": { + "arrayOk": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "none", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "familysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `family`.", + "editType": "none", + "valType": "string" + }, + "lineposition": { + "arrayOk": true, + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "none", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "linepositionsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", + "editType": "none", + "valType": "string" + }, + "role": "object", + "shadow": { + "arrayOk": true, + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "none", + "valType": "string" + }, + "shadowsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", + "editType": "none", + "valType": "string" + }, + "size": { + "arrayOk": true, + "editType": "none", + "min": 1, + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "style": { + "arrayOk": true, + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "none", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "stylesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `style`.", + "editType": "none", + "valType": "string" + }, + "textcase": { + "arrayOk": true, + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "none", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "textcasesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", + "editType": "none", + "valType": "string" + }, + "variant": { + "arrayOk": true, + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "none", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "variantsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `variant`.", + "editType": "none", + "valType": "string" + }, + "weight": { + "arrayOk": true, + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "none", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + }, + "weightsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `weight`.", + "editType": "none", + "valType": "string" + } + }, + "namelength": { + "arrayOk": true, + "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.", + "dflt": 15, + "editType": "none", + "min": -1, + "valType": "integer" + }, + "namelengthsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", + "editType": "none", + "valType": "string" + }, + "role": "object", + "showarrow": { + "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", + "dflt": true, + "editType": "none", + "valType": "boolean" + } + }, + "hoveron": { + "description": "Do the hover effects highlight individual points (markers or line points) or do they highlight filled regions? If the fill is *toself* or *tonext* and there are no markers or text, then the default is *fills*, otherwise it is *points*.", + "editType": "style", + "flags": [ + "points", + "fills" + ], + "valType": "flaglist" + }, + "hovertemplate": { + "arrayOk": true, + "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``.", + "dflt": "", + "editType": "none", + "valType": "string" + }, + "hovertemplatefallback": { + "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", + "dflt": "-", + "editType": "none", + "valType": "any" + }, + "hovertemplatesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", + "editType": "none", + "valType": "string" + }, + "hovertext": { + "arrayOk": true, + "description": "Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", + "dflt": "", + "editType": "style", + "valType": "string" + }, + "hovertextsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", + "editType": "none", + "valType": "string" + }, + "ids": { + "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", + "editType": "calc", + "valType": "data_array" + }, + "idssrc": { + "description": "Sets the source reference on Chart Studio Cloud for `ids`.", + "editType": "none", + "valType": "string" + }, + "imag": { + "description": "Sets the imaginary component of the data, in units of normalized impedance such that real=1, imag=0 is the center of the chart.", + "editType": "calc+clearAxisTypes", + "valType": "data_array" + }, + "imagsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `imag`.", + "editType": "none", + "valType": "string" + }, + "legend": { + "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", + "dflt": "legend", + "editType": "style", + "valType": "subplotid" + }, + "legendgroup": { + "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.", + "dflt": "", + "editType": "style", + "valType": "string" + }, + "legendgrouptitle": { + "editType": "style", + "font": { + "color": { + "editType": "style", + "valType": "color" + }, + "description": "Sets this legend group's title font.", + "editType": "style", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "style", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "style", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "style", + "valType": "string" + }, + "size": { + "editType": "style", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "style", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "style", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "style", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "style", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "role": "object", + "text": { + "description": "Sets the title of the legend group.", + "dflt": "", + "editType": "style", + "valType": "string" + } + }, + "legendrank": { + "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.", + "dflt": 1000, + "editType": "style", + "valType": "number" + }, + "legendwidth": { + "description": "Sets the width (in px or fraction) of the legend for this trace.", + "editType": "style", + "min": 0, + "valType": "number" + }, + "line": { + "backoff": { + "arrayOk": true, + "description": "Sets the line back off from the end point of the nth line segment (in px). This option is useful e.g. to avoid overlap with arrowhead markers. With *auto* the lines would trim before markers if `marker.angleref` is set to *previous*.", + "dflt": "auto", + "editType": "plot", + "min": 0, + "valType": "number" + }, + "backoffsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `backoff`.", + "editType": "none", + "valType": "string" + }, + "color": { + "description": "Sets the line color.", + "editType": "style", + "valType": "color" + }, + "dash": { + "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", + "dflt": "solid", + "editType": "style", + "valType": "string", + "values": [ + "solid", + "dot", + "dash", + "longdash", + "dashdot", + "longdashdot" + ] + }, + "editType": "calc", + "role": "object", + "shape": { + "description": "Determines the line shape. With *spline* the lines are drawn using spline interpolation. The other available values correspond to step-wise line shapes.", + "dflt": "linear", + "editType": "plot", + "valType": "enumerated", + "values": [ + "linear", + "spline" + ] + }, + "smoothing": { + "description": "Has an effect only if `shape` is set to *spline* Sets the amount of smoothing. *0* corresponds to no smoothing (equivalent to a *linear* shape).", + "dflt": 1, + "editType": "plot", + "max": 1.3, + "min": 0, + "valType": "number" + }, + "width": { + "description": "Sets the line width (in px).", + "dflt": 2, + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "marker": { + "angle": { + "arrayOk": true, + "description": "Sets the marker angle in respect to `angleref`.", + "dflt": 0, + "editType": "plot", + "valType": "angle" + }, + "angleref": { + "description": "Sets the reference for marker angle. With *previous*, angle 0 points along the line from the previous point to this one. With *up*, angle 0 points toward the top of the screen.", + "dflt": "up", + "editType": "plot", + "valType": "enumerated", + "values": [ + "previous", + "up" + ] + }, + "anglesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `angle`.", + "editType": "none", + "valType": "string" + }, + "autocolorscale": { + "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "cauto": { + "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "cmax": { + "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well.", + "dflt": null, + "editType": "plot", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "cmid": { + "description": "Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`.", + "dflt": null, + "editType": "calc", + "impliedEdits": {}, + "valType": "number" + }, + "cmin": { + "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well.", + "dflt": null, + "editType": "plot", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "color": { + "arrayOk": true, + "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.", + "editType": "style", + "valType": "color" + }, + "coloraxis": { + "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.", + "dflt": null, + "editType": "calc", + "regex": "/^coloraxis([2-9]|[1-9][0-9]+)?$/", + "valType": "subplotid" + }, + "colorbar": { + "bgcolor": { + "description": "Sets the color of padded area.", + "dflt": "rgba(0,0,0,0)", + "editType": "colorbars", + "valType": "color" + }, + "bordercolor": { + "description": "Sets the axis line color.", + "dflt": "#444", + "editType": "colorbars", + "valType": "color" + }, + "borderwidth": { + "description": "Sets the width (in px) or the border enclosing this color bar.", + "dflt": 0, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "dtick": { + "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*", + "editType": "colorbars", + "impliedEdits": { + "tickmode": "linear" + }, + "valType": "any" + }, + "editType": "colorbars", + "exponentformat": { + "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from \"femto\" f (10^-15) to \"tera\" T (10^12). *SI extended* covers instead the full SI range from \"quecto\" q (10^-30) to \"quetta\" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation.", + "dflt": "B", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "none", + "e", + "E", + "power", + "SI", + "B", + "SI extended" + ] + }, + "labelalias": { + "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax.", + "dflt": false, + "editType": "colorbars", + "valType": "any" + }, + "len": { + "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.", + "dflt": 1, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "lenmode": { + "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.", + "dflt": "fraction", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "fraction", + "pixels" + ] + }, + "minexponent": { + "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.", + "dflt": 3, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "nticks": { + "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.", + "dflt": 0, + "editType": "colorbars", + "min": 0, + "valType": "integer" + }, + "orientation": { + "description": "Sets the orientation of the colorbar.", + "dflt": "v", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "h", + "v" + ] + }, + "outlinecolor": { + "description": "Sets the axis line color.", + "dflt": "#444", + "editType": "colorbars", + "valType": "color" + }, + "outlinewidth": { + "description": "Sets the width (in px) of the axis line.", + "dflt": 1, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "role": "object", + "separatethousands": { + "description": "If \"true\", even 4-digit integers are separated", + "dflt": false, + "editType": "colorbars", + "valType": "boolean" + }, + "showexponent": { + "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.", + "dflt": "all", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "showticklabels": { + "description": "Determines whether or not the tick labels are drawn.", + "dflt": true, + "editType": "colorbars", + "valType": "boolean" + }, + "showtickprefix": { + "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.", + "dflt": "all", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "showticksuffix": { + "description": "Same as `showtickprefix` but for tick suffixes.", + "dflt": "all", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "thickness": { + "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.", + "dflt": 30, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "thicknessmode": { + "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.", + "dflt": "pixels", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "fraction", + "pixels" + ] + }, + "tick0": { + "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears.", + "editType": "colorbars", + "impliedEdits": { + "tickmode": "linear" + }, + "valType": "any" + }, + "tickangle": { + "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.", + "dflt": "auto", + "editType": "colorbars", + "valType": "angle" + }, + "tickcolor": { + "description": "Sets the tick color.", + "dflt": "#444", + "editType": "colorbars", + "valType": "color" + }, + "tickfont": { + "color": { + "editType": "colorbars", + "valType": "color" + }, + "description": "Sets the color bar's tick label font", + "editType": "colorbars", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "colorbars", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "colorbars", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "colorbars", + "valType": "string" + }, + "size": { + "editType": "colorbars", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "colorbars", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "tickformat": { + "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*", + "dflt": "", + "editType": "colorbars", + "valType": "string" + }, + "tickformatstops": { + "items": { + "tickformatstop": { + "dtickrange": { + "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*", + "editType": "colorbars", + "items": [ + { + "editType": "colorbars", + "valType": "any" + }, + { + "editType": "colorbars", + "valType": "any" + } + ], + "valType": "info_array" + }, + "editType": "colorbars", + "enabled": { + "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.", + "dflt": true, + "editType": "colorbars", + "valType": "boolean" + }, + "name": { + "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.", + "editType": "colorbars", + "valType": "string" + }, + "role": "object", + "templateitemname": { + "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.", + "editType": "colorbars", + "valType": "string" + }, + "value": { + "description": "string - dtickformat for described zoom level, the same as *tickformat*", + "dflt": "", + "editType": "colorbars", + "valType": "string" + } + } + }, + "role": "object" + }, + "ticklabeloverflow": { + "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "allow", + "hide past div", + "hide past domain" + ] + }, + "ticklabelposition": { + "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.", + "dflt": "outside", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "outside", + "inside", + "outside top", + "inside top", + "outside left", + "inside left", + "outside right", + "inside right", + "outside bottom", + "inside bottom" + ] + }, + "ticklabelstep": { + "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.", + "dflt": 1, + "editType": "colorbars", + "min": 1, + "valType": "integer" + }, + "ticklen": { + "description": "Sets the tick length (in px).", + "dflt": 5, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "tickmode": { + "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).", + "editType": "colorbars", + "impliedEdits": {}, + "valType": "enumerated", + "values": [ + "auto", + "linear", + "array" + ] + }, + "tickprefix": { + "description": "Sets a tick label prefix.", + "dflt": "", + "editType": "colorbars", + "valType": "string" + }, + "ticks": { + "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.", + "dflt": "", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "outside", + "inside", + "" + ] + }, + "ticksuffix": { + "description": "Sets a tick label suffix.", + "dflt": "", + "editType": "colorbars", + "valType": "string" + }, + "ticktext": { + "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", + "editType": "colorbars", + "valType": "data_array" + }, + "ticktextsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", + "editType": "none", + "valType": "string" + }, + "tickvals": { + "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", + "editType": "colorbars", + "valType": "data_array" + }, + "tickvalssrc": { + "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", + "editType": "none", + "valType": "string" + }, + "tickwidth": { + "description": "Sets the tick width (in px).", + "dflt": 1, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "title": { + "editType": "colorbars", + "font": { + "color": { + "editType": "colorbars", + "valType": "color" + }, + "description": "Sets this color bar's title font.", + "editType": "colorbars", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "colorbars", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "colorbars", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "colorbars", + "valType": "string" + }, + "size": { + "editType": "colorbars", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "colorbars", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "role": "object", + "side": { + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "right", + "top", + "bottom" + ] + }, + "text": { + "description": "Sets the title of the color bar.", + "editType": "colorbars", + "valType": "string" + } + }, + "x": { + "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.", + "editType": "colorbars", + "valType": "number" + }, + "xanchor": { + "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "left", + "center", + "right" + ] + }, + "xpad": { + "description": "Sets the amount of padding (in px) along the x direction.", + "dflt": 10, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "xref": { + "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.", + "dflt": "paper", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "container", + "paper" + ] + }, + "y": { + "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.", + "editType": "colorbars", + "valType": "number" + }, + "yanchor": { + "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "top", + "middle", + "bottom" + ] + }, + "ypad": { + "description": "Sets the amount of padding (in px) along the y direction.", + "dflt": 10, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "yref": { + "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.", + "dflt": "paper", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "container", + "paper" + ] + } + }, + "colorscale": { + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "autocolorscale": false + }, + "valType": "colorscale" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "editType": "calc", + "gradient": { + "color": { + "arrayOk": true, + "description": "Sets the final color of the gradient fill: the center color for radial, the right for horizontal, or the bottom for vertical.", + "editType": "calc", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "editType": "calc", + "role": "object", + "type": { + "arrayOk": true, + "description": "Sets the type of gradient used to fill the markers", + "dflt": "none", + "editType": "calc", + "valType": "enumerated", + "values": [ + "radial", + "horizontal", + "vertical", + "none" + ] + }, + "typesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `type`.", + "editType": "none", + "valType": "string" + } + }, + "line": { + "autocolorscale": { + "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. Has an effect only if in `marker.line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "cauto": { + "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.line.color`) or the bounds set in `marker.line.cmin` and `marker.line.cmax` Has an effect only if in `marker.line.color` is set to a numerical array. Defaults to `false` when `marker.line.cmin` and `marker.line.cmax` are set by the user.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "cmax": { + "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmin` must be set as well.", + "dflt": null, + "editType": "plot", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "cmid": { + "description": "Sets the mid-point of the color domain by scaling `marker.line.cmin` and/or `marker.line.cmax` to be equidistant to this point. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color`. Has no effect when `marker.line.cauto` is `false`.", + "dflt": null, + "editType": "calc", + "impliedEdits": {}, + "valType": "number" + }, + "cmin": { + "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmax` must be set as well.", + "dflt": null, + "editType": "plot", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "color": { + "arrayOk": true, + "description": "Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set.", + "editType": "style", + "valType": "color" + }, + "coloraxis": { + "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.", + "dflt": null, + "editType": "calc", + "regex": "/^coloraxis([2-9]|[1-9][0-9]+)?$/", + "valType": "subplotid" + }, + "colorscale": { + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "autocolorscale": false + }, + "valType": "colorscale" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "editType": "calc", + "reversescale": { + "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.", + "dflt": false, + "editType": "plot", + "valType": "boolean" + }, + "role": "object", + "width": { + "arrayOk": true, + "description": "Sets the width (in px) of the lines bounding the marker points.", + "editType": "style", + "min": 0, + "valType": "number" + }, + "widthsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `width`.", + "editType": "none", + "valType": "string" + } + }, + "maxdisplayed": { + "description": "Sets a maximum number of points to be drawn on the graph. *0* corresponds to no limit.", + "dflt": 0, + "editType": "plot", + "min": 0, + "valType": "number" + }, + "opacity": { + "arrayOk": true, + "description": "Sets the marker opacity.", + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "opacitysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", + "editType": "none", + "valType": "string" + }, + "reversescale": { + "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", + "dflt": false, + "editType": "plot", + "valType": "boolean" + }, + "role": "object", + "showscale": { + "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "size": { + "arrayOk": true, + "description": "Sets the marker size (in px).", + "dflt": 6, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "sizemin": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points.", + "dflt": 0, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "sizemode": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels.", + "dflt": "diameter", + "editType": "calc", + "valType": "enumerated", + "values": [ + "diameter", + "area" + ] + }, + "sizeref": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`.", + "dflt": 1, + "editType": "calc", + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "standoff": { + "arrayOk": true, + "description": "Moves the marker away from the data point in the direction of `angle` (in px). This can be useful for example if you have another marker at this location and you want to point an arrowhead marker at it.", + "dflt": 0, + "editType": "plot", + "min": 0, + "valType": "number" + }, + "standoffsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `standoff`.", + "editType": "none", + "valType": "string" + }, + "symbol": { + "arrayOk": true, + "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.", + "dflt": "circle", + "editType": "style", + "valType": "enumerated", + "values": [ + 0, + "0", + "circle", + 100, + "100", + "circle-open", + 200, + "200", + "circle-dot", + 300, + "300", + "circle-open-dot", + 1, + "1", + "square", + 101, + "101", + "square-open", + 201, + "201", + "square-dot", + 301, + "301", + "square-open-dot", + 2, + "2", + "diamond", + 102, + "102", + "diamond-open", + 202, + "202", + "diamond-dot", + 302, + "302", + "diamond-open-dot", + 3, + "3", + "cross", + 103, + "103", + "cross-open", + 203, + "203", + "cross-dot", + 303, + "303", + "cross-open-dot", + 4, + "4", + "x", + 104, + "104", + "x-open", + 204, + "204", + "x-dot", + 304, + "304", + "x-open-dot", + 5, + "5", + "triangle-up", + 105, + "105", + "triangle-up-open", + 205, + "205", + "triangle-up-dot", + 305, + "305", + "triangle-up-open-dot", + 6, + "6", + "triangle-down", + 106, + "106", + "triangle-down-open", + 206, + "206", + "triangle-down-dot", + 306, + "306", + "triangle-down-open-dot", + 7, + "7", + "triangle-left", + 107, + "107", + "triangle-left-open", + 207, + "207", + "triangle-left-dot", + 307, + "307", + "triangle-left-open-dot", + 8, + "8", + "triangle-right", + 108, + "108", + "triangle-right-open", + 208, + "208", + "triangle-right-dot", + 308, + "308", + "triangle-right-open-dot", + 9, + "9", + "triangle-ne", + 109, + "109", + "triangle-ne-open", + 209, + "209", + "triangle-ne-dot", + 309, + "309", + "triangle-ne-open-dot", + 10, + "10", + "triangle-se", + 110, + "110", + "triangle-se-open", + 210, + "210", + "triangle-se-dot", + 310, + "310", + "triangle-se-open-dot", + 11, + "11", + "triangle-sw", + 111, + "111", + "triangle-sw-open", + 211, + "211", + "triangle-sw-dot", + 311, + "311", + "triangle-sw-open-dot", + 12, + "12", + "triangle-nw", + 112, + "112", + "triangle-nw-open", + 212, + "212", + "triangle-nw-dot", + 312, + "312", + "triangle-nw-open-dot", + 13, + "13", + "pentagon", + 113, + "113", + "pentagon-open", + 213, + "213", + "pentagon-dot", + 313, + "313", + "pentagon-open-dot", + 14, + "14", + "hexagon", + 114, + "114", + "hexagon-open", + 214, + "214", + "hexagon-dot", + 314, + "314", + "hexagon-open-dot", + 15, + "15", + "hexagon2", + 115, + "115", + "hexagon2-open", + 215, + "215", + "hexagon2-dot", + 315, + "315", + "hexagon2-open-dot", + 16, + "16", + "octagon", + 116, + "116", + "octagon-open", + 216, + "216", + "octagon-dot", + 316, + "316", + "octagon-open-dot", + 17, + "17", + "star", + 117, + "117", + "star-open", + 217, + "217", + "star-dot", + 317, + "317", + "star-open-dot", + 18, + "18", + "hexagram", + 118, + "118", + "hexagram-open", + 218, + "218", + "hexagram-dot", + 318, + "318", + "hexagram-open-dot", + 19, + "19", + "star-triangle-up", + 119, + "119", + "star-triangle-up-open", + 219, + "219", + "star-triangle-up-dot", + 319, + "319", + "star-triangle-up-open-dot", + 20, + "20", + "star-triangle-down", + 120, + "120", + "star-triangle-down-open", + 220, + "220", + "star-triangle-down-dot", + 320, + "320", + "star-triangle-down-open-dot", + 21, + "21", + "star-square", + 121, + "121", + "star-square-open", + 221, + "221", + "star-square-dot", + 321, + "321", + "star-square-open-dot", + 22, + "22", + "star-diamond", + 122, + "122", + "star-diamond-open", + 222, + "222", + "star-diamond-dot", + 322, + "322", + "star-diamond-open-dot", + 23, + "23", + "diamond-tall", + 123, + "123", + "diamond-tall-open", + 223, + "223", + "diamond-tall-dot", + 323, + "323", + "diamond-tall-open-dot", + 24, + "24", + "diamond-wide", + 124, + "124", + "diamond-wide-open", + 224, + "224", + "diamond-wide-dot", + 324, + "324", + "diamond-wide-open-dot", + 25, + "25", + "hourglass", + 125, + "125", + "hourglass-open", + 26, + "26", + "bowtie", + 126, + "126", + "bowtie-open", + 27, + "27", + "circle-cross", + 127, + "127", + "circle-cross-open", + 28, + "28", + "circle-x", + 128, + "128", + "circle-x-open", + 29, + "29", + "square-cross", + 129, + "129", + "square-cross-open", + 30, + "30", + "square-x", + 130, + "130", + "square-x-open", + 31, + "31", + "diamond-cross", + 131, + "131", + "diamond-cross-open", + 32, + "32", + "diamond-x", + 132, + "132", + "diamond-x-open", + 33, + "33", + "cross-thin", + 133, + "133", + "cross-thin-open", + 34, + "34", + "x-thin", + 134, + "134", + "x-thin-open", + 35, + "35", + "asterisk", + 135, + "135", + "asterisk-open", + 36, + "36", + "hash", + 136, + "136", + "hash-open", + 236, + "236", + "hash-dot", + 336, + "336", + "hash-open-dot", + 37, + "37", + "y-up", + 137, + "137", + "y-up-open", + 38, + "38", + "y-down", + 138, + "138", + "y-down-open", + 39, + "39", + "y-left", + 139, + "139", + "y-left-open", + 40, + "40", + "y-right", + 140, + "140", + "y-right-open", + 41, + "41", + "line-ew", + 141, + "141", + "line-ew-open", + 42, + "42", + "line-ns", + 142, + "142", + "line-ns-open", + 43, + "43", + "line-ne", + 143, + "143", + "line-ne-open", + 44, + "44", + "line-nw", + 144, + "144", + "line-nw-open", + 45, + "45", + "arrow-up", + 145, + "145", + "arrow-up-open", + 46, + "46", + "arrow-down", + 146, + "146", + "arrow-down-open", + 47, + "47", + "arrow-left", + 147, + "147", + "arrow-left-open", + 48, + "48", + "arrow-right", + 148, + "148", + "arrow-right-open", + 49, + "49", + "arrow-bar-up", + 149, + "149", + "arrow-bar-up-open", + 50, + "50", + "arrow-bar-down", + 150, + "150", + "arrow-bar-down-open", + 51, + "51", + "arrow-bar-left", + 151, + "151", + "arrow-bar-left-open", + 52, + "52", + "arrow-bar-right", + 152, + "152", + "arrow-bar-right-open", + 53, + "53", + "arrow", + 153, + "153", + "arrow-open", + 54, + "54", + "arrow-wide", + 154, + "154", + "arrow-wide-open" + ] + }, + "symbolsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", + "editType": "none", + "valType": "string" + } + }, + "meta": { + "arrayOk": true, + "description": "Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index.", + "editType": "plot", + "valType": "any" + }, + "metasrc": { + "description": "Sets the source reference on Chart Studio Cloud for `meta`.", + "editType": "none", + "valType": "string" + }, + "mode": { + "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*.", + "editType": "calc", + "extras": [ + "none" + ], + "flags": [ + "lines", + "markers", + "text" + ], + "valType": "flaglist" + }, + "name": { + "description": "Sets the trace name. The trace name appears as the legend item and on hover.", + "editType": "style", + "valType": "string" + }, + "opacity": { + "description": "Sets the opacity of the trace.", + "dflt": 1, + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "real": { + "description": "Sets the real component of the data, in units of normalized impedance such that real=1, imag=0 is the center of the chart.", + "editType": "calc+clearAxisTypes", + "valType": "data_array" + }, + "realsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `real`.", + "editType": "none", + "valType": "string" + }, + "selected": { + "editType": "style", + "marker": { + "color": { + "description": "Sets the marker color of selected points.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "opacity": { + "description": "Sets the marker opacity of selected points.", + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "role": "object", + "size": { + "description": "Sets the marker size of selected points.", + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "role": "object", + "textfont": { + "color": { + "description": "Sets the text font color of selected points.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "role": "object" + } + }, + "selectedpoints": { + "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.", + "editType": "calc", + "valType": "any" + }, + "showlegend": { + "description": "Determines whether or not an item corresponding to this trace is shown in the legend.", + "dflt": true, + "editType": "style", + "valType": "boolean" + }, + "stream": { + "editType": "calc", + "maxpoints": { + "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", + "dflt": 500, + "editType": "calc", + "max": 10000, + "min": 0, + "valType": "number" + }, + "role": "object", + "token": { + "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", + "editType": "calc", + "noBlank": true, + "strict": true, + "valType": "string" + } + }, + "subplot": { + "description": "Sets a reference between this trace's data coordinates and a smith subplot. If *smith* (the default value), the data refer to `layout.smith`. If *smith2*, the data refer to `layout.smith2`, and so on.", + "dflt": "smith", + "editType": "calc", + "valType": "subplotid" + }, + "text": { + "arrayOk": true, + "description": "Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", + "dflt": "", + "editType": "calc", + "valType": "string" + }, + "textfont": { + "color": { + "arrayOk": true, + "editType": "style", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "description": "Sets the text font.", + "editType": "calc", + "family": { + "arrayOk": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "calc", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "familysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `family`.", + "editType": "none", + "valType": "string" + }, + "lineposition": { + "arrayOk": true, + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "calc", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "linepositionsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", + "editType": "none", + "valType": "string" + }, + "role": "object", + "shadow": { + "arrayOk": true, + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "calc", + "valType": "string" + }, + "shadowsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", + "editType": "none", + "valType": "string" + }, + "size": { + "arrayOk": true, + "editType": "calc", + "min": 1, + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "style": { + "arrayOk": true, + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "stylesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `style`.", + "editType": "none", + "valType": "string" + }, + "textcase": { + "arrayOk": true, + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "textcasesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", + "editType": "none", + "valType": "string" + }, + "variant": { + "arrayOk": true, + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "variantsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `variant`.", + "editType": "none", + "valType": "string" + }, + "weight": { + "arrayOk": true, + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "calc", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + }, + "weightsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `weight`.", + "editType": "none", + "valType": "string" + } + }, + "textposition": { + "arrayOk": true, + "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.", + "dflt": "middle center", + "editType": "calc", + "valType": "enumerated", + "values": [ + "top left", + "top center", + "top right", + "middle left", + "middle center", + "middle right", + "bottom left", + "bottom center", + "bottom right" + ] + }, + "textpositionsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", + "editType": "none", + "valType": "string" + }, + "textsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `text`.", + "editType": "none", + "valType": "string" + }, + "texttemplate": { + "arrayOk": true, + "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `real`, `imag` and `text`.", + "dflt": "", + "editType": "plot", + "valType": "string" + }, + "texttemplatefallback": { + "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", + "dflt": "-", + "editType": "plot", + "valType": "any" + }, + "texttemplatesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", + "editType": "none", + "valType": "string" + }, + "type": "scattersmith", + "uid": { + "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", + "editType": "plot", + "valType": "string" + }, + "uirevision": { + "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves.", + "editType": "none", + "valType": "any" + }, + "unselected": { + "editType": "style", + "marker": { + "color": { + "description": "Sets the marker color of unselected points, applied only when a selection exists.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "opacity": { + "description": "Sets the marker opacity of unselected points, applied only when a selection exists.", + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "role": "object", + "size": { + "description": "Sets the marker size of unselected points, applied only when a selection exists.", + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "role": "object", + "textfont": { + "color": { + "description": "Sets the text font color of unselected points, applied only when a selection exists.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "role": "object" + } + }, + "visible": { + "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).", + "dflt": true, + "editType": "calc", + "valType": "enumerated", + "values": [ + true, + false, + "legendonly" + ] + } + }, + "categories": [ + "smith", + "symbols", + "showLegend", + "scatter-like" + ], + "meta": { + "description": "The scattersmith trace type encompasses line charts, scatter charts, text charts, and bubble charts in smith coordinates. The data visualized as scatter point or lines is set in `real` and `imag` (imaginary) coordinates Text (appearing either on the chart or on hover only) is via `text`. Bubble charts are achieved by setting `marker.size` and/or `marker.color` to numerical arrays.", + "hrName": "scatter_smith" + }, + "type": "scattersmith" + }, + "scatterternary": { + "animatable": false, + "attributes": { + "a": { + "description": "Sets the quantity of component `a` in each data point. If `a`, `b`, and `c` are all provided, they need not be normalized, only the relative values matter. If only two arrays are provided they must be normalized to match `ternary.sum`.", + "editType": "calc", + "valType": "data_array" + }, + "asrc": { + "description": "Sets the source reference on Chart Studio Cloud for `a`.", + "editType": "none", + "valType": "string" + }, + "b": { + "description": "Sets the quantity of component `a` in each data point. If `a`, `b`, and `c` are all provided, they need not be normalized, only the relative values matter. If only two arrays are provided they must be normalized to match `ternary.sum`.", + "editType": "calc", + "valType": "data_array" + }, + "bsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `b`.", + "editType": "none", + "valType": "string" + }, + "c": { + "description": "Sets the quantity of component `a` in each data point. If `a`, `b`, and `c` are all provided, they need not be normalized, only the relative values matter. If only two arrays are provided they must be normalized to match `ternary.sum`.", + "editType": "calc", + "valType": "data_array" + }, + "cliponaxis": { + "description": "Determines whether or not markers and text nodes are clipped about the subplot axes. To show markers and text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*.", + "dflt": true, + "editType": "plot", + "valType": "boolean" + }, + "connectgaps": { + "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "csrc": { + "description": "Sets the source reference on Chart Studio Cloud for `c`.", + "editType": "none", + "valType": "string" + }, + "customdata": { + "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements", + "editType": "calc", + "valType": "data_array" + }, + "customdatasrc": { + "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", + "editType": "none", + "valType": "string" + }, + "fill": { + "description": "Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. scatterternary has a subset of the options available to scatter. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other.", + "dflt": "none", + "editType": "calc", + "valType": "enumerated", + "values": [ + "none", + "toself", + "tonext" + ] + }, + "fillcolor": { + "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available.", + "editType": "style", + "valType": "color" + }, + "hoverinfo": { + "arrayOk": true, + "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.", + "dflt": "all", + "editType": "none", + "extras": [ + "all", + "none", + "skip" + ], + "flags": [ + "a", + "b", + "c", + "text", + "name" + ], + "valType": "flaglist" + }, + "hoverinfosrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", + "editType": "none", + "valType": "string" + }, + "hoverlabel": { + "align": { + "arrayOk": true, + "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines", + "dflt": "auto", + "editType": "none", + "valType": "enumerated", + "values": [ + "left", + "right", + "auto" + ] + }, + "alignsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `align`.", + "editType": "none", + "valType": "string" + }, + "bgcolor": { + "arrayOk": true, + "description": "Sets the background color of the hover labels for this trace", + "editType": "none", + "valType": "color" + }, + "bgcolorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", + "editType": "none", + "valType": "string" + }, + "bordercolor": { + "arrayOk": true, + "description": "Sets the border color of the hover labels for this trace.", + "editType": "none", + "valType": "color" + }, + "bordercolorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", + "editType": "none", + "valType": "string" + }, + "editType": "none", + "font": { + "color": { + "arrayOk": true, + "editType": "none", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "description": "Sets the font used in hover labels.", + "editType": "none", + "family": { + "arrayOk": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "none", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "familysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `family`.", + "editType": "none", + "valType": "string" + }, + "lineposition": { + "arrayOk": true, + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "none", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "linepositionsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", + "editType": "none", + "valType": "string" + }, + "role": "object", + "shadow": { + "arrayOk": true, + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "none", + "valType": "string" + }, + "shadowsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", + "editType": "none", + "valType": "string" + }, + "size": { + "arrayOk": true, + "editType": "none", + "min": 1, + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "style": { + "arrayOk": true, + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "none", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "stylesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `style`.", + "editType": "none", + "valType": "string" + }, + "textcase": { + "arrayOk": true, + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "none", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "textcasesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", + "editType": "none", + "valType": "string" + }, + "variant": { + "arrayOk": true, + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "none", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "variantsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `variant`.", + "editType": "none", + "valType": "string" + }, + "weight": { + "arrayOk": true, + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "none", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + }, + "weightsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `weight`.", + "editType": "none", + "valType": "string" + } + }, + "namelength": { + "arrayOk": true, + "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.", + "dflt": 15, + "editType": "none", + "min": -1, + "valType": "integer" + }, + "namelengthsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", + "editType": "none", + "valType": "string" + }, + "role": "object", + "showarrow": { + "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", + "dflt": true, + "editType": "none", + "valType": "boolean" + } + }, + "hoveron": { + "description": "Do the hover effects highlight individual points (markers or line points) or do they highlight filled regions? If the fill is *toself* or *tonext* and there are no markers or text, then the default is *fills*, otherwise it is *points*.", + "editType": "style", + "flags": [ + "points", + "fills" + ], + "valType": "flaglist" + }, + "hovertemplate": { + "arrayOk": true, + "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``.", + "dflt": "", + "editType": "none", + "valType": "string" + }, + "hovertemplatefallback": { + "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", + "dflt": "-", + "editType": "none", + "valType": "any" + }, + "hovertemplatesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", + "editType": "none", + "valType": "string" + }, + "hovertext": { + "arrayOk": true, + "description": "Sets hover text elements associated with each (a,b,c) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the the data points in (a,b,c). To be seen, trace `hoverinfo` must contain a *text* flag.", + "dflt": "", + "editType": "style", + "valType": "string" + }, + "hovertextsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", + "editType": "none", + "valType": "string" + }, + "ids": { + "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", + "editType": "calc", + "valType": "data_array" + }, + "idssrc": { + "description": "Sets the source reference on Chart Studio Cloud for `ids`.", + "editType": "none", + "valType": "string" + }, + "legend": { + "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", + "dflt": "legend", + "editType": "style", + "valType": "subplotid" + }, + "legendgroup": { + "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.", + "dflt": "", + "editType": "style", + "valType": "string" + }, + "legendgrouptitle": { + "editType": "style", + "font": { + "color": { + "editType": "style", + "valType": "color" + }, + "description": "Sets this legend group's title font.", + "editType": "style", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "style", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "style", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "style", + "valType": "string" + }, + "size": { + "editType": "style", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "style", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "style", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "style", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "style", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "role": "object", + "text": { + "description": "Sets the title of the legend group.", + "dflt": "", + "editType": "style", + "valType": "string" + } + }, + "legendrank": { + "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.", + "dflt": 1000, + "editType": "style", + "valType": "number" + }, + "legendwidth": { + "description": "Sets the width (in px or fraction) of the legend for this trace.", + "editType": "style", + "min": 0, + "valType": "number" + }, + "line": { + "backoff": { + "arrayOk": true, + "description": "Sets the line back off from the end point of the nth line segment (in px). This option is useful e.g. to avoid overlap with arrowhead markers. With *auto* the lines would trim before markers if `marker.angleref` is set to *previous*.", + "dflt": "auto", + "editType": "plot", + "min": 0, + "valType": "number" + }, + "backoffsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `backoff`.", + "editType": "none", + "valType": "string" + }, + "color": { + "description": "Sets the line color.", + "editType": "style", + "valType": "color" + }, + "dash": { + "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", + "dflt": "solid", + "editType": "style", + "valType": "string", + "values": [ + "solid", + "dot", + "dash", + "longdash", + "dashdot", + "longdashdot" + ] + }, + "editType": "calc", + "role": "object", + "shape": { + "description": "Determines the line shape. With *spline* the lines are drawn using spline interpolation. The other available values correspond to step-wise line shapes.", + "dflt": "linear", + "editType": "plot", + "valType": "enumerated", + "values": [ + "linear", + "spline" + ] + }, + "smoothing": { + "description": "Has an effect only if `shape` is set to *spline* Sets the amount of smoothing. *0* corresponds to no smoothing (equivalent to a *linear* shape).", + "dflt": 1, + "editType": "plot", + "max": 1.3, + "min": 0, + "valType": "number" + }, + "width": { + "description": "Sets the line width (in px).", + "dflt": 2, + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "marker": { + "angle": { + "arrayOk": true, + "description": "Sets the marker angle in respect to `angleref`.", + "dflt": 0, + "editType": "plot", + "valType": "angle" + }, + "angleref": { + "description": "Sets the reference for marker angle. With *previous*, angle 0 points along the line from the previous point to this one. With *up*, angle 0 points toward the top of the screen.", + "dflt": "up", + "editType": "plot", + "valType": "enumerated", + "values": [ + "previous", + "up" + ] + }, + "anglesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `angle`.", + "editType": "none", + "valType": "string" + }, + "autocolorscale": { + "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "cauto": { + "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "cmax": { + "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well.", + "dflt": null, + "editType": "plot", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "cmid": { + "description": "Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`.", + "dflt": null, + "editType": "calc", + "impliedEdits": {}, + "valType": "number" + }, + "cmin": { + "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well.", + "dflt": null, + "editType": "plot", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "color": { + "arrayOk": true, + "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.", + "editType": "style", + "valType": "color" + }, + "coloraxis": { + "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.", + "dflt": null, + "editType": "calc", + "regex": "/^coloraxis([2-9]|[1-9][0-9]+)?$/", + "valType": "subplotid" + }, + "colorbar": { + "bgcolor": { + "description": "Sets the color of padded area.", + "dflt": "rgba(0,0,0,0)", + "editType": "colorbars", + "valType": "color" + }, + "bordercolor": { + "description": "Sets the axis line color.", + "dflt": "#444", + "editType": "colorbars", + "valType": "color" + }, + "borderwidth": { + "description": "Sets the width (in px) or the border enclosing this color bar.", + "dflt": 0, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "dtick": { + "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*", + "editType": "colorbars", + "impliedEdits": { + "tickmode": "linear" + }, + "valType": "any" + }, + "editType": "colorbars", + "exponentformat": { + "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from \"femto\" f (10^-15) to \"tera\" T (10^12). *SI extended* covers instead the full SI range from \"quecto\" q (10^-30) to \"quetta\" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation.", + "dflt": "B", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "none", + "e", + "E", + "power", + "SI", + "B", + "SI extended" + ] + }, + "labelalias": { + "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax.", + "dflt": false, + "editType": "colorbars", + "valType": "any" + }, + "len": { + "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.", + "dflt": 1, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "lenmode": { + "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.", + "dflt": "fraction", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "fraction", + "pixels" + ] + }, + "minexponent": { + "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.", + "dflt": 3, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "nticks": { + "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.", + "dflt": 0, + "editType": "colorbars", + "min": 0, + "valType": "integer" + }, + "orientation": { + "description": "Sets the orientation of the colorbar.", + "dflt": "v", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "h", + "v" + ] + }, + "outlinecolor": { + "description": "Sets the axis line color.", + "dflt": "#444", + "editType": "colorbars", + "valType": "color" + }, + "outlinewidth": { + "description": "Sets the width (in px) of the axis line.", + "dflt": 1, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "role": "object", + "separatethousands": { + "description": "If \"true\", even 4-digit integers are separated", + "dflt": false, + "editType": "colorbars", + "valType": "boolean" + }, + "showexponent": { + "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.", + "dflt": "all", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "showticklabels": { + "description": "Determines whether or not the tick labels are drawn.", + "dflt": true, + "editType": "colorbars", + "valType": "boolean" + }, + "showtickprefix": { + "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.", + "dflt": "all", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "showticksuffix": { + "description": "Same as `showtickprefix` but for tick suffixes.", + "dflt": "all", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "thickness": { + "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.", + "dflt": 30, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "thicknessmode": { + "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.", + "dflt": "pixels", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "fraction", + "pixels" + ] + }, + "tick0": { + "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears.", + "editType": "colorbars", + "impliedEdits": { + "tickmode": "linear" + }, + "valType": "any" + }, + "tickangle": { + "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.", + "dflt": "auto", + "editType": "colorbars", + "valType": "angle" + }, + "tickcolor": { + "description": "Sets the tick color.", + "dflt": "#444", + "editType": "colorbars", + "valType": "color" + }, + "tickfont": { + "color": { + "editType": "colorbars", + "valType": "color" + }, + "description": "Sets the color bar's tick label font", + "editType": "colorbars", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "colorbars", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "colorbars", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "colorbars", + "valType": "string" + }, + "size": { + "editType": "colorbars", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "colorbars", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "tickformat": { + "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*", + "dflt": "", + "editType": "colorbars", + "valType": "string" + }, + "tickformatstops": { + "items": { + "tickformatstop": { + "dtickrange": { + "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*", + "editType": "colorbars", + "items": [ + { + "editType": "colorbars", + "valType": "any" + }, + { + "editType": "colorbars", + "valType": "any" + } + ], + "valType": "info_array" + }, + "editType": "colorbars", + "enabled": { + "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.", + "dflt": true, + "editType": "colorbars", + "valType": "boolean" + }, + "name": { + "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.", + "editType": "colorbars", + "valType": "string" + }, + "role": "object", + "templateitemname": { + "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.", + "editType": "colorbars", + "valType": "string" + }, + "value": { + "description": "string - dtickformat for described zoom level, the same as *tickformat*", + "dflt": "", + "editType": "colorbars", + "valType": "string" + } + } + }, + "role": "object" + }, + "ticklabeloverflow": { + "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "allow", + "hide past div", + "hide past domain" + ] + }, + "ticklabelposition": { + "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.", + "dflt": "outside", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "outside", + "inside", + "outside top", + "inside top", + "outside left", + "inside left", + "outside right", + "inside right", + "outside bottom", + "inside bottom" + ] + }, + "ticklabelstep": { + "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.", + "dflt": 1, + "editType": "colorbars", + "min": 1, + "valType": "integer" + }, + "ticklen": { + "description": "Sets the tick length (in px).", + "dflt": 5, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "tickmode": { + "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).", + "editType": "colorbars", + "impliedEdits": {}, + "valType": "enumerated", + "values": [ + "auto", + "linear", + "array" + ] + }, + "tickprefix": { + "description": "Sets a tick label prefix.", + "dflt": "", + "editType": "colorbars", + "valType": "string" + }, + "ticks": { + "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.", + "dflt": "", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "outside", + "inside", + "" + ] + }, + "ticksuffix": { + "description": "Sets a tick label suffix.", + "dflt": "", + "editType": "colorbars", + "valType": "string" + }, + "ticktext": { + "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", + "editType": "colorbars", + "valType": "data_array" + }, + "ticktextsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", + "editType": "none", + "valType": "string" + }, + "tickvals": { + "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", + "editType": "colorbars", + "valType": "data_array" + }, + "tickvalssrc": { + "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", + "editType": "none", + "valType": "string" + }, + "tickwidth": { + "description": "Sets the tick width (in px).", + "dflt": 1, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "title": { + "editType": "colorbars", + "font": { + "color": { + "editType": "colorbars", + "valType": "color" + }, + "description": "Sets this color bar's title font.", + "editType": "colorbars", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "colorbars", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "colorbars", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "colorbars", + "valType": "string" + }, + "size": { + "editType": "colorbars", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "colorbars", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "role": "object", + "side": { + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "right", + "top", + "bottom" + ] + }, + "text": { + "description": "Sets the title of the color bar.", + "editType": "colorbars", + "valType": "string" + } + }, + "x": { + "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.", + "editType": "colorbars", + "valType": "number" + }, + "xanchor": { + "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "left", + "center", + "right" + ] + }, + "xpad": { + "description": "Sets the amount of padding (in px) along the x direction.", + "dflt": 10, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "xref": { + "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.", + "dflt": "paper", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "container", + "paper" + ] + }, + "y": { + "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.", + "editType": "colorbars", + "valType": "number" + }, + "yanchor": { + "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "top", + "middle", + "bottom" + ] + }, + "ypad": { + "description": "Sets the amount of padding (in px) along the y direction.", + "dflt": 10, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "yref": { + "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.", + "dflt": "paper", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "container", + "paper" + ] + } + }, + "colorscale": { + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "autocolorscale": false + }, + "valType": "colorscale" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "editType": "calc", + "gradient": { + "color": { + "arrayOk": true, + "description": "Sets the final color of the gradient fill: the center color for radial, the right for horizontal, or the bottom for vertical.", + "editType": "calc", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "editType": "calc", + "role": "object", + "type": { + "arrayOk": true, + "description": "Sets the type of gradient used to fill the markers", + "dflt": "none", + "editType": "calc", + "valType": "enumerated", + "values": [ + "radial", + "horizontal", + "vertical", + "none" + ] + }, + "typesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `type`.", + "editType": "none", + "valType": "string" + } + }, + "line": { + "autocolorscale": { + "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. Has an effect only if in `marker.line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "cauto": { + "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.line.color`) or the bounds set in `marker.line.cmin` and `marker.line.cmax` Has an effect only if in `marker.line.color` is set to a numerical array. Defaults to `false` when `marker.line.cmin` and `marker.line.cmax` are set by the user.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "cmax": { + "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmin` must be set as well.", + "dflt": null, + "editType": "plot", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "cmid": { + "description": "Sets the mid-point of the color domain by scaling `marker.line.cmin` and/or `marker.line.cmax` to be equidistant to this point. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color`. Has no effect when `marker.line.cauto` is `false`.", + "dflt": null, + "editType": "calc", + "impliedEdits": {}, + "valType": "number" + }, + "cmin": { + "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmax` must be set as well.", + "dflt": null, + "editType": "plot", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "color": { + "arrayOk": true, + "description": "Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set.", + "editType": "style", + "valType": "color" + }, + "coloraxis": { + "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.", + "dflt": null, + "editType": "calc", + "regex": "/^coloraxis([2-9]|[1-9][0-9]+)?$/", + "valType": "subplotid" + }, + "colorscale": { + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "autocolorscale": false + }, + "valType": "colorscale" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "editType": "calc", + "reversescale": { + "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.", + "dflt": false, + "editType": "plot", + "valType": "boolean" + }, + "role": "object", + "width": { + "arrayOk": true, + "description": "Sets the width (in px) of the lines bounding the marker points.", + "editType": "style", + "min": 0, + "valType": "number" + }, + "widthsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `width`.", + "editType": "none", + "valType": "string" + } + }, + "maxdisplayed": { + "description": "Sets a maximum number of points to be drawn on the graph. *0* corresponds to no limit.", + "dflt": 0, + "editType": "plot", + "min": 0, + "valType": "number" + }, + "opacity": { + "arrayOk": true, + "description": "Sets the marker opacity.", + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "opacitysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", + "editType": "none", + "valType": "string" + }, + "reversescale": { + "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", + "dflt": false, + "editType": "plot", + "valType": "boolean" + }, + "role": "object", + "showscale": { + "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "size": { + "arrayOk": true, + "description": "Sets the marker size (in px).", + "dflt": 6, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "sizemin": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points.", + "dflt": 0, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "sizemode": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels.", + "dflt": "diameter", + "editType": "calc", + "valType": "enumerated", + "values": [ + "diameter", + "area" + ] + }, + "sizeref": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`.", + "dflt": 1, + "editType": "calc", + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "standoff": { + "arrayOk": true, + "description": "Moves the marker away from the data point in the direction of `angle` (in px). This can be useful for example if you have another marker at this location and you want to point an arrowhead marker at it.", + "dflt": 0, + "editType": "plot", + "min": 0, + "valType": "number" + }, + "standoffsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `standoff`.", + "editType": "none", + "valType": "string" + }, + "symbol": { + "arrayOk": true, + "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.", + "dflt": "circle", + "editType": "style", + "valType": "enumerated", + "values": [ + 0, + "0", + "circle", + 100, + "100", + "circle-open", + 200, + "200", + "circle-dot", + 300, + "300", + "circle-open-dot", + 1, + "1", + "square", + 101, + "101", + "square-open", + 201, + "201", + "square-dot", + 301, + "301", + "square-open-dot", + 2, + "2", + "diamond", + 102, + "102", + "diamond-open", + 202, + "202", + "diamond-dot", + 302, + "302", + "diamond-open-dot", + 3, + "3", + "cross", + 103, + "103", + "cross-open", + 203, + "203", + "cross-dot", + 303, + "303", + "cross-open-dot", + 4, + "4", + "x", + 104, + "104", + "x-open", + 204, + "204", + "x-dot", + 304, + "304", + "x-open-dot", + 5, + "5", + "triangle-up", + 105, + "105", + "triangle-up-open", + 205, + "205", + "triangle-up-dot", + 305, + "305", + "triangle-up-open-dot", + 6, + "6", + "triangle-down", + 106, + "106", + "triangle-down-open", + 206, + "206", + "triangle-down-dot", + 306, + "306", + "triangle-down-open-dot", + 7, + "7", + "triangle-left", + 107, + "107", + "triangle-left-open", + 207, + "207", + "triangle-left-dot", + 307, + "307", + "triangle-left-open-dot", + 8, + "8", + "triangle-right", + 108, + "108", + "triangle-right-open", + 208, + "208", + "triangle-right-dot", + 308, + "308", + "triangle-right-open-dot", + 9, + "9", + "triangle-ne", + 109, + "109", + "triangle-ne-open", + 209, + "209", + "triangle-ne-dot", + 309, + "309", + "triangle-ne-open-dot", + 10, + "10", + "triangle-se", + 110, + "110", + "triangle-se-open", + 210, + "210", + "triangle-se-dot", + 310, + "310", + "triangle-se-open-dot", + 11, + "11", + "triangle-sw", + 111, + "111", + "triangle-sw-open", + 211, + "211", + "triangle-sw-dot", + 311, + "311", + "triangle-sw-open-dot", + 12, + "12", + "triangle-nw", + 112, + "112", + "triangle-nw-open", + 212, + "212", + "triangle-nw-dot", + 312, + "312", + "triangle-nw-open-dot", + 13, + "13", + "pentagon", + 113, + "113", + "pentagon-open", + 213, + "213", + "pentagon-dot", + 313, + "313", + "pentagon-open-dot", + 14, + "14", + "hexagon", + 114, + "114", + "hexagon-open", + 214, + "214", + "hexagon-dot", + 314, + "314", + "hexagon-open-dot", + 15, + "15", + "hexagon2", + 115, + "115", + "hexagon2-open", + 215, + "215", + "hexagon2-dot", + 315, + "315", + "hexagon2-open-dot", + 16, + "16", + "octagon", + 116, + "116", + "octagon-open", + 216, + "216", + "octagon-dot", + 316, + "316", + "octagon-open-dot", + 17, + "17", + "star", + 117, + "117", + "star-open", + 217, + "217", + "star-dot", + 317, + "317", + "star-open-dot", + 18, + "18", + "hexagram", + 118, + "118", + "hexagram-open", + 218, + "218", + "hexagram-dot", + 318, + "318", + "hexagram-open-dot", + 19, + "19", + "star-triangle-up", + 119, + "119", + "star-triangle-up-open", + 219, + "219", + "star-triangle-up-dot", + 319, + "319", + "star-triangle-up-open-dot", + 20, + "20", + "star-triangle-down", + 120, + "120", + "star-triangle-down-open", + 220, + "220", + "star-triangle-down-dot", + 320, + "320", + "star-triangle-down-open-dot", + 21, + "21", + "star-square", + 121, + "121", + "star-square-open", + 221, + "221", + "star-square-dot", + 321, + "321", + "star-square-open-dot", + 22, + "22", + "star-diamond", + 122, + "122", + "star-diamond-open", + 222, + "222", + "star-diamond-dot", + 322, + "322", + "star-diamond-open-dot", + 23, + "23", + "diamond-tall", + 123, + "123", + "diamond-tall-open", + 223, + "223", + "diamond-tall-dot", + 323, + "323", + "diamond-tall-open-dot", + 24, + "24", + "diamond-wide", + 124, + "124", + "diamond-wide-open", + 224, + "224", + "diamond-wide-dot", + 324, + "324", + "diamond-wide-open-dot", + 25, + "25", + "hourglass", + 125, + "125", + "hourglass-open", + 26, + "26", + "bowtie", + 126, + "126", + "bowtie-open", + 27, + "27", + "circle-cross", + 127, + "127", + "circle-cross-open", + 28, + "28", + "circle-x", + 128, + "128", + "circle-x-open", + 29, + "29", + "square-cross", + 129, + "129", + "square-cross-open", + 30, + "30", + "square-x", + 130, + "130", + "square-x-open", + 31, + "31", + "diamond-cross", + 131, + "131", + "diamond-cross-open", + 32, + "32", + "diamond-x", + 132, + "132", + "diamond-x-open", + 33, + "33", + "cross-thin", + 133, + "133", + "cross-thin-open", + 34, + "34", + "x-thin", + 134, + "134", + "x-thin-open", + 35, + "35", + "asterisk", + 135, + "135", + "asterisk-open", + 36, + "36", + "hash", + 136, + "136", + "hash-open", + 236, + "236", + "hash-dot", + 336, + "336", + "hash-open-dot", + 37, + "37", + "y-up", + 137, + "137", + "y-up-open", + 38, + "38", + "y-down", + 138, + "138", + "y-down-open", + 39, + "39", + "y-left", + 139, + "139", + "y-left-open", + 40, + "40", + "y-right", + 140, + "140", + "y-right-open", + 41, + "41", + "line-ew", + 141, + "141", + "line-ew-open", + 42, + "42", + "line-ns", + 142, + "142", + "line-ns-open", + 43, + "43", + "line-ne", + 143, + "143", + "line-ne-open", + 44, + "44", + "line-nw", + 144, + "144", + "line-nw-open", + 45, + "45", + "arrow-up", + 145, + "145", + "arrow-up-open", + 46, + "46", + "arrow-down", + 146, + "146", + "arrow-down-open", + 47, + "47", + "arrow-left", + 147, + "147", + "arrow-left-open", + 48, + "48", + "arrow-right", + 148, + "148", + "arrow-right-open", + 49, + "49", + "arrow-bar-up", + 149, + "149", + "arrow-bar-up-open", + 50, + "50", + "arrow-bar-down", + 150, + "150", + "arrow-bar-down-open", + 51, + "51", + "arrow-bar-left", + 151, + "151", + "arrow-bar-left-open", + 52, + "52", + "arrow-bar-right", + 152, + "152", + "arrow-bar-right-open", + 53, + "53", + "arrow", + 153, + "153", + "arrow-open", + 54, + "54", + "arrow-wide", + 154, + "154", + "arrow-wide-open" + ] + }, + "symbolsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", + "editType": "none", + "valType": "string" + } + }, + "meta": { + "arrayOk": true, + "description": "Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index.", + "editType": "plot", + "valType": "any" + }, + "metasrc": { + "description": "Sets the source reference on Chart Studio Cloud for `meta`.", + "editType": "none", + "valType": "string" + }, + "mode": { + "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*.", + "dflt": "markers", + "editType": "calc", + "extras": [ + "none" + ], + "flags": [ + "lines", + "markers", + "text" + ], + "valType": "flaglist" + }, + "name": { + "description": "Sets the trace name. The trace name appears as the legend item and on hover.", + "editType": "style", + "valType": "string" + }, + "opacity": { + "description": "Sets the opacity of the trace.", + "dflt": 1, + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "selected": { + "editType": "style", + "marker": { + "color": { + "description": "Sets the marker color of selected points.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "opacity": { + "description": "Sets the marker opacity of selected points.", + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "role": "object", + "size": { + "description": "Sets the marker size of selected points.", + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "role": "object", + "textfont": { + "color": { + "description": "Sets the text font color of selected points.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "role": "object" + } + }, + "selectedpoints": { + "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.", + "editType": "calc", + "valType": "any" + }, + "showlegend": { + "description": "Determines whether or not an item corresponding to this trace is shown in the legend.", + "dflt": true, + "editType": "style", + "valType": "boolean" + }, + "stream": { + "editType": "calc", + "maxpoints": { + "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", + "dflt": 500, + "editType": "calc", + "max": 10000, + "min": 0, + "valType": "number" + }, + "role": "object", + "token": { + "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", + "editType": "calc", + "noBlank": true, + "strict": true, + "valType": "string" + } + }, + "subplot": { + "description": "Sets a reference between this trace's data coordinates and a ternary subplot. If *ternary* (the default value), the data refer to `layout.ternary`. If *ternary2*, the data refer to `layout.ternary2`, and so on.", + "dflt": "ternary", + "editType": "calc", + "valType": "subplotid" + }, + "sum": { + "description": "The number each triplet should sum to, if only two of `a`, `b`, and `c` are provided. This overrides `ternary.sum` to normalize this specific trace, but does not affect the values displayed on the axes. 0 (or missing) means to use ternary.sum", + "dflt": 0, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "text": { + "arrayOk": true, + "description": "Sets text elements associated with each (a,b,c) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the the data points in (a,b,c). If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", + "dflt": "", + "editType": "calc", + "valType": "string" + }, + "textfont": { + "color": { + "arrayOk": true, + "editType": "style", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "description": "Sets the text font.", + "editType": "calc", + "family": { + "arrayOk": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "calc", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "familysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `family`.", + "editType": "none", + "valType": "string" + }, + "lineposition": { + "arrayOk": true, + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "calc", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "linepositionsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", + "editType": "none", + "valType": "string" + }, + "role": "object", + "shadow": { + "arrayOk": true, + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "calc", + "valType": "string" + }, + "shadowsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", + "editType": "none", + "valType": "string" + }, + "size": { + "arrayOk": true, + "editType": "calc", + "min": 1, + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "style": { + "arrayOk": true, + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "stylesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `style`.", + "editType": "none", + "valType": "string" + }, + "textcase": { + "arrayOk": true, + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "textcasesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", + "editType": "none", + "valType": "string" + }, + "variant": { + "arrayOk": true, + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "variantsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `variant`.", + "editType": "none", + "valType": "string" + }, + "weight": { + "arrayOk": true, + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "calc", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + }, + "weightsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `weight`.", + "editType": "none", + "valType": "string" + } + }, + "textposition": { + "arrayOk": true, + "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.", + "dflt": "middle center", + "editType": "calc", + "valType": "enumerated", + "values": [ + "top left", + "top center", + "top right", + "middle left", + "middle center", + "middle right", + "bottom left", + "bottom center", + "bottom right" + ] + }, + "textpositionsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", + "editType": "none", + "valType": "string" + }, + "textsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `text`.", + "editType": "none", + "valType": "string" + }, + "texttemplate": { + "arrayOk": true, + "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `a`, `b`, `c` and `text`.", + "dflt": "", + "editType": "plot", + "valType": "string" + }, + "texttemplatefallback": { + "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", + "dflt": "-", + "editType": "plot", + "valType": "any" + }, + "texttemplatesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", + "editType": "none", + "valType": "string" + }, + "type": "scatterternary", + "uid": { + "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", + "editType": "plot", + "valType": "string" + }, + "uirevision": { + "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves.", + "editType": "none", + "valType": "any" + }, + "unselected": { + "editType": "style", + "marker": { + "color": { + "description": "Sets the marker color of unselected points, applied only when a selection exists.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "opacity": { + "description": "Sets the marker opacity of unselected points, applied only when a selection exists.", + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "role": "object", + "size": { + "description": "Sets the marker size of unselected points, applied only when a selection exists.", + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "role": "object", + "textfont": { + "color": { + "description": "Sets the text font color of unselected points, applied only when a selection exists.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "role": "object" + } + }, + "visible": { + "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).", + "dflt": true, + "editType": "calc", + "valType": "enumerated", + "values": [ + true, + false, + "legendonly" + ] + } + }, + "categories": [ + "ternary", + "symbols", + "showLegend", + "scatter-like" + ], + "meta": { + "description": "Provides similar functionality to the *scatter* type but on a ternary phase diagram. The data is provided by at least two arrays out of `a`, `b`, `c` triplets.", + "hrName": "scatter_ternary" + }, + "type": "scatterternary" + }, + "splom": { + "animatable": false, + "attributes": { + "customdata": { + "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements", + "editType": "calc", + "valType": "data_array" + }, + "customdatasrc": { + "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", + "editType": "none", + "valType": "string" + }, + "diagonal": { + "editType": "calc", + "role": "object", + "visible": { + "description": "Determines whether or not subplots on the diagonal are displayed.", + "dflt": true, + "editType": "calc", + "valType": "boolean" + } + }, + "dimensions": { + "items": { + "dimension": { + "axis": { + "editType": "calc+clearAxisTypes", + "matches": { + "description": "Determines whether or not the x & y axes generated by this dimension match. Equivalent to setting the `matches` axis attribute in the layout with the correct axis id.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "role": "object", +>>>>>>> 776a4535b (Name plot type quiver not scatterquiver) "type": { "_noTemplating": true, "description": "Sets the axis type. By default, plotly attempts to determined the axis type by looking into the data of the traces that referenced the axis in question.", From ec6a2665ea835d0789df4d77aa3b4a0af3197a59 Mon Sep 17 00:00:00 2001 From: John Degner Date: Sun, 2 Nov 2025 17:00:36 -0800 Subject: [PATCH 191/241] Model quiver api closer to 3d cone trace --- lib/quiver.js | 2 -- src/traces/quiver/attributes.js | 33 +++++++++++++++++--- src/traces/quiver/defaults.js | 6 +++- src/traces/quiver/plot.js | 53 ++++++++++++++++++++++++++++----- test/plot-schema.json | 30 ++++++++++++++++--- 5 files changed, 106 insertions(+), 18 deletions(-) diff --git a/lib/quiver.js b/lib/quiver.js index 0368a75e500..12179a54900 100644 --- a/lib/quiver.js +++ b/lib/quiver.js @@ -1,5 +1,3 @@ 'use strict'; module.exports = require('../src/traces/quiver'); - - diff --git a/src/traces/quiver/attributes.js b/src/traces/quiver/attributes.js index 5586bc37783..f7f3ffc2f74 100644 --- a/src/traces/quiver/attributes.js +++ b/src/traces/quiver/attributes.js @@ -32,13 +32,38 @@ var attrs = { anim: true, description: 'Sets the y components of the arrow vectors.' }, - scale: { + sizemode: { + valType: 'enumerated', + values: ['scaled', 'absolute', 'raw'], + editType: 'calc', + dflt: 'scaled', + description: [ + 'Determines whether `sizeref` is set as a *scaled* (unitless) scalar', + '(normalized by the max u/v norm in the vector field), as an *absolute*', + 'value (in the same units as the vector field), or *raw* to use the', + 'raw vector lengths.' + ].join(' ') + }, + sizeref: { valType: 'number', - dflt: 0.1, min: 0, - max: 1, editType: 'calc', - description: 'Scales size of the arrows (ideally to avoid overlap). Default = 0.1' + description: [ + 'Adjusts the arrow size scaling.', + 'The arrow length is determined by the vector norm multiplied by `sizeref`,', + 'optionally normalized when `sizemode` is *scaled*.' + ].join(' ') + }, + anchor: { + valType: 'enumerated', + values: ['tip', 'tail', 'cm', 'center', 'middle'], + dflt: 'tail', + editType: 'calc', + description: [ + 'Sets the arrows\' anchor with respect to their (x,y) positions.', + 'Use *tail* to place (x,y) at the base, *tip* to place (x,y) at the head,', + 'or *cm*/*center*/*middle* to center the arrow on (x,y).' + ].join(' ') }, arrow_scale: { valType: 'number', diff --git a/src/traces/quiver/defaults.js b/src/traces/quiver/defaults.js index 2584e758286..4ba6a36b59f 100644 --- a/src/traces/quiver/defaults.js +++ b/src/traces/quiver/defaults.js @@ -36,8 +36,12 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout // Set basic properties traceOut.type = 'quiver'; + // Sizing API similar to cone + var sizemode = coerce('sizemode'); + coerce('sizeref', sizemode === 'raw' ? 1 : 0.5); + coerce('anchor'); + // Set default values using coerce - coerce('scale', 0.1); coerce('arrow_scale', 0.3); coerce('angle', Math.PI / 9); coerce('scaleratio'); diff --git a/src/traces/quiver/plot.js b/src/traces/quiver/plot.js index c1f67b156df..cd660cfa909 100644 --- a/src/traces/quiver/plot.js +++ b/src/traces/quiver/plot.js @@ -81,6 +81,20 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition lineSegments.exit().remove(); + // Precompute norms for sizing + var uArr = trace.u || []; + var vArr = trace.v || []; + var maxNorm = 0; + for (var ni = 0; ni < trace._length; ni++) { + var uu = uArr[ni] || 0; + var vv = vArr[ni] || 0; + var nrm = Math.sqrt(uu * uu + vv * vv); + if (nrm > maxNorm) maxNorm = nrm; + } + var sizemode = trace.sizemode || 'scaled'; + var sizeref = (trace.sizeref !== undefined) ? trace.sizeref : (sizemode === 'raw' ? 1 : 0.5); + var anchor = trace.anchor || 'tail'; + // Update line segments lineSegments.each(function(cdi) { var path = d3.select(this); @@ -92,7 +106,6 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition } // Compute arrow in data space - var scale = trace.scale || 1; var scaleRatio = trace.scaleratio || 1; var arrowScale = trace.arrow_scale || 0.2; var angle = trace.angle || Math.PI / 12; // small default @@ -100,8 +113,21 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition var u = (trace.u && trace.u[cdi.i]) || 0; var v = (trace.v && trace.v[cdi.i]) || 0; - var dx = u * scale * scaleRatio; - var dy = v * scale; + var norm = Math.sqrt(u * u + v * v); + var unitx = norm ? (u / norm) : 0; + var unity = norm ? (v / norm) : 0; + var baseLen; + if (sizemode === 'scaled') { + var n = maxNorm ? (norm / maxNorm) : 0; + baseLen = n * sizeref; + } else { + baseLen = norm * sizeref; + } + + var dxBase = unitx * baseLen; + var dyBase = unity * baseLen; + var dx = dxBase * scaleRatio; + var dy = dyBase; var barbLen = Math.sqrt((dx * dx) / scaleRatio + dy * dy); var arrowLen = barbLen * arrowScale; var barbAng = Math.atan2(dy, dx / scaleRatio); @@ -109,10 +135,23 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition var ang1 = barbAng + angle; var ang2 = barbAng - angle; - var x0 = cdi.x; - var y0 = cdi.y; - var x1 = x0 + dx; - var y1 = y0 + dy; + var x0, y0, x1, y1; + if (anchor === 'tip') { + x1 = cdi.x; + y1 = cdi.y; + x0 = x1 - dx; + y0 = y1 - dy; + } else if (anchor === 'cm' || anchor === 'center' || anchor === 'middle') { + x0 = cdi.x - dx / 2; + y0 = cdi.y - dy / 2; + x1 = cdi.x + dx / 2; + y1 = cdi.y + dy / 2; + } else { // tail + x0 = cdi.x; + y0 = cdi.y; + x1 = x0 + dx; + y1 = y0 + dy; + } var xh1 = x1 - arrowLen * Math.cos(ang1) * scaleRatio; var yh1 = y1 - arrowLen * Math.sin(ang1); diff --git a/test/plot-schema.json b/test/plot-schema.json index 79d1efd658a..6f8831d1995 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -22110,14 +22110,36 @@ "min": 0, "valType": "number" }, - "scale": { - "description": "Scales size of the arrows (ideally to avoid overlap). Default = 0.1", - "dflt": 0.1, + "sizemode": { + "description": "Determines whether `sizeref` is set as a *scaled* (unitless) scalar (normalized by the max u/v norm in the vector field), as an *absolute* value (in the same units as the vector field), or *raw* to use the raw vector lengths.", + "dflt": "scaled", + "editType": "calc", + "valType": "enumerated", + "values": [ + "scaled", + "absolute", + "raw" + ] + }, + "sizeref": { + "description": "Adjusts the arrow size scaling. The arrow length is determined by the vector norm multiplied by `sizeref`, optionally normalized when `sizemode` is *scaled*.", "editType": "calc", - "max": 1, "min": 0, "valType": "number" }, + "anchor": { + "description": "Sets the arrows' anchor with respect to their (x,y) positions. Use *tail* to place (x,y) at the base, *tip* to place (x,y) at the head, or *cm*/*center*/*middle* to center the arrow on (x,y).", + "dflt": "tail", + "editType": "calc", + "valType": "enumerated", + "values": [ + "tip", + "tail", + "cm", + "center", + "middle" + ] + }, "scaleratio": { "description": "The ratio between the scale of the y-axis and the scale of the x-axis (scale_y / scale_x). Default = null, the scale ratio is not fixed.", "editType": "calc", From 68a7608789e2ab969d39c8c67651f78a6ca71436 Mon Sep 17 00:00:00 2001 From: John Degner Date: Tue, 11 Nov 2025 12:07:16 -0800 Subject: [PATCH 192/241] Match arrowhead attributes for annotations --- src/traces/quiver/attributes.js | 36 +- src/traces/quiver/defaults.js | 6 +- src/traces/quiver/plot.js | 5 +- test/plot-schema.json | 15494 ++++++++++++++++++------------ 4 files changed, 9474 insertions(+), 6067 deletions(-) diff --git a/src/traces/quiver/attributes.js b/src/traces/quiver/attributes.js index f7f3ffc2f74..a0e64eb74a9 100644 --- a/src/traces/quiver/attributes.js +++ b/src/traces/quiver/attributes.js @@ -65,14 +65,6 @@ var attrs = { 'or *cm*/*center*/*middle* to center the arrow on (x,y).' ].join(' ') }, - arrow_scale: { - valType: 'number', - dflt: 0.3, - min: 0, - max: 1, - editType: 'calc', - description: 'Value multiplied to length of barb to get length of arrowhead. Default = 0.3' - }, angle: { valType: 'number', dflt: Math.PI / 9, @@ -95,6 +87,26 @@ var attrs = { description: 'Maximum distance (in pixels) to look for nearby arrows on hover.' }, + // Arrowhead sizing, consistent with annotations API naming + arrowsize: { + valType: 'number', + min: 0.3, + dflt: 1, + editType: 'calc', + description: [ + 'Scales the size of the arrow head relative to a base size.', + 'Higher values produce larger heads.' + ].join(' ') + }, + // Back-compat alias + arrow_scale: { + valType: 'number', + min: 0, + max: 1, + editType: 'calc', + description: 'Deprecated alias for `arrowsize`-based sizing. Prefer using `arrowsize`.' + }, + // Line styling for arrows line: { color: { @@ -135,6 +147,14 @@ var attrs = { editType: 'style' }, + // Alias consistent with annotations; maps to line.width + arrowwidth: { + valType: 'number', + min: 0.1, + editType: 'style', + description: 'Sets the width (in px) of the arrow line (alias of `line.width`).' + }, + // Text and labels text: { valType: 'data_array', diff --git a/src/traces/quiver/defaults.js b/src/traces/quiver/defaults.js index 4ba6a36b59f..2d8e81554c1 100644 --- a/src/traces/quiver/defaults.js +++ b/src/traces/quiver/defaults.js @@ -42,7 +42,9 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout coerce('anchor'); // Set default values using coerce - coerce('arrow_scale', 0.3); + coerce('arrowsize', 1); + // back-compat + coerce('arrow_scale'); coerce('angle', Math.PI / 9); coerce('scaleratio'); coerce('hoverdistance', 20); @@ -50,7 +52,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout // Line styling traceOut.line = { color: traceIn.line && traceIn.line.color ? traceIn.line.color : defaultColor, - width: traceIn.line && traceIn.line.width ? traceIn.line.width : 1, + width: (traceIn.arrowwidth !== undefined) ? traceIn.arrowwidth : (traceIn.line && traceIn.line.width ? traceIn.line.width : 1), dash: traceIn.line && traceIn.line.dash ? traceIn.line.dash : 'solid', shape: traceIn.line && traceIn.line.shape ? traceIn.line.shape : 'linear', smoothing: traceIn.line && traceIn.line.smoothing ? traceIn.line.smoothing : 1, diff --git a/src/traces/quiver/plot.js b/src/traces/quiver/plot.js index cd660cfa909..c6fbe470371 100644 --- a/src/traces/quiver/plot.js +++ b/src/traces/quiver/plot.js @@ -107,7 +107,10 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition // Compute arrow in data space var scaleRatio = trace.scaleratio || 1; - var arrowScale = trace.arrow_scale || 0.2; + var baseHeadScale = 0.2; + var arrowScale = (trace.arrowsize !== undefined) + ? (baseHeadScale * trace.arrowsize) + : (trace.arrow_scale !== undefined ? trace.arrow_scale : baseHeadScale); var angle = trace.angle || Math.PI / 12; // small default var u = (trace.u && trace.u[cdi.i]) || 0; diff --git a/test/plot-schema.json b/test/plot-schema.json index 6f8831d1995..932fd5f0bf6 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -14179,4847 +14179,6941 @@ "description": "If *normal*, the range is computed in relation to the extrema of the input data. If *tozero*, the range extends to 0, regardless of the input data If *nonnegative*, the range is non-negative, regardless of the input data. Applies only to linear axes.", "dflt": "normal", "editType": "plot", +<<<<<<< HEAD "valType": "enumerated", "values": [ "normal", "tozero", "nonnegative" - ] - }, - "rangeselector": { - "activecolor": { - "description": "Sets the background color of the active range selector button.", - "editType": "plot", - "valType": "color" - }, - "bgcolor": { - "description": "Sets the background color of the range selector buttons.", - "dflt": "#eee", - "editType": "plot", - "valType": "color" - }, - "bordercolor": { - "description": "Sets the color of the border enclosing the range selector.", - "dflt": "#444", - "editType": "plot", - "valType": "color" - }, - "borderwidth": { - "description": "Sets the width (in px) of the border enclosing the range selector.", - "dflt": 0, - "editType": "plot", - "min": 0, - "valType": "number" - }, - "buttons": { - "items": { - "button": { - "count": { - "description": "Sets the number of steps to take to update the range. Use with `step` to specify the update interval.", - "dflt": 1, - "editType": "plot", - "min": 0, - "valType": "number" - }, - "description": "Sets the specifications for each buttons. By default, a range selector comes with no buttons.", - "editType": "plot", - "label": { - "description": "Sets the text label to appear on the button.", - "editType": "plot", - "valType": "string" - }, - "name": { - "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.", - "editType": "none", - "valType": "string" - }, - "role": "object", - "step": { - "description": "The unit of measurement that the `count` value will set the range by.", - "dflt": "month", - "editType": "plot", - "valType": "enumerated", - "values": [ - "month", - "year", - "day", - "hour", - "minute", - "second", - "all" - ] - }, - "stepmode": { - "description": "Sets the range update mode. If *backward*, the range update shifts the start of range back *count* times *step* milliseconds. If *todate*, the range update shifts the start of range back to the first timestamp from *count* times *step* milliseconds back. For example, with `step` set to *year* and `count` set to *1* the range update shifts the start of the range back to January 01 of the current year. Month and year *todate* are currently available only for the built-in (Gregorian) calendar.", - "dflt": "backward", - "editType": "plot", - "valType": "enumerated", - "values": [ - "backward", - "todate" - ] - }, - "templateitemname": { - "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.", - "editType": "calc", - "valType": "string" - }, - "visible": { - "description": "Determines whether or not this button is visible.", - "dflt": true, - "editType": "plot", - "valType": "boolean" - } - } - }, - "role": "object" - }, +======= + "valType": "any" + }, + { "editType": "plot", - "font": { - "color": { - "editType": "plot", - "valType": "color" - }, - "description": "Sets the font of the range selector button text.", - "editType": "plot", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "plot", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "lineposition": { - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "plot", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "role": "object", - "shadow": { - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "plot", - "valType": "string" - }, - "size": { - "editType": "plot", - "min": 1, - "valType": "number" - }, - "style": { - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "plot", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "textcase": { - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "plot", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "plot", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "plot", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "role": "object", - "visible": { - "description": "Determines whether or not this range selector is visible. Note that range selectors are only available for x axes of `type` set to or auto-typed to *date*.", - "editType": "plot", - "valType": "boolean" - }, - "x": { - "description": "Sets the x position (in normalized coordinates) of the range selector.", - "editType": "plot", - "max": 3, - "min": -2, - "valType": "number" - }, - "xanchor": { - "description": "Sets the range selector's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the range selector.", - "dflt": "left", - "editType": "plot", - "valType": "enumerated", - "values": [ - "auto", - "left", - "center", - "right" - ] - }, - "y": { - "description": "Sets the y position (in normalized coordinates) of the range selector.", - "editType": "plot", - "max": 3, - "min": -2, - "valType": "number" - }, - "yanchor": { - "description": "Sets the range selector's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the range selector.", - "dflt": "bottom", - "editType": "plot", - "valType": "enumerated", - "values": [ - "auto", - "top", - "middle", - "bottom" - ] - } - }, - "rangeslider": { - "autorange": { - "description": "Determines whether or not the range slider range is computed in relation to the input data. If `range` is provided, then `autorange` is set to *false*.", - "dflt": true, - "editType": "calc", - "impliedEdits": {}, - "valType": "boolean" - }, - "bgcolor": { - "description": "Sets the background color of the range slider.", - "dflt": "#fff", - "editType": "plot", - "valType": "color" - }, - "bordercolor": { - "description": "Sets the border color of the range slider.", - "dflt": "#444", - "editType": "plot", - "valType": "color" - }, - "borderwidth": { - "description": "Sets the border width of the range slider.", - "dflt": 0, - "editType": "plot", - "min": 0, - "valType": "integer" - }, - "editType": "calc", - "range": { - "description": "Sets the range of the range slider. If not set, defaults to the full xaxis range. If the axis `type` is *log*, then you must take the log of your desired range. If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears.", - "editType": "calc", - "impliedEdits": { - "autorange": false - }, - "items": [ - { - "editType": "calc", - "impliedEdits": { - "^autorange": false - }, - "valType": "any" - }, - { - "editType": "calc", - "impliedEdits": { - "^autorange": false - }, - "valType": "any" - } - ], - "valType": "info_array" - }, - "role": "object", - "thickness": { - "description": "The height of the range slider as a fraction of the total plot area height.", - "dflt": 0.15, - "editType": "plot", - "max": 1, - "min": 0, - "valType": "number" - }, - "visible": { - "description": "Determines whether or not the range slider will be visible. If visible, perpendicular axes will be set to `fixedrange`", - "dflt": true, - "editType": "calc", - "valType": "boolean" - }, - "yaxis": { - "_isSubplotObj": true, - "editType": "calc", - "range": { - "description": "Sets the range of this axis for the rangeslider.", - "editType": "plot", - "items": [ - { - "editType": "plot", - "valType": "any" - }, - { - "editType": "plot", - "valType": "any" - } - ], - "valType": "info_array" - }, - "rangemode": { - "description": "Determines whether or not the range of this axis in the rangeslider use the same value than in the main plot when zooming in/out. If *auto*, the autorange will be used. If *fixed*, the `range` is used. If *match*, the current range of the corresponding y-axis on the main subplot is used.", - "dflt": "match", - "editType": "calc", - "valType": "enumerated", - "values": [ - "auto", - "fixed", - "match" - ] - }, - "role": "object" - } - }, - "role": "object", - "scaleanchor": { - "description": "If set to another axis id (e.g. `x2`, `y`), the range of this axis changes together with the range of the corresponding axis such that the scale of pixels per unit is in a constant ratio. Both axes are still zoomable, but when you zoom one, the other will zoom the same amount, keeping a fixed midpoint. `constrain` and `constraintoward` determine how we enforce the constraint. You can chain these, ie `yaxis: {scaleanchor: *x*}, xaxis2: {scaleanchor: *y*}` but you can only link axes of the same `type`. The linked axis can have the opposite letter (to constrain the aspect ratio) or the same letter (to match scales across subplots). Loops (`yaxis: {scaleanchor: *x*}, xaxis: {scaleanchor: *y*}` or longer) are redundant and the last constraint encountered will be ignored to avoid possible inconsistent constraints via `scaleratio`. Note that setting axes simultaneously in both a `scaleanchor` and a `matches` constraint is currently forbidden. Setting `false` allows to remove a default constraint (occasionally, you may need to prevent a default `scaleanchor` constraint from being applied, eg. when having an image trace `yaxis: {scaleanchor: \"x\"}` is set automatically in order for pixels to be rendered as squares, setting `yaxis: {scaleanchor: false}` allows to remove the constraint).", - "editType": "plot", - "valType": "enumerated", - "values": [ - "/^x([2-9]|[1-9][0-9]+)?( domain)?$/", - "/^y([2-9]|[1-9][0-9]+)?( domain)?$/", - false - ] - }, - "scaleratio": { - "description": "If this axis is linked to another by `scaleanchor`, this determines the pixel to unit scale ratio. For example, if this value is 10, then every unit on this axis spans 10 times the number of pixels as a unit on the linked axis. Use this for example to create an elevation profile where the vertical scale is exaggerated a fixed amount with respect to the horizontal.", - "dflt": 1, + "valType": "any" + } + ], + "valType": "info_array" + }, + "description": "The dimensions (variables) of the parallel coordinates chart. 2..60 dimensions are supported.", + "editType": "calc", + "label": { + "description": "The shown name of the dimension.", + "editType": "plot", + "valType": "string" + }, + "multiselect": { + "description": "Do we allow multiple selection ranges or just a single range?", + "dflt": true, + "editType": "plot", + "valType": "boolean" + }, + "name": { + "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.", + "editType": "none", + "valType": "string" + }, + "range": { + "description": "The domain range that represents the full, shown axis extent. Defaults to the `values` extent. Must be an array of `[fromValue, toValue]` with finite numbers as elements.", + "editType": "plot", + "items": [ + { "editType": "plot", - "min": 0, "valType": "number" - }, - "separatethousands": { - "description": "If \"true\", even 4-digit integers are separated", - "dflt": false, - "editType": "ticks", - "valType": "boolean" - }, - "showdividers": { - "description": "Determines whether or not a dividers are drawn between the category levels of this axis. Only has an effect on *multicategory* axes.", - "dflt": true, - "editType": "ticks", - "valType": "boolean" - }, - "showexponent": { - "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.", - "dflt": "all", - "editType": "ticks", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "showgrid": { - "description": "Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark.", - "editType": "ticks", - "valType": "boolean" - }, - "showline": { - "description": "Determines whether or not a line bounding this axis is drawn.", - "dflt": false, - "editType": "ticks+layoutstyle", - "valType": "boolean" - }, - "showspikes": { - "description": "Determines whether or not spikes (aka droplines) are drawn for this axis. Note: This only takes affect when hovermode = closest", - "dflt": false, - "editType": "modebar", - "valType": "boolean" - }, - "showticklabels": { - "description": "Determines whether or not the tick labels are drawn.", - "dflt": true, - "editType": "ticks", - "valType": "boolean" - }, - "showtickprefix": { - "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.", - "dflt": "all", - "editType": "ticks", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "showticksuffix": { - "description": "Same as `showtickprefix` but for tick suffixes.", - "dflt": "all", - "editType": "ticks", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "side": { - "description": "Determines whether a x (y) axis is positioned at the *bottom* (*left*) or *top* (*right*) of the plotting area.", + }, + { "editType": "plot", - "valType": "enumerated", - "values": [ - "top", - "bottom", - "left", - "right" - ] - }, - "spikecolor": { - "description": "Sets the spike color. If undefined, will use the series color", - "dflt": null, - "editType": "none", - "valType": "color" - }, - "spikedash": { - "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", - "dflt": "dash", - "editType": "none", - "valType": "string", - "values": [ - "solid", - "dot", - "dash", - "longdash", - "dashdot", - "longdashdot" - ] - }, - "spikemode": { - "description": "Determines the drawing mode for the spike line If *toaxis*, the line is drawn from the data point to the axis the series is plotted on. If *across*, the line is drawn across the entire plot area, and supercedes *toaxis*. If *marker*, then a marker dot is drawn on the axis the series is plotted on", - "dflt": "toaxis", - "editType": "none", - "flags": [ - "toaxis", - "across", - "marker" - ], - "valType": "flaglist" - }, - "spikesnap": { - "description": "Determines whether spikelines are stuck to the cursor or to the closest datapoints.", - "dflt": "hovered data", - "editType": "none", - "valType": "enumerated", - "values": [ - "data", - "cursor", - "hovered data" - ] - }, - "spikethickness": { - "description": "Sets the width (in px) of the zero line.", - "dflt": 3, - "editType": "none", "valType": "number" - }, - "tick0": { - "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears.", - "editType": "ticks", - "impliedEdits": { - "tickmode": "linear" - }, - "valType": "any" - }, - "tickangle": { - "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.", - "dflt": "auto", - "editType": "ticks", - "valType": "angle" - }, - "tickcolor": { - "description": "Sets the tick color.", - "dflt": "#444", - "editType": "ticks", - "valType": "color" - }, - "tickfont": { - "color": { - "editType": "ticks", - "valType": "color" - }, - "description": "Sets the tick font.", - "editType": "ticks", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "ticks", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "lineposition": { - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "ticks", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "role": "object", - "shadow": { - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "ticks", - "valType": "string" - }, - "size": { - "editType": "ticks", - "min": 1, - "valType": "number" - }, - "style": { - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "ticks", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "textcase": { - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "ticks", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "ticks", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "ticks", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "tickformat": { - "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*", - "dflt": "", - "editType": "ticks", - "valType": "string" - }, - "tickformatstops": { - "items": { - "tickformatstop": { - "dtickrange": { - "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*", - "editType": "ticks", - "items": [ - { - "editType": "ticks", - "valType": "any" - }, - { - "editType": "ticks", - "valType": "any" - } - ], - "valType": "info_array" - }, - "editType": "ticks", - "enabled": { - "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.", - "dflt": true, - "editType": "ticks", - "valType": "boolean" - }, - "name": { - "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.", - "editType": "none", - "valType": "string" - }, - "role": "object", - "templateitemname": { - "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.", - "editType": "calc", - "valType": "string" - }, - "value": { - "description": "string - dtickformat for described zoom level, the same as *tickformat*", - "dflt": "", - "editType": "ticks", - "valType": "string" - } - } - }, - "role": "object" - }, - "ticklabelindex": { - "arrayOk": true, - "description": "Only for axes with `type` *date* or *linear*. Instead of drawing the major tick label, draw the label for the minor tick that is n positions away from the major tick. E.g. to always draw the label for the minor tick before each major tick, choose `ticklabelindex` -1. This is useful for date axes with `ticklabelmode` *period* if you want to label the period that ends with each major tick instead of the period that begins there.", - "editType": "calc", - "valType": "integer" - }, - "ticklabelindexsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticklabelindex`.", - "editType": "none", - "valType": "string" - }, - "ticklabelmode": { - "description": "Determines where tick labels are drawn with respect to their corresponding ticks and grid lines. Only has an effect for axes of `type` *date* When set to *period*, tick labels are drawn in the middle of the period between ticks.", - "dflt": "instant", - "editType": "ticks", - "valType": "enumerated", - "values": [ - "instant", - "period" - ] - }, - "ticklabeloverflow": { - "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. Otherwise on *category* and *multicategory* axes the default is *allow*. In other cases the default is *hide past div*.", - "editType": "calc", - "valType": "enumerated", - "values": [ - "allow", - "hide past div", - "hide past domain" - ] - }, - "ticklabelposition": { - "description": "Determines where tick labels are drawn with respect to the axis. Please note that top or bottom has no effect on x axes or when `ticklabelmode` is set to *period* or when `tickson` is set to *boundaries*. Similarly, left or right has no effect on y axes or when `ticklabelmode` is set to *period* or when `tickson` is set to *boundaries*. Has no effect on *multicategory* axes. When used on axes linked by `matches` or `scaleanchor`, no extra padding for inside labels would be added by autorange, so that the scales could match.", - "dflt": "outside", - "editType": "calc", - "valType": "enumerated", - "values": [ - "outside", - "inside", - "outside top", - "inside top", - "outside left", - "inside left", - "outside right", - "inside right", - "outside bottom", - "inside bottom" - ] - }, - "ticklabelshift": { - "description": "Shifts the tick labels by the specified number of pixels in parallel to the axis. Positive values move the labels in the positive direction of the axis.", - "dflt": 0, - "editType": "ticks", - "valType": "integer" - }, - "ticklabelstandoff": { - "description": "Sets the standoff distance (in px) between the axis tick labels and their default position. A positive `ticklabelstandoff` moves the labels farther away from the plot area if `ticklabelposition` is *outside*, and deeper into the plot area if `ticklabelposition` is *inside*. A negative `ticklabelstandoff` works in the opposite direction, moving outside ticks towards the plot area and inside ticks towards the outside. If the negative value is large enough, inside ticks can even end up outside and vice versa.", - "dflt": 0, - "editType": "ticks", - "valType": "integer" - }, - "ticklabelstep": { - "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.", - "dflt": 1, - "editType": "ticks", - "min": 1, - "valType": "integer" - }, - "ticklen": { - "description": "Sets the tick length (in px).", - "dflt": 5, - "editType": "ticks", - "min": 0, - "valType": "number" - }, - "tickmode": { - "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). If *sync*, the number of ticks will sync with the overlayed axis set by `overlaying` property.", - "editType": "ticks", - "impliedEdits": {}, - "valType": "enumerated", - "values": [ - "auto", - "linear", - "array", - "sync" - ] - }, - "tickprefix": { - "description": "Sets a tick label prefix.", - "dflt": "", - "editType": "ticks", - "valType": "string" - }, - "ticks": { - "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.", - "editType": "ticks", - "valType": "enumerated", - "values": [ - "outside", - "inside", - "" - ] - }, - "tickson": { - "description": "Determines where ticks and grid lines are drawn with respect to their corresponding tick labels. Only has an effect for axes of `type` *category* or *multicategory*. When set to *boundaries*, ticks and grid lines are drawn half a category to the left/bottom of labels.", - "dflt": "labels", - "editType": "ticks", - "valType": "enumerated", - "values": [ - "labels", - "boundaries" - ] - }, - "ticksuffix": { - "description": "Sets a tick label suffix.", - "dflt": "", - "editType": "ticks", - "valType": "string" - }, - "ticktext": { - "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", - "editType": "ticks", - "valType": "data_array" - }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, - "tickvals": { - "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", - "editType": "ticks", - "valType": "data_array" - }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, - "tickwidth": { - "description": "Sets the tick width (in px).", - "dflt": 1, - "editType": "ticks", - "min": 0, - "valType": "number" - }, - "title": { - "editType": "ticks", - "font": { - "color": { - "editType": "ticks", - "valType": "color" - }, - "description": "Sets this axis' title font.", - "editType": "ticks", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "ticks", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "lineposition": { - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "ticks", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "role": "object", - "shadow": { - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "ticks", - "valType": "string" - }, - "size": { - "editType": "ticks", - "min": 1, - "valType": "number" - }, - "style": { - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "ticks", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "textcase": { - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "ticks", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "ticks", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "ticks", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "role": "object", - "standoff": { - "description": "Sets the standoff distance (in px) between the axis labels and the title text The default value is a function of the axis tick labels, the title `font.size` and the axis `linewidth`. Note that the axis title position is always constrained within the margins, so the actual standoff distance is always less than the set or default value. By setting `standoff` and turning on `automargin`, plotly.js will push the margins to fit the axis title at given standoff distance.", - "editType": "ticks", - "min": 0, - "valType": "number" - }, - "text": { - "description": "Sets the title of this axis.", - "editType": "ticks", - "valType": "string" - } - }, -<<<<<<< HEAD -======= - "role": "object", - "shadow": { - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "calc", - "valType": "string" - }, - "size": { - "editType": "calc", - "min": 1, - "valType": "number" - }, - "style": { - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "textcase": { - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "calc", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "role": "object", - "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", - "editType": "calc", - "valType": "enumerated", - "values": [ - "right", - "top", - "bottom" - ] - }, - "text": { - "description": "Sets the title of the color bar.", - "editType": "calc", - "valType": "string" - } - }, - "x": { - "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.", - "editType": "calc", - "valType": "number" - }, - "xanchor": { - "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.", - "editType": "calc", - "valType": "enumerated", - "values": [ - "left", - "center", - "right" - ] - }, - "xpad": { - "description": "Sets the amount of padding (in px) along the x direction.", - "dflt": 10, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "xref": { - "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.", - "dflt": "paper", - "editType": "calc", - "valType": "enumerated", - "values": [ - "container", - "paper" - ] - }, - "y": { - "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.", - "editType": "calc", - "valType": "number" - }, - "yanchor": { - "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.", - "editType": "calc", - "valType": "enumerated", - "values": [ - "top", - "middle", - "bottom" - ] - }, - "ypad": { - "description": "Sets the amount of padding (in px) along the y direction.", - "dflt": 10, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "yref": { - "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.", - "dflt": "paper", - "editType": "calc", - "valType": "enumerated", - "values": [ - "container", - "paper" - ] - } - }, - "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", - "dflt": null, - "editType": "calc", - "impliedEdits": { - "autocolorscale": false - }, - "valType": "colorscale" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "editType": "calc", - "opacity": { - "arrayOk": true, - "description": "Sets the marker opacity.", - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, - "reversescale": { - "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "role": "object", - "showscale": { - "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "size": { - "arrayOk": true, - "description": "Sets the marker size (in px).", - "dflt": 6, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "sizemin": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points.", - "dflt": 0, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "sizemode": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels.", - "dflt": "diameter", - "editType": "calc", - "valType": "enumerated", - "values": [ - "diameter", - "area" - ] - }, - "sizeref": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`.", - "dflt": 1, - "editType": "calc", - "valType": "number" - }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, - "symbol": { - "arrayOk": true, - "description": "Sets the marker symbol. Full list: https://www.mapbox.com/maki-icons/ Note that the array `marker.color` and `marker.size` are only available for *circle* symbols.", - "dflt": "circle", - "editType": "calc", - "valType": "string" - }, - "symbolsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", - "editType": "none", - "valType": "string" - } - }, - "meta": { - "arrayOk": true, - "description": "Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index.", - "editType": "plot", - "valType": "any" - }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, - "mode": { - "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover.", - "dflt": "markers", - "editType": "calc", - "extras": [ - "none" - ], - "flags": [ - "lines", - "markers", - "text" - ], - "valType": "flaglist" - }, - "name": { - "description": "Sets the trace name. The trace name appears as the legend item and on hover.", - "editType": "style", - "valType": "string" - }, - "opacity": { - "description": "Sets the opacity of the trace.", - "dflt": 1, - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" - }, - "selected": { - "editType": "calc", - "marker": { - "color": { - "description": "Sets the marker color of selected points.", - "editType": "calc", - "valType": "color" - }, - "editType": "calc", - "opacity": { - "description": "Sets the marker opacity of selected points.", - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - }, - "role": "object", - "size": { - "description": "Sets the marker size of selected points.", - "editType": "calc", - "min": 0, - "valType": "number" - } - }, - "role": "object" - }, - "selectedpoints": { - "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.", - "editType": "calc", - "valType": "any" - }, - "showlegend": { - "description": "Determines whether or not an item corresponding to this trace is shown in the legend.", - "dflt": true, - "editType": "style", - "valType": "boolean" - }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, - "subplot": { - "description": "Sets a reference between this trace's data coordinates and a map subplot. If *map* (the default value), the data refer to `layout.map`. If *map2*, the data refer to `layout.map2`, and so on.", - "dflt": "map", - "editType": "calc", - "valType": "subplotid" - }, - "text": { - "arrayOk": true, - "description": "Sets text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", - "dflt": "", - "editType": "calc", - "valType": "string" - }, - "textfont": { - "color": { - "editType": "calc", - "valType": "color" - }, - "description": "Sets the icon text font (color=map.layer.paint.text-color, size=map.layer.layout.text-size). Has an effect only when `type` is set to *symbol*.", - "editType": "calc", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "dflt": "Open Sans Regular, Arial Unicode MS Regular", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "role": "object", - "size": { - "editType": "calc", - "min": 1, - "valType": "number" - }, - "style": { - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "calc", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "textposition": { - "arrayOk": false, - "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.", - "dflt": "middle center", - "editType": "calc", - "valType": "enumerated", - "values": [ - "top left", - "top center", - "top right", - "middle left", - "middle center", - "middle right", - "bottom left", - "bottom center", - "bottom right" - ] - }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, - "texttemplate": { - "arrayOk": true, - "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `lat`, `lon` and `text`.", - "dflt": "", - "editType": "calc", - "valType": "string" - }, - "texttemplatefallback": { - "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", - "dflt": "-", - "editType": "calc", - "valType": "any" - }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, - "type": "scattermap", - "uid": { - "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", - "editType": "plot", - "valType": "string" - }, - "uirevision": { - "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves.", - "editType": "none", - "valType": "any" - }, - "unselected": { - "editType": "calc", - "marker": { - "color": { - "description": "Sets the marker color of unselected points, applied only when a selection exists.", - "editType": "calc", - "valType": "color" - }, - "editType": "calc", - "opacity": { - "description": "Sets the marker opacity of unselected points, applied only when a selection exists.", - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - }, - "role": "object", - "size": { - "description": "Sets the marker size of unselected points, applied only when a selection exists.", - "editType": "calc", - "min": 0, - "valType": "number" - } - }, - "role": "object" - }, - "visible": { - "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).", - "dflt": true, - "editType": "calc", - "valType": "enumerated", - "values": [ - true, - false, - "legendonly" - ] - } - }, - "categories": [ - "map", - "gl", - "symbols", - "showLegend", - "scatter-like" - ], - "meta": { - "description": "The data visualized as scatter point, lines or marker symbols on a MapLibre GL geographic map is provided by longitude/latitude pairs in `lon` and `lat`.", - "hrName": "scatter_map" - }, - "type": "scattermap" - }, - "scattermapbox": { - "animatable": false, - "attributes": { - "below": { - "description": "Determines if this scattermapbox trace's layers are to be inserted before the layer with the specified ID. By default, scattermapbox layers are inserted above all the base layers. To place the scattermapbox layers above every other layer, set `below` to *''*.", - "editType": "calc", - "valType": "string" - }, - "cluster": { - "color": { - "arrayOk": true, - "description": "Sets the color for each cluster step.", - "editType": "calc", - "valType": "color" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "editType": "calc", - "enabled": { - "description": "Determines whether clustering is enabled or disabled.", - "editType": "calc", - "valType": "boolean" - }, - "maxzoom": { - "description": "Sets the maximum zoom level. At zoom levels equal to or greater than this, points will never be clustered.", - "dflt": 24, - "editType": "calc", - "max": 24, - "min": 0, - "valType": "number" - }, - "opacity": { - "arrayOk": true, - "description": "Sets the marker opacity.", - "dflt": 1, - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, - "role": "object", - "size": { - "arrayOk": true, - "description": "Sets the size for each cluster step.", - "dflt": 20, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, - "step": { - "arrayOk": true, - "description": "Sets how many points it takes to create a cluster or advance to the next cluster step. Use this in conjunction with arrays for `size` and / or `color`. If an integer, steps start at multiples of this number. If an array, each step extends from the given value until one less than the next value.", - "dflt": -1, - "editType": "calc", - "min": -1, - "valType": "number" - }, - "stepsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `step`.", - "editType": "none", - "valType": "string" - } - }, - "connectgaps": { - "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "customdata": { - "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements", - "editType": "calc", - "valType": "data_array" - }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, - "fill": { - "description": "Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape.", - "dflt": "none", - "editType": "calc", - "valType": "enumerated", - "values": [ - "none", - "toself" - ] - }, - "fillcolor": { - "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available.", - "editType": "calc", - "valType": "color" - }, - "hoverinfo": { - "arrayOk": true, - "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.", - "dflt": "all", - "editType": "calc", - "extras": [ - "all", - "none", - "skip" - ], - "flags": [ - "lon", - "lat", - "text", - "name" - ], - "valType": "flaglist" - }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, - "hoverlabel": { - "align": { - "arrayOk": true, - "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines", - "dflt": "auto", - "editType": "none", - "valType": "enumerated", - "values": [ - "left", - "right", - "auto" - ] - }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, - "bgcolor": { - "arrayOk": true, - "description": "Sets the background color of the hover labels for this trace", - "editType": "none", - "valType": "color" - }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, - "bordercolor": { - "arrayOk": true, - "description": "Sets the border color of the hover labels for this trace.", - "editType": "none", - "valType": "color" - }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, - "editType": "none", - "font": { - "color": { - "arrayOk": true, - "editType": "none", - "valType": "color" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "description": "Sets the font used in hover labels.", - "editType": "none", - "family": { - "arrayOk": true, - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "none", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, - "lineposition": { - "arrayOk": true, - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "none", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, - "role": "object", - "shadow": { - "arrayOk": true, - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "none", - "valType": "string" - }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, - "size": { - "arrayOk": true, - "editType": "none", - "min": 1, - "valType": "number" - }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, - "style": { - "arrayOk": true, - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "none", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, - "textcase": { - "arrayOk": true, - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "none", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, - "variant": { - "arrayOk": true, - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "none", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, - "weight": { - "arrayOk": true, - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "none", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" - } - }, - "namelength": { - "arrayOk": true, - "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.", - "dflt": 15, - "editType": "none", - "min": -1, - "valType": "integer" - }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, - "role": "object", - "showarrow": { - "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", - "dflt": true, - "editType": "none", - "valType": "boolean" - } - }, - "hovertemplate": { - "arrayOk": true, - "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``.", - "dflt": "", - "editType": "calc", - "valType": "string" - }, - "hovertemplatefallback": { - "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", - "dflt": "-", - "editType": "calc", - "valType": "any" - }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, - "hovertext": { - "arrayOk": true, - "description": "Sets hover text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", - "dflt": "", - "editType": "calc", - "valType": "string" - }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, - "ids": { - "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", - "editType": "calc", - "valType": "data_array" - }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, - "lat": { - "description": "Sets the latitude coordinates (in degrees North).", - "editType": "calc", - "valType": "data_array" - }, - "latsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lat`.", - "editType": "none", - "valType": "string" - }, - "legend": { - "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", - "dflt": "legend", - "editType": "style", - "valType": "subplotid" - }, - "legendgroup": { - "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.", - "dflt": "", - "editType": "style", - "valType": "string" - }, - "legendgrouptitle": { - "editType": "style", - "font": { - "color": { - "editType": "style", - "valType": "color" - }, - "description": "Sets this legend group's title font.", - "editType": "style", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "style", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "lineposition": { - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "style", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "role": "object", - "shadow": { - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "style", - "valType": "string" - }, - "size": { - "editType": "style", - "min": 1, - "valType": "number" - }, - "style": { - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "style", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "textcase": { - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "style", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "style", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "style", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "role": "object", - "text": { - "description": "Sets the title of the legend group.", - "dflt": "", - "editType": "style", - "valType": "string" - } - }, - "legendrank": { - "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.", - "dflt": 1000, - "editType": "style", - "valType": "number" - }, - "legendwidth": { - "description": "Sets the width (in px or fraction) of the legend for this trace.", - "editType": "style", - "min": 0, - "valType": "number" - }, - "line": { - "color": { - "description": "Sets the line color.", - "editType": "calc", - "valType": "color" - }, - "editType": "calc", - "role": "object", - "width": { - "description": "Sets the line width (in px).", - "dflt": 2, - "editType": "calc", - "min": 0, - "valType": "number" - } - }, - "lon": { - "description": "Sets the longitude coordinates (in degrees East).", - "editType": "calc", - "valType": "data_array" - }, - "lonsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lon`.", - "editType": "none", - "valType": "string" - }, - "marker": { - "allowoverlap": { - "description": "Flag to draw all symbols, even if they overlap.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "angle": { - "arrayOk": true, - "description": "Sets the marker orientation from true North, in degrees clockwise. When using the *auto* default, no rotation would be applied in perspective views which is different from using a zero angle.", - "dflt": "auto", - "editType": "calc", - "valType": "number" - }, - "anglesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `angle`.", - "editType": "none", - "valType": "string" - }, - "autocolorscale": { - "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", - "dflt": true, - "editType": "calc", - "impliedEdits": {}, - "valType": "boolean" - }, - "cauto": { - "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.", - "dflt": true, - "editType": "calc", - "impliedEdits": {}, - "valType": "boolean" - }, - "cmax": { - "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well.", - "dflt": null, - "editType": "calc", - "impliedEdits": { - "cauto": false - }, - "valType": "number" - }, - "cmid": { - "description": "Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`.", - "dflt": null, - "editType": "calc", - "impliedEdits": {}, - "valType": "number" - }, - "cmin": { - "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well.", - "dflt": null, - "editType": "calc", - "impliedEdits": { - "cauto": false - }, - "valType": "number" - }, - "color": { - "arrayOk": true, - "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.", - "editType": "calc", - "valType": "color" - }, - "coloraxis": { - "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.", - "dflt": null, - "editType": "calc", - "regex": "/^coloraxis([2-9]|[1-9][0-9]+)?$/", - "valType": "subplotid" - }, - "colorbar": { - "bgcolor": { - "description": "Sets the color of padded area.", - "dflt": "rgba(0,0,0,0)", - "editType": "calc", - "valType": "color" - }, - "bordercolor": { - "description": "Sets the axis line color.", - "dflt": "#444", - "editType": "calc", - "valType": "color" - }, - "borderwidth": { - "description": "Sets the width (in px) or the border enclosing this color bar.", - "dflt": 0, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "dtick": { - "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*", - "editType": "calc", - "impliedEdits": { - "tickmode": "linear" - }, - "valType": "any" - }, - "editType": "calc", - "exponentformat": { - "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from \"femto\" f (10^-15) to \"tera\" T (10^12). *SI extended* covers instead the full SI range from \"quecto\" q (10^-30) to \"quetta\" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation.", - "dflt": "B", - "editType": "calc", - "valType": "enumerated", - "values": [ - "none", - "e", - "E", - "power", - "SI", - "B", - "SI extended" - ] - }, - "labelalias": { - "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax.", - "dflt": false, - "editType": "calc", - "valType": "any" - }, - "len": { - "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.", - "dflt": 1, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "lenmode": { - "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.", - "dflt": "fraction", - "editType": "calc", - "valType": "enumerated", - "values": [ - "fraction", - "pixels" - ] - }, - "minexponent": { - "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.", - "dflt": 3, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "nticks": { - "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.", - "dflt": 0, - "editType": "calc", - "min": 0, - "valType": "integer" - }, - "orientation": { - "description": "Sets the orientation of the colorbar.", - "dflt": "v", - "editType": "calc", - "valType": "enumerated", - "values": [ - "h", - "v" - ] - }, - "outlinecolor": { - "description": "Sets the axis line color.", - "dflt": "#444", - "editType": "calc", - "valType": "color" - }, - "outlinewidth": { - "description": "Sets the width (in px) of the axis line.", - "dflt": 1, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "role": "object", - "separatethousands": { - "description": "If \"true\", even 4-digit integers are separated", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "showexponent": { - "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.", - "dflt": "all", - "editType": "calc", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "showticklabels": { - "description": "Determines whether or not the tick labels are drawn.", - "dflt": true, - "editType": "calc", - "valType": "boolean" - }, - "showtickprefix": { - "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.", - "dflt": "all", - "editType": "calc", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "showticksuffix": { - "description": "Same as `showtickprefix` but for tick suffixes.", - "dflt": "all", - "editType": "calc", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "thickness": { - "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.", - "dflt": 30, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "thicknessmode": { - "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.", - "dflt": "pixels", - "editType": "calc", - "valType": "enumerated", - "values": [ - "fraction", - "pixels" - ] - }, - "tick0": { - "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears.", - "editType": "calc", - "impliedEdits": { - "tickmode": "linear" - }, - "valType": "any" - }, - "tickangle": { - "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.", - "dflt": "auto", - "editType": "calc", - "valType": "angle" - }, - "tickcolor": { - "description": "Sets the tick color.", - "dflt": "#444", - "editType": "calc", - "valType": "color" - }, - "tickfont": { - "color": { - "editType": "calc", - "valType": "color" - }, - "description": "Sets the color bar's tick label font", - "editType": "calc", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "lineposition": { - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "calc", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "role": "object", - "shadow": { - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "calc", - "valType": "string" - }, - "size": { - "editType": "calc", - "min": 1, - "valType": "number" - }, - "style": { - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "textcase": { - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "calc", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "tickformat": { - "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*", - "dflt": "", - "editType": "calc", - "valType": "string" - }, - "tickformatstops": { - "items": { - "tickformatstop": { - "dtickrange": { - "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*", - "editType": "calc", - "items": [ - { - "editType": "calc", - "valType": "any" - }, - { - "editType": "calc", - "valType": "any" - } - ], - "valType": "info_array" - }, - "editType": "calc", - "enabled": { - "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.", - "dflt": true, - "editType": "calc", - "valType": "boolean" - }, - "name": { - "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.", - "editType": "calc", - "valType": "string" - }, - "role": "object", - "templateitemname": { - "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.", - "editType": "calc", - "valType": "string" - }, - "value": { - "description": "string - dtickformat for described zoom level, the same as *tickformat*", - "dflt": "", - "editType": "calc", - "valType": "string" - } - } - }, - "role": "object" - }, - "ticklabeloverflow": { - "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.", - "editType": "calc", - "valType": "enumerated", - "values": [ - "allow", - "hide past div", - "hide past domain" - ] - }, - "ticklabelposition": { - "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.", - "dflt": "outside", - "editType": "calc", - "valType": "enumerated", - "values": [ - "outside", - "inside", - "outside top", - "inside top", - "outside left", - "inside left", - "outside right", - "inside right", - "outside bottom", - "inside bottom" - ] - }, - "ticklabelstep": { - "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.", - "dflt": 1, - "editType": "calc", - "min": 1, - "valType": "integer" - }, - "ticklen": { - "description": "Sets the tick length (in px).", - "dflt": 5, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "tickmode": { - "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).", - "editType": "calc", - "impliedEdits": {}, - "valType": "enumerated", - "values": [ - "auto", - "linear", - "array" - ] - }, - "tickprefix": { - "description": "Sets a tick label prefix.", - "dflt": "", - "editType": "calc", - "valType": "string" - }, - "ticks": { - "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.", - "dflt": "", - "editType": "calc", - "valType": "enumerated", - "values": [ - "outside", - "inside", - "" - ] - }, - "ticksuffix": { - "description": "Sets a tick label suffix.", - "dflt": "", - "editType": "calc", - "valType": "string" - }, - "ticktext": { - "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", - "editType": "calc", - "valType": "data_array" - }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, - "tickvals": { - "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", - "editType": "calc", - "valType": "data_array" - }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, - "tickwidth": { - "description": "Sets the tick width (in px).", - "dflt": 1, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "title": { - "editType": "calc", - "font": { - "color": { - "editType": "calc", - "valType": "color" - }, - "description": "Sets this color bar's title font.", - "editType": "calc", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "lineposition": { - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "calc", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "role": "object", - "shadow": { - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "calc", - "valType": "string" - }, - "size": { - "editType": "calc", - "min": 1, - "valType": "number" - }, - "style": { - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "textcase": { - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "calc", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "role": "object", - "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", - "editType": "calc", - "valType": "enumerated", - "values": [ - "right", - "top", - "bottom" - ] - }, - "text": { - "description": "Sets the title of the color bar.", - "editType": "calc", - "valType": "string" - } - }, - "x": { - "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.", - "editType": "calc", - "valType": "number" - }, - "xanchor": { - "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.", - "editType": "calc", - "valType": "enumerated", - "values": [ - "left", - "center", - "right" - ] - }, - "xpad": { - "description": "Sets the amount of padding (in px) along the x direction.", - "dflt": 10, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "xref": { - "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.", - "dflt": "paper", - "editType": "calc", - "valType": "enumerated", - "values": [ - "container", - "paper" - ] - }, - "y": { - "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.", - "editType": "calc", - "valType": "number" - }, - "yanchor": { - "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.", - "editType": "calc", - "valType": "enumerated", - "values": [ - "top", - "middle", - "bottom" - ] - }, - "ypad": { - "description": "Sets the amount of padding (in px) along the y direction.", - "dflt": 10, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "yref": { - "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.", - "dflt": "paper", - "editType": "calc", - "valType": "enumerated", - "values": [ - "container", - "paper" - ] - } - }, - "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", - "dflt": null, - "editType": "calc", - "impliedEdits": { - "autocolorscale": false - }, - "valType": "colorscale" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "editType": "calc", - "opacity": { - "arrayOk": true, - "description": "Sets the marker opacity.", - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, - "reversescale": { - "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "role": "object", - "showscale": { - "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "size": { - "arrayOk": true, - "description": "Sets the marker size (in px).", - "dflt": 6, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "sizemin": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points.", - "dflt": 0, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "sizemode": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels.", - "dflt": "diameter", - "editType": "calc", - "valType": "enumerated", - "values": [ - "diameter", - "area" - ] - }, - "sizeref": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`.", - "dflt": 1, - "editType": "calc", - "valType": "number" - }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, - "symbol": { - "arrayOk": true, - "description": "Sets the marker symbol. Full list: https://www.mapbox.com/maki-icons/ Note that the array `marker.color` and `marker.size` are only available for *circle* symbols.", - "dflt": "circle", - "editType": "calc", - "valType": "string" - }, - "symbolsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", - "editType": "none", - "valType": "string" - } - }, - "meta": { - "arrayOk": true, - "description": "Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index.", - "editType": "plot", - "valType": "any" - }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, - "mode": { - "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover.", - "dflt": "markers", - "editType": "calc", - "extras": [ - "none" - ], - "flags": [ - "lines", - "markers", - "text" - ], - "valType": "flaglist" - }, - "name": { - "description": "Sets the trace name. The trace name appears as the legend item and on hover.", - "editType": "style", - "valType": "string" - }, - "opacity": { - "description": "Sets the opacity of the trace.", - "dflt": 1, - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" - }, - "selected": { - "editType": "calc", - "marker": { - "color": { - "description": "Sets the marker color of selected points.", - "editType": "calc", - "valType": "color" - }, - "editType": "calc", - "opacity": { - "description": "Sets the marker opacity of selected points.", - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - }, - "role": "object", - "size": { - "description": "Sets the marker size of selected points.", - "editType": "calc", - "min": 0, - "valType": "number" - } - }, - "role": "object" - }, - "selectedpoints": { - "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.", - "editType": "calc", - "valType": "any" - }, - "showlegend": { - "description": "Determines whether or not an item corresponding to this trace is shown in the legend.", - "dflt": true, - "editType": "style", - "valType": "boolean" - }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, - "subplot": { - "description": "mapbox subplots and traces are deprecated! Please consider switching to `map` subplots and traces. Learn more at: https://plotly.com/python/maplibre-migration/ as well as https://plotly.com/javascript/maplibre-migration/ Sets a reference between this trace's data coordinates and a mapbox subplot. If *mapbox* (the default value), the data refer to `layout.mapbox`. If *mapbox2*, the data refer to `layout.mapbox2`, and so on.", - "dflt": "mapbox", - "editType": "calc", - "valType": "subplotid" - }, - "text": { - "arrayOk": true, - "description": "Sets text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", - "dflt": "", - "editType": "calc", - "valType": "string" - }, - "textfont": { - "color": { - "editType": "calc", - "valType": "color" - }, - "description": "Sets the icon text font (color=mapbox.layer.paint.text-color, size=mapbox.layer.layout.text-size). Has an effect only when `type` is set to *symbol*.", - "editType": "calc", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "dflt": "Open Sans Regular, Arial Unicode MS Regular", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "role": "object", - "size": { - "editType": "calc", - "min": 1, - "valType": "number" - }, - "style": { - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "calc", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "textposition": { - "arrayOk": false, - "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.", - "dflt": "middle center", - "editType": "calc", - "valType": "enumerated", - "values": [ - "top left", - "top center", - "top right", - "middle left", - "middle center", - "middle right", - "bottom left", - "bottom center", - "bottom right" - ] - }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, - "texttemplate": { - "arrayOk": true, - "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `lat`, `lon` and `text`.", - "dflt": "", - "editType": "calc", - "valType": "string" - }, - "texttemplatefallback": { - "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", - "dflt": "-", - "editType": "calc", - "valType": "any" - }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, - "type": "scattermapbox", - "uid": { - "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", - "editType": "plot", - "valType": "string" - }, - "uirevision": { - "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves.", - "editType": "none", - "valType": "any" - }, - "unselected": { - "editType": "calc", - "marker": { - "color": { - "description": "Sets the marker color of unselected points, applied only when a selection exists.", - "editType": "calc", - "valType": "color" - }, - "editType": "calc", - "opacity": { - "description": "Sets the marker opacity of unselected points, applied only when a selection exists.", - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - }, - "role": "object", - "size": { - "description": "Sets the marker size of unselected points, applied only when a selection exists.", - "editType": "calc", - "min": 0, - "valType": "number" - } - }, - "role": "object" - }, - "visible": { - "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).", - "dflt": true, - "editType": "calc", - "valType": "enumerated", - "values": [ - true, - false, - "legendonly" - ] - } - }, - "categories": [ - "mapbox", - "gl", - "symbols", - "showLegend", - "scatter-like" - ], - "meta": { - "description": "*scattermapbox* trace is deprecated! Please consider switching to the *scattermap* trace type and `map` subplots. Learn more at: https://plotly.com/python/maplibre-migration/ as well as https://plotly.com/javascript/maplibre-migration/ The data visualized as scatter point, lines or marker symbols on a Mapbox GL geographic map is provided by longitude/latitude pairs in `lon` and `lat`.", - "hrName": "scatter_mapbox" - }, - "type": "scattermapbox" - }, - "scatterpolar": { - "animatable": false, - "attributes": { - "cliponaxis": { - "description": "Determines whether or not markers and text nodes are clipped about the subplot axes. To show markers and text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*.", - "dflt": false, - "editType": "plot", - "valType": "boolean" - }, - "connectgaps": { - "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "customdata": { - "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements", - "editType": "calc", - "valType": "data_array" - }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, - "dr": { - "description": "Sets the r coordinate step.", - "dflt": 1, - "editType": "calc", - "valType": "number" - }, - "dtheta": { - "description": "Sets the theta coordinate step. By default, the `dtheta` step equals the subplot's period divided by the length of the `r` coordinates.", - "editType": "calc", - "valType": "number" - }, - "fill": { - "description": "Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. scatterpolar has a subset of the options available to scatter. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other.", - "dflt": "none", - "editType": "calc", - "valType": "enumerated", - "values": [ - "none", - "toself", - "tonext" - ] - }, - "fillcolor": { - "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available.", - "editType": "style", - "valType": "color" - }, - "hoverinfo": { - "arrayOk": true, - "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.", - "dflt": "all", - "editType": "none", - "extras": [ - "all", - "none", - "skip" - ], - "flags": [ - "r", - "theta", - "text", - "name" - ], - "valType": "flaglist" - }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, - "hoverlabel": { - "align": { - "arrayOk": true, - "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines", - "dflt": "auto", - "editType": "none", - "valType": "enumerated", - "values": [ - "left", - "right", - "auto" - ] - }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, - "bgcolor": { - "arrayOk": true, - "description": "Sets the background color of the hover labels for this trace", - "editType": "none", - "valType": "color" - }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, - "bordercolor": { - "arrayOk": true, - "description": "Sets the border color of the hover labels for this trace.", - "editType": "none", - "valType": "color" - }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, - "editType": "none", - "font": { - "color": { - "arrayOk": true, - "editType": "none", - "valType": "color" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "description": "Sets the font used in hover labels.", - "editType": "none", - "family": { - "arrayOk": true, - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "none", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, - "lineposition": { - "arrayOk": true, - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "none", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, - "role": "object", - "shadow": { - "arrayOk": true, - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "none", - "valType": "string" - }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, - "size": { - "arrayOk": true, - "editType": "none", - "min": 1, - "valType": "number" - }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, - "style": { - "arrayOk": true, - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "none", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, - "textcase": { - "arrayOk": true, - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "none", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, - "variant": { - "arrayOk": true, - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "none", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, - "weight": { - "arrayOk": true, - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "none", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" - } - }, - "namelength": { - "arrayOk": true, - "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.", - "dflt": 15, - "editType": "none", - "min": -1, - "valType": "integer" - }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, - "role": "object", - "showarrow": { - "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", - "dflt": true, - "editType": "none", - "valType": "boolean" - } - }, - "hoveron": { - "description": "Do the hover effects highlight individual points (markers or line points) or do they highlight filled regions? If the fill is *toself* or *tonext* and there are no markers or text, then the default is *fills*, otherwise it is *points*.", - "editType": "style", - "flags": [ - "points", - "fills" - ], - "valType": "flaglist" - }, - "hovertemplate": { - "arrayOk": true, - "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``.", - "dflt": "", - "editType": "none", - "valType": "string" - }, - "hovertemplatefallback": { - "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", - "dflt": "-", - "editType": "none", - "valType": "any" - }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, - "hovertext": { - "arrayOk": true, - "description": "Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", - "dflt": "", - "editType": "style", - "valType": "string" - }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, - "ids": { - "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", - "editType": "calc", - "valType": "data_array" - }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, - "legend": { - "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", - "dflt": "legend", - "editType": "style", - "valType": "subplotid" - }, - "legendgroup": { - "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.", - "dflt": "", - "editType": "style", - "valType": "string" - }, - "legendgrouptitle": { - "editType": "style", - "font": { - "color": { - "editType": "style", - "valType": "color" - }, - "description": "Sets this legend group's title font.", - "editType": "style", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "style", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "lineposition": { - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "style", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "role": "object", - "shadow": { - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "style", - "valType": "string" - }, - "size": { - "editType": "style", - "min": 1, - "valType": "number" - }, - "style": { - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "style", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "textcase": { - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "style", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "style", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "style", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "role": "object", - "text": { - "description": "Sets the title of the legend group.", - "dflt": "", - "editType": "style", - "valType": "string" - } - }, - "legendrank": { - "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.", - "dflt": 1000, - "editType": "style", - "valType": "number" - }, - "legendwidth": { - "description": "Sets the width (in px or fraction) of the legend for this trace.", - "editType": "style", - "min": 0, - "valType": "number" - }, - "line": { - "backoff": { - "arrayOk": true, - "description": "Sets the line back off from the end point of the nth line segment (in px). This option is useful e.g. to avoid overlap with arrowhead markers. With *auto* the lines would trim before markers if `marker.angleref` is set to *previous*.", - "dflt": "auto", - "editType": "plot", - "min": 0, - "valType": "number" - }, - "backoffsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `backoff`.", - "editType": "none", - "valType": "string" - }, - "color": { - "description": "Sets the line color.", - "editType": "style", - "valType": "color" - }, - "dash": { - "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", - "dflt": "solid", - "editType": "style", - "valType": "string", - "values": [ - "solid", - "dot", - "dash", - "longdash", - "dashdot", - "longdashdot" - ] - }, - "editType": "calc", - "role": "object", - "shape": { - "description": "Determines the line shape. With *spline* the lines are drawn using spline interpolation. The other available values correspond to step-wise line shapes.", - "dflt": "linear", - "editType": "plot", - "valType": "enumerated", - "values": [ - "linear", - "spline" - ] - }, - "smoothing": { - "description": "Has an effect only if `shape` is set to *spline* Sets the amount of smoothing. *0* corresponds to no smoothing (equivalent to a *linear* shape).", - "dflt": 1, - "editType": "plot", - "max": 1.3, - "min": 0, - "valType": "number" - }, - "width": { - "description": "Sets the line width (in px).", - "dflt": 2, - "editType": "style", - "min": 0, - "valType": "number" - } - }, - "marker": { - "angle": { - "arrayOk": true, - "description": "Sets the marker angle in respect to `angleref`.", - "dflt": 0, - "editType": "plot", - "valType": "angle" - }, - "angleref": { - "description": "Sets the reference for marker angle. With *previous*, angle 0 points along the line from the previous point to this one. With *up*, angle 0 points toward the top of the screen.", - "dflt": "up", - "editType": "plot", - "valType": "enumerated", - "values": [ - "previous", - "up" - ] - }, - "anglesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `angle`.", - "editType": "none", - "valType": "string" - }, - "autocolorscale": { - "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", - "dflt": true, - "editType": "calc", - "impliedEdits": {}, - "valType": "boolean" - }, - "cauto": { - "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.", - "dflt": true, - "editType": "calc", - "impliedEdits": {}, - "valType": "boolean" - }, - "cmax": { - "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well.", - "dflt": null, - "editType": "plot", - "impliedEdits": { - "cauto": false - }, - "valType": "number" - }, - "cmid": { - "description": "Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`.", - "dflt": null, - "editType": "calc", - "impliedEdits": {}, - "valType": "number" - }, - "cmin": { - "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well.", - "dflt": null, - "editType": "plot", - "impliedEdits": { - "cauto": false - }, - "valType": "number" - }, - "color": { - "arrayOk": true, - "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.", - "editType": "style", - "valType": "color" - }, - "coloraxis": { - "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.", - "dflt": null, - "editType": "calc", - "regex": "/^coloraxis([2-9]|[1-9][0-9]+)?$/", - "valType": "subplotid" - }, - "colorbar": { - "bgcolor": { - "description": "Sets the color of padded area.", - "dflt": "rgba(0,0,0,0)", - "editType": "colorbars", - "valType": "color" - }, - "bordercolor": { - "description": "Sets the axis line color.", - "dflt": "#444", - "editType": "colorbars", - "valType": "color" - }, - "borderwidth": { - "description": "Sets the width (in px) or the border enclosing this color bar.", - "dflt": 0, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "dtick": { - "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*", - "editType": "colorbars", - "impliedEdits": { - "tickmode": "linear" - }, - "valType": "any" - }, - "editType": "colorbars", - "exponentformat": { - "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from \"femto\" f (10^-15) to \"tera\" T (10^12). *SI extended* covers instead the full SI range from \"quecto\" q (10^-30) to \"quetta\" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation.", - "dflt": "B", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "none", - "e", - "E", - "power", - "SI", - "B", - "SI extended" - ] - }, - "labelalias": { - "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax.", - "dflt": false, - "editType": "colorbars", - "valType": "any" - }, - "len": { - "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.", - "dflt": 1, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "lenmode": { - "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.", - "dflt": "fraction", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "fraction", - "pixels" - ] - }, - "minexponent": { - "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.", - "dflt": 3, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "nticks": { - "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.", - "dflt": 0, - "editType": "colorbars", - "min": 0, - "valType": "integer" - }, - "orientation": { - "description": "Sets the orientation of the colorbar.", - "dflt": "v", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "h", - "v" - ] - }, - "outlinecolor": { - "description": "Sets the axis line color.", - "dflt": "#444", - "editType": "colorbars", - "valType": "color" - }, - "outlinewidth": { - "description": "Sets the width (in px) of the axis line.", - "dflt": 1, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "role": "object", - "separatethousands": { - "description": "If \"true\", even 4-digit integers are separated", - "dflt": false, - "editType": "colorbars", - "valType": "boolean" - }, - "showexponent": { - "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.", - "dflt": "all", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "showticklabels": { - "description": "Determines whether or not the tick labels are drawn.", - "dflt": true, - "editType": "colorbars", - "valType": "boolean" - }, - "showtickprefix": { - "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.", - "dflt": "all", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "showticksuffix": { - "description": "Same as `showtickprefix` but for tick suffixes.", - "dflt": "all", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "thickness": { - "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.", - "dflt": 30, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "thicknessmode": { - "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.", - "dflt": "pixels", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "fraction", - "pixels" - ] - }, - "tick0": { - "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears.", - "editType": "colorbars", - "impliedEdits": { - "tickmode": "linear" - }, - "valType": "any" - }, - "tickangle": { - "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.", - "dflt": "auto", - "editType": "colorbars", - "valType": "angle" - }, - "tickcolor": { - "description": "Sets the tick color.", - "dflt": "#444", - "editType": "colorbars", - "valType": "color" - }, - "tickfont": { - "color": { - "editType": "colorbars", - "valType": "color" - }, - "description": "Sets the color bar's tick label font", - "editType": "colorbars", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "colorbars", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "lineposition": { - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "colorbars", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "role": "object", - "shadow": { - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "colorbars", - "valType": "string" - }, - "size": { - "editType": "colorbars", - "min": 1, - "valType": "number" - }, - "style": { - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "textcase": { - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "colorbars", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "tickformat": { - "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*", - "dflt": "", - "editType": "colorbars", - "valType": "string" - }, - "tickformatstops": { - "items": { - "tickformatstop": { - "dtickrange": { - "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*", - "editType": "colorbars", - "items": [ - { - "editType": "colorbars", - "valType": "any" - }, - { - "editType": "colorbars", - "valType": "any" - } - ], - "valType": "info_array" - }, - "editType": "colorbars", - "enabled": { - "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.", - "dflt": true, - "editType": "colorbars", - "valType": "boolean" - }, - "name": { - "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.", - "editType": "colorbars", - "valType": "string" - }, - "role": "object", - "templateitemname": { - "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.", - "editType": "colorbars", - "valType": "string" - }, - "value": { - "description": "string - dtickformat for described zoom level, the same as *tickformat*", - "dflt": "", - "editType": "colorbars", - "valType": "string" - } - } - }, - "role": "object" - }, - "ticklabeloverflow": { - "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "allow", - "hide past div", - "hide past domain" - ] - }, - "ticklabelposition": { - "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.", - "dflt": "outside", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "outside", - "inside", - "outside top", - "inside top", - "outside left", - "inside left", - "outside right", - "inside right", - "outside bottom", - "inside bottom" - ] - }, - "ticklabelstep": { - "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.", - "dflt": 1, - "editType": "colorbars", - "min": 1, - "valType": "integer" - }, - "ticklen": { - "description": "Sets the tick length (in px).", - "dflt": 5, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "tickmode": { - "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).", - "editType": "colorbars", - "impliedEdits": {}, - "valType": "enumerated", - "values": [ - "auto", - "linear", - "array" - ] - }, - "tickprefix": { - "description": "Sets a tick label prefix.", - "dflt": "", - "editType": "colorbars", - "valType": "string" - }, - "ticks": { - "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.", - "dflt": "", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "outside", - "inside", - "" - ] - }, - "ticksuffix": { - "description": "Sets a tick label suffix.", - "dflt": "", - "editType": "colorbars", - "valType": "string" - }, - "ticktext": { - "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", - "editType": "colorbars", - "valType": "data_array" - }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, - "tickvals": { - "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", - "editType": "colorbars", - "valType": "data_array" - }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, - "tickwidth": { - "description": "Sets the tick width (in px).", - "dflt": 1, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "title": { - "editType": "colorbars", - "font": { - "color": { - "editType": "colorbars", - "valType": "color" - }, - "description": "Sets this color bar's title font.", - "editType": "colorbars", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "colorbars", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "lineposition": { - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "colorbars", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "role": "object", - "shadow": { - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "colorbars", - "valType": "string" - }, - "size": { - "editType": "colorbars", - "min": 1, - "valType": "number" - }, - "style": { - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "textcase": { - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "colorbars", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "role": "object", - "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "right", - "top", - "bottom" - ] - }, - "text": { - "description": "Sets the title of the color bar.", - "editType": "colorbars", - "valType": "string" - } - }, - "x": { - "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.", - "editType": "colorbars", - "valType": "number" - }, - "xanchor": { - "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "left", - "center", - "right" - ] - }, - "xpad": { - "description": "Sets the amount of padding (in px) along the x direction.", - "dflt": 10, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "xref": { - "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.", - "dflt": "paper", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "container", - "paper" - ] - }, - "y": { - "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.", - "editType": "colorbars", - "valType": "number" - }, - "yanchor": { - "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "top", - "middle", - "bottom" - ] - }, - "ypad": { - "description": "Sets the amount of padding (in px) along the y direction.", - "dflt": 10, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "yref": { - "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.", - "dflt": "paper", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "container", - "paper" - ] - } - }, - "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", - "dflt": null, - "editType": "calc", - "impliedEdits": { - "autocolorscale": false - }, - "valType": "colorscale" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "editType": "calc", - "gradient": { - "color": { - "arrayOk": true, - "description": "Sets the final color of the gradient fill: the center color for radial, the right for horizontal, or the bottom for vertical.", - "editType": "calc", - "valType": "color" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "editType": "calc", - "role": "object", - "type": { - "arrayOk": true, - "description": "Sets the type of gradient used to fill the markers", - "dflt": "none", - "editType": "calc", - "valType": "enumerated", - "values": [ - "radial", - "horizontal", - "vertical", - "none" - ] - }, - "typesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `type`.", - "editType": "none", - "valType": "string" - } - }, - "line": { - "autocolorscale": { - "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. Has an effect only if in `marker.line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", - "dflt": true, - "editType": "calc", - "impliedEdits": {}, - "valType": "boolean" - }, - "cauto": { - "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.line.color`) or the bounds set in `marker.line.cmin` and `marker.line.cmax` Has an effect only if in `marker.line.color` is set to a numerical array. Defaults to `false` when `marker.line.cmin` and `marker.line.cmax` are set by the user.", - "dflt": true, - "editType": "calc", - "impliedEdits": {}, - "valType": "boolean" - }, - "cmax": { - "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmin` must be set as well.", - "dflt": null, - "editType": "plot", - "impliedEdits": { - "cauto": false - }, - "valType": "number" - }, - "cmid": { - "description": "Sets the mid-point of the color domain by scaling `marker.line.cmin` and/or `marker.line.cmax` to be equidistant to this point. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color`. Has no effect when `marker.line.cauto` is `false`.", - "dflt": null, - "editType": "calc", - "impliedEdits": {}, - "valType": "number" - }, - "cmin": { - "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmax` must be set as well.", - "dflt": null, - "editType": "plot", - "impliedEdits": { - "cauto": false - }, - "valType": "number" - }, - "color": { - "arrayOk": true, - "description": "Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set.", - "editType": "style", - "valType": "color" - }, - "coloraxis": { - "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.", - "dflt": null, - "editType": "calc", - "regex": "/^coloraxis([2-9]|[1-9][0-9]+)?$/", - "valType": "subplotid" - }, - "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", - "dflt": null, - "editType": "calc", - "impliedEdits": { - "autocolorscale": false - }, - "valType": "colorscale" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "editType": "calc", - "reversescale": { - "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.", - "dflt": false, - "editType": "plot", - "valType": "boolean" - }, - "role": "object", - "width": { - "arrayOk": true, - "description": "Sets the width (in px) of the lines bounding the marker points.", - "editType": "style", - "min": 0, - "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" - } - }, - "maxdisplayed": { - "description": "Sets a maximum number of points to be drawn on the graph. *0* corresponds to no limit.", - "dflt": 0, - "editType": "plot", - "min": 0, - "valType": "number" - }, - "opacity": { - "arrayOk": true, - "description": "Sets the marker opacity.", - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" - }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, - "reversescale": { - "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", - "dflt": false, - "editType": "plot", - "valType": "boolean" - }, - "role": "object", - "showscale": { - "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "size": { - "arrayOk": true, - "description": "Sets the marker size (in px).", - "dflt": 6, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "sizemin": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points.", - "dflt": 0, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "sizemode": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels.", - "dflt": "diameter", - "editType": "calc", - "valType": "enumerated", - "values": [ - "diameter", - "area" - ] - }, - "sizeref": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`.", - "dflt": 1, - "editType": "calc", - "valType": "number" - }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, - "standoff": { - "arrayOk": true, - "description": "Moves the marker away from the data point in the direction of `angle` (in px). This can be useful for example if you have another marker at this location and you want to point an arrowhead marker at it.", - "dflt": 0, - "editType": "plot", - "min": 0, - "valType": "number" - }, - "standoffsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `standoff`.", - "editType": "none", - "valType": "string" - }, - "symbol": { - "arrayOk": true, - "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.", - "dflt": "circle", - "editType": "style", - "valType": "enumerated", - "values": [ - 0, - "0", - "circle", - 100, - "100", - "circle-open", - 200, - "200", - "circle-dot", - 300, - "300", - "circle-open-dot", - 1, - "1", - "square", - 101, - "101", - "square-open", - 201, - "201", - "square-dot", - 301, - "301", - "square-open-dot", - 2, - "2", - "diamond", - 102, - "102", - "diamond-open", - 202, - "202", - "diamond-dot", - 302, - "302", - "diamond-open-dot", - 3, - "3", - "cross", - 103, - "103", - "cross-open", - 203, - "203", - "cross-dot", - 303, - "303", - "cross-open-dot", - 4, - "4", - "x", - 104, - "104", - "x-open", - 204, - "204", - "x-dot", - 304, - "304", - "x-open-dot", - 5, - "5", - "triangle-up", - 105, - "105", - "triangle-up-open", - 205, - "205", - "triangle-up-dot", - 305, - "305", - "triangle-up-open-dot", - 6, - "6", - "triangle-down", - 106, - "106", - "triangle-down-open", - 206, - "206", - "triangle-down-dot", - 306, - "306", - "triangle-down-open-dot", - 7, - "7", - "triangle-left", - 107, - "107", - "triangle-left-open", - 207, - "207", - "triangle-left-dot", - 307, - "307", - "triangle-left-open-dot", - 8, - "8", - "triangle-right", - 108, - "108", - "triangle-right-open", - 208, - "208", - "triangle-right-dot", - 308, - "308", - "triangle-right-open-dot", - 9, - "9", - "triangle-ne", - 109, - "109", - "triangle-ne-open", - 209, - "209", - "triangle-ne-dot", - 309, - "309", - "triangle-ne-open-dot", - 10, - "10", - "triangle-se", - 110, - "110", - "triangle-se-open", - 210, - "210", - "triangle-se-dot", - 310, - "310", - "triangle-se-open-dot", - 11, - "11", - "triangle-sw", - 111, - "111", - "triangle-sw-open", - 211, - "211", - "triangle-sw-dot", - 311, - "311", - "triangle-sw-open-dot", - 12, - "12", - "triangle-nw", - 112, - "112", - "triangle-nw-open", - 212, - "212", - "triangle-nw-dot", - 312, - "312", - "triangle-nw-open-dot", - 13, - "13", - "pentagon", - 113, - "113", - "pentagon-open", - 213, - "213", - "pentagon-dot", - 313, - "313", - "pentagon-open-dot", - 14, - "14", - "hexagon", - 114, - "114", - "hexagon-open", - 214, - "214", - "hexagon-dot", - 314, - "314", - "hexagon-open-dot", - 15, - "15", - "hexagon2", - 115, - "115", - "hexagon2-open", - 215, - "215", - "hexagon2-dot", - 315, - "315", - "hexagon2-open-dot", - 16, - "16", - "octagon", - 116, - "116", - "octagon-open", - 216, - "216", - "octagon-dot", - 316, - "316", - "octagon-open-dot", - 17, - "17", - "star", - 117, - "117", - "star-open", - 217, - "217", - "star-dot", - 317, - "317", - "star-open-dot", - 18, - "18", - "hexagram", - 118, - "118", - "hexagram-open", - 218, - "218", - "hexagram-dot", - 318, - "318", - "hexagram-open-dot", - 19, - "19", - "star-triangle-up", - 119, - "119", - "star-triangle-up-open", - 219, - "219", - "star-triangle-up-dot", - 319, - "319", - "star-triangle-up-open-dot", - 20, - "20", - "star-triangle-down", - 120, - "120", - "star-triangle-down-open", - 220, - "220", - "star-triangle-down-dot", - 320, - "320", - "star-triangle-down-open-dot", - 21, - "21", - "star-square", - 121, - "121", - "star-square-open", - 221, - "221", - "star-square-dot", - 321, - "321", - "star-square-open-dot", - 22, - "22", - "star-diamond", - 122, - "122", - "star-diamond-open", - 222, - "222", - "star-diamond-dot", - 322, - "322", - "star-diamond-open-dot", - 23, - "23", - "diamond-tall", - 123, - "123", - "diamond-tall-open", - 223, - "223", - "diamond-tall-dot", - 323, - "323", - "diamond-tall-open-dot", - 24, - "24", - "diamond-wide", - 124, - "124", - "diamond-wide-open", - 224, - "224", - "diamond-wide-dot", - 324, - "324", - "diamond-wide-open-dot", - 25, - "25", - "hourglass", - 125, - "125", - "hourglass-open", - 26, - "26", - "bowtie", - 126, - "126", - "bowtie-open", - 27, - "27", - "circle-cross", - 127, - "127", - "circle-cross-open", - 28, - "28", - "circle-x", - 128, - "128", - "circle-x-open", - 29, - "29", - "square-cross", - 129, - "129", - "square-cross-open", - 30, - "30", - "square-x", - 130, - "130", - "square-x-open", - 31, - "31", - "diamond-cross", - 131, - "131", - "diamond-cross-open", - 32, - "32", - "diamond-x", - 132, - "132", - "diamond-x-open", - 33, - "33", - "cross-thin", - 133, - "133", - "cross-thin-open", - 34, - "34", - "x-thin", - 134, - "134", - "x-thin-open", - 35, - "35", - "asterisk", - 135, - "135", - "asterisk-open", - 36, - "36", - "hash", - 136, - "136", - "hash-open", - 236, - "236", - "hash-dot", - 336, - "336", - "hash-open-dot", - 37, - "37", - "y-up", - 137, - "137", - "y-up-open", - 38, - "38", - "y-down", - 138, - "138", - "y-down-open", - 39, - "39", - "y-left", - 139, - "139", - "y-left-open", - 40, - "40", - "y-right", - 140, - "140", - "y-right-open", - 41, - "41", - "line-ew", - 141, - "141", - "line-ew-open", - 42, - "42", - "line-ns", - 142, - "142", - "line-ns-open", - 43, - "43", - "line-ne", - 143, - "143", - "line-ne-open", - 44, - "44", - "line-nw", - 144, - "144", - "line-nw-open", - 45, - "45", - "arrow-up", - 145, - "145", - "arrow-up-open", - 46, - "46", - "arrow-down", - 146, - "146", - "arrow-down-open", - 47, - "47", - "arrow-left", - 147, - "147", - "arrow-left-open", - 48, - "48", - "arrow-right", - 148, - "148", - "arrow-right-open", - 49, - "49", - "arrow-bar-up", - 149, - "149", - "arrow-bar-up-open", - 50, - "50", - "arrow-bar-down", - 150, - "150", - "arrow-bar-down-open", - 51, - "51", - "arrow-bar-left", - 151, - "151", - "arrow-bar-left-open", - 52, - "52", - "arrow-bar-right", - 152, - "152", - "arrow-bar-right-open", - 53, - "53", - "arrow", - 153, - "153", - "arrow-open", - 54, - "54", - "arrow-wide", - 154, - "154", - "arrow-wide-open" + } + ], + "valType": "info_array" + }, + "role": "object", + "templateitemname": { + "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.", + "editType": "calc", + "valType": "string" + }, + "tickformat": { + "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*", + "dflt": "", + "editType": "plot", + "valType": "string" + }, + "ticktext": { + "description": "Sets the text displayed at the ticks position via `tickvals`.", + "editType": "plot", + "valType": "data_array" + }, + "ticktextsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", + "editType": "none", + "valType": "string" + }, + "tickvals": { + "description": "Sets the values at which ticks on this axis appear.", + "editType": "plot", + "valType": "data_array" + }, + "tickvalssrc": { + "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", + "editType": "none", + "valType": "string" + }, + "values": { + "description": "Dimension values. `values[n]` represents the value of the `n`th point in the dataset, therefore the `values` vector for all dimensions must be the same (longer vectors will be truncated). Each value must be a finite number.", + "editType": "calc", + "valType": "data_array" + }, + "valuessrc": { + "description": "Sets the source reference on Chart Studio Cloud for `values`.", + "editType": "none", + "valType": "string" + }, + "visible": { + "description": "Shows the dimension when set to `true` (the default). Hides the dimension for `false`.", + "dflt": true, + "editType": "plot", + "valType": "boolean" + } + } + }, + "role": "object" + }, + "domain": { + "column": { + "description": "If there is a layout grid, use the domain for this column in the grid for this parcoords trace .", + "dflt": 0, + "editType": "plot", + "min": 0, + "valType": "integer" + }, + "editType": "plot", + "role": "object", + "row": { + "description": "If there is a layout grid, use the domain for this row in the grid for this parcoords trace .", + "dflt": 0, + "editType": "plot", + "min": 0, + "valType": "integer" + }, + "x": { + "description": "Sets the horizontal domain of this parcoords trace (in plot fraction).", + "dflt": [ + 0, + 1 + ], + "editType": "plot", + "items": [ + { + "editType": "plot", + "max": 1, + "min": 0, + "valType": "number" + }, + { + "editType": "plot", + "max": 1, + "min": 0, + "valType": "number" + } + ], + "valType": "info_array" + }, + "y": { + "description": "Sets the vertical domain of this parcoords trace (in plot fraction).", + "dflt": [ + 0, + 1 + ], + "editType": "plot", + "items": [ + { + "editType": "plot", + "max": 1, + "min": 0, + "valType": "number" + }, + { + "editType": "plot", + "max": 1, + "min": 0, + "valType": "number" + } + ], + "valType": "info_array" + } + }, + "ids": { + "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", + "editType": "calc", + "valType": "data_array" + }, + "idssrc": { + "description": "Sets the source reference on Chart Studio Cloud for `ids`.", + "editType": "none", + "valType": "string" + }, + "labelangle": { + "description": "Sets the angle of the labels with respect to the horizontal. For example, a `tickangle` of -90 draws the labels vertically. Tilted labels with *labelangle* may be positioned better inside margins when `labelposition` is set to *bottom*.", + "dflt": 0, + "editType": "plot", + "valType": "angle" + }, + "labelfont": { + "color": { + "editType": "plot", + "valType": "color" + }, + "description": "Sets the font for the `dimension` labels.", + "editType": "plot", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "plot", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "plot", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "plot", + "valType": "string" + }, + "size": { + "editType": "plot", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "plot", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "plot", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "plot", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "plot", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "labelside": { + "description": "Specifies the location of the `label`. *top* positions labels above, next to the title *bottom* positions labels below the graph Tilted labels with *labelangle* may be positioned better inside margins when `labelposition` is set to *bottom*.", + "dflt": "top", + "editType": "plot", + "valType": "enumerated", + "values": [ + "top", + "bottom" + ] + }, + "legend": { + "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", + "dflt": "legend", + "editType": "style", + "valType": "subplotid" + }, + "legendgrouptitle": { + "editType": "style", + "font": { + "color": { + "editType": "style", + "valType": "color" + }, + "description": "Sets this legend group's title font.", + "editType": "style", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "style", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "style", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "style", + "valType": "string" + }, + "size": { + "editType": "style", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "style", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "style", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "style", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "style", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "role": "object", + "text": { + "description": "Sets the title of the legend group.", + "dflt": "", + "editType": "style", + "valType": "string" + } + }, + "legendrank": { + "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.", + "dflt": 1000, + "editType": "style", + "valType": "number" + }, + "legendwidth": { + "description": "Sets the width (in px or fraction) of the legend for this trace.", + "editType": "style", + "min": 0, + "valType": "number" + }, + "line": { + "autocolorscale": { + "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `line.colorscale`. Has an effect only if in `line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", + "dflt": false, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "cauto": { + "description": "Determines whether or not the color domain is computed with respect to the input data (here in `line.color`) or the bounds set in `line.cmin` and `line.cmax` Has an effect only if in `line.color` is set to a numerical array. Defaults to `false` when `line.cmin` and `line.cmax` are set by the user.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "cmax": { + "description": "Sets the upper bound of the color domain. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color` and if set, `line.cmin` must be set as well.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "cmid": { + "description": "Sets the mid-point of the color domain by scaling `line.cmin` and/or `line.cmax` to be equidistant to this point. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color`. Has no effect when `line.cauto` is `false`.", + "dflt": null, + "editType": "calc", + "impliedEdits": {}, + "valType": "number" + }, + "cmin": { + "description": "Sets the lower bound of the color domain. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color` and if set, `line.cmax` must be set as well.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "color": { + "arrayOk": true, + "description": "Sets the line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `line.cmin` and `line.cmax` if set.", + "editType": "calc", + "valType": "color" + }, + "coloraxis": { + "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.", + "dflt": null, + "editType": "calc", + "regex": "/^coloraxis([2-9]|[1-9][0-9]+)?$/", + "valType": "subplotid" + }, + "colorbar": { + "bgcolor": { + "description": "Sets the color of padded area.", + "dflt": "rgba(0,0,0,0)", + "editType": "colorbars", + "valType": "color" + }, + "bordercolor": { + "description": "Sets the axis line color.", + "dflt": "#444", + "editType": "colorbars", + "valType": "color" + }, + "borderwidth": { + "description": "Sets the width (in px) or the border enclosing this color bar.", + "dflt": 0, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "dtick": { + "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*", + "editType": "colorbars", + "impliedEdits": { + "tickmode": "linear" + }, + "valType": "any" + }, + "editType": "colorbars", + "exponentformat": { + "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from \"femto\" f (10^-15) to \"tera\" T (10^12). *SI extended* covers instead the full SI range from \"quecto\" q (10^-30) to \"quetta\" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation.", + "dflt": "B", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "none", + "e", + "E", + "power", + "SI", + "B", + "SI extended" + ] + }, + "labelalias": { + "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax.", + "dflt": false, + "editType": "colorbars", + "valType": "any" + }, + "len": { + "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.", + "dflt": 1, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "lenmode": { + "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.", + "dflt": "fraction", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "fraction", + "pixels" + ] + }, + "minexponent": { + "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.", + "dflt": 3, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "nticks": { + "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.", + "dflt": 0, + "editType": "colorbars", + "min": 0, + "valType": "integer" + }, + "orientation": { + "description": "Sets the orientation of the colorbar.", + "dflt": "v", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "h", + "v" + ] + }, + "outlinecolor": { + "description": "Sets the axis line color.", + "dflt": "#444", + "editType": "colorbars", + "valType": "color" + }, + "outlinewidth": { + "description": "Sets the width (in px) of the axis line.", + "dflt": 1, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "role": "object", + "separatethousands": { + "description": "If \"true\", even 4-digit integers are separated", + "dflt": false, + "editType": "colorbars", + "valType": "boolean" + }, + "showexponent": { + "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.", + "dflt": "all", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "showticklabels": { + "description": "Determines whether or not the tick labels are drawn.", + "dflt": true, + "editType": "colorbars", + "valType": "boolean" + }, + "showtickprefix": { + "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.", + "dflt": "all", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "showticksuffix": { + "description": "Same as `showtickprefix` but for tick suffixes.", + "dflt": "all", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "thickness": { + "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.", + "dflt": 30, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "thicknessmode": { + "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.", + "dflt": "pixels", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "fraction", + "pixels" + ] + }, + "tick0": { + "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears.", + "editType": "colorbars", + "impliedEdits": { + "tickmode": "linear" + }, + "valType": "any" + }, + "tickangle": { + "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.", + "dflt": "auto", + "editType": "colorbars", + "valType": "angle" + }, + "tickcolor": { + "description": "Sets the tick color.", + "dflt": "#444", + "editType": "colorbars", + "valType": "color" + }, + "tickfont": { + "color": { + "editType": "colorbars", + "valType": "color" + }, + "description": "Sets the color bar's tick label font", + "editType": "colorbars", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "colorbars", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "colorbars", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "colorbars", + "valType": "string" + }, + "size": { + "editType": "colorbars", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "colorbars", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "tickformat": { + "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*", + "dflt": "", + "editType": "colorbars", + "valType": "string" + }, + "tickformatstops": { + "items": { + "tickformatstop": { + "dtickrange": { + "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*", + "editType": "colorbars", + "items": [ + { + "editType": "colorbars", + "valType": "any" + }, + { + "editType": "colorbars", + "valType": "any" + } + ], + "valType": "info_array" + }, + "editType": "colorbars", + "enabled": { + "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.", + "dflt": true, + "editType": "colorbars", + "valType": "boolean" + }, + "name": { + "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.", + "editType": "colorbars", + "valType": "string" + }, + "role": "object", + "templateitemname": { + "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.", + "editType": "colorbars", + "valType": "string" + }, + "value": { + "description": "string - dtickformat for described zoom level, the same as *tickformat*", + "dflt": "", + "editType": "colorbars", + "valType": "string" + } + } + }, + "role": "object" + }, + "ticklabeloverflow": { + "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "allow", + "hide past div", + "hide past domain" + ] + }, + "ticklabelposition": { + "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.", + "dflt": "outside", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "outside", + "inside", + "outside top", + "inside top", + "outside left", + "inside left", + "outside right", + "inside right", + "outside bottom", + "inside bottom" + ] + }, + "ticklabelstep": { + "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.", + "dflt": 1, + "editType": "colorbars", + "min": 1, + "valType": "integer" + }, + "ticklen": { + "description": "Sets the tick length (in px).", + "dflt": 5, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "tickmode": { + "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).", + "editType": "colorbars", + "impliedEdits": {}, + "valType": "enumerated", + "values": [ + "auto", + "linear", + "array" + ] + }, + "tickprefix": { + "description": "Sets a tick label prefix.", + "dflt": "", + "editType": "colorbars", + "valType": "string" + }, + "ticks": { + "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.", + "dflt": "", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "outside", + "inside", + "" + ] + }, + "ticksuffix": { + "description": "Sets a tick label suffix.", + "dflt": "", + "editType": "colorbars", + "valType": "string" + }, + "ticktext": { + "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", + "editType": "colorbars", + "valType": "data_array" + }, + "ticktextsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", + "editType": "none", + "valType": "string" + }, + "tickvals": { + "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", + "editType": "colorbars", + "valType": "data_array" + }, + "tickvalssrc": { + "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", + "editType": "none", + "valType": "string" + }, + "tickwidth": { + "description": "Sets the tick width (in px).", + "dflt": 1, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "title": { + "editType": "colorbars", + "font": { + "color": { + "editType": "colorbars", + "valType": "color" + }, + "description": "Sets this color bar's title font.", + "editType": "colorbars", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "colorbars", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "colorbars", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "colorbars", + "valType": "string" + }, + "size": { + "editType": "colorbars", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "colorbars", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "role": "object", + "side": { + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "right", + "top", + "bottom" + ] + }, + "text": { + "description": "Sets the title of the color bar.", + "editType": "colorbars", + "valType": "string" + } + }, + "x": { + "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.", + "editType": "colorbars", + "valType": "number" + }, + "xanchor": { + "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "left", + "center", + "right" + ] + }, + "xpad": { + "description": "Sets the amount of padding (in px) along the x direction.", + "dflt": 10, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "xref": { + "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.", + "dflt": "paper", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "container", + "paper" + ] + }, + "y": { + "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.", + "editType": "colorbars", + "valType": "number" + }, + "yanchor": { + "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "top", + "middle", + "bottom" + ] + }, + "ypad": { + "description": "Sets the amount of padding (in px) along the y direction.", + "dflt": 10, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "yref": { + "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.", + "dflt": "paper", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "container", + "paper" + ] + } + }, + "colorscale": { + "description": "Sets the colorscale. Has an effect only if in `line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `line.cmin` and `line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "dflt": [ + [ + 0, + "#440154" + ], + [ + 0.06274509803921569, + "#48186a" + ], + [ + 0.12549019607843137, + "#472d7b" + ], + [ + 0.18823529411764706, + "#424086" + ], + [ + 0.25098039215686274, + "#3b528b" + ], + [ + 0.3137254901960784, + "#33638d" + ], + [ + 0.3764705882352941, + "#2c728e" + ], + [ + 0.4392156862745098, + "#26828e" + ], + [ + 0.5019607843137255, + "#21918c" + ], + [ + 0.5647058823529412, + "#1fa088" + ], + [ + 0.6274509803921569, + "#28ae80" + ], + [ + 0.6901960784313725, + "#3fbc73" + ], + [ + 0.7529411764705882, + "#5ec962" + ], + [ + 0.8156862745098039, + "#84d44b" + ], + [ + 0.8784313725490196, + "#addc30" + ], + [ + 0.9411764705882353, + "#d8e219" + ], + [ + 1, + "#fde725" + ] + ], + "editType": "calc", + "impliedEdits": { + "autocolorscale": false + }, + "valType": "colorscale" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "editType": "calc", + "reversescale": { + "description": "Reverses the color mapping if true. Has an effect only if in `line.color` is set to a numerical array. If true, `line.cmin` will correspond to the last color in the array and `line.cmax` will correspond to the first color.", + "dflt": false, + "editType": "plot", + "valType": "boolean" + }, + "role": "object", + "showscale": { + "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `line.color` is set to a numerical array.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + } + }, + "meta": { + "arrayOk": true, + "description": "Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index.", + "editType": "plot", + "valType": "any" + }, + "metasrc": { + "description": "Sets the source reference on Chart Studio Cloud for `meta`.", + "editType": "none", + "valType": "string" + }, + "name": { + "description": "Sets the trace name. The trace name appears as the legend item and on hover.", + "editType": "style", + "valType": "string" + }, + "rangefont": { + "color": { + "editType": "plot", + "valType": "color" + }, + "description": "Sets the font for the `dimension` range values.", + "editType": "plot", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "plot", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "plot", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "plot", + "valType": "string" + }, + "size": { + "editType": "plot", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "plot", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "plot", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "plot", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "plot", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "stream": { + "editType": "calc", + "maxpoints": { + "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", + "dflt": 500, + "editType": "calc", + "max": 10000, + "min": 0, + "valType": "number" + }, + "role": "object", + "token": { + "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", + "editType": "calc", + "noBlank": true, + "strict": true, + "valType": "string" + } + }, + "tickfont": { + "color": { + "editType": "plot", + "valType": "color" + }, + "description": "Sets the font for the `dimension` tick values.", + "editType": "plot", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "plot", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "plot", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "auto", + "editType": "plot", + "valType": "string" + }, + "size": { + "editType": "plot", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "plot", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "plot", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "plot", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "plot", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "type": "parcoords", + "uid": { + "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", + "editType": "plot", + "valType": "string" + }, + "uirevision": { + "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves.", + "editType": "none", + "valType": "any" + }, + "unselected": { + "editType": "plot", + "line": { + "color": { + "description": "Sets the base color of unselected lines. in connection with `unselected.line.opacity`.", + "dflt": "#7f7f7f", + "editType": "plot", + "valType": "color" + }, + "editType": "plot", + "opacity": { + "description": "Sets the opacity of unselected lines. The default *auto* decreases the opacity smoothly as the number of lines increases. Use *1* to achieve exact `unselected.line.color`.", + "dflt": "auto", + "editType": "plot", + "max": 1, + "min": 0, + "valType": "number" + }, + "role": "object" + }, + "role": "object" + }, + "visible": { + "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).", + "dflt": true, + "editType": "calc", + "valType": "enumerated", + "values": [ + true, + false, + "legendonly" + ] + } + }, + "categories": [ + "gl", + "regl", + "noOpacity", + "noHover" + ], + "meta": { + "description": "Parallel coordinates for multidimensional exploratory data analysis. The samples are specified in `dimensions`. The colors are set in `line.color`." + }, + "type": "parcoords" + }, + "pie": { + "animatable": false, + "attributes": { + "automargin": { + "description": "Determines whether outside text labels can push the margins.", + "dflt": false, + "editType": "plot", + "valType": "boolean" + }, + "customdata": { + "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements", + "editType": "calc", + "valType": "data_array" + }, + "customdatasrc": { + "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", + "editType": "none", + "valType": "string" + }, + "direction": { + "description": "Specifies the direction at which succeeding sectors follow one another.", + "dflt": "counterclockwise", + "editType": "calc", + "valType": "enumerated", + "values": [ + "clockwise", + "counterclockwise" + ] + }, + "dlabel": { + "description": "Sets the label step. See `label0` for more info.", + "dflt": 1, + "editType": "calc", + "valType": "number" + }, + "domain": { + "column": { + "description": "If there is a layout grid, use the domain for this column in the grid for this pie trace .", + "dflt": 0, + "editType": "calc", + "min": 0, + "valType": "integer" + }, + "editType": "calc", + "role": "object", + "row": { + "description": "If there is a layout grid, use the domain for this row in the grid for this pie trace .", + "dflt": 0, + "editType": "calc", + "min": 0, + "valType": "integer" + }, + "x": { + "description": "Sets the horizontal domain of this pie trace (in plot fraction).", + "dflt": [ + 0, + 1 + ], + "editType": "calc", + "items": [ + { + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + { + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + } + ], + "valType": "info_array" + }, + "y": { + "description": "Sets the vertical domain of this pie trace (in plot fraction).", + "dflt": [ + 0, + 1 + ], + "editType": "calc", + "items": [ + { + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + { + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + } + ], + "valType": "info_array" + } + }, + "hole": { + "description": "Sets the fraction of the radius to cut out of the pie. Use this to make a donut chart.", + "dflt": 0, + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + "hoverinfo": { + "arrayOk": true, + "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.", + "dflt": "all", + "editType": "none", + "extras": [ + "all", + "none", + "skip" + ], + "flags": [ + "label", + "text", + "value", + "percent", + "name" + ], + "valType": "flaglist" + }, + "hoverinfosrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", + "editType": "none", + "valType": "string" + }, + "hoverlabel": { + "align": { + "arrayOk": true, + "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines", + "dflt": "auto", + "editType": "none", + "valType": "enumerated", + "values": [ + "left", + "right", + "auto" + ] + }, + "alignsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `align`.", + "editType": "none", + "valType": "string" + }, + "bgcolor": { + "arrayOk": true, + "description": "Sets the background color of the hover labels for this trace", + "editType": "none", + "valType": "color" + }, + "bgcolorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", + "editType": "none", + "valType": "string" + }, + "bordercolor": { + "arrayOk": true, + "description": "Sets the border color of the hover labels for this trace.", + "editType": "none", + "valType": "color" + }, + "bordercolorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", + "editType": "none", + "valType": "string" + }, + "editType": "none", + "font": { + "color": { + "arrayOk": true, + "editType": "none", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "description": "Sets the font used in hover labels.", + "editType": "none", + "family": { + "arrayOk": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "none", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "familysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `family`.", + "editType": "none", + "valType": "string" + }, + "lineposition": { + "arrayOk": true, + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "none", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "linepositionsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", + "editType": "none", + "valType": "string" + }, + "role": "object", + "shadow": { + "arrayOk": true, + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "none", + "valType": "string" + }, + "shadowsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", + "editType": "none", + "valType": "string" + }, + "size": { + "arrayOk": true, + "editType": "none", + "min": 1, + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "style": { + "arrayOk": true, + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "none", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "stylesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `style`.", + "editType": "none", + "valType": "string" + }, + "textcase": { + "arrayOk": true, + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "none", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "textcasesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", + "editType": "none", + "valType": "string" + }, + "variant": { + "arrayOk": true, + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "none", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "variantsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `variant`.", + "editType": "none", + "valType": "string" + }, + "weight": { + "arrayOk": true, + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "none", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + }, + "weightsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `weight`.", + "editType": "none", + "valType": "string" + } + }, + "namelength": { + "arrayOk": true, + "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.", + "dflt": 15, + "editType": "none", + "min": -1, + "valType": "integer" + }, + "namelengthsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", + "editType": "none", + "valType": "string" + }, + "role": "object", + "showarrow": { + "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", + "dflt": true, + "editType": "none", + "valType": "boolean" + } + }, + "hovertemplate": { + "arrayOk": true, + "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `label`, `color`, `value`, `percent` and `text`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``.", + "dflt": "", + "editType": "none", + "valType": "string" + }, + "hovertemplatefallback": { + "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", + "dflt": "-", + "editType": "none", + "valType": "any" + }, + "hovertemplatesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", + "editType": "none", + "valType": "string" + }, + "hovertext": { + "arrayOk": true, + "description": "Sets hover text elements associated with each sector. If a single string, the same string appears for all data points. If an array of string, the items are mapped in order of this trace's sectors. To be seen, trace `hoverinfo` must contain a *text* flag.", + "dflt": "", + "editType": "style", + "valType": "string" + }, + "hovertextsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", + "editType": "none", + "valType": "string" + }, + "ids": { + "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", + "editType": "calc", + "valType": "data_array" + }, + "idssrc": { + "description": "Sets the source reference on Chart Studio Cloud for `ids`.", + "editType": "none", + "valType": "string" + }, + "insidetextfont": { + "color": { + "arrayOk": true, + "editType": "plot", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "description": "Sets the font used for `textinfo` lying inside the sector.", + "editType": "plot", + "family": { + "arrayOk": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "plot", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "familysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `family`.", + "editType": "none", + "valType": "string" + }, + "lineposition": { + "arrayOk": true, + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "plot", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "linepositionsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", + "editType": "none", + "valType": "string" + }, + "role": "object", + "shadow": { + "arrayOk": true, + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "plot", + "valType": "string" + }, + "shadowsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", + "editType": "none", + "valType": "string" + }, + "size": { + "arrayOk": true, + "editType": "plot", + "min": 1, + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "style": { + "arrayOk": true, + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "plot", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "stylesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `style`.", + "editType": "none", + "valType": "string" + }, + "textcase": { + "arrayOk": true, + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "plot", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "textcasesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", + "editType": "none", + "valType": "string" + }, + "variant": { + "arrayOk": true, + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "plot", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "variantsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `variant`.", + "editType": "none", + "valType": "string" + }, + "weight": { + "arrayOk": true, + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "plot", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + }, + "weightsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `weight`.", + "editType": "none", + "valType": "string" + } + }, + "insidetextorientation": { + "description": "Controls the orientation of the text inside chart sectors. When set to *auto*, text may be oriented in any direction in order to be as big as possible in the middle of a sector. The *horizontal* option orients text to be parallel with the bottom of the chart, and may make text smaller in order to achieve that goal. The *radial* option orients text along the radius of the sector. The *tangential* option orients text perpendicular to the radius of the sector.", + "dflt": "auto", + "editType": "plot", + "valType": "enumerated", + "values": [ + "horizontal", + "radial", + "tangential", + "auto" + ] + }, + "label0": { + "description": "Alternate to `labels`. Builds a numeric set of labels. Use with `dlabel` where `label0` is the starting label and `dlabel` the step.", + "dflt": 0, + "editType": "calc", + "valType": "number" + }, + "labels": { + "description": "Sets the sector labels. If `labels` entries are duplicated, we sum associated `values` or simply count occurrences if `values` is not provided. For other array attributes (including color) we use the first non-empty entry among all occurrences of the label.", + "editType": "calc", + "valType": "data_array" + }, + "labelssrc": { + "description": "Sets the source reference on Chart Studio Cloud for `labels`.", + "editType": "none", + "valType": "string" + }, + "legend": { + "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", + "dflt": "legend", + "editType": "style", + "valType": "subplotid" + }, + "legendgroup": { + "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.", + "dflt": "", + "editType": "style", + "valType": "string" + }, + "legendgrouptitle": { + "editType": "style", + "font": { + "color": { + "editType": "style", + "valType": "color" + }, + "description": "Sets this legend group's title font.", + "editType": "style", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "style", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "style", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "style", + "valType": "string" + }, + "size": { + "editType": "style", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "style", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "style", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "style", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "style", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "role": "object", + "text": { + "description": "Sets the title of the legend group.", + "dflt": "", + "editType": "style", + "valType": "string" + } + }, + "legendrank": { + "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.", + "dflt": 1000, + "editType": "style", + "valType": "number" + }, + "legendwidth": { + "description": "Sets the width (in px or fraction) of the legend for this trace.", + "editType": "style", + "min": 0, + "valType": "number" + }, + "marker": { + "colors": { + "description": "Sets the color of each sector. If not specified, the default trace color set is used to pick the sector colors.", + "editType": "calc", + "valType": "data_array" + }, + "colorssrc": { + "description": "Sets the source reference on Chart Studio Cloud for `colors`.", + "editType": "none", + "valType": "string" + }, + "editType": "calc", + "line": { + "color": { + "arrayOk": true, + "description": "Sets the color of the line enclosing each sector.", + "dflt": "#444", + "editType": "style", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "editType": "calc", + "role": "object", + "width": { + "arrayOk": true, + "description": "Sets the width (in px) of the line enclosing each sector.", + "dflt": 0, + "editType": "style", + "min": 0, + "valType": "number" + }, + "widthsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `width`.", + "editType": "none", + "valType": "string" + } + }, + "pattern": { + "bgcolor": { + "arrayOk": true, + "description": "When there is no colorscale sets the color of background pattern fill. Defaults to a `marker.color` background when `fillmode` is *overlay*. Otherwise, defaults to a transparent background.", + "editType": "style", + "valType": "color" + }, + "bgcolorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", + "editType": "none", + "valType": "string" + }, + "description": "Sets the pattern within the marker.", + "editType": "style", + "fgcolor": { + "arrayOk": true, + "description": "When there is no colorscale sets the color of foreground pattern fill. Defaults to a `marker.color` background when `fillmode` is *replace*. Otherwise, defaults to dark grey or white to increase contrast with the `bgcolor`.", + "editType": "style", + "valType": "color" + }, + "fgcolorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `fgcolor`.", + "editType": "none", + "valType": "string" + }, + "fgopacity": { + "description": "Sets the opacity of the foreground pattern fill. Defaults to a 0.5 when `fillmode` is *overlay*. Otherwise, defaults to 1.", + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "fillmode": { + "description": "Determines whether `marker.color` should be used as a default to `bgcolor` or a `fgcolor`.", + "dflt": "replace", + "editType": "style", + "valType": "enumerated", + "values": [ + "replace", + "overlay" + ] + }, + "path": { + "arrayOk": true, + "description": "Sets a custom path for pattern fill. Use with no `shape` or `solidity`, provide an SVG path string for the regions of the square from (0,0) to (`size`,`size`) to color.", + "editType": "style", + "valType": "string" + }, + "pathsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `path`.", + "editType": "none", + "valType": "string" + }, + "role": "object", + "shape": { + "arrayOk": true, + "description": "Sets the shape of the pattern fill. By default, no pattern is used for filling the area.", + "dflt": "", + "editType": "style", + "valType": "enumerated", + "values": [ + "", + "/", + "\\", + "x", + "-", + "|", + "+", + "." + ] + }, + "shapesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `shape`.", + "editType": "none", + "valType": "string" + }, + "size": { + "arrayOk": true, + "description": "Sets the size of unit squares of the pattern fill in pixels, which corresponds to the interval of repetition of the pattern.", + "dflt": 8, + "editType": "style", + "min": 0, + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "solidity": { + "arrayOk": true, + "description": "Sets the solidity of the pattern fill. Solidity is roughly the fraction of the area filled by the pattern. Solidity of 0 shows only the background color without pattern and solidty of 1 shows only the foreground color without pattern.", + "dflt": 0.3, + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "soliditysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `solidity`.", + "editType": "none", + "valType": "string" + } + }, + "role": "object" + }, + "meta": { + "arrayOk": true, + "description": "Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index.", + "editType": "plot", + "valType": "any" + }, + "metasrc": { + "description": "Sets the source reference on Chart Studio Cloud for `meta`.", + "editType": "none", + "valType": "string" + }, + "name": { + "description": "Sets the trace name. The trace name appears as the legend item and on hover.", + "editType": "style", + "valType": "string" + }, + "opacity": { + "description": "Sets the opacity of the trace.", + "dflt": 1, + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "outsidetextfont": { + "color": { + "arrayOk": true, + "editType": "plot", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "description": "Sets the font used for `textinfo` lying outside the sector.", + "editType": "plot", + "family": { + "arrayOk": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "plot", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "familysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `family`.", + "editType": "none", + "valType": "string" + }, + "lineposition": { + "arrayOk": true, + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "plot", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "linepositionsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", + "editType": "none", + "valType": "string" + }, + "role": "object", + "shadow": { + "arrayOk": true, + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "plot", + "valType": "string" + }, + "shadowsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", + "editType": "none", + "valType": "string" + }, + "size": { + "arrayOk": true, + "editType": "plot", + "min": 1, + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "style": { + "arrayOk": true, + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "plot", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "stylesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `style`.", + "editType": "none", + "valType": "string" + }, + "textcase": { + "arrayOk": true, + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "plot", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "textcasesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", + "editType": "none", + "valType": "string" + }, + "variant": { + "arrayOk": true, + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "plot", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "variantsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `variant`.", + "editType": "none", + "valType": "string" + }, + "weight": { + "arrayOk": true, + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "plot", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + }, + "weightsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `weight`.", + "editType": "none", + "valType": "string" + } + }, + "pull": { + "arrayOk": true, + "description": "Sets the fraction of larger radius to pull the sectors out from the center. This can be a constant to pull all slices apart from each other equally or an array to highlight one or more slices.", + "dflt": 0, + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + "pullsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `pull`.", + "editType": "none", + "valType": "string" + }, + "rotation": { + "description": "Instead of the first slice starting at 12 o'clock, rotate to some other angle.", + "dflt": 0, + "editType": "calc", + "valType": "angle" + }, + "scalegroup": { + "description": "If there are multiple pie charts that should be sized according to their totals, link them by providing a non-empty group id here shared by every trace in the same group.", + "dflt": "", + "editType": "calc", + "valType": "string" + }, + "showlegend": { + "description": "Determines whether or not an item corresponding to this trace is shown in the legend.", + "dflt": true, + "editType": "style", + "valType": "boolean" + }, + "sort": { + "description": "Determines whether or not the sectors are reordered from largest to smallest.", + "dflt": true, + "editType": "calc", + "valType": "boolean" + }, + "stream": { + "editType": "calc", + "maxpoints": { + "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", + "dflt": 500, + "editType": "calc", + "max": 10000, + "min": 0, + "valType": "number" + }, + "role": "object", + "token": { + "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", + "editType": "calc", + "noBlank": true, + "strict": true, + "valType": "string" + } + }, + "text": { + "description": "Sets text elements associated with each sector. If trace `textinfo` contains a *text* flag, these elements will be seen on the chart. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", + "editType": "plot", + "valType": "data_array" + }, + "textfont": { + "color": { + "arrayOk": true, + "editType": "plot", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "description": "Sets the font used for `textinfo`.", + "editType": "plot", + "family": { + "arrayOk": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "plot", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "familysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `family`.", + "editType": "none", + "valType": "string" + }, + "lineposition": { + "arrayOk": true, + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "plot", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "linepositionsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", + "editType": "none", + "valType": "string" + }, + "role": "object", + "shadow": { + "arrayOk": true, + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "plot", + "valType": "string" + }, + "shadowsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", + "editType": "none", + "valType": "string" + }, + "size": { + "arrayOk": true, + "editType": "plot", + "min": 1, + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "style": { + "arrayOk": true, + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "plot", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "stylesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `style`.", + "editType": "none", + "valType": "string" + }, + "textcase": { + "arrayOk": true, + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "plot", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "textcasesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", + "editType": "none", + "valType": "string" + }, + "variant": { + "arrayOk": true, + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "plot", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "variantsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `variant`.", + "editType": "none", + "valType": "string" + }, + "weight": { + "arrayOk": true, + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "plot", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + }, + "weightsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `weight`.", + "editType": "none", + "valType": "string" + } + }, + "textinfo": { + "description": "Determines which trace information appear on the graph.", + "editType": "calc", + "extras": [ + "none" + ], + "flags": [ + "label", + "text", + "value", + "percent" + ], + "valType": "flaglist" + }, + "textposition": { + "arrayOk": true, + "description": "Specifies the location of the `textinfo`.", + "dflt": "auto", + "editType": "plot", + "valType": "enumerated", + "values": [ + "inside", + "outside", + "auto", + "none" + ] + }, + "textpositionsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", + "editType": "none", + "valType": "string" + }, + "textsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `text`.", + "editType": "none", + "valType": "string" + }, + "texttemplate": { + "arrayOk": true, + "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `label`, `color`, `value`, `percent` and `text`.", + "dflt": "", + "editType": "plot", + "valType": "string" + }, + "texttemplatefallback": { + "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", + "dflt": "-", + "editType": "plot", + "valType": "any" + }, + "texttemplatesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", + "editType": "none", + "valType": "string" + }, + "title": { + "editType": "plot", + "font": { + "color": { + "arrayOk": true, + "editType": "plot", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "description": "Sets the font used for `title`.", + "editType": "plot", + "family": { + "arrayOk": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "plot", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "familysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `family`.", + "editType": "none", + "valType": "string" + }, + "lineposition": { + "arrayOk": true, + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "plot", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "linepositionsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", + "editType": "none", + "valType": "string" + }, + "role": "object", + "shadow": { + "arrayOk": true, + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "plot", + "valType": "string" + }, + "shadowsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", + "editType": "none", + "valType": "string" + }, + "size": { + "arrayOk": true, + "editType": "plot", + "min": 1, + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "style": { + "arrayOk": true, + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "plot", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "stylesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `style`.", + "editType": "none", + "valType": "string" + }, + "textcase": { + "arrayOk": true, + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "plot", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "textcasesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", + "editType": "none", + "valType": "string" + }, + "variant": { + "arrayOk": true, + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "plot", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "variantsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `variant`.", + "editType": "none", + "valType": "string" + }, + "weight": { + "arrayOk": true, + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "plot", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + }, + "weightsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `weight`.", + "editType": "none", + "valType": "string" + } + }, + "position": { + "description": "Specifies the location of the `title`.", + "editType": "plot", + "valType": "enumerated", + "values": [ + "top left", + "top center", + "top right", + "middle center", + "bottom left", + "bottom center", + "bottom right" + ] + }, + "role": "object", + "text": { + "description": "Sets the title of the chart. If it is empty, no title is displayed.", + "dflt": "", + "editType": "plot", + "valType": "string" + } + }, + "type": "pie", + "uid": { + "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", + "editType": "plot", + "valType": "string" + }, + "uirevision": { + "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves.", + "editType": "none", + "valType": "any" + }, + "values": { + "description": "Sets the values of the sectors. If omitted, we count occurrences of each label.", + "editType": "calc", + "valType": "data_array" + }, + "valuessrc": { + "description": "Sets the source reference on Chart Studio Cloud for `values`.", + "editType": "none", + "valType": "string" + }, + "visible": { + "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).", + "dflt": true, + "editType": "calc", + "valType": "enumerated", + "values": [ + true, + false, + "legendonly" + ] + } + }, + "categories": [ + "pie-like", + "pie", + "showLegend" + ], + "layoutAttributes": { + "extendpiecolors": { + "description": "If `true`, the pie slice colors (whether given by `piecolorway` or inherited from `colorway`) will be extended to three times its original length by first repeating every color 20% lighter then each color 20% darker. This is intended to reduce the likelihood of reusing the same color when you have many slices, but you can set `false` to disable. Colors provided in the trace, using `marker.colors`, are never extended.", + "dflt": true, + "editType": "calc", + "valType": "boolean" + }, + "hiddenlabels": { + "description": "hiddenlabels is the funnelarea & pie chart analog of visible:'legendonly' but it can contain many labels, and can simultaneously hide slices from several pies/funnelarea charts", + "editType": "calc", + "valType": "data_array" + }, + "hiddenlabelssrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hiddenlabels`.", + "editType": "none", + "valType": "string" + }, + "piecolorway": { + "description": "Sets the default pie slice colors. Defaults to the main `colorway` used for trace colors. If you specify a new list here it can still be extended with lighter and darker colors, see `extendpiecolors`.", + "editType": "calc", + "valType": "colorlist" + } + }, + "meta": { + "description": "A data visualized by the sectors of the pie is set in `values`. The sector labels are set in `labels`. The sector colors are set in `marker.colors`" + }, + "type": "pie" + }, + "quiver": { + "animatable": true, + "attributes": { + "anchor": { + "description": "Sets the arrows' anchor with respect to their (x,y) positions. Use *tail* to place (x,y) at the base, *tip* to place (x,y) at the head, or *cm*/*center*/*middle* to center the arrow on (x,y).", + "dflt": "tail", + "editType": "calc", + "valType": "enumerated", + "values": [ + "tip", + "tail", + "cm", + "center", + "middle" + ] + }, + "angle": { + "description": "Angle of arrowhead in radians. Default = π/9", + "dflt": 0.3490658503988659, + "editType": "calc", + "max": 1.5707963267948966, + "min": 0, + "valType": "number" + }, + "arrow_scale": { + "description": "Deprecated alias for `arrowsize`-based sizing. Prefer using `arrowsize`.", + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + "arrowsize": { + "description": "Scales the size of the arrow head relative to a base size. Higher values produce larger heads.", + "dflt": 1, + "editType": "calc", + "min": 0.3, + "valType": "number" + }, + "arrowwidth": { + "description": "Sets the width (in px) of the arrow line (alias of `line.width`).", + "editType": "style", + "min": 0.1, + "valType": "number" + }, + "customdata": { + "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements", + "editType": "calc", + "valType": "data_array" + }, + "customdatasrc": { + "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", + "editType": "none", + "valType": "string" + }, + "hoverdistance": { + "description": "Maximum distance (in pixels) to look for nearby arrows on hover.", + "dflt": 20, + "editType": "calc", + "min": -1, + "valType": "number" + }, + "hoverinfo": { + "arrayOk": true, + "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.", + "dflt": "all", + "editType": "none", + "extras": [ + "all", + "none", + "skip" + ], + "flags": [ + "x", + "y", + "u", + "v", + "text", + "name" + ], + "valType": "flaglist" + }, + "hoverinfosrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", + "editType": "none", + "valType": "string" + }, + "hoverlabel": { + "align": { + "arrayOk": true, + "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines", + "dflt": "auto", + "editType": "none", + "valType": "enumerated", + "values": [ + "left", + "right", + "auto" + ] + }, + "alignsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `align`.", + "editType": "none", + "valType": "string" + }, + "bgcolor": { + "arrayOk": true, + "description": "Sets the background color of the hover labels for this trace", + "editType": "none", + "valType": "color" + }, + "bgcolorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", + "editType": "none", + "valType": "string" + }, + "bordercolor": { + "arrayOk": true, + "description": "Sets the border color of the hover labels for this trace.", + "editType": "none", + "valType": "color" + }, + "bordercolorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", + "editType": "none", + "valType": "string" + }, + "editType": "none", + "font": { + "color": { + "arrayOk": true, + "editType": "none", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "description": "Sets the font used in hover labels.", + "editType": "none", + "family": { + "arrayOk": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "none", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "familysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `family`.", + "editType": "none", + "valType": "string" + }, + "lineposition": { + "arrayOk": true, + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "none", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "linepositionsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", + "editType": "none", + "valType": "string" + }, + "role": "object", + "shadow": { + "arrayOk": true, + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "none", + "valType": "string" + }, + "shadowsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", + "editType": "none", + "valType": "string" + }, + "size": { + "arrayOk": true, + "editType": "none", + "min": 1, + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "style": { + "arrayOk": true, + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "none", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "stylesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `style`.", + "editType": "none", + "valType": "string" + }, + "textcase": { + "arrayOk": true, + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "none", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "textcasesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", + "editType": "none", + "valType": "string" + }, + "variant": { + "arrayOk": true, + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "none", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "variantsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `variant`.", + "editType": "none", + "valType": "string" + }, + "weight": { + "arrayOk": true, + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "none", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + }, + "weightsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `weight`.", + "editType": "none", + "valType": "string" + } + }, + "namelength": { + "arrayOk": true, + "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.", + "dflt": 15, + "editType": "none", + "min": -1, + "valType": "integer" + }, + "namelengthsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", + "editType": "none", + "valType": "string" + }, + "role": "object", + "showarrow": { + "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", + "dflt": true, + "editType": "none", + "valType": "boolean" + } + }, + "hovertemplate": { + "arrayOk": true, + "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `x`, `y`, `u`, `v`, `text` and `name`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``.", + "dflt": "", + "editType": "none", + "valType": "string" + }, + "hovertemplatesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", + "editType": "none", + "valType": "string" + }, + "ids": { + "anim": true, + "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", + "editType": "calc", + "valType": "data_array" + }, + "idssrc": { + "description": "Sets the source reference on Chart Studio Cloud for `ids`.", + "editType": "none", + "valType": "string" + }, + "legend": { + "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", + "dflt": "legend", + "editType": "style", + "valType": "subplotid" + }, + "legendgroup": { + "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.", + "dflt": "", + "editType": "style", + "valType": "string" + }, + "legendgrouptitle": { + "editType": "style", + "font": { + "color": { + "editType": "style", + "valType": "color" + }, + "description": "Sets this legend group's title font.", + "editType": "style", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "style", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "style", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "style", + "valType": "string" + }, + "size": { + "editType": "style", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "style", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "style", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "style", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "style", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "role": "object", + "text": { + "description": "Sets the title of the legend group.", + "dflt": "", + "editType": "style", + "valType": "string" + } + }, + "legendrank": { + "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.", + "dflt": 1000, + "editType": "style", + "valType": "number" + }, + "legendwidth": { + "description": "Sets the width (in px or fraction) of the legend for this trace.", + "editType": "style", + "min": 0, + "valType": "number" + }, + "line": { + "color": { + "description": "Sets the color of the arrow lines.", + "dflt": "#000", + "editType": "style", + "valType": "color" + }, + "dash": { + "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", + "dflt": "solid", + "editType": "style", + "valType": "string", + "values": [ + "solid", + "dot", + "dash", + "longdash", + "dashdot", + "longdashdot" + ] + }, + "editType": "style", + "role": "object", + "shape": { + "description": "Determines the line shape.", + "dflt": "linear", + "editType": "plot", + "valType": "enumerated", + "values": [ + "linear", + "spline", + "hv", + "vh", + "hvh", + "vhv" + ] + }, + "simplify": { + "description": "Simplifies lines by removing nearly-overlapping points.", + "dflt": true, + "editType": "plot", + "valType": "boolean" + }, + "smoothing": { + "description": "Has an effect only if `shape` is set to *spline*. Sets the amount of smoothing.", + "dflt": 1, + "editType": "plot", + "max": 1.3, + "min": 0, + "valType": "number" + }, + "width": { + "description": "Sets the width (in px) of the arrow lines.", + "dflt": 1, + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "meta": { + "arrayOk": true, + "description": "Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index.", + "editType": "plot", + "valType": "any" + }, + "metasrc": { + "description": "Sets the source reference on Chart Studio Cloud for `meta`.", + "editType": "none", + "valType": "string" + }, + "name": { + "description": "Sets the trace name. The trace name appears as the legend item and on hover.", + "editType": "style", + "valType": "string" + }, + "opacity": { + "description": "Sets the opacity of the trace.", + "dflt": 1, + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "scaleratio": { + "description": "The ratio between the scale of the y-axis and the scale of the x-axis (scale_y / scale_x). Default = null, the scale ratio is not fixed.", + "editType": "calc", + "min": 0, + "valType": "number" + }, + "selected": { + "editType": "style", + "line": { + "color": { + "description": "Sets the line color of selected points.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "role": "object", + "width": { + "description": "Sets the line width of selected points.", + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "role": "object", + "textfont": { + "color": { + "description": "Sets the text font color of selected points, applied only when a selection exists.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "role": "object" + } + }, + "selectedpoints": { + "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.", + "editType": "calc", + "valType": "any" + }, + "showlegend": { + "description": "Determines whether or not an item corresponding to this trace is shown in the legend.", + "dflt": true, + "editType": "style", + "valType": "boolean" + }, + "sizemode": { + "description": "Determines whether `sizeref` is set as a *scaled* (unitless) scalar (normalized by the max u/v norm in the vector field), as an *absolute* value (in the same units as the vector field), or *raw* to use the raw vector lengths.", + "dflt": "scaled", + "editType": "calc", + "valType": "enumerated", + "values": [ + "scaled", + "absolute", + "raw" + ] + }, + "sizeref": { + "description": "Adjusts the arrow size scaling. The arrow length is determined by the vector norm multiplied by `sizeref`, optionally normalized when `sizemode` is *scaled*.", + "editType": "calc", + "min": 0, + "valType": "number" + }, + "stream": { + "editType": "calc", + "maxpoints": { + "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", + "dflt": 500, + "editType": "calc", + "max": 10000, + "min": 0, + "valType": "number" + }, + "role": "object", + "token": { + "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", + "editType": "calc", + "noBlank": true, + "strict": true, + "valType": "string" + } + }, + "text": { + "anim": true, + "description": "Sets text elements associated with each (x,y) pair.", + "editType": "calc", + "valType": "data_array" + }, + "textfont": { + "color": { + "arrayOk": true, + "editType": "style", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "description": "Sets the text font.", + "editType": "calc", + "family": { + "arrayOk": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "calc", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "familysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `family`.", + "editType": "none", + "valType": "string" + }, + "lineposition": { + "arrayOk": true, + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "calc", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "linepositionsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", + "editType": "none", + "valType": "string" + }, + "role": "object", + "shadow": { + "arrayOk": true, + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "calc", + "valType": "string" + }, + "shadowsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", + "editType": "none", + "valType": "string" + }, + "size": { + "arrayOk": true, + "editType": "calc", + "min": 1, + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "style": { + "arrayOk": true, + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "stylesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `style`.", + "editType": "none", + "valType": "string" + }, + "textcase": { + "arrayOk": true, + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "textcasesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", + "editType": "none", + "valType": "string" + }, + "variant": { + "arrayOk": true, + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "variantsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `variant`.", + "editType": "none", + "valType": "string" + }, + "weight": { + "arrayOk": true, + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "calc", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + }, + "weightsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `weight`.", + "editType": "none", + "valType": "string" + } + }, + "textposition": { + "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.", + "dflt": "middle center", + "editType": "calc", + "valType": "enumerated", + "values": [ + "top left", + "top center", + "top right", + "middle left", + "middle center", + "middle right", + "bottom left", + "bottom center", + "bottom right" + ] + }, + "textsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `text`.", + "editType": "none", + "valType": "string" + }, + "type": "quiver", + "u": { + "anim": true, + "description": "Sets the x components of the arrow vectors.", + "editType": "calc", + "valType": "data_array" + }, + "uid": { + "anim": true, + "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", + "editType": "plot", + "valType": "string" + }, + "uirevision": { + "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves.", + "editType": "none", + "valType": "any" + }, + "unselected": { + "editType": "style", + "line": { + "color": { + "description": "Sets the line color of unselected points.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "role": "object", + "width": { + "description": "Sets the line width of unselected points.", + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "role": "object", + "textfont": { + "color": { + "description": "Sets the text font color of unselected points, applied only when a selection exists.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "role": "object" + } + }, + "usrc": { + "description": "Sets the source reference on Chart Studio Cloud for `u`.", + "editType": "none", + "valType": "string" + }, + "v": { + "anim": true, + "description": "Sets the y components of the arrow vectors.", + "editType": "calc", + "valType": "data_array" + }, + "visible": { + "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).", + "dflt": true, + "editType": "calc", + "valType": "enumerated", + "values": [ + true, + false, + "legendonly" + ] + }, + "vsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `v`.", + "editType": "none", + "valType": "string" + }, + "x": { + "anim": true, + "description": "Sets the x coordinates of the arrow locations.", + "editType": "calc+clearAxisTypes", + "valType": "data_array" + }, + "xaxis": { + "description": "Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on.", + "dflt": "x", + "editType": "calc+clearAxisTypes", + "valType": "subplotid" + }, + "xsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `x`.", + "editType": "none", + "valType": "string" + }, + "y": { + "anim": true, + "description": "Sets the y coordinates of the arrow locations.", + "editType": "calc+clearAxisTypes", + "valType": "data_array" + }, + "yaxis": { + "description": "Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on.", + "dflt": "y", + "editType": "calc+clearAxisTypes", + "valType": "subplotid" + }, + "ysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `y`.", + "editType": "none", + "valType": "string" + } + }, + "categories": [ + "cartesian", + "svg", + "showLegend", + "scatter-like", + "zoomScale" + ], + "meta": { + "description": "The quiver trace type visualizes vector fields using arrows. Specify a vector field using 4 1D arrays: 2 position arrays `x`, `y` and 2 vector component arrays `u`, `v`. The arrows are drawn exactly at the positions given by `x` and `y`. Arrow length and direction are determined by `u` and `v` components." + }, + "type": "quiver" + }, + "sankey": { + "animatable": false, + "attributes": { + "arrangement": { + "description": "If value is `snap` (the default), the node arrangement is assisted by automatic snapping of elements to preserve space between nodes specified via `nodepad`. If value is `perpendicular`, the nodes can only move along a line perpendicular to the flow. If value is `freeform`, the nodes can freely move on the plane. If value is `fixed`, the nodes are stationary.", + "dflt": "snap", + "editType": "calc", + "valType": "enumerated", + "values": [ + "snap", + "perpendicular", + "freeform", + "fixed" + ] + }, + "customdata": { + "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements", + "editType": "calc", + "valType": "data_array" + }, + "customdatasrc": { + "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", + "editType": "none", + "valType": "string" + }, + "domain": { + "column": { + "description": "If there is a layout grid, use the domain for this column in the grid for this sankey trace .", + "dflt": 0, + "editType": "calc", + "min": 0, + "valType": "integer" + }, + "editType": "calc", + "role": "object", + "row": { + "description": "If there is a layout grid, use the domain for this row in the grid for this sankey trace .", + "dflt": 0, + "editType": "calc", + "min": 0, + "valType": "integer" + }, + "x": { + "description": "Sets the horizontal domain of this sankey trace (in plot fraction).", + "dflt": [ + 0, + 1 + ], + "editType": "calc", + "items": [ + { + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + { + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + } + ], + "valType": "info_array" + }, + "y": { + "description": "Sets the vertical domain of this sankey trace (in plot fraction).", + "dflt": [ + 0, + 1 + ], + "editType": "calc", + "items": [ + { + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + { + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + } + ], + "valType": "info_array" + } + }, + "hoverinfo": { + "arrayOk": false, + "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. Note that this attribute is superseded by `node.hoverinfo` and `node.hoverinfo` for nodes and links respectively.", + "dflt": "all", + "editType": "calc", + "extras": [ + "all", + "none", + "skip" + ], + "flags": [], + "valType": "flaglist" + }, + "hoverlabel": { + "align": { + "arrayOk": true, + "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines", + "dflt": "auto", + "editType": "calc", + "valType": "enumerated", + "values": [ + "left", + "right", + "auto" + ] + }, + "alignsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `align`.", + "editType": "none", + "valType": "string" + }, + "bgcolor": { + "arrayOk": true, + "description": "Sets the background color of the hover labels for this trace", + "editType": "calc", + "valType": "color" + }, + "bgcolorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", + "editType": "none", + "valType": "string" + }, + "bordercolor": { + "arrayOk": true, + "description": "Sets the border color of the hover labels for this trace.", + "editType": "calc", + "valType": "color" + }, + "bordercolorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", + "editType": "none", + "valType": "string" + }, + "editType": "calc", + "font": { + "color": { + "arrayOk": true, + "editType": "calc", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "description": "Sets the font used in hover labels.", + "editType": "calc", + "family": { + "arrayOk": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "calc", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "familysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `family`.", + "editType": "none", + "valType": "string" + }, + "lineposition": { + "arrayOk": true, + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "calc", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "linepositionsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", + "editType": "none", + "valType": "string" + }, + "role": "object", + "shadow": { + "arrayOk": true, + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "calc", + "valType": "string" + }, + "shadowsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", + "editType": "none", + "valType": "string" + }, + "size": { + "arrayOk": true, + "editType": "calc", + "min": 1, + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "style": { + "arrayOk": true, + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "stylesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `style`.", + "editType": "none", + "valType": "string" + }, + "textcase": { + "arrayOk": true, + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "textcasesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", + "editType": "none", + "valType": "string" + }, + "variant": { + "arrayOk": true, + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "variantsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `variant`.", + "editType": "none", + "valType": "string" + }, + "weight": { + "arrayOk": true, + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "calc", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + }, + "weightsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `weight`.", + "editType": "none", + "valType": "string" + } + }, + "namelength": { + "arrayOk": true, + "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.", + "dflt": 15, + "editType": "calc", + "min": -1, + "valType": "integer" + }, + "namelengthsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", + "editType": "none", + "valType": "string" + }, + "role": "object", + "showarrow": { + "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", + "dflt": true, + "editType": "calc", + "valType": "boolean" + } + }, + "ids": { + "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", + "editType": "calc", + "valType": "data_array" + }, + "idssrc": { + "description": "Sets the source reference on Chart Studio Cloud for `ids`.", + "editType": "none", + "valType": "string" + }, + "legend": { + "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", + "dflt": "legend", + "editType": "style", + "valType": "subplotid" + }, + "legendgrouptitle": { + "editType": "style", + "font": { + "color": { + "editType": "style", + "valType": "color" + }, + "description": "Sets this legend group's title font.", + "editType": "style", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "style", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "style", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "style", + "valType": "string" + }, + "size": { + "editType": "style", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "style", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "style", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "style", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "style", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "role": "object", + "text": { + "description": "Sets the title of the legend group.", + "dflt": "", + "editType": "style", + "valType": "string" + } + }, + "legendrank": { + "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.", + "dflt": 1000, + "editType": "style", + "valType": "number" + }, + "legendwidth": { + "description": "Sets the width (in px or fraction) of the legend for this trace.", + "editType": "style", + "min": 0, + "valType": "number" + }, + "link": { + "arrowlen": { + "description": "Sets the length (in px) of the links arrow, if 0 no arrow will be drawn.", + "dflt": 0, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "color": { + "arrayOk": true, + "description": "Sets the `link` color. It can be a single value, or an array for specifying color for each `link`. If `link.color` is omitted, then by default, a translucent grey link will be used.", + "editType": "calc", + "valType": "color" + }, + "colorscales": { + "items": { + "concentrationscales": { + "cmax": { + "description": "Sets the upper bound of the color domain.", + "dflt": 1, + "editType": "calc", + "valType": "number" + }, + "cmin": { + "description": "Sets the lower bound of the color domain.", + "dflt": 0, + "editType": "calc", + "valType": "number" + }, + "colorscale": { + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "dflt": [ + [ + 0, + "white" + ], + [ + 1, + "black" +>>>>>>> b50bcc3af (Match arrowhead attributes for annotations) + ] + }, + "rangeselector": { + "activecolor": { + "description": "Sets the background color of the active range selector button.", + "editType": "plot", + "valType": "color" + }, + "bgcolor": { + "description": "Sets the background color of the range selector buttons.", + "dflt": "#eee", + "editType": "plot", + "valType": "color" + }, + "bordercolor": { + "description": "Sets the color of the border enclosing the range selector.", + "dflt": "#444", + "editType": "plot", + "valType": "color" + }, + "borderwidth": { + "description": "Sets the width (in px) of the border enclosing the range selector.", + "dflt": 0, + "editType": "plot", + "min": 0, + "valType": "number" + }, + "buttons": { + "items": { + "button": { + "count": { + "description": "Sets the number of steps to take to update the range. Use with `step` to specify the update interval.", + "dflt": 1, + "editType": "plot", + "min": 0, + "valType": "number" + }, + "description": "Sets the specifications for each buttons. By default, a range selector comes with no buttons.", + "editType": "plot", + "label": { + "description": "Sets the text label to appear on the button.", + "editType": "plot", + "valType": "string" + }, + "name": { + "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.", + "editType": "none", + "valType": "string" + }, + "role": "object", + "step": { + "description": "The unit of measurement that the `count` value will set the range by.", + "dflt": "month", + "editType": "plot", + "valType": "enumerated", + "values": [ + "month", + "year", + "day", + "hour", + "minute", + "second", + "all" + ] + }, + "stepmode": { + "description": "Sets the range update mode. If *backward*, the range update shifts the start of range back *count* times *step* milliseconds. If *todate*, the range update shifts the start of range back to the first timestamp from *count* times *step* milliseconds back. For example, with `step` set to *year* and `count` set to *1* the range update shifts the start of the range back to January 01 of the current year. Month and year *todate* are currently available only for the built-in (Gregorian) calendar.", + "dflt": "backward", + "editType": "plot", + "valType": "enumerated", + "values": [ + "backward", + "todate" + ] + }, + "templateitemname": { + "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.", + "editType": "calc", + "valType": "string" + }, + "visible": { + "description": "Determines whether or not this button is visible.", + "dflt": true, + "editType": "plot", + "valType": "boolean" + } + } + }, + "role": "object" + }, + "editType": "plot", + "font": { + "color": { + "editType": "plot", + "valType": "color" + }, + "description": "Sets the font of the range selector button text.", + "editType": "plot", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "plot", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "plot", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "plot", + "valType": "string" + }, + "size": { + "editType": "plot", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "plot", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "plot", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "plot", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "plot", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "role": "object", + "visible": { + "description": "Determines whether or not this range selector is visible. Note that range selectors are only available for x axes of `type` set to or auto-typed to *date*.", + "editType": "plot", + "valType": "boolean" + }, + "x": { + "description": "Sets the x position (in normalized coordinates) of the range selector.", + "editType": "plot", + "max": 3, + "min": -2, + "valType": "number" + }, + "xanchor": { + "description": "Sets the range selector's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the range selector.", + "dflt": "left", + "editType": "plot", + "valType": "enumerated", + "values": [ + "auto", + "left", + "center", + "right" + ] + }, + "y": { + "description": "Sets the y position (in normalized coordinates) of the range selector.", + "editType": "plot", + "max": 3, + "min": -2, + "valType": "number" + }, + "yanchor": { + "description": "Sets the range selector's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the range selector.", + "dflt": "bottom", + "editType": "plot", + "valType": "enumerated", + "values": [ + "auto", + "top", + "middle", + "bottom" + ] + } + }, + "rangeslider": { + "autorange": { + "description": "Determines whether or not the range slider range is computed in relation to the input data. If `range` is provided, then `autorange` is set to *false*.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "bgcolor": { + "description": "Sets the background color of the range slider.", + "dflt": "#fff", + "editType": "plot", + "valType": "color" + }, + "bordercolor": { + "description": "Sets the border color of the range slider.", + "dflt": "#444", + "editType": "plot", + "valType": "color" + }, + "borderwidth": { + "description": "Sets the border width of the range slider.", + "dflt": 0, + "editType": "plot", + "min": 0, + "valType": "integer" + }, + "editType": "calc", + "range": { + "description": "Sets the range of the range slider. If not set, defaults to the full xaxis range. If the axis `type` is *log*, then you must take the log of your desired range. If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears.", + "editType": "calc", + "impliedEdits": { + "autorange": false + }, + "items": [ + { + "editType": "calc", + "impliedEdits": { + "^autorange": false + }, + "valType": "any" + }, + { + "editType": "calc", + "impliedEdits": { + "^autorange": false + }, + "valType": "any" + } + ], + "valType": "info_array" + }, + "role": "object", + "thickness": { + "description": "The height of the range slider as a fraction of the total plot area height.", + "dflt": 0.15, + "editType": "plot", + "max": 1, + "min": 0, + "valType": "number" + }, + "visible": { + "description": "Determines whether or not the range slider will be visible. If visible, perpendicular axes will be set to `fixedrange`", + "dflt": true, + "editType": "calc", + "valType": "boolean" + }, + "yaxis": { + "_isSubplotObj": true, + "editType": "calc", + "range": { + "description": "Sets the range of this axis for the rangeslider.", + "editType": "plot", + "items": [ + { + "editType": "plot", + "valType": "any" + }, + { + "editType": "plot", + "valType": "any" + } + ], + "valType": "info_array" + }, + "rangemode": { + "description": "Determines whether or not the range of this axis in the rangeslider use the same value than in the main plot when zooming in/out. If *auto*, the autorange will be used. If *fixed*, the `range` is used. If *match*, the current range of the corresponding y-axis on the main subplot is used.", + "dflt": "match", + "editType": "calc", + "valType": "enumerated", + "values": [ + "auto", + "fixed", + "match" + ] + }, + "role": "object" + } + }, + "role": "object", + "scaleanchor": { + "description": "If set to another axis id (e.g. `x2`, `y`), the range of this axis changes together with the range of the corresponding axis such that the scale of pixels per unit is in a constant ratio. Both axes are still zoomable, but when you zoom one, the other will zoom the same amount, keeping a fixed midpoint. `constrain` and `constraintoward` determine how we enforce the constraint. You can chain these, ie `yaxis: {scaleanchor: *x*}, xaxis2: {scaleanchor: *y*}` but you can only link axes of the same `type`. The linked axis can have the opposite letter (to constrain the aspect ratio) or the same letter (to match scales across subplots). Loops (`yaxis: {scaleanchor: *x*}, xaxis: {scaleanchor: *y*}` or longer) are redundant and the last constraint encountered will be ignored to avoid possible inconsistent constraints via `scaleratio`. Note that setting axes simultaneously in both a `scaleanchor` and a `matches` constraint is currently forbidden. Setting `false` allows to remove a default constraint (occasionally, you may need to prevent a default `scaleanchor` constraint from being applied, eg. when having an image trace `yaxis: {scaleanchor: \"x\"}` is set automatically in order for pixels to be rendered as squares, setting `yaxis: {scaleanchor: false}` allows to remove the constraint).", + "editType": "plot", + "valType": "enumerated", + "values": [ + "/^x([2-9]|[1-9][0-9]+)?( domain)?$/", + "/^y([2-9]|[1-9][0-9]+)?( domain)?$/", + false + ] + }, + "scaleratio": { + "description": "If this axis is linked to another by `scaleanchor`, this determines the pixel to unit scale ratio. For example, if this value is 10, then every unit on this axis spans 10 times the number of pixels as a unit on the linked axis. Use this for example to create an elevation profile where the vertical scale is exaggerated a fixed amount with respect to the horizontal.", + "dflt": 1, + "editType": "plot", + "min": 0, + "valType": "number" + }, + "separatethousands": { + "description": "If \"true\", even 4-digit integers are separated", + "dflt": false, + "editType": "ticks", + "valType": "boolean" + }, + "showdividers": { + "description": "Determines whether or not a dividers are drawn between the category levels of this axis. Only has an effect on *multicategory* axes.", + "dflt": true, + "editType": "ticks", + "valType": "boolean" + }, + "showexponent": { + "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.", + "dflt": "all", + "editType": "ticks", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "showgrid": { + "description": "Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark.", + "editType": "ticks", + "valType": "boolean" + }, + "showline": { + "description": "Determines whether or not a line bounding this axis is drawn.", + "dflt": false, + "editType": "ticks+layoutstyle", + "valType": "boolean" + }, + "showspikes": { + "description": "Determines whether or not spikes (aka droplines) are drawn for this axis. Note: This only takes affect when hovermode = closest", + "dflt": false, + "editType": "modebar", + "valType": "boolean" + }, + "showticklabels": { + "description": "Determines whether or not the tick labels are drawn.", + "dflt": true, + "editType": "ticks", + "valType": "boolean" + }, + "showtickprefix": { + "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.", + "dflt": "all", + "editType": "ticks", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "showticksuffix": { + "description": "Same as `showtickprefix` but for tick suffixes.", + "dflt": "all", + "editType": "ticks", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "side": { + "description": "Determines whether a x (y) axis is positioned at the *bottom* (*left*) or *top* (*right*) of the plotting area.", + "editType": "plot", + "valType": "enumerated", + "values": [ + "top", + "bottom", + "left", + "right" + ] + }, + "spikecolor": { + "description": "Sets the spike color. If undefined, will use the series color", + "dflt": null, + "editType": "none", + "valType": "color" + }, + "spikedash": { + "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", + "dflt": "dash", + "editType": "none", + "valType": "string", + "values": [ + "solid", + "dot", + "dash", + "longdash", + "dashdot", + "longdashdot" + ] + }, + "spikemode": { + "description": "Determines the drawing mode for the spike line If *toaxis*, the line is drawn from the data point to the axis the series is plotted on. If *across*, the line is drawn across the entire plot area, and supercedes *toaxis*. If *marker*, then a marker dot is drawn on the axis the series is plotted on", + "dflt": "toaxis", + "editType": "none", + "flags": [ + "toaxis", + "across", + "marker" + ], + "valType": "flaglist" + }, + "spikesnap": { + "description": "Determines whether spikelines are stuck to the cursor or to the closest datapoints.", + "dflt": "hovered data", + "editType": "none", + "valType": "enumerated", + "values": [ + "data", + "cursor", + "hovered data" + ] + }, + "spikethickness": { + "description": "Sets the width (in px) of the zero line.", + "dflt": 3, + "editType": "none", + "valType": "number" + }, + "tick0": { + "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears.", + "editType": "ticks", + "impliedEdits": { + "tickmode": "linear" + }, + "valType": "any" + }, + "tickangle": { + "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.", + "dflt": "auto", + "editType": "ticks", + "valType": "angle" + }, + "tickcolor": { + "description": "Sets the tick color.", + "dflt": "#444", + "editType": "ticks", + "valType": "color" + }, + "tickfont": { + "color": { + "editType": "ticks", + "valType": "color" + }, + "description": "Sets the tick font.", + "editType": "ticks", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "ticks", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "ticks", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "ticks", + "valType": "string" + }, + "size": { + "editType": "ticks", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "ticks", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "ticks", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "ticks", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "ticks", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "tickformat": { + "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*", + "dflt": "", + "editType": "ticks", + "valType": "string" + }, + "tickformatstops": { + "items": { + "tickformatstop": { + "dtickrange": { + "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*", + "editType": "ticks", + "items": [ + { + "editType": "ticks", + "valType": "any" + }, + { + "editType": "ticks", + "valType": "any" + } + ], + "valType": "info_array" + }, + "editType": "ticks", + "enabled": { + "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.", + "dflt": true, + "editType": "ticks", + "valType": "boolean" + }, + "name": { + "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.", + "editType": "none", + "valType": "string" + }, + "role": "object", + "templateitemname": { + "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.", + "editType": "calc", + "valType": "string" + }, + "value": { + "description": "string - dtickformat for described zoom level, the same as *tickformat*", + "dflt": "", + "editType": "ticks", + "valType": "string" + } + } + }, + "role": "object" + }, + "ticklabelindex": { + "arrayOk": true, + "description": "Only for axes with `type` *date* or *linear*. Instead of drawing the major tick label, draw the label for the minor tick that is n positions away from the major tick. E.g. to always draw the label for the minor tick before each major tick, choose `ticklabelindex` -1. This is useful for date axes with `ticklabelmode` *period* if you want to label the period that ends with each major tick instead of the period that begins there.", + "editType": "calc", + "valType": "integer" + }, + "ticklabelindexsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `ticklabelindex`.", + "editType": "none", + "valType": "string" + }, + "ticklabelmode": { + "description": "Determines where tick labels are drawn with respect to their corresponding ticks and grid lines. Only has an effect for axes of `type` *date* When set to *period*, tick labels are drawn in the middle of the period between ticks.", + "dflt": "instant", + "editType": "ticks", + "valType": "enumerated", + "values": [ + "instant", + "period" + ] + }, + "ticklabeloverflow": { + "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. Otherwise on *category* and *multicategory* axes the default is *allow*. In other cases the default is *hide past div*.", + "editType": "calc", + "valType": "enumerated", + "values": [ + "allow", + "hide past div", + "hide past domain" + ] + }, + "ticklabelposition": { + "description": "Determines where tick labels are drawn with respect to the axis. Please note that top or bottom has no effect on x axes or when `ticklabelmode` is set to *period* or when `tickson` is set to *boundaries*. Similarly, left or right has no effect on y axes or when `ticklabelmode` is set to *period* or when `tickson` is set to *boundaries*. Has no effect on *multicategory* axes. When used on axes linked by `matches` or `scaleanchor`, no extra padding for inside labels would be added by autorange, so that the scales could match.", + "dflt": "outside", + "editType": "calc", + "valType": "enumerated", + "values": [ + "outside", + "inside", + "outside top", + "inside top", + "outside left", + "inside left", + "outside right", + "inside right", + "outside bottom", + "inside bottom" + ] + }, + "ticklabelshift": { + "description": "Shifts the tick labels by the specified number of pixels in parallel to the axis. Positive values move the labels in the positive direction of the axis.", + "dflt": 0, + "editType": "ticks", + "valType": "integer" + }, + "ticklabelstandoff": { + "description": "Sets the standoff distance (in px) between the axis tick labels and their default position. A positive `ticklabelstandoff` moves the labels farther away from the plot area if `ticklabelposition` is *outside*, and deeper into the plot area if `ticklabelposition` is *inside*. A negative `ticklabelstandoff` works in the opposite direction, moving outside ticks towards the plot area and inside ticks towards the outside. If the negative value is large enough, inside ticks can even end up outside and vice versa.", + "dflt": 0, + "editType": "ticks", + "valType": "integer" + }, + "ticklabelstep": { + "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.", + "dflt": 1, + "editType": "ticks", + "min": 1, + "valType": "integer" + }, + "ticklen": { + "description": "Sets the tick length (in px).", + "dflt": 5, + "editType": "ticks", + "min": 0, + "valType": "number" + }, + "tickmode": { + "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). If *sync*, the number of ticks will sync with the overlayed axis set by `overlaying` property.", + "editType": "ticks", + "impliedEdits": {}, + "valType": "enumerated", + "values": [ + "auto", + "linear", + "array", + "sync" + ] + }, + "tickprefix": { + "description": "Sets a tick label prefix.", + "dflt": "", + "editType": "ticks", + "valType": "string" + }, + "ticks": { + "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.", + "editType": "ticks", + "valType": "enumerated", + "values": [ + "outside", + "inside", + "" + ] + }, + "tickson": { + "description": "Determines where ticks and grid lines are drawn with respect to their corresponding tick labels. Only has an effect for axes of `type` *category* or *multicategory*. When set to *boundaries*, ticks and grid lines are drawn half a category to the left/bottom of labels.", + "dflt": "labels", + "editType": "ticks", + "valType": "enumerated", + "values": [ + "labels", + "boundaries" + ] + }, + "ticksuffix": { + "description": "Sets a tick label suffix.", + "dflt": "", + "editType": "ticks", + "valType": "string" + }, + "ticktext": { + "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", + "editType": "ticks", + "valType": "data_array" + }, + "ticktextsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", + "editType": "none", + "valType": "string" + }, + "tickvals": { + "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", + "editType": "ticks", + "valType": "data_array" + }, + "tickvalssrc": { + "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", + "editType": "none", + "valType": "string" + }, + "tickwidth": { + "description": "Sets the tick width (in px).", + "dflt": 1, + "editType": "ticks", + "min": 0, + "valType": "number" + }, + "title": { + "editType": "ticks", + "font": { + "color": { + "editType": "ticks", + "valType": "color" + }, + "description": "Sets this axis' title font.", + "editType": "ticks", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "ticks", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "ticks", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "ticks", + "valType": "string" + }, + "size": { + "editType": "ticks", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "ticks", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "ticks", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "ticks", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "ticks", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "role": "object", + "standoff": { + "description": "Sets the standoff distance (in px) between the axis labels and the title text The default value is a function of the axis tick labels, the title `font.size` and the axis `linewidth`. Note that the axis title position is always constrained within the margins, so the actual standoff distance is always less than the set or default value. By setting `standoff` and turning on `automargin`, plotly.js will push the margins to fit the axis title at given standoff distance.", + "editType": "ticks", + "min": 0, + "valType": "number" + }, + "text": { + "description": "Sets the title of this axis.", + "editType": "ticks", + "valType": "string" + } + }, +<<<<<<< HEAD +======= + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "calc", + "valType": "string" + }, + "size": { + "editType": "calc", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "calc", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "role": "object", + "side": { + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "editType": "calc", + "valType": "enumerated", + "values": [ + "right", + "top", + "bottom" + ] + }, + "text": { + "description": "Sets the title of the color bar.", + "editType": "calc", + "valType": "string" + } + }, + "x": { + "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.", + "editType": "calc", + "valType": "number" + }, + "xanchor": { + "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.", + "editType": "calc", + "valType": "enumerated", + "values": [ + "left", + "center", + "right" + ] + }, + "xpad": { + "description": "Sets the amount of padding (in px) along the x direction.", + "dflt": 10, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "xref": { + "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.", + "dflt": "paper", + "editType": "calc", + "valType": "enumerated", + "values": [ + "container", + "paper" + ] + }, + "y": { + "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.", + "editType": "calc", + "valType": "number" + }, + "yanchor": { + "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.", + "editType": "calc", + "valType": "enumerated", + "values": [ + "top", + "middle", + "bottom" + ] + }, + "ypad": { + "description": "Sets the amount of padding (in px) along the y direction.", + "dflt": 10, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "yref": { + "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.", + "dflt": "paper", + "editType": "calc", + "valType": "enumerated", + "values": [ + "container", + "paper" + ] + } + }, + "colorscale": { + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "autocolorscale": false + }, + "valType": "colorscale" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "editType": "calc", + "opacity": { + "arrayOk": true, + "description": "Sets the marker opacity.", + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + "opacitysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", + "editType": "none", + "valType": "string" + }, + "reversescale": { + "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "role": "object", + "showscale": { + "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "size": { + "arrayOk": true, + "description": "Sets the marker size (in px).", + "dflt": 6, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "sizemin": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points.", + "dflt": 0, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "sizemode": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels.", + "dflt": "diameter", + "editType": "calc", + "valType": "enumerated", + "values": [ + "diameter", + "area" + ] + }, + "sizeref": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`.", + "dflt": 1, + "editType": "calc", + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "symbol": { + "arrayOk": true, + "description": "Sets the marker symbol. Full list: https://www.mapbox.com/maki-icons/ Note that the array `marker.color` and `marker.size` are only available for *circle* symbols.", + "dflt": "circle", + "editType": "calc", + "valType": "string" + }, + "symbolsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", + "editType": "none", + "valType": "string" + } + }, + "meta": { + "arrayOk": true, + "description": "Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index.", + "editType": "plot", + "valType": "any" + }, + "metasrc": { + "description": "Sets the source reference on Chart Studio Cloud for `meta`.", + "editType": "none", + "valType": "string" + }, + "mode": { + "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover.", + "dflt": "markers", + "editType": "calc", + "extras": [ + "none" + ], + "flags": [ + "lines", + "markers", + "text" + ], + "valType": "flaglist" + }, + "name": { + "description": "Sets the trace name. The trace name appears as the legend item and on hover.", + "editType": "style", + "valType": "string" + }, + "opacity": { + "description": "Sets the opacity of the trace.", + "dflt": 1, + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "selected": { + "editType": "calc", + "marker": { + "color": { + "description": "Sets the marker color of selected points.", + "editType": "calc", + "valType": "color" + }, + "editType": "calc", + "opacity": { + "description": "Sets the marker opacity of selected points.", + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + "role": "object", + "size": { + "description": "Sets the marker size of selected points.", + "editType": "calc", + "min": 0, + "valType": "number" + } + }, + "role": "object" + }, + "selectedpoints": { + "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.", + "editType": "calc", + "valType": "any" + }, + "showlegend": { + "description": "Determines whether or not an item corresponding to this trace is shown in the legend.", + "dflt": true, + "editType": "style", + "valType": "boolean" + }, + "stream": { + "editType": "calc", + "maxpoints": { + "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", + "dflt": 500, + "editType": "calc", + "max": 10000, + "min": 0, + "valType": "number" + }, + "role": "object", + "token": { + "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", + "editType": "calc", + "noBlank": true, + "strict": true, + "valType": "string" + } + }, + "subplot": { + "description": "Sets a reference between this trace's data coordinates and a map subplot. If *map* (the default value), the data refer to `layout.map`. If *map2*, the data refer to `layout.map2`, and so on.", + "dflt": "map", + "editType": "calc", + "valType": "subplotid" + }, + "text": { + "arrayOk": true, + "description": "Sets text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", + "dflt": "", + "editType": "calc", + "valType": "string" + }, + "textfont": { + "color": { + "editType": "calc", + "valType": "color" + }, + "description": "Sets the icon text font (color=map.layer.paint.text-color, size=map.layer.layout.text-size). Has an effect only when `type` is set to *symbol*.", + "editType": "calc", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "dflt": "Open Sans Regular, Arial Unicode MS Regular", + "editType": "calc", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "role": "object", + "size": { + "editType": "calc", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "calc", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "textposition": { + "arrayOk": false, + "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.", + "dflt": "middle center", + "editType": "calc", + "valType": "enumerated", + "values": [ + "top left", + "top center", + "top right", + "middle left", + "middle center", + "middle right", + "bottom left", + "bottom center", + "bottom right" + ] + }, + "textsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `text`.", + "editType": "none", + "valType": "string" + }, + "texttemplate": { + "arrayOk": true, + "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `lat`, `lon` and `text`.", + "dflt": "", + "editType": "calc", + "valType": "string" + }, + "texttemplatefallback": { + "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", + "dflt": "-", + "editType": "calc", + "valType": "any" + }, + "texttemplatesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", + "editType": "none", + "valType": "string" + }, + "type": "scattermap", + "uid": { + "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", + "editType": "plot", + "valType": "string" + }, + "uirevision": { + "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves.", + "editType": "none", + "valType": "any" + }, + "unselected": { + "editType": "calc", + "marker": { + "color": { + "description": "Sets the marker color of unselected points, applied only when a selection exists.", + "editType": "calc", + "valType": "color" + }, + "editType": "calc", + "opacity": { + "description": "Sets the marker opacity of unselected points, applied only when a selection exists.", + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + "role": "object", + "size": { + "description": "Sets the marker size of unselected points, applied only when a selection exists.", + "editType": "calc", + "min": 0, + "valType": "number" + } + }, + "role": "object" + }, + "visible": { + "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).", + "dflt": true, + "editType": "calc", + "valType": "enumerated", + "values": [ + true, + false, + "legendonly" + ] + } + }, + "categories": [ + "map", + "gl", + "symbols", + "showLegend", + "scatter-like" + ], + "meta": { + "description": "The data visualized as scatter point, lines or marker symbols on a MapLibre GL geographic map is provided by longitude/latitude pairs in `lon` and `lat`.", + "hrName": "scatter_map" + }, + "type": "scattermap" + }, + "scattermapbox": { + "animatable": false, + "attributes": { + "below": { + "description": "Determines if this scattermapbox trace's layers are to be inserted before the layer with the specified ID. By default, scattermapbox layers are inserted above all the base layers. To place the scattermapbox layers above every other layer, set `below` to *''*.", + "editType": "calc", + "valType": "string" + }, + "cluster": { + "color": { + "arrayOk": true, + "description": "Sets the color for each cluster step.", + "editType": "calc", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "editType": "calc", + "enabled": { + "description": "Determines whether clustering is enabled or disabled.", + "editType": "calc", + "valType": "boolean" + }, + "maxzoom": { + "description": "Sets the maximum zoom level. At zoom levels equal to or greater than this, points will never be clustered.", + "dflt": 24, + "editType": "calc", + "max": 24, + "min": 0, + "valType": "number" + }, + "opacity": { + "arrayOk": true, + "description": "Sets the marker opacity.", + "dflt": 1, + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + "opacitysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", + "editType": "none", + "valType": "string" + }, + "role": "object", + "size": { + "arrayOk": true, + "description": "Sets the size for each cluster step.", + "dflt": 20, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "step": { + "arrayOk": true, + "description": "Sets how many points it takes to create a cluster or advance to the next cluster step. Use this in conjunction with arrays for `size` and / or `color`. If an integer, steps start at multiples of this number. If an array, each step extends from the given value until one less than the next value.", + "dflt": -1, + "editType": "calc", + "min": -1, + "valType": "number" + }, + "stepsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `step`.", + "editType": "none", + "valType": "string" + } + }, + "connectgaps": { + "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "customdata": { + "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements", + "editType": "calc", + "valType": "data_array" + }, + "customdatasrc": { + "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", + "editType": "none", + "valType": "string" + }, + "fill": { + "description": "Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape.", + "dflt": "none", + "editType": "calc", + "valType": "enumerated", + "values": [ + "none", + "toself" + ] + }, + "fillcolor": { + "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available.", + "editType": "calc", + "valType": "color" + }, + "hoverinfo": { + "arrayOk": true, + "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.", + "dflt": "all", + "editType": "calc", + "extras": [ + "all", + "none", + "skip" + ], + "flags": [ + "lon", + "lat", + "text", + "name" + ], + "valType": "flaglist" + }, + "hoverinfosrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", + "editType": "none", + "valType": "string" + }, + "hoverlabel": { + "align": { + "arrayOk": true, + "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines", + "dflt": "auto", + "editType": "none", + "valType": "enumerated", + "values": [ + "left", + "right", + "auto" + ] + }, + "alignsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `align`.", + "editType": "none", + "valType": "string" + }, + "bgcolor": { + "arrayOk": true, + "description": "Sets the background color of the hover labels for this trace", + "editType": "none", + "valType": "color" + }, + "bgcolorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", + "editType": "none", + "valType": "string" + }, + "bordercolor": { + "arrayOk": true, + "description": "Sets the border color of the hover labels for this trace.", + "editType": "none", + "valType": "color" + }, + "bordercolorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", + "editType": "none", + "valType": "string" + }, + "editType": "none", + "font": { + "color": { + "arrayOk": true, + "editType": "none", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "description": "Sets the font used in hover labels.", + "editType": "none", + "family": { + "arrayOk": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "none", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "familysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `family`.", + "editType": "none", + "valType": "string" + }, + "lineposition": { + "arrayOk": true, + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "none", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "linepositionsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", + "editType": "none", + "valType": "string" + }, + "role": "object", + "shadow": { + "arrayOk": true, + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "none", + "valType": "string" + }, + "shadowsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", + "editType": "none", + "valType": "string" + }, + "size": { + "arrayOk": true, + "editType": "none", + "min": 1, + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "style": { + "arrayOk": true, + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "none", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "stylesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `style`.", + "editType": "none", + "valType": "string" + }, + "textcase": { + "arrayOk": true, + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "none", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "textcasesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", + "editType": "none", + "valType": "string" + }, + "variant": { + "arrayOk": true, + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "none", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "variantsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `variant`.", + "editType": "none", + "valType": "string" + }, + "weight": { + "arrayOk": true, + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "none", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + }, + "weightsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `weight`.", + "editType": "none", + "valType": "string" + } + }, + "namelength": { + "arrayOk": true, + "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.", + "dflt": 15, + "editType": "none", + "min": -1, + "valType": "integer" + }, + "namelengthsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", + "editType": "none", + "valType": "string" + }, + "role": "object", + "showarrow": { + "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", + "dflt": true, + "editType": "none", + "valType": "boolean" + } + }, + "hovertemplate": { + "arrayOk": true, + "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``.", + "dflt": "", + "editType": "calc", + "valType": "string" + }, + "hovertemplatefallback": { + "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", + "dflt": "-", + "editType": "calc", + "valType": "any" + }, + "hovertemplatesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", + "editType": "none", + "valType": "string" + }, + "hovertext": { + "arrayOk": true, + "description": "Sets hover text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", + "dflt": "", + "editType": "calc", + "valType": "string" + }, + "hovertextsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", + "editType": "none", + "valType": "string" + }, + "ids": { + "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", + "editType": "calc", + "valType": "data_array" + }, + "idssrc": { + "description": "Sets the source reference on Chart Studio Cloud for `ids`.", + "editType": "none", + "valType": "string" + }, + "lat": { + "description": "Sets the latitude coordinates (in degrees North).", + "editType": "calc", + "valType": "data_array" + }, + "latsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `lat`.", + "editType": "none", + "valType": "string" + }, + "legend": { + "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", + "dflt": "legend", + "editType": "style", + "valType": "subplotid" + }, + "legendgroup": { + "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.", + "dflt": "", + "editType": "style", + "valType": "string" + }, + "legendgrouptitle": { + "editType": "style", + "font": { + "color": { + "editType": "style", + "valType": "color" + }, + "description": "Sets this legend group's title font.", + "editType": "style", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "style", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "style", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "style", + "valType": "string" + }, + "size": { + "editType": "style", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "style", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "style", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "style", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "style", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "role": "object", + "text": { + "description": "Sets the title of the legend group.", + "dflt": "", + "editType": "style", + "valType": "string" + } + }, + "legendrank": { + "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.", + "dflt": 1000, + "editType": "style", + "valType": "number" + }, + "legendwidth": { + "description": "Sets the width (in px or fraction) of the legend for this trace.", + "editType": "style", + "min": 0, + "valType": "number" + }, + "line": { + "color": { + "description": "Sets the line color.", + "editType": "calc", + "valType": "color" + }, + "editType": "calc", + "role": "object", + "width": { + "description": "Sets the line width (in px).", + "dflt": 2, + "editType": "calc", + "min": 0, + "valType": "number" + } + }, + "lon": { + "description": "Sets the longitude coordinates (in degrees East).", + "editType": "calc", + "valType": "data_array" + }, + "lonsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `lon`.", + "editType": "none", + "valType": "string" + }, + "marker": { + "allowoverlap": { + "description": "Flag to draw all symbols, even if they overlap.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "angle": { + "arrayOk": true, + "description": "Sets the marker orientation from true North, in degrees clockwise. When using the *auto* default, no rotation would be applied in perspective views which is different from using a zero angle.", + "dflt": "auto", + "editType": "calc", + "valType": "number" + }, + "anglesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `angle`.", + "editType": "none", + "valType": "string" + }, + "autocolorscale": { + "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "cauto": { + "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "cmax": { + "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "cmid": { + "description": "Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`.", + "dflt": null, + "editType": "calc", + "impliedEdits": {}, + "valType": "number" + }, + "cmin": { + "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "color": { + "arrayOk": true, + "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.", + "editType": "calc", + "valType": "color" + }, + "coloraxis": { + "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.", + "dflt": null, + "editType": "calc", + "regex": "/^coloraxis([2-9]|[1-9][0-9]+)?$/", + "valType": "subplotid" + }, + "colorbar": { + "bgcolor": { + "description": "Sets the color of padded area.", + "dflt": "rgba(0,0,0,0)", + "editType": "calc", + "valType": "color" + }, + "bordercolor": { + "description": "Sets the axis line color.", + "dflt": "#444", + "editType": "calc", + "valType": "color" + }, + "borderwidth": { + "description": "Sets the width (in px) or the border enclosing this color bar.", + "dflt": 0, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "dtick": { + "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*", + "editType": "calc", + "impliedEdits": { + "tickmode": "linear" + }, + "valType": "any" + }, + "editType": "calc", + "exponentformat": { + "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from \"femto\" f (10^-15) to \"tera\" T (10^12). *SI extended* covers instead the full SI range from \"quecto\" q (10^-30) to \"quetta\" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation.", + "dflt": "B", + "editType": "calc", + "valType": "enumerated", + "values": [ + "none", + "e", + "E", + "power", + "SI", + "B", + "SI extended" + ] + }, + "labelalias": { + "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax.", + "dflt": false, + "editType": "calc", + "valType": "any" + }, + "len": { + "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.", + "dflt": 1, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "lenmode": { + "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.", + "dflt": "fraction", + "editType": "calc", + "valType": "enumerated", + "values": [ + "fraction", + "pixels" + ] + }, + "minexponent": { + "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.", + "dflt": 3, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "nticks": { + "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.", + "dflt": 0, + "editType": "calc", + "min": 0, + "valType": "integer" + }, + "orientation": { + "description": "Sets the orientation of the colorbar.", + "dflt": "v", + "editType": "calc", + "valType": "enumerated", + "values": [ + "h", + "v" + ] + }, + "outlinecolor": { + "description": "Sets the axis line color.", + "dflt": "#444", + "editType": "calc", + "valType": "color" + }, + "outlinewidth": { + "description": "Sets the width (in px) of the axis line.", + "dflt": 1, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "role": "object", + "separatethousands": { + "description": "If \"true\", even 4-digit integers are separated", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "showexponent": { + "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.", + "dflt": "all", + "editType": "calc", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "showticklabels": { + "description": "Determines whether or not the tick labels are drawn.", + "dflt": true, + "editType": "calc", + "valType": "boolean" + }, + "showtickprefix": { + "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.", + "dflt": "all", + "editType": "calc", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "showticksuffix": { + "description": "Same as `showtickprefix` but for tick suffixes.", + "dflt": "all", + "editType": "calc", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "thickness": { + "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.", + "dflt": 30, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "thicknessmode": { + "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.", + "dflt": "pixels", + "editType": "calc", + "valType": "enumerated", + "values": [ + "fraction", + "pixels" + ] + }, + "tick0": { + "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears.", + "editType": "calc", + "impliedEdits": { + "tickmode": "linear" + }, + "valType": "any" + }, + "tickangle": { + "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.", + "dflt": "auto", + "editType": "calc", + "valType": "angle" + }, + "tickcolor": { + "description": "Sets the tick color.", + "dflt": "#444", + "editType": "calc", + "valType": "color" + }, + "tickfont": { + "color": { + "editType": "calc", + "valType": "color" + }, + "description": "Sets the color bar's tick label font", + "editType": "calc", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "calc", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "calc", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "calc", + "valType": "string" + }, + "size": { + "editType": "calc", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "calc", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "tickformat": { + "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*", + "dflt": "", + "editType": "calc", + "valType": "string" + }, + "tickformatstops": { + "items": { + "tickformatstop": { + "dtickrange": { + "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*", + "editType": "calc", + "items": [ + { + "editType": "calc", + "valType": "any" + }, + { + "editType": "calc", + "valType": "any" + } + ], + "valType": "info_array" + }, + "editType": "calc", + "enabled": { + "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.", + "dflt": true, + "editType": "calc", + "valType": "boolean" + }, + "name": { + "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.", + "editType": "calc", + "valType": "string" + }, + "role": "object", + "templateitemname": { + "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.", + "editType": "calc", + "valType": "string" + }, + "value": { + "description": "string - dtickformat for described zoom level, the same as *tickformat*", + "dflt": "", + "editType": "calc", + "valType": "string" + } + } + }, + "role": "object" + }, + "ticklabeloverflow": { + "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.", + "editType": "calc", + "valType": "enumerated", + "values": [ + "allow", + "hide past div", + "hide past domain" + ] + }, + "ticklabelposition": { + "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.", + "dflt": "outside", + "editType": "calc", + "valType": "enumerated", + "values": [ + "outside", + "inside", + "outside top", + "inside top", + "outside left", + "inside left", + "outside right", + "inside right", + "outside bottom", + "inside bottom" + ] + }, + "ticklabelstep": { + "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.", + "dflt": 1, + "editType": "calc", + "min": 1, + "valType": "integer" + }, + "ticklen": { + "description": "Sets the tick length (in px).", + "dflt": 5, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "tickmode": { + "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).", + "editType": "calc", + "impliedEdits": {}, + "valType": "enumerated", + "values": [ + "auto", + "linear", + "array" + ] + }, + "tickprefix": { + "description": "Sets a tick label prefix.", + "dflt": "", + "editType": "calc", + "valType": "string" + }, + "ticks": { + "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.", + "dflt": "", + "editType": "calc", + "valType": "enumerated", + "values": [ + "outside", + "inside", + "" + ] + }, + "ticksuffix": { + "description": "Sets a tick label suffix.", + "dflt": "", + "editType": "calc", + "valType": "string" + }, + "ticktext": { + "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", + "editType": "calc", + "valType": "data_array" + }, + "ticktextsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", + "editType": "none", + "valType": "string" + }, + "tickvals": { + "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", + "editType": "calc", + "valType": "data_array" + }, + "tickvalssrc": { + "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", + "editType": "none", + "valType": "string" + }, + "tickwidth": { + "description": "Sets the tick width (in px).", + "dflt": 1, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "title": { + "editType": "calc", + "font": { + "color": { + "editType": "calc", + "valType": "color" + }, + "description": "Sets this color bar's title font.", + "editType": "calc", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "calc", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "calc", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "calc", + "valType": "string" + }, + "size": { + "editType": "calc", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "calc", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "role": "object", + "side": { + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "editType": "calc", + "valType": "enumerated", + "values": [ + "right", + "top", + "bottom" + ] + }, + "text": { + "description": "Sets the title of the color bar.", + "editType": "calc", + "valType": "string" + } + }, + "x": { + "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.", + "editType": "calc", + "valType": "number" + }, + "xanchor": { + "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.", + "editType": "calc", + "valType": "enumerated", + "values": [ + "left", + "center", + "right" + ] + }, + "xpad": { + "description": "Sets the amount of padding (in px) along the x direction.", + "dflt": 10, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "xref": { + "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.", + "dflt": "paper", + "editType": "calc", + "valType": "enumerated", + "values": [ + "container", + "paper" + ] + }, + "y": { + "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.", + "editType": "calc", + "valType": "number" + }, + "yanchor": { + "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.", + "editType": "calc", + "valType": "enumerated", + "values": [ + "top", + "middle", + "bottom" + ] + }, + "ypad": { + "description": "Sets the amount of padding (in px) along the y direction.", + "dflt": 10, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "yref": { + "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.", + "dflt": "paper", + "editType": "calc", + "valType": "enumerated", + "values": [ + "container", + "paper" + ] + } + }, + "colorscale": { + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "autocolorscale": false + }, + "valType": "colorscale" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "editType": "calc", + "opacity": { + "arrayOk": true, + "description": "Sets the marker opacity.", + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + "opacitysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", + "editType": "none", + "valType": "string" + }, + "reversescale": { + "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "role": "object", + "showscale": { + "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "size": { + "arrayOk": true, + "description": "Sets the marker size (in px).", + "dflt": 6, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "sizemin": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points.", + "dflt": 0, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "sizemode": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels.", + "dflt": "diameter", + "editType": "calc", + "valType": "enumerated", + "values": [ + "diameter", + "area" ] }, + "sizeref": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`.", + "dflt": 1, + "editType": "calc", + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "symbol": { + "arrayOk": true, + "description": "Sets the marker symbol. Full list: https://www.mapbox.com/maki-icons/ Note that the array `marker.color` and `marker.size` are only available for *circle* symbols.", + "dflt": "circle", + "editType": "calc", + "valType": "string" + }, "symbolsrc": { "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", "editType": "none", @@ -19038,7 +21132,8 @@ "valType": "string" }, "mode": { - "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*.", + "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover.", + "dflt": "markers", "editType": "calc", "extras": [ "none" @@ -19063,34 +21158,18 @@ "min": 0, "valType": "number" }, - "r": { - "description": "Sets the radial coordinates", - "editType": "calc+clearAxisTypes", - "valType": "data_array" - }, - "r0": { - "description": "Alternate to `r`. Builds a linear space of r coordinates. Use with `dr` where `r0` is the starting coordinate and `dr` the step.", - "dflt": 0, - "editType": "calc+clearAxisTypes", - "valType": "any" - }, - "rsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `r`.", - "editType": "none", - "valType": "string" - }, "selected": { - "editType": "style", + "editType": "calc", "marker": { "color": { "description": "Sets the marker color of selected points.", - "editType": "style", + "editType": "calc", "valType": "color" }, - "editType": "style", + "editType": "calc", "opacity": { "description": "Sets the marker opacity of selected points.", - "editType": "style", + "editType": "calc", "max": 1, "min": 0, "valType": "number" @@ -19098,21 +21177,12 @@ "role": "object", "size": { "description": "Sets the marker size of selected points.", - "editType": "style", + "editType": "calc", "min": 0, "valType": "number" } }, - "role": "object", - "textfont": { - "color": { - "description": "Sets the text font color of selected points.", - "editType": "style", - "valType": "color" - }, - "editType": "style", - "role": "object" - } + "role": "object" }, "selectedpoints": { "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.", @@ -19145,90 +21215,40 @@ } }, "subplot": { - "description": "Sets a reference between this trace's data coordinates and a polar subplot. If *polar* (the default value), the data refer to `layout.polar`. If *polar2*, the data refer to `layout.polar2`, and so on.", - "dflt": "polar", + "description": "mapbox subplots and traces are deprecated! Please consider switching to `map` subplots and traces. Learn more at: https://plotly.com/python/maplibre-migration/ as well as https://plotly.com/javascript/maplibre-migration/ Sets a reference between this trace's data coordinates and a mapbox subplot. If *mapbox* (the default value), the data refer to `layout.mapbox`. If *mapbox2*, the data refer to `layout.mapbox2`, and so on.", + "dflt": "mapbox", "editType": "calc", "valType": "subplotid" }, "text": { "arrayOk": true, - "description": "Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", + "description": "Sets text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", "dflt": "", "editType": "calc", "valType": "string" }, "textfont": { "color": { - "arrayOk": true, - "editType": "style", + "editType": "calc", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "description": "Sets the text font.", + "description": "Sets the icon text font (color=mapbox.layer.paint.text-color, size=mapbox.layer.layout.text-size). Has an effect only when `type` is set to *symbol*.", "editType": "calc", "family": { - "arrayOk": true, "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "dflt": "Open Sans Regular, Arial Unicode MS Regular", "editType": "calc", "noBlank": true, "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, - "lineposition": { - "arrayOk": true, - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "calc", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", - "shadow": { - "arrayOk": true, - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "calc", - "valType": "string" - }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { - "arrayOk": true, "editType": "calc", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { - "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", "dflt": "normal", "editType": "calc", @@ -19238,51 +21258,7 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, - "textcase": { - "arrayOk": true, - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, - "variant": { - "arrayOk": true, - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { - "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", "dflt": "normal", "editType": "calc", @@ -19290,18 +21266,13 @@ "normal", "bold" ], - "max": 1000, - "min": 1, - "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" + "max": 1000, + "min": 1, + "valType": "integer" } }, "textposition": { - "arrayOk": true, + "arrayOk": false, "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.", "dflt": "middle center", "editType": "calc", @@ -19318,11 +21289,6 @@ "bottom right" ] }, - "textpositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", - "editType": "none", - "valType": "string" - }, "textsrc": { "description": "Sets the source reference on Chart Studio Cloud for `text`.", "editType": "none", @@ -19330,15 +21296,15 @@ }, "texttemplate": { "arrayOk": true, - "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `r`, `theta` and `text`.", + "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `lat`, `lon` and `text`.", "dflt": "", - "editType": "plot", + "editType": "calc", "valType": "string" }, "texttemplatefallback": { "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", "dflt": "-", - "editType": "plot", + "editType": "calc", "valType": "any" }, "texttemplatesrc": { @@ -19346,34 +21312,7 @@ "editType": "none", "valType": "string" }, - "theta": { - "description": "Sets the angular coordinates", - "editType": "calc+clearAxisTypes", - "valType": "data_array" - }, - "theta0": { - "description": "Alternate to `theta`. Builds a linear space of theta coordinates. Use with `dtheta` where `theta0` is the starting coordinate and `dtheta` the step.", - "dflt": 0, - "editType": "calc+clearAxisTypes", - "valType": "any" - }, - "thetasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `theta`.", - "editType": "none", - "valType": "string" - }, - "thetaunit": { - "description": "Sets the unit of input *theta* values. Has an effect only when on *linear* angular axes.", - "dflt": "degrees", - "editType": "calc+clearAxisTypes", - "valType": "enumerated", - "values": [ - "radians", - "degrees", - "gradians" - ] - }, - "type": "scatterpolar", + "type": "scattermapbox", "uid": { "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", "editType": "plot", @@ -19385,17 +21324,17 @@ "valType": "any" }, "unselected": { - "editType": "style", + "editType": "calc", "marker": { "color": { "description": "Sets the marker color of unselected points, applied only when a selection exists.", - "editType": "style", + "editType": "calc", "valType": "color" }, - "editType": "style", + "editType": "calc", "opacity": { "description": "Sets the marker opacity of unselected points, applied only when a selection exists.", - "editType": "style", + "editType": "calc", "max": 1, "min": 0, "valType": "number" @@ -19403,21 +21342,12 @@ "role": "object", "size": { "description": "Sets the marker size of unselected points, applied only when a selection exists.", - "editType": "style", + "editType": "calc", "min": 0, "valType": "number" } }, - "role": "object", - "textfont": { - "color": { - "description": "Sets the text font color of unselected points, applied only when a selection exists.", - "editType": "style", - "valType": "color" - }, - "editType": "style", - "role": "object" - } + "role": "object" }, "visible": { "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).", @@ -19432,20 +21362,27 @@ } }, "categories": [ - "polar", + "mapbox", + "gl", "symbols", "showLegend", "scatter-like" ], "meta": { - "description": "The scatterpolar trace type encompasses line charts, scatter charts, text charts, and bubble charts in polar coordinates. The data visualized as scatter point or lines is set in `r` (radial) and `theta` (angular) coordinates Text (appearing either on the chart or on hover only) is via `text`. Bubble charts are achieved by setting `marker.size` and/or `marker.color` to numerical arrays.", - "hrName": "scatter_polar" + "description": "*scattermapbox* trace is deprecated! Please consider switching to the *scattermap* trace type and `map` subplots. Learn more at: https://plotly.com/python/maplibre-migration/ as well as https://plotly.com/javascript/maplibre-migration/ The data visualized as scatter point, lines or marker symbols on a Mapbox GL geographic map is provided by longitude/latitude pairs in `lon` and `lat`.", + "hrName": "scatter_mapbox" }, - "type": "scatterpolar" + "type": "scattermapbox" }, - "scatterpolargl": { + "scatterpolar": { "animatable": false, "attributes": { + "cliponaxis": { + "description": "Determines whether or not markers and text nodes are clipped about the subplot axes. To show markers and text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*.", + "dflt": false, + "editType": "plot", + "valType": "boolean" + }, "connectgaps": { "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected.", "dflt": false, @@ -19474,23 +21411,19 @@ "valType": "number" }, "fill": { - "description": "Sets the area to fill with a solid color. Defaults to *none* unless this trace is stacked, then it gets *tonexty* (*tonextx*) if `orientation` is *v* (*h*) Use with `fillcolor` if not *none*. *tozerox* and *tozeroy* fill to x=0 and y=0 respectively. *tonextx* and *tonexty* fill between the endpoints of this trace and the endpoints of the trace before it, connecting those endpoints with straight lines (to make a stacked area graph); if there is no trace before it, they behave like *tozerox* and *tozeroy*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other. Traces in a `stackgroup` will only fill to (or be filled to) other traces in the same group. With multiple `stackgroup`s or some traces stacked and some not, if fill-linked traces are not already consecutive, the later ones will be pushed down in the drawing order.", + "description": "Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. scatterpolar has a subset of the options available to scatter. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other.", "dflt": "none", "editType": "calc", "valType": "enumerated", "values": [ "none", - "tozeroy", - "tozerox", - "tonexty", - "tonextx", "toself", "tonext" ] }, "fillcolor": { "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available.", - "editType": "calc", + "editType": "style", "valType": "color" }, "hoverinfo": { @@ -19721,6 +21654,15 @@ "valType": "boolean" } }, + "hoveron": { + "description": "Do the hover effects highlight individual points (markers or line points) or do they highlight filled regions? If the fill is *toself* or *tonext* and there are no markers or text, then the default is *fills*, otherwise it is *points*.", + "editType": "style", + "flags": [ + "points", + "fills" + ], + "valType": "flaglist" + }, "hovertemplate": { "arrayOk": true, "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``.", @@ -19885,31 +21827,62 @@ "valType": "number" }, "line": { + "backoff": { + "arrayOk": true, + "description": "Sets the line back off from the end point of the nth line segment (in px). This option is useful e.g. to avoid overlap with arrowhead markers. With *auto* the lines would trim before markers if `marker.angleref` is set to *previous*.", + "dflt": "auto", + "editType": "plot", + "min": 0, + "valType": "number" + }, + "backoffsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `backoff`.", + "editType": "none", + "valType": "string" + }, "color": { "description": "Sets the line color.", - "editType": "calc", + "editType": "style", "valType": "color" }, "dash": { - "description": "Sets the style of the lines.", + "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", "dflt": "solid", - "editType": "calc", - "valType": "enumerated", + "editType": "style", + "valType": "string", "values": [ - "dash", - "dashdot", + "solid", "dot", + "dash", "longdash", - "longdashdot", - "solid" + "dashdot", + "longdashdot" ] }, "editType": "calc", "role": "object", + "shape": { + "description": "Determines the line shape. With *spline* the lines are drawn using spline interpolation. The other available values correspond to step-wise line shapes.", + "dflt": "linear", + "editType": "plot", + "valType": "enumerated", + "values": [ + "linear", + "spline" + ] + }, + "smoothing": { + "description": "Has an effect only if `shape` is set to *spline* Sets the amount of smoothing. *0* corresponds to no smoothing (equivalent to a *linear* shape).", + "dflt": 1, + "editType": "plot", + "max": 1.3, + "min": 0, + "valType": "number" + }, "width": { "description": "Sets the line width (in px).", "dflt": 2, - "editType": "calc", + "editType": "style", "min": 0, "valType": "number" } @@ -19919,9 +21892,19 @@ "arrayOk": true, "description": "Sets the marker angle in respect to `angleref`.", "dflt": 0, - "editType": "calc", + "editType": "plot", "valType": "angle" }, + "angleref": { + "description": "Sets the reference for marker angle. With *previous*, angle 0 points along the line from the previous point to this one. With *up*, angle 0 points toward the top of the screen.", + "dflt": "up", + "editType": "plot", + "valType": "enumerated", + "values": [ + "previous", + "up" + ] + }, "anglesrc": { "description": "Sets the source reference on Chart Studio Cloud for `angle`.", "editType": "none", @@ -19944,7 +21927,7 @@ "cmax": { "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well.", "dflt": null, - "editType": "calc", + "editType": "plot", "impliedEdits": { "cauto": false }, @@ -19960,7 +21943,7 @@ "cmin": { "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well.", "dflt": null, - "editType": "calc", + "editType": "plot", "impliedEdits": { "cauto": false }, @@ -19969,7 +21952,7 @@ "color": { "arrayOk": true, "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.", - "editType": "calc", + "editType": "style", "valType": "color" }, "coloraxis": { @@ -19983,35 +21966,35 @@ "bgcolor": { "description": "Sets the color of padded area.", "dflt": "rgba(0,0,0,0)", - "editType": "calc", + "editType": "colorbars", "valType": "color" }, "bordercolor": { "description": "Sets the axis line color.", "dflt": "#444", - "editType": "calc", + "editType": "colorbars", "valType": "color" }, "borderwidth": { "description": "Sets the width (in px) or the border enclosing this color bar.", "dflt": 0, - "editType": "calc", + "editType": "colorbars", "min": 0, "valType": "number" }, "dtick": { "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*", - "editType": "calc", + "editType": "colorbars", "impliedEdits": { "tickmode": "linear" }, "valType": "any" }, - "editType": "calc", + "editType": "colorbars", "exponentformat": { "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from \"femto\" f (10^-15) to \"tera\" T (10^12). *SI extended* covers instead the full SI range from \"quecto\" q (10^-30) to \"quetta\" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation.", "dflt": "B", - "editType": "calc", + "editType": "colorbars", "valType": "enumerated", "values": [ "none", @@ -20026,20 +22009,20 @@ "labelalias": { "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax.", "dflt": false, - "editType": "calc", + "editType": "colorbars", "valType": "any" }, "len": { "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.", "dflt": 1, - "editType": "calc", + "editType": "colorbars", "min": 0, "valType": "number" }, "lenmode": { "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.", "dflt": "fraction", - "editType": "calc", + "editType": "colorbars", "valType": "enumerated", "values": [ "fraction", @@ -20049,21 +22032,21 @@ "minexponent": { "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.", "dflt": 3, - "editType": "calc", + "editType": "colorbars", "min": 0, "valType": "number" }, "nticks": { "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.", "dflt": 0, - "editType": "calc", + "editType": "colorbars", "min": 0, "valType": "integer" }, "orientation": { "description": "Sets the orientation of the colorbar.", "dflt": "v", - "editType": "calc", + "editType": "colorbars", "valType": "enumerated", "values": [ "h", @@ -20073,13 +22056,13 @@ "outlinecolor": { "description": "Sets the axis line color.", "dflt": "#444", - "editType": "calc", + "editType": "colorbars", "valType": "color" }, "outlinewidth": { "description": "Sets the width (in px) of the axis line.", "dflt": 1, - "editType": "calc", + "editType": "colorbars", "min": 0, "valType": "number" }, @@ -20087,13 +22070,13 @@ "separatethousands": { "description": "If \"true\", even 4-digit integers are separated", "dflt": false, - "editType": "calc", + "editType": "colorbars", "valType": "boolean" }, "showexponent": { "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.", "dflt": "all", - "editType": "calc", + "editType": "colorbars", "valType": "enumerated", "values": [ "all", @@ -20105,13 +22088,13 @@ "showticklabels": { "description": "Determines whether or not the tick labels are drawn.", "dflt": true, - "editType": "calc", + "editType": "colorbars", "valType": "boolean" }, "showtickprefix": { "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.", "dflt": "all", - "editType": "calc", + "editType": "colorbars", "valType": "enumerated", "values": [ "all", @@ -20123,7 +22106,7 @@ "showticksuffix": { "description": "Same as `showtickprefix` but for tick suffixes.", "dflt": "all", - "editType": "calc", + "editType": "colorbars", "valType": "enumerated", "values": [ "all", @@ -20135,14 +22118,14 @@ "thickness": { "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.", "dflt": 30, - "editType": "calc", + "editType": "colorbars", "min": 0, "valType": "number" }, "thicknessmode": { "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.", "dflt": "pixels", - "editType": "calc", + "editType": "colorbars", "valType": "enumerated", "values": [ "fraction", @@ -20151,7 +22134,7 @@ }, "tick0": { "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears.", - "editType": "calc", + "editType": "colorbars", "impliedEdits": { "tickmode": "linear" }, @@ -20160,25 +22143,25 @@ "tickangle": { "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.", "dflt": "auto", - "editType": "calc", + "editType": "colorbars", "valType": "angle" }, "tickcolor": { "description": "Sets the tick color.", "dflt": "#444", - "editType": "calc", + "editType": "colorbars", "valType": "color" }, "tickfont": { "color": { - "editType": "calc", + "editType": "colorbars", "valType": "color" }, "description": "Sets the color bar's tick label font", - "editType": "calc", + "editType": "colorbars", "family": { "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "calc", + "editType": "colorbars", "noBlank": true, "strict": true, "valType": "string" @@ -20186,7 +22169,7 @@ "lineposition": { "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", "dflt": "none", - "editType": "calc", + "editType": "colorbars", "extras": [ "none" ], @@ -20201,18 +22184,18 @@ "shadow": { "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", "dflt": "none", - "editType": "calc", + "editType": "colorbars", "valType": "string" }, "size": { - "editType": "calc", + "editType": "colorbars", "min": 1, "valType": "number" }, "style": { "description": "Sets whether a font should be styled with a normal or italic face from its family.", "dflt": "normal", - "editType": "calc", + "editType": "colorbars", "valType": "enumerated", "values": [ "normal", @@ -20222,7 +22205,7 @@ "textcase": { "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", "dflt": "normal", - "editType": "calc", + "editType": "colorbars", "valType": "enumerated", "values": [ "normal", @@ -20234,7 +22217,7 @@ "variant": { "description": "Sets the variant of the font.", "dflt": "normal", - "editType": "calc", + "editType": "colorbars", "valType": "enumerated", "values": [ "normal", @@ -20248,7 +22231,7 @@ "weight": { "description": "Sets the weight (or boldness) of the font.", "dflt": "normal", - "editType": "calc", + "editType": "colorbars", "extras": [ "normal", "bold" @@ -20261,7 +22244,7 @@ "tickformat": { "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*", "dflt": "", - "editType": "calc", + "editType": "colorbars", "valType": "string" }, "tickformatstops": { @@ -20269,41 +22252,41 @@ "tickformatstop": { "dtickrange": { "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*", - "editType": "calc", + "editType": "colorbars", "items": [ { - "editType": "calc", + "editType": "colorbars", "valType": "any" }, { - "editType": "calc", + "editType": "colorbars", "valType": "any" } ], "valType": "info_array" }, - "editType": "calc", + "editType": "colorbars", "enabled": { "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.", "dflt": true, - "editType": "calc", + "editType": "colorbars", "valType": "boolean" }, "name": { "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.", - "editType": "calc", + "editType": "colorbars", "valType": "string" }, "role": "object", "templateitemname": { "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.", - "editType": "calc", + "editType": "colorbars", "valType": "string" }, "value": { "description": "string - dtickformat for described zoom level, the same as *tickformat*", "dflt": "", - "editType": "calc", + "editType": "colorbars", "valType": "string" } } @@ -20312,7 +22295,7 @@ }, "ticklabeloverflow": { "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.", - "editType": "calc", + "editType": "colorbars", "valType": "enumerated", "values": [ "allow", @@ -20323,7 +22306,7 @@ "ticklabelposition": { "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.", "dflt": "outside", - "editType": "calc", + "editType": "colorbars", "valType": "enumerated", "values": [ "outside", @@ -20341,20 +22324,20 @@ "ticklabelstep": { "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.", "dflt": 1, - "editType": "calc", + "editType": "colorbars", "min": 1, "valType": "integer" }, "ticklen": { "description": "Sets the tick length (in px).", "dflt": 5, - "editType": "calc", + "editType": "colorbars", "min": 0, "valType": "number" }, "tickmode": { "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).", - "editType": "calc", + "editType": "colorbars", "impliedEdits": {}, "valType": "enumerated", "values": [ @@ -20366,13 +22349,13 @@ "tickprefix": { "description": "Sets a tick label prefix.", "dflt": "", - "editType": "calc", + "editType": "colorbars", "valType": "string" }, "ticks": { "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.", "dflt": "", - "editType": "calc", + "editType": "colorbars", "valType": "enumerated", "values": [ "outside", @@ -20383,12 +22366,12 @@ "ticksuffix": { "description": "Sets a tick label suffix.", "dflt": "", - "editType": "calc", + "editType": "colorbars", "valType": "string" }, "ticktext": { "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", - "editType": "calc", + "editType": "colorbars", "valType": "data_array" }, "ticktextsrc": { @@ -20398,7 +22381,7 @@ }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", - "editType": "calc", + "editType": "colorbars", "valType": "data_array" }, "tickvalssrc": { @@ -20409,22 +22392,22 @@ "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, - "editType": "calc", + "editType": "colorbars", "min": 0, "valType": "number" }, "title": { - "editType": "calc", + "editType": "colorbars", "font": { "color": { - "editType": "calc", + "editType": "colorbars", "valType": "color" }, "description": "Sets this color bar's title font.", - "editType": "calc", + "editType": "colorbars", "family": { "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "calc", + "editType": "colorbars", "noBlank": true, "strict": true, "valType": "string" @@ -20432,7 +22415,7 @@ "lineposition": { "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", "dflt": "none", - "editType": "calc", + "editType": "colorbars", "extras": [ "none" ], @@ -20447,18 +22430,18 @@ "shadow": { "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", "dflt": "none", - "editType": "calc", + "editType": "colorbars", "valType": "string" }, "size": { - "editType": "calc", + "editType": "colorbars", "min": 1, "valType": "number" }, "style": { "description": "Sets whether a font should be styled with a normal or italic face from its family.", "dflt": "normal", - "editType": "calc", + "editType": "colorbars", "valType": "enumerated", "values": [ "normal", @@ -20468,7 +22451,7 @@ "textcase": { "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", "dflt": "normal", - "editType": "calc", + "editType": "colorbars", "valType": "enumerated", "values": [ "normal", @@ -20480,7 +22463,7 @@ "variant": { "description": "Sets the variant of the font.", "dflt": "normal", - "editType": "calc", + "editType": "colorbars", "valType": "enumerated", "values": [ "normal", @@ -20494,7 +22477,7 @@ "weight": { "description": "Sets the weight (or boldness) of the font.", "dflt": "normal", - "editType": "calc", + "editType": "colorbars", "extras": [ "normal", "bold" @@ -20507,7 +22490,7 @@ "role": "object", "side": { "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", - "editType": "calc", + "editType": "colorbars", "valType": "enumerated", "values": [ "right", @@ -20517,18 +22500,18 @@ }, "text": { "description": "Sets the title of the color bar.", - "editType": "calc", + "editType": "colorbars", "valType": "string" } }, "x": { "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.", - "editType": "calc", + "editType": "colorbars", "valType": "number" }, "xanchor": { "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.", - "editType": "calc", + "editType": "colorbars", "valType": "enumerated", "values": [ "left", @@ -20539,14 +22522,14 @@ "xpad": { "description": "Sets the amount of padding (in px) along the x direction.", "dflt": 10, - "editType": "calc", + "editType": "colorbars", "min": 0, "valType": "number" }, "xref": { "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.", "dflt": "paper", - "editType": "calc", + "editType": "colorbars", "valType": "enumerated", "values": [ "container", @@ -20555,12 +22538,12 @@ }, "y": { "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.", - "editType": "calc", + "editType": "colorbars", "valType": "number" }, "yanchor": { "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.", - "editType": "calc", + "editType": "colorbars", "valType": "enumerated", "values": [ "top", @@ -20571,14 +22554,14 @@ "ypad": { "description": "Sets the amount of padding (in px) along the y direction.", "dflt": 10, - "editType": "calc", + "editType": "colorbars", "min": 0, "valType": "number" }, "yref": { "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.", "dflt": "paper", - "editType": "calc", + "editType": "colorbars", "valType": "enumerated", "values": [ "container", @@ -20601,6 +22584,39 @@ "valType": "string" }, "editType": "calc", + "gradient": { + "color": { + "arrayOk": true, + "description": "Sets the final color of the gradient fill: the center color for radial, the right for horizontal, or the bottom for vertical.", + "editType": "calc", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "editType": "calc", + "role": "object", + "type": { + "arrayOk": true, + "description": "Sets the type of gradient used to fill the markers", + "dflt": "none", + "editType": "calc", + "valType": "enumerated", + "values": [ + "radial", + "horizontal", + "vertical", + "none" + ] + }, + "typesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `type`.", + "editType": "none", + "valType": "string" + } + }, "line": { "autocolorscale": { "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. Has an effect only if in `marker.line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", @@ -20619,7 +22635,7 @@ "cmax": { "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmin` must be set as well.", "dflt": null, - "editType": "calc", + "editType": "plot", "impliedEdits": { "cauto": false }, @@ -20635,7 +22651,7 @@ "cmin": { "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmax` must be set as well.", "dflt": null, - "editType": "calc", + "editType": "plot", "impliedEdits": { "cauto": false }, @@ -20644,7 +22660,7 @@ "color": { "arrayOk": true, "description": "Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set.", - "editType": "calc", + "editType": "style", "valType": "color" }, "coloraxis": { @@ -20672,14 +22688,14 @@ "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.", "dflt": false, - "editType": "calc", + "editType": "plot", "valType": "boolean" }, "role": "object", "width": { "arrayOk": true, "description": "Sets the width (in px) of the lines bounding the marker points.", - "editType": "calc", + "editType": "style", "min": 0, "valType": "number" }, @@ -20689,10 +22705,17 @@ "valType": "string" } }, + "maxdisplayed": { + "description": "Sets a maximum number of points to be drawn on the graph. *0* corresponds to no limit.", + "dflt": 0, + "editType": "plot", + "min": 0, + "valType": "number" + }, "opacity": { "arrayOk": true, "description": "Sets the marker opacity.", - "editType": "calc", + "editType": "style", "max": 1, "min": 0, "valType": "number" @@ -20705,7 +22728,7 @@ "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", "dflt": false, - "editType": "calc", + "editType": "plot", "valType": "boolean" }, "role": "object", @@ -20751,11 +22774,24 @@ "editType": "none", "valType": "string" }, + "standoff": { + "arrayOk": true, + "description": "Moves the marker away from the data point in the direction of `angle` (in px). This can be useful for example if you have another marker at this location and you want to point an arrowhead marker at it.", + "dflt": 0, + "editType": "plot", + "min": 0, + "valType": "number" + }, + "standoffsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `standoff`.", + "editType": "none", + "valType": "string" + }, "symbol": { "arrayOk": true, "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.", "dflt": "circle", - "editType": "calc", + "editType": "style", "valType": "enumerated", "values": [ 0, @@ -21246,844 +23282,2236 @@ "arrow-wide-open" ] }, - "symbolsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", + "symbolsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", + "editType": "none", + "valType": "string" + } + }, + "meta": { + "arrayOk": true, + "description": "Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index.", + "editType": "plot", + "valType": "any" + }, + "metasrc": { + "description": "Sets the source reference on Chart Studio Cloud for `meta`.", + "editType": "none", + "valType": "string" + }, + "mode": { + "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*.", + "editType": "calc", + "extras": [ + "none" + ], + "flags": [ + "lines", + "markers", + "text" + ], + "valType": "flaglist" + }, + "name": { + "description": "Sets the trace name. The trace name appears as the legend item and on hover.", + "editType": "style", + "valType": "string" + }, + "opacity": { + "description": "Sets the opacity of the trace.", + "dflt": 1, + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "r": { + "description": "Sets the radial coordinates", + "editType": "calc+clearAxisTypes", + "valType": "data_array" + }, + "r0": { + "description": "Alternate to `r`. Builds a linear space of r coordinates. Use with `dr` where `r0` is the starting coordinate and `dr` the step.", + "dflt": 0, + "editType": "calc+clearAxisTypes", + "valType": "any" + }, + "rsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `r`.", + "editType": "none", + "valType": "string" + }, + "selected": { + "editType": "style", + "marker": { + "color": { + "description": "Sets the marker color of selected points.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "opacity": { + "description": "Sets the marker opacity of selected points.", + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "role": "object", + "size": { + "description": "Sets the marker size of selected points.", + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "role": "object", + "textfont": { + "color": { + "description": "Sets the text font color of selected points.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "role": "object" + } + }, + "selectedpoints": { + "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.", + "editType": "calc", + "valType": "any" + }, + "showlegend": { + "description": "Determines whether or not an item corresponding to this trace is shown in the legend.", + "dflt": true, + "editType": "style", + "valType": "boolean" + }, + "stream": { + "editType": "calc", + "maxpoints": { + "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", + "dflt": 500, + "editType": "calc", + "max": 10000, + "min": 0, + "valType": "number" + }, + "role": "object", + "token": { + "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", + "editType": "calc", + "noBlank": true, + "strict": true, + "valType": "string" + } + }, + "subplot": { + "description": "Sets a reference between this trace's data coordinates and a polar subplot. If *polar* (the default value), the data refer to `layout.polar`. If *polar2*, the data refer to `layout.polar2`, and so on.", + "dflt": "polar", + "editType": "calc", + "valType": "subplotid" + }, + "text": { + "arrayOk": true, + "description": "Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", + "dflt": "", + "editType": "calc", + "valType": "string" + }, + "textfont": { + "color": { + "arrayOk": true, + "editType": "style", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "description": "Sets the text font.", + "editType": "calc", + "family": { + "arrayOk": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "calc", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "familysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `family`.", + "editType": "none", + "valType": "string" + }, + "lineposition": { + "arrayOk": true, + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "calc", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "linepositionsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", + "editType": "none", + "valType": "string" + }, + "role": "object", + "shadow": { + "arrayOk": true, + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "calc", + "valType": "string" + }, + "shadowsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", + "editType": "none", + "valType": "string" + }, + "size": { + "arrayOk": true, + "editType": "calc", + "min": 1, + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "style": { + "arrayOk": true, + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "stylesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `style`.", + "editType": "none", + "valType": "string" + }, + "textcase": { + "arrayOk": true, + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "textcasesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", + "editType": "none", + "valType": "string" + }, + "variant": { + "arrayOk": true, + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "variantsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `variant`.", + "editType": "none", + "valType": "string" + }, + "weight": { + "arrayOk": true, + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "calc", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + }, + "weightsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `weight`.", + "editType": "none", + "valType": "string" + } + }, + "textposition": { + "arrayOk": true, + "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.", + "dflt": "middle center", + "editType": "calc", + "valType": "enumerated", + "values": [ + "top left", + "top center", + "top right", + "middle left", + "middle center", + "middle right", + "bottom left", + "bottom center", + "bottom right" + ] + }, + "textpositionsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", + "editType": "none", + "valType": "string" + }, + "textsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `text`.", + "editType": "none", + "valType": "string" + }, + "texttemplate": { + "arrayOk": true, + "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `r`, `theta` and `text`.", + "dflt": "", + "editType": "plot", + "valType": "string" + }, + "texttemplatefallback": { + "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", + "dflt": "-", + "editType": "plot", + "valType": "any" + }, + "texttemplatesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", + "editType": "none", + "valType": "string" + }, + "theta": { + "description": "Sets the angular coordinates", + "editType": "calc+clearAxisTypes", + "valType": "data_array" + }, + "theta0": { + "description": "Alternate to `theta`. Builds a linear space of theta coordinates. Use with `dtheta` where `theta0` is the starting coordinate and `dtheta` the step.", + "dflt": 0, + "editType": "calc+clearAxisTypes", + "valType": "any" + }, + "thetasrc": { + "description": "Sets the source reference on Chart Studio Cloud for `theta`.", + "editType": "none", + "valType": "string" + }, + "thetaunit": { + "description": "Sets the unit of input *theta* values. Has an effect only when on *linear* angular axes.", + "dflt": "degrees", + "editType": "calc+clearAxisTypes", + "valType": "enumerated", + "values": [ + "radians", + "degrees", + "gradians" + ] + }, + "type": "scatterpolar", + "uid": { + "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", + "editType": "plot", + "valType": "string" + }, + "uirevision": { + "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves.", + "editType": "none", + "valType": "any" + }, + "unselected": { + "editType": "style", + "marker": { + "color": { + "description": "Sets the marker color of unselected points, applied only when a selection exists.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "opacity": { + "description": "Sets the marker opacity of unselected points, applied only when a selection exists.", + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "role": "object", + "size": { + "description": "Sets the marker size of unselected points, applied only when a selection exists.", + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "role": "object", + "textfont": { + "color": { + "description": "Sets the text font color of unselected points, applied only when a selection exists.", + "editType": "style", + "valType": "color" + }, + "editType": "style", + "role": "object" + } + }, + "visible": { + "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).", + "dflt": true, + "editType": "calc", + "valType": "enumerated", + "values": [ + true, + false, + "legendonly" + ] + } + }, + "categories": [ + "polar", + "symbols", + "showLegend", + "scatter-like" + ], + "meta": { + "description": "The scatterpolar trace type encompasses line charts, scatter charts, text charts, and bubble charts in polar coordinates. The data visualized as scatter point or lines is set in `r` (radial) and `theta` (angular) coordinates Text (appearing either on the chart or on hover only) is via `text`. Bubble charts are achieved by setting `marker.size` and/or `marker.color` to numerical arrays.", + "hrName": "scatter_polar" + }, + "type": "scatterpolar" + }, + "scatterpolargl": { + "animatable": false, + "attributes": { + "connectgaps": { + "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "customdata": { + "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements", + "editType": "calc", + "valType": "data_array" + }, + "customdatasrc": { + "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", + "editType": "none", + "valType": "string" + }, + "dr": { + "description": "Sets the r coordinate step.", + "dflt": 1, + "editType": "calc", + "valType": "number" + }, + "dtheta": { + "description": "Sets the theta coordinate step. By default, the `dtheta` step equals the subplot's period divided by the length of the `r` coordinates.", + "editType": "calc", + "valType": "number" + }, + "fill": { + "description": "Sets the area to fill with a solid color. Defaults to *none* unless this trace is stacked, then it gets *tonexty* (*tonextx*) if `orientation` is *v* (*h*) Use with `fillcolor` if not *none*. *tozerox* and *tozeroy* fill to x=0 and y=0 respectively. *tonextx* and *tonexty* fill between the endpoints of this trace and the endpoints of the trace before it, connecting those endpoints with straight lines (to make a stacked area graph); if there is no trace before it, they behave like *tozerox* and *tozeroy*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other. Traces in a `stackgroup` will only fill to (or be filled to) other traces in the same group. With multiple `stackgroup`s or some traces stacked and some not, if fill-linked traces are not already consecutive, the later ones will be pushed down in the drawing order.", + "dflt": "none", + "editType": "calc", + "valType": "enumerated", + "values": [ + "none", + "tozeroy", + "tozerox", + "tonexty", + "tonextx", + "toself", + "tonext" + ] + }, + "fillcolor": { + "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available.", + "editType": "calc", + "valType": "color" + }, + "hoverinfo": { + "arrayOk": true, + "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.", + "dflt": "all", + "editType": "none", + "extras": [ + "all", + "none", + "skip" + ], + "flags": [ + "r", + "theta", + "text", + "name" + ], + "valType": "flaglist" + }, + "hoverinfosrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", + "editType": "none", + "valType": "string" + }, + "hoverlabel": { + "align": { + "arrayOk": true, + "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines", + "dflt": "auto", + "editType": "none", + "valType": "enumerated", + "values": [ + "left", + "right", + "auto" + ] + }, + "alignsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `align`.", + "editType": "none", + "valType": "string" + }, + "bgcolor": { + "arrayOk": true, + "description": "Sets the background color of the hover labels for this trace", + "editType": "none", + "valType": "color" + }, + "bgcolorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", + "editType": "none", + "valType": "string" + }, + "bordercolor": { + "arrayOk": true, + "description": "Sets the border color of the hover labels for this trace.", + "editType": "none", + "valType": "color" + }, + "bordercolorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", + "editType": "none", + "valType": "string" + }, + "editType": "none", + "font": { + "color": { + "arrayOk": true, + "editType": "none", + "valType": "color" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "description": "Sets the font used in hover labels.", + "editType": "none", + "family": { + "arrayOk": true, + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "none", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "familysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `family`.", + "editType": "none", + "valType": "string" + }, + "lineposition": { + "arrayOk": true, + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "none", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "linepositionsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", + "editType": "none", + "valType": "string" + }, + "role": "object", + "shadow": { + "arrayOk": true, + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "none", + "valType": "string" + }, + "shadowsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", + "editType": "none", + "valType": "string" + }, + "size": { + "arrayOk": true, + "editType": "none", + "min": 1, + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "style": { + "arrayOk": true, + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "none", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "stylesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `style`.", + "editType": "none", + "valType": "string" + }, + "textcase": { + "arrayOk": true, + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "none", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "textcasesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", + "editType": "none", + "valType": "string" + }, + "variant": { + "arrayOk": true, + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "none", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "variantsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `variant`.", + "editType": "none", + "valType": "string" + }, + "weight": { + "arrayOk": true, + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "none", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + }, + "weightsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `weight`.", + "editType": "none", + "valType": "string" + } + }, + "namelength": { + "arrayOk": true, + "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.", + "dflt": 15, + "editType": "none", + "min": -1, + "valType": "integer" + }, + "namelengthsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", "editType": "none", "valType": "string" + }, + "role": "object", + "showarrow": { + "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", + "dflt": true, + "editType": "none", + "valType": "boolean" } }, - "meta": { + "hovertemplate": { "arrayOk": true, - "description": "Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index.", - "editType": "plot", + "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``.", + "dflt": "", + "editType": "none", + "valType": "string" + }, + "hovertemplatefallback": { + "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", + "dflt": "-", + "editType": "none", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", + "hovertemplatesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", "editType": "none", "valType": "string" }, - "mode": { - "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*.", + "hovertext": { + "arrayOk": true, + "description": "Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", + "dflt": "", + "editType": "style", + "valType": "string" + }, + "hovertextsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", + "editType": "none", + "valType": "string" + }, + "ids": { + "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", - "extras": [ - "none" - ], - "flags": [ - "lines", - "markers", - "text" - ], - "valType": "flaglist" + "valType": "data_array" }, - "name": { - "description": "Sets the trace name. The trace name appears as the legend item and on hover.", + "idssrc": { + "description": "Sets the source reference on Chart Studio Cloud for `ids`.", + "editType": "none", + "valType": "string" + }, + "legend": { + "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", + "dflt": "legend", + "editType": "style", + "valType": "subplotid" + }, + "legendgroup": { + "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.", + "dflt": "", "editType": "style", "valType": "string" }, - "opacity": { - "description": "Sets the opacity of the trace.", - "dflt": 1, + "legendgrouptitle": { "editType": "style", - "max": 1, - "min": 0, - "valType": "number" + "font": { + "color": { + "editType": "style", + "valType": "color" + }, + "description": "Sets this legend group's title font.", + "editType": "style", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "style", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "style", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "style", + "valType": "string" + }, + "size": { + "editType": "style", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "style", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "style", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "style", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "style", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "role": "object", + "text": { + "description": "Sets the title of the legend group.", + "dflt": "", + "editType": "style", + "valType": "string" + } }, - "r": { - "description": "Sets the radial coordinates", - "editType": "calc+clearAxisTypes", - "valType": "data_array" + "legendrank": { + "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.", + "dflt": 1000, + "editType": "style", + "valType": "number" }, - "r0": { - "description": "Alternate to `r`. Builds a linear space of r coordinates. Use with `dr` where `r0` is the starting coordinate and `dr` the step.", - "dflt": 0, - "editType": "calc+clearAxisTypes", - "valType": "any" + "legendwidth": { + "description": "Sets the width (in px or fraction) of the legend for this trace.", + "editType": "style", + "min": 0, + "valType": "number" }, - "rsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `r`.", - "editType": "none", - "valType": "string" + "line": { + "color": { + "description": "Sets the line color.", + "editType": "calc", + "valType": "color" + }, + "dash": { + "description": "Sets the style of the lines.", + "dflt": "solid", + "editType": "calc", + "valType": "enumerated", + "values": [ + "dash", + "dashdot", + "dot", + "longdash", + "longdashdot", + "solid" + ] + }, + "editType": "calc", + "role": "object", + "width": { + "description": "Sets the line width (in px).", + "dflt": 2, + "editType": "calc", + "min": 0, + "valType": "number" + } }, - "selected": { - "editType": "style", - "marker": { - "color": { - "description": "Sets the marker color of selected points.", - "editType": "style", + "marker": { + "angle": { + "arrayOk": true, + "description": "Sets the marker angle in respect to `angleref`.", + "dflt": 0, + "editType": "calc", + "valType": "angle" + }, + "anglesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `angle`.", + "editType": "none", + "valType": "string" + }, + "autocolorscale": { + "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "cauto": { + "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "cmax": { + "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "cmid": { + "description": "Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`.", + "dflt": null, + "editType": "calc", + "impliedEdits": {}, + "valType": "number" + }, + "cmin": { + "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "color": { + "arrayOk": true, + "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.", + "editType": "calc", + "valType": "color" + }, + "coloraxis": { + "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.", + "dflt": null, + "editType": "calc", + "regex": "/^coloraxis([2-9]|[1-9][0-9]+)?$/", + "valType": "subplotid" + }, + "colorbar": { + "bgcolor": { + "description": "Sets the color of padded area.", + "dflt": "rgba(0,0,0,0)", + "editType": "calc", "valType": "color" }, - "editType": "style", - "opacity": { - "description": "Sets the marker opacity of selected points.", - "editType": "style", - "max": 1, + "bordercolor": { + "description": "Sets the axis line color.", + "dflt": "#444", + "editType": "calc", + "valType": "color" + }, + "borderwidth": { + "description": "Sets the width (in px) or the border enclosing this color bar.", + "dflt": 0, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "dtick": { + "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*", + "editType": "calc", + "impliedEdits": { + "tickmode": "linear" + }, + "valType": "any" + }, + "editType": "calc", + "exponentformat": { + "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from \"femto\" f (10^-15) to \"tera\" T (10^12). *SI extended* covers instead the full SI range from \"quecto\" q (10^-30) to \"quetta\" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation.", + "dflt": "B", + "editType": "calc", + "valType": "enumerated", + "values": [ + "none", + "e", + "E", + "power", + "SI", + "B", + "SI extended" + ] + }, + "labelalias": { + "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax.", + "dflt": false, + "editType": "calc", + "valType": "any" + }, + "len": { + "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.", + "dflt": 1, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "lenmode": { + "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.", + "dflt": "fraction", + "editType": "calc", + "valType": "enumerated", + "values": [ + "fraction", + "pixels" + ] + }, + "minexponent": { + "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.", + "dflt": 3, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "nticks": { + "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.", + "dflt": 0, + "editType": "calc", + "min": 0, + "valType": "integer" + }, + "orientation": { + "description": "Sets the orientation of the colorbar.", + "dflt": "v", + "editType": "calc", + "valType": "enumerated", + "values": [ + "h", + "v" + ] + }, + "outlinecolor": { + "description": "Sets the axis line color.", + "dflt": "#444", + "editType": "calc", + "valType": "color" + }, + "outlinewidth": { + "description": "Sets the width (in px) of the axis line.", + "dflt": 1, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "role": "object", + "separatethousands": { + "description": "If \"true\", even 4-digit integers are separated", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "showexponent": { + "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.", + "dflt": "all", + "editType": "calc", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "showticklabels": { + "description": "Determines whether or not the tick labels are drawn.", + "dflt": true, + "editType": "calc", + "valType": "boolean" + }, + "showtickprefix": { + "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.", + "dflt": "all", + "editType": "calc", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "showticksuffix": { + "description": "Same as `showtickprefix` but for tick suffixes.", + "dflt": "all", + "editType": "calc", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "thickness": { + "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.", + "dflt": 30, + "editType": "calc", "min": 0, "valType": "number" }, - "role": "object", - "size": { - "description": "Sets the marker size of selected points.", - "editType": "style", - "min": 0, - "valType": "number" - } - }, - "role": "object", - "textfont": { - "color": { - "description": "Sets the text font color of selected points.", - "editType": "style", - "valType": "color" + "thicknessmode": { + "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.", + "dflt": "pixels", + "editType": "calc", + "valType": "enumerated", + "values": [ + "fraction", + "pixels" + ] + }, + "tick0": { + "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears.", + "editType": "calc", + "impliedEdits": { + "tickmode": "linear" + }, + "valType": "any" }, - "editType": "style", - "role": "object" - } - }, - "selectedpoints": { - "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.", - "editType": "calc", - "valType": "any" - }, - "showlegend": { - "description": "Determines whether or not an item corresponding to this trace is shown in the legend.", - "dflt": true, - "editType": "style", - "valType": "boolean" - }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, - "subplot": { - "description": "Sets a reference between this trace's data coordinates and a polar subplot. If *polar* (the default value), the data refer to `layout.polar`. If *polar2*, the data refer to `layout.polar2`, and so on.", - "dflt": "polar", - "editType": "calc", - "valType": "subplotid" - }, - "text": { - "arrayOk": true, - "description": "Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", - "dflt": "", - "editType": "calc", - "valType": "string" - }, - "textfont": { - "color": { - "arrayOk": true, - "editType": "calc", - "valType": "color" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "description": "Sets the text font.", - "editType": "calc", - "family": { - "arrayOk": true, - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, - "role": "object", - "size": { - "arrayOk": true, - "editType": "calc", - "min": 1, - "valType": "number" - }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, - "style": { - "arrayOk": true, - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, - "variant": { - "arrayOk": true, - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "small-caps" - ] - }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, - "weight": { - "arrayOk": true, - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "bold" - ] - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" - } - }, - "textposition": { - "arrayOk": true, - "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.", - "dflt": "middle center", - "editType": "calc", - "valType": "enumerated", - "values": [ - "top left", - "top center", - "top right", - "middle left", - "middle center", - "middle right", - "bottom left", - "bottom center", - "bottom right" - ] - }, - "textpositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", - "editType": "none", - "valType": "string" - }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, - "texttemplate": { - "arrayOk": true, - "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `r`, `theta` and `text`.", - "dflt": "", - "editType": "plot", - "valType": "string" - }, - "texttemplatefallback": { - "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", - "dflt": "-", - "editType": "plot", - "valType": "any" - }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, - "theta": { - "description": "Sets the angular coordinates", - "editType": "calc+clearAxisTypes", - "valType": "data_array" - }, - "theta0": { - "description": "Alternate to `theta`. Builds a linear space of theta coordinates. Use with `dtheta` where `theta0` is the starting coordinate and `dtheta` the step.", - "dflt": 0, - "editType": "calc+clearAxisTypes", - "valType": "any" - }, - "thetasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `theta`.", - "editType": "none", - "valType": "string" - }, - "thetaunit": { - "description": "Sets the unit of input *theta* values. Has an effect only when on *linear* angular axes.", - "dflt": "degrees", - "editType": "calc+clearAxisTypes", - "valType": "enumerated", - "values": [ - "radians", - "degrees", - "gradians" - ] - }, - "type": "scatterpolargl", - "uid": { - "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", - "editType": "plot", - "valType": "string" - }, - "uirevision": { - "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves.", - "editType": "none", - "valType": "any" - }, - "unselected": { - "editType": "style", - "marker": { - "color": { - "description": "Sets the marker color of unselected points, applied only when a selection exists.", - "editType": "style", + "tickangle": { + "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.", + "dflt": "auto", + "editType": "calc", + "valType": "angle" + }, + "tickcolor": { + "description": "Sets the tick color.", + "dflt": "#444", + "editType": "calc", "valType": "color" }, - "editType": "style", - "opacity": { - "description": "Sets the marker opacity of unselected points, applied only when a selection exists.", - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" + "tickfont": { + "color": { + "editType": "calc", + "valType": "color" + }, + "description": "Sets the color bar's tick label font", + "editType": "calc", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "calc", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "calc", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "calc", + "valType": "string" + }, + "size": { + "editType": "calc", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "calc", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } }, - "role": "object", - "size": { - "description": "Sets the marker size of unselected points, applied only when a selection exists.", - "editType": "style", - "min": 0, - "valType": "number" - } - }, - "role": "object", - "textfont": { - "color": { - "description": "Sets the text font color of unselected points, applied only when a selection exists.", - "editType": "style", - "valType": "color" + "tickformat": { + "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*", + "dflt": "", + "editType": "calc", + "valType": "string" }, - "editType": "style", - "role": "object" - } - }, - "visible": { - "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).", - "dflt": true, - "editType": "calc", - "valType": "enumerated", - "values": [ - true, - false, - "legendonly" - ] - } - }, - "categories": [ - "gl", - "regl", - "polar", - "symbols", - "showLegend", - "scatter-like" - ], - "meta": { - "description": "The scatterpolargl trace type encompasses line charts, scatter charts, and bubble charts in polar coordinates using the WebGL plotting engine. The data visualized as scatter point or lines is set in `r` (radial) and `theta` (angular) coordinates Bubble charts are achieved by setting `marker.size` and/or `marker.color` to numerical arrays.", - "hrName": "scatter_polar_gl" - }, - "type": "scatterpolargl" - }, - "quiver": { - "animatable": true, - "attributes": { - "angle": { - "description": "Angle of arrowhead in radians. Default = π/9", - "dflt": 0.3490658503988659, - "editType": "calc", - "max": 1.5707963267948966, - "min": 0, - "valType": "number" - }, - "arrow_scale": { - "description": "Value multiplied to length of barb to get length of arrowhead. Default = 0.3", - "dflt": 0.3, - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - }, - "customdata": { - "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements", - "editType": "calc", - "valType": "data_array" - }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, - "hoverdistance": { - "description": "Maximum distance (in pixels) to look for nearby arrows on hover.", - "dflt": 20, - "editType": "calc", - "min": -1, - "valType": "number" - }, - "hoverinfo": { - "arrayOk": true, - "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.", - "dflt": "all", - "editType": "none", - "extras": [ - "all", - "none", - "skip" - ], - "flags": [ - "x", - "y", - "u", - "v", - "text", - "name" - ], - "valType": "flaglist" - }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, - "hoverlabel": { - "align": { - "arrayOk": true, - "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines", - "dflt": "auto", - "editType": "none", - "valType": "enumerated", - "values": [ - "left", - "right", - "auto" - ] - }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, - "bgcolor": { - "arrayOk": true, - "description": "Sets the background color of the hover labels for this trace", - "editType": "none", - "valType": "color" - }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, - "bordercolor": { - "arrayOk": true, - "description": "Sets the border color of the hover labels for this trace.", - "editType": "none", - "valType": "color" - }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, - "editType": "none", - "font": { - "color": { - "arrayOk": true, - "editType": "none", - "valType": "color" + "tickformatstops": { + "items": { + "tickformatstop": { + "dtickrange": { + "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*", + "editType": "calc", + "items": [ + { + "editType": "calc", + "valType": "any" + }, + { + "editType": "calc", + "valType": "any" + } + ], + "valType": "info_array" + }, + "editType": "calc", + "enabled": { + "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.", + "dflt": true, + "editType": "calc", + "valType": "boolean" + }, + "name": { + "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.", + "editType": "calc", + "valType": "string" + }, + "role": "object", + "templateitemname": { + "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.", + "editType": "calc", + "valType": "string" + }, + "value": { + "description": "string - dtickformat for described zoom level, the same as *tickformat*", + "dflt": "", + "editType": "calc", + "valType": "string" + } + } + }, + "role": "object" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" + "ticklabeloverflow": { + "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.", + "editType": "calc", + "valType": "enumerated", + "values": [ + "allow", + "hide past div", + "hide past domain" + ] }, - "description": "Sets the font used in hover labels.", - "editType": "none", - "family": { - "arrayOk": true, - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "none", - "noBlank": true, - "strict": true, - "valType": "string" + "ticklabelposition": { + "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.", + "dflt": "outside", + "editType": "calc", + "valType": "enumerated", + "values": [ + "outside", + "inside", + "outside top", + "inside top", + "outside left", + "inside left", + "outside right", + "inside right", + "outside bottom", + "inside bottom" + ] }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", + "ticklabelstep": { + "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.", + "dflt": 1, + "editType": "calc", + "min": 1, + "valType": "integer" + }, + "ticklen": { + "description": "Sets the tick length (in px).", + "dflt": 5, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "tickmode": { + "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).", + "editType": "calc", + "impliedEdits": {}, + "valType": "enumerated", + "values": [ + "auto", + "linear", + "array" + ] + }, + "tickprefix": { + "description": "Sets a tick label prefix.", + "dflt": "", + "editType": "calc", "valType": "string" }, - "lineposition": { - "arrayOk": true, - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "none", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" + "ticks": { + "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.", + "dflt": "", + "editType": "calc", + "valType": "enumerated", + "values": [ + "outside", + "inside", + "" + ] }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", + "ticksuffix": { + "description": "Sets a tick label suffix.", + "dflt": "", + "editType": "calc", "valType": "string" }, - "role": "object", - "shadow": { - "arrayOk": true, - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", + "ticktext": { + "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", + "editType": "calc", + "valType": "data_array" + }, + "ticktextsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", + "tickvals": { + "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", + "editType": "calc", + "valType": "data_array" + }, + "tickvalssrc": { + "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", "editType": "none", "valType": "string" }, - "size": { - "arrayOk": true, - "editType": "none", - "min": 1, + "tickwidth": { + "description": "Sets the tick width (in px).", + "dflt": 1, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "title": { + "editType": "calc", + "font": { + "color": { + "editType": "calc", + "valType": "color" + }, + "description": "Sets this color bar's title font.", + "editType": "calc", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "calc", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "calc", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "calc", + "valType": "string" + }, + "size": { + "editType": "calc", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "calc", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "calc", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "role": "object", + "side": { + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "editType": "calc", + "valType": "enumerated", + "values": [ + "right", + "top", + "bottom" + ] + }, + "text": { + "description": "Sets the title of the color bar.", + "editType": "calc", + "valType": "string" + } + }, + "x": { + "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.", + "editType": "calc", "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, - "style": { - "arrayOk": true, - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "none", + "xanchor": { + "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.", + "editType": "calc", "valType": "enumerated", "values": [ - "normal", - "italic" + "left", + "center", + "right" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" + "xpad": { + "description": "Sets the amount of padding (in px) along the x direction.", + "dflt": 10, + "editType": "calc", + "min": 0, + "valType": "number" }, - "textcase": { - "arrayOk": true, - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "none", + "xref": { + "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.", + "dflt": "paper", + "editType": "calc", "valType": "enumerated", "values": [ - "normal", - "word caps", - "upper", - "lower" + "container", + "paper" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" + "y": { + "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.", + "editType": "calc", + "valType": "number" }, - "variant": { - "arrayOk": true, - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "none", + "yanchor": { + "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.", + "editType": "calc", "valType": "enumerated", "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" + "top", + "middle", + "bottom" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, - "weight": { - "arrayOk": true, - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "none", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" + "ypad": { + "description": "Sets the amount of padding (in px) along the y direction.", + "dflt": 10, + "editType": "calc", + "min": 0, + "valType": "number" }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" + "yref": { + "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.", + "dflt": "paper", + "editType": "calc", + "valType": "enumerated", + "values": [ + "container", + "paper" + ] } }, - "namelength": { - "arrayOk": true, - "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.", - "dflt": 15, - "editType": "none", - "min": -1, - "valType": "integer" + "colorscale": { + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "autocolorscale": false + }, + "valType": "colorscale" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", "editType": "none", "valType": "string" }, - "role": "object", - "showarrow": { - "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", - "dflt": true, - "editType": "none", - "valType": "boolean" - } - }, - "hovertemplate": { - "arrayOk": true, - "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `x`, `y`, `u`, `v`, `text` and `name`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``.", - "dflt": "", - "editType": "none", - "valType": "string" - }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, - "ids": { - "anim": true, - "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", - "valType": "data_array" - }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, - "legend": { - "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", - "dflt": "legend", - "editType": "style", - "valType": "subplotid" - }, - "legendgroup": { - "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.", - "dflt": "", - "editType": "style", - "valType": "string" - }, - "legendgrouptitle": { - "editType": "style", - "font": { + "line": { + "autocolorscale": { + "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. Has an effect only if in `marker.line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "cauto": { + "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.line.color`) or the bounds set in `marker.line.cmin` and `marker.line.cmax` Has an effect only if in `marker.line.color` is set to a numerical array. Defaults to `false` when `marker.line.cmin` and `marker.line.cmax` are set by the user.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "cmax": { + "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmin` must be set as well.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "cmid": { + "description": "Sets the mid-point of the color domain by scaling `marker.line.cmin` and/or `marker.line.cmax` to be equidistant to this point. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color`. Has no effect when `marker.line.cauto` is `false`.", + "dflt": null, + "editType": "calc", + "impliedEdits": {}, + "valType": "number" + }, + "cmin": { + "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmax` must be set as well.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, "color": { - "editType": "style", + "arrayOk": true, + "description": "Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set.", + "editType": "calc", "valType": "color" }, - "description": "Sets this legend group's title font.", - "editType": "style", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "style", - "noBlank": true, - "strict": true, + "coloraxis": { + "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.", + "dflt": null, + "editType": "calc", + "regex": "/^coloraxis([2-9]|[1-9][0-9]+)?$/", + "valType": "subplotid" + }, + "colorscale": { + "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "autocolorscale": false + }, + "valType": "colorscale" + }, + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", "valType": "string" }, - "lineposition": { - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "style", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" + "editType": "calc", + "reversescale": { + "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.", + "dflt": false, + "editType": "calc", + "valType": "boolean" }, "role": "object", - "shadow": { - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "style", - "valType": "string" - }, - "size": { - "editType": "style", - "min": 1, + "width": { + "arrayOk": true, + "description": "Sets the width (in px) of the lines bounding the marker points.", + "editType": "calc", + "min": 0, "valType": "number" }, - "style": { - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "style", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "textcase": { - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "style", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "style", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "style", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" + "widthsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `width`.", + "editType": "none", + "valType": "string" } }, - "role": "object", - "text": { - "description": "Sets the title of the legend group.", - "dflt": "", - "editType": "style", + "opacity": { + "arrayOk": true, + "description": "Sets the marker opacity.", + "editType": "calc", + "max": 1, + "min": 0, + "valType": "number" + }, + "opacitysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", + "editType": "none", "valType": "string" - } - }, - "legendrank": { - "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.", - "dflt": 1000, - "editType": "style", - "valType": "number" - }, - "legendwidth": { - "description": "Sets the width (in px or fraction) of the legend for this trace.", - "editType": "style", - "min": 0, - "valType": "number" - }, - "line": { - "color": { - "description": "Sets the color of the arrow lines.", - "dflt": "#000", - "editType": "style", - "valType": "color" }, - "dash": { - "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", - "dflt": "solid", - "editType": "style", - "valType": "string", + "reversescale": { + "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "role": "object", + "showscale": { + "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.", + "dflt": false, + "editType": "calc", + "valType": "boolean" + }, + "size": { + "arrayOk": true, + "description": "Sets the marker size (in px).", + "dflt": 6, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "sizemin": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points.", + "dflt": 0, + "editType": "calc", + "min": 0, + "valType": "number" + }, + "sizemode": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels.", + "dflt": "diameter", + "editType": "calc", + "valType": "enumerated", "values": [ - "solid", - "dot", - "dash", - "longdash", - "dashdot", - "longdashdot" + "diameter", + "area" ] }, - "editType": "style", - "role": "object", - "shape": { - "description": "Determines the line shape.", - "dflt": "linear", - "editType": "plot", + "sizeref": { + "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`.", + "dflt": 1, + "editType": "calc", + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "symbol": { + "arrayOk": true, + "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.", + "dflt": "circle", + "editType": "calc", "valType": "enumerated", "values": [ - "linear", - "spline", - "hv", - "vh", - "hvh", - "vhv" + 0, + "0", + "circle", + 100, + "100", + "circle-open", + 200, + "200", + "circle-dot", + 300, + "300", + "circle-open-dot", + 1, + "1", + "square", + 101, + "101", + "square-open", + 201, + "201", + "square-dot", + 301, + "301", + "square-open-dot", + 2, + "2", + "diamond", + 102, + "102", + "diamond-open", + 202, + "202", + "diamond-dot", + 302, + "302", + "diamond-open-dot", + 3, + "3", + "cross", + 103, + "103", + "cross-open", + 203, + "203", + "cross-dot", + 303, + "303", + "cross-open-dot", + 4, + "4", + "x", + 104, + "104", + "x-open", + 204, + "204", + "x-dot", + 304, + "304", + "x-open-dot", + 5, + "5", + "triangle-up", + 105, + "105", + "triangle-up-open", + 205, + "205", + "triangle-up-dot", + 305, + "305", + "triangle-up-open-dot", + 6, + "6", + "triangle-down", + 106, + "106", + "triangle-down-open", + 206, + "206", + "triangle-down-dot", + 306, + "306", + "triangle-down-open-dot", + 7, + "7", + "triangle-left", + 107, + "107", + "triangle-left-open", + 207, + "207", + "triangle-left-dot", + 307, + "307", + "triangle-left-open-dot", + 8, + "8", + "triangle-right", + 108, + "108", + "triangle-right-open", + 208, + "208", + "triangle-right-dot", + 308, + "308", + "triangle-right-open-dot", + 9, + "9", + "triangle-ne", + 109, + "109", + "triangle-ne-open", + 209, + "209", + "triangle-ne-dot", + 309, + "309", + "triangle-ne-open-dot", + 10, + "10", + "triangle-se", + 110, + "110", + "triangle-se-open", + 210, + "210", + "triangle-se-dot", + 310, + "310", + "triangle-se-open-dot", + 11, + "11", + "triangle-sw", + 111, + "111", + "triangle-sw-open", + 211, + "211", + "triangle-sw-dot", + 311, + "311", + "triangle-sw-open-dot", + 12, + "12", + "triangle-nw", + 112, + "112", + "triangle-nw-open", + 212, + "212", + "triangle-nw-dot", + 312, + "312", + "triangle-nw-open-dot", + 13, + "13", + "pentagon", + 113, + "113", + "pentagon-open", + 213, + "213", + "pentagon-dot", + 313, + "313", + "pentagon-open-dot", + 14, + "14", + "hexagon", + 114, + "114", + "hexagon-open", + 214, + "214", + "hexagon-dot", + 314, + "314", + "hexagon-open-dot", + 15, + "15", + "hexagon2", + 115, + "115", + "hexagon2-open", + 215, + "215", + "hexagon2-dot", + 315, + "315", + "hexagon2-open-dot", + 16, + "16", + "octagon", + 116, + "116", + "octagon-open", + 216, + "216", + "octagon-dot", + 316, + "316", + "octagon-open-dot", + 17, + "17", + "star", + 117, + "117", + "star-open", + 217, + "217", + "star-dot", + 317, + "317", + "star-open-dot", + 18, + "18", + "hexagram", + 118, + "118", + "hexagram-open", + 218, + "218", + "hexagram-dot", + 318, + "318", + "hexagram-open-dot", + 19, + "19", + "star-triangle-up", + 119, + "119", + "star-triangle-up-open", + 219, + "219", + "star-triangle-up-dot", + 319, + "319", + "star-triangle-up-open-dot", + 20, + "20", + "star-triangle-down", + 120, + "120", + "star-triangle-down-open", + 220, + "220", + "star-triangle-down-dot", + 320, + "320", + "star-triangle-down-open-dot", + 21, + "21", + "star-square", + 121, + "121", + "star-square-open", + 221, + "221", + "star-square-dot", + 321, + "321", + "star-square-open-dot", + 22, + "22", + "star-diamond", + 122, + "122", + "star-diamond-open", + 222, + "222", + "star-diamond-dot", + 322, + "322", + "star-diamond-open-dot", + 23, + "23", + "diamond-tall", + 123, + "123", + "diamond-tall-open", + 223, + "223", + "diamond-tall-dot", + 323, + "323", + "diamond-tall-open-dot", + 24, + "24", + "diamond-wide", + 124, + "124", + "diamond-wide-open", + 224, + "224", + "diamond-wide-dot", + 324, + "324", + "diamond-wide-open-dot", + 25, + "25", + "hourglass", + 125, + "125", + "hourglass-open", + 26, + "26", + "bowtie", + 126, + "126", + "bowtie-open", + 27, + "27", + "circle-cross", + 127, + "127", + "circle-cross-open", + 28, + "28", + "circle-x", + 128, + "128", + "circle-x-open", + 29, + "29", + "square-cross", + 129, + "129", + "square-cross-open", + 30, + "30", + "square-x", + 130, + "130", + "square-x-open", + 31, + "31", + "diamond-cross", + 131, + "131", + "diamond-cross-open", + 32, + "32", + "diamond-x", + 132, + "132", + "diamond-x-open", + 33, + "33", + "cross-thin", + 133, + "133", + "cross-thin-open", + 34, + "34", + "x-thin", + 134, + "134", + "x-thin-open", + 35, + "35", + "asterisk", + 135, + "135", + "asterisk-open", + 36, + "36", + "hash", + 136, + "136", + "hash-open", + 236, + "236", + "hash-dot", + 336, + "336", + "hash-open-dot", + 37, + "37", + "y-up", + 137, + "137", + "y-up-open", + 38, + "38", + "y-down", + 138, + "138", + "y-down-open", + 39, + "39", + "y-left", + 139, + "139", + "y-left-open", + 40, + "40", + "y-right", + 140, + "140", + "y-right-open", + 41, + "41", + "line-ew", + 141, + "141", + "line-ew-open", + 42, + "42", + "line-ns", + 142, + "142", + "line-ns-open", + 43, + "43", + "line-ne", + 143, + "143", + "line-ne-open", + 44, + "44", + "line-nw", + 144, + "144", + "line-nw-open", + 45, + "45", + "arrow-up", + 145, + "145", + "arrow-up-open", + 46, + "46", + "arrow-down", + 146, + "146", + "arrow-down-open", + 47, + "47", + "arrow-left", + 147, + "147", + "arrow-left-open", + 48, + "48", + "arrow-right", + 148, + "148", + "arrow-right-open", + 49, + "49", + "arrow-bar-up", + 149, + "149", + "arrow-bar-up-open", + 50, + "50", + "arrow-bar-down", + 150, + "150", + "arrow-bar-down-open", + 51, + "51", + "arrow-bar-left", + 151, + "151", + "arrow-bar-left-open", + 52, + "52", + "arrow-bar-right", + 152, + "152", + "arrow-bar-right-open", + 53, + "53", + "arrow", + 153, + "153", + "arrow-open", + 54, + "54", + "arrow-wide", + 154, + "154", + "arrow-wide-open" ] }, - "simplify": { - "description": "Simplifies lines by removing nearly-overlapping points.", - "dflt": true, - "editType": "plot", - "valType": "boolean" - }, - "smoothing": { - "description": "Has an effect only if `shape` is set to *spline*. Sets the amount of smoothing.", - "dflt": 1, - "editType": "plot", - "max": 1.3, - "min": 0, - "valType": "number" - }, - "width": { - "description": "Sets the width (in px) of the arrow lines.", - "dflt": 1, - "editType": "style", - "min": 0, - "valType": "number" + "symbolsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", + "editType": "none", + "valType": "string" } }, "meta": { @@ -22097,67 +25525,67 @@ "editType": "none", "valType": "string" }, - "name": { - "description": "Sets the trace name. The trace name appears as the legend item and on hover.", - "editType": "style", - "valType": "string" - }, - "opacity": { - "description": "Sets the opacity of the trace.", - "dflt": 1, - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" - }, - "sizemode": { - "description": "Determines whether `sizeref` is set as a *scaled* (unitless) scalar (normalized by the max u/v norm in the vector field), as an *absolute* value (in the same units as the vector field), or *raw* to use the raw vector lengths.", - "dflt": "scaled", - "editType": "calc", - "valType": "enumerated", - "values": [ - "scaled", - "absolute", - "raw" - ] - }, - "sizeref": { - "description": "Adjusts the arrow size scaling. The arrow length is determined by the vector norm multiplied by `sizeref`, optionally normalized when `sizemode` is *scaled*.", + "mode": { + "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*.", "editType": "calc", - "min": 0, - "valType": "number" + "extras": [ + "none" + ], + "flags": [ + "lines", + "markers", + "text" + ], + "valType": "flaglist" }, - "anchor": { - "description": "Sets the arrows' anchor with respect to their (x,y) positions. Use *tail* to place (x,y) at the base, *tip* to place (x,y) at the head, or *cm*/*center*/*middle* to center the arrow on (x,y).", - "dflt": "tail", - "editType": "calc", - "valType": "enumerated", - "values": [ - "tip", - "tail", - "cm", - "center", - "middle" - ] + "name": { + "description": "Sets the trace name. The trace name appears as the legend item and on hover.", + "editType": "style", + "valType": "string" }, - "scaleratio": { - "description": "The ratio between the scale of the y-axis and the scale of the x-axis (scale_y / scale_x). Default = null, the scale ratio is not fixed.", - "editType": "calc", + "opacity": { + "description": "Sets the opacity of the trace.", + "dflt": 1, + "editType": "style", + "max": 1, "min": 0, "valType": "number" }, + "r": { + "description": "Sets the radial coordinates", + "editType": "calc+clearAxisTypes", + "valType": "data_array" + }, + "r0": { + "description": "Alternate to `r`. Builds a linear space of r coordinates. Use with `dr` where `r0` is the starting coordinate and `dr` the step.", + "dflt": 0, + "editType": "calc+clearAxisTypes", + "valType": "any" + }, + "rsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `r`.", + "editType": "none", + "valType": "string" + }, "selected": { "editType": "style", - "line": { + "marker": { "color": { - "description": "Sets the line color of selected points.", + "description": "Sets the marker color of selected points.", "editType": "style", "valType": "color" }, "editType": "style", + "opacity": { + "description": "Sets the marker opacity of selected points.", + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, "role": "object", - "width": { - "description": "Sets the line width of selected points.", + "size": { + "description": "Sets the marker size of selected points.", "editType": "style", "min": 0, "valType": "number" @@ -22166,7 +25594,7 @@ "role": "object", "textfont": { "color": { - "description": "Sets the text font color of selected points, applied only when a selection exists.", + "description": "Sets the text font color of selected points.", "editType": "style", "valType": "color" }, @@ -22204,16 +25632,23 @@ "valType": "string" } }, + "subplot": { + "description": "Sets a reference between this trace's data coordinates and a polar subplot. If *polar* (the default value), the data refer to `layout.polar`. If *polar2*, the data refer to `layout.polar2`, and so on.", + "dflt": "polar", + "editType": "calc", + "valType": "subplotid" + }, "text": { - "anim": true, - "description": "Sets text elements associated with each (x,y) pair.", + "arrayOk": true, + "description": "Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", + "dflt": "", "editType": "calc", - "valType": "data_array" + "valType": "string" }, "textfont": { "color": { "arrayOk": true, - "editType": "style", + "editType": "calc", "valType": "color" }, "colorsrc": { @@ -22236,39 +25671,7 @@ "editType": "none", "valType": "string" }, - "lineposition": { - "arrayOk": true, - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "calc", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", - "shadow": { - "arrayOk": true, - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "calc", - "valType": "string" - }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "calc", @@ -22296,24 +25699,6 @@ "editType": "none", "valType": "string" }, - "textcase": { - "arrayOk": true, - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -22322,11 +25707,7 @@ "valType": "enumerated", "values": [ "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" + "small-caps" ] }, "variantsrc": { @@ -22339,13 +25720,11 @@ "description": "Sets the weight (or boldness) of the font.", "dflt": "normal", "editType": "calc", - "extras": [ + "valType": "enumerated", + "values": [ "normal", "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" + ] }, "weightsrc": { "description": "Sets the source reference on Chart Studio Cloud for `weight`.", @@ -22354,6 +25733,7 @@ } }, "textposition": { + "arrayOk": true, "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.", "dflt": "middle center", "editType": "calc", @@ -22370,20 +25750,63 @@ "bottom right" ] }, + "textpositionsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", + "editType": "none", + "valType": "string" + }, "textsrc": { "description": "Sets the source reference on Chart Studio Cloud for `text`.", "editType": "none", "valType": "string" }, - "type": "quiver", - "u": { - "anim": true, - "description": "Sets the x components of the arrow vectors.", - "editType": "calc", + "texttemplate": { + "arrayOk": true, + "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `r`, `theta` and `text`.", + "dflt": "", + "editType": "plot", + "valType": "string" + }, + "texttemplatefallback": { + "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", + "dflt": "-", + "editType": "plot", + "valType": "any" + }, + "texttemplatesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", + "editType": "none", + "valType": "string" + }, + "theta": { + "description": "Sets the angular coordinates", + "editType": "calc+clearAxisTypes", "valType": "data_array" }, + "theta0": { + "description": "Alternate to `theta`. Builds a linear space of theta coordinates. Use with `dtheta` where `theta0` is the starting coordinate and `dtheta` the step.", + "dflt": 0, + "editType": "calc+clearAxisTypes", + "valType": "any" + }, + "thetasrc": { + "description": "Sets the source reference on Chart Studio Cloud for `theta`.", + "editType": "none", + "valType": "string" + }, + "thetaunit": { + "description": "Sets the unit of input *theta* values. Has an effect only when on *linear* angular axes.", + "dflt": "degrees", + "editType": "calc+clearAxisTypes", + "valType": "enumerated", + "values": [ + "radians", + "degrees", + "gradians" + ] + }, + "type": "scatterpolargl", "uid": { - "anim": true, "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", "editType": "plot", "valType": "string" @@ -22395,16 +25818,23 @@ }, "unselected": { "editType": "style", - "line": { + "marker": { "color": { - "description": "Sets the line color of unselected points.", + "description": "Sets the marker color of unselected points, applied only when a selection exists.", "editType": "style", "valType": "color" }, "editType": "style", + "opacity": { + "description": "Sets the marker opacity of unselected points, applied only when a selection exists.", + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, "role": "object", - "width": { - "description": "Sets the line width of unselected points.", + "size": { + "description": "Sets the marker size of unselected points, applied only when a selection exists.", "editType": "style", "min": 0, "valType": "number" @@ -22421,17 +25851,6 @@ "role": "object" } }, - "usrc": { - "description": "Sets the source reference on Chart Studio Cloud for `u`.", - "editType": "none", - "valType": "string" - }, - "v": { - "anim": true, - "description": "Sets the y components of the arrow vectors.", - "editType": "calc", - "valType": "data_array" - }, "visible": { "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).", "dflt": true, @@ -22442,58 +25861,21 @@ false, "legendonly" ] - }, - "vsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `v`.", - "editType": "none", - "valType": "string" - }, - "x": { - "anim": true, - "description": "Sets the x coordinates of the arrow locations.", - "editType": "calc+clearAxisTypes", - "valType": "data_array" - }, - "xaxis": { - "description": "Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on.", - "dflt": "x", - "editType": "calc+clearAxisTypes", - "valType": "subplotid" - }, - "xsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `x`.", - "editType": "none", - "valType": "string" - }, - "y": { - "anim": true, - "description": "Sets the y coordinates of the arrow locations.", - "editType": "calc+clearAxisTypes", - "valType": "data_array" - }, - "yaxis": { - "description": "Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on.", - "dflt": "y", - "editType": "calc+clearAxisTypes", - "valType": "subplotid" - }, - "ysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `y`.", - "editType": "none", - "valType": "string" } }, "categories": [ - "cartesian", - "svg", + "gl", + "regl", + "polar", + "symbols", "showLegend", - "scatter-like", - "zoomScale" + "scatter-like" ], "meta": { - "description": "The quiver trace type visualizes vector fields using arrows. Specify a vector field using 4 1D arrays: 2 position arrays `x`, `y` and 2 vector component arrays `u`, `v`. The arrows are drawn exactly at the positions given by `x` and `y`. Arrow length and direction are determined by `u` and `v` components." + "description": "The scatterpolargl trace type encompasses line charts, scatter charts, and bubble charts in polar coordinates using the WebGL plotting engine. The data visualized as scatter point or lines is set in `r` (radial) and `theta` (angular) coordinates Bubble charts are achieved by setting `marker.size` and/or `marker.color` to numerical arrays.", + "hrName": "scatter_polar_gl" }, - "type": "quiver" + "type": "scatterpolargl" }, "scattersmith": { "animatable": false, From 1d8d74e73d892d3fe5028bfebab31b1e8ccbf9b9 Mon Sep 17 00:00:00 2001 From: John Degner Date: Tue, 11 Nov 2025 12:14:48 -0800 Subject: [PATCH 193/241] Derive scaling from axes --- src/traces/quiver/attributes.js | 6 ------ src/traces/quiver/defaults.js | 1 - src/traces/quiver/plot.js | 5 ++++- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/src/traces/quiver/attributes.js b/src/traces/quiver/attributes.js index a0e64eb74a9..0e2ef465a25 100644 --- a/src/traces/quiver/attributes.js +++ b/src/traces/quiver/attributes.js @@ -73,12 +73,6 @@ var attrs = { editType: 'calc', description: 'Angle of arrowhead in radians. Default = π/9' }, - scaleratio: { - valType: 'number', - min: 0, - editType: 'calc', - description: 'The ratio between the scale of the y-axis and the scale of the x-axis (scale_y / scale_x). Default = null, the scale ratio is not fixed.' - }, hoverdistance: { valType: 'number', min: -1, diff --git a/src/traces/quiver/defaults.js b/src/traces/quiver/defaults.js index 2d8e81554c1..eec5dae89ed 100644 --- a/src/traces/quiver/defaults.js +++ b/src/traces/quiver/defaults.js @@ -46,7 +46,6 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout // back-compat coerce('arrow_scale'); coerce('angle', Math.PI / 9); - coerce('scaleratio'); coerce('hoverdistance', 20); // Line styling diff --git a/src/traces/quiver/plot.js b/src/traces/quiver/plot.js index c6fbe470371..82fc6bfb2ca 100644 --- a/src/traces/quiver/plot.js +++ b/src/traces/quiver/plot.js @@ -106,7 +106,10 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition } // Compute arrow in data space - var scaleRatio = trace.scaleratio || 1; + // Derive pixel-per-data scaling from axes at this point + var pxPerX = Math.abs(xa.c2p(cdi.x + 1) - xa.c2p(cdi.x)); + var pxPerY = Math.abs(ya.c2p(cdi.y + 1) - ya.c2p(cdi.y)); + var scaleRatio = (pxPerX && pxPerY) ? (pxPerY / pxPerX) : 1; var baseHeadScale = 0.2; var arrowScale = (trace.arrowsize !== undefined) ? (baseHeadScale * trace.arrowsize) From 3dd208d26602cb034321c9175d1ae914b5e889a3 Mon Sep 17 00:00:00 2001 From: John Degner Date: Tue, 11 Nov 2025 12:29:40 -0800 Subject: [PATCH 194/241] Remove angle attribute --- src/traces/quiver/attributes.js | 8 -------- src/traces/quiver/defaults.js | 1 - src/traces/quiver/plot.js | 9 ++++++--- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/src/traces/quiver/attributes.js b/src/traces/quiver/attributes.js index 0e2ef465a25..937e31bb0df 100644 --- a/src/traces/quiver/attributes.js +++ b/src/traces/quiver/attributes.js @@ -65,14 +65,6 @@ var attrs = { 'or *cm*/*center*/*middle* to center the arrow on (x,y).' ].join(' ') }, - angle: { - valType: 'number', - dflt: Math.PI / 9, - min: 0, - max: Math.PI / 2, - editType: 'calc', - description: 'Angle of arrowhead in radians. Default = π/9' - }, hoverdistance: { valType: 'number', min: -1, diff --git a/src/traces/quiver/defaults.js b/src/traces/quiver/defaults.js index eec5dae89ed..43d7a633ec4 100644 --- a/src/traces/quiver/defaults.js +++ b/src/traces/quiver/defaults.js @@ -45,7 +45,6 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout coerce('arrowsize', 1); // back-compat coerce('arrow_scale'); - coerce('angle', Math.PI / 9); coerce('hoverdistance', 20); // Line styling diff --git a/src/traces/quiver/plot.js b/src/traces/quiver/plot.js index 82fc6bfb2ca..c90ba980c87 100644 --- a/src/traces/quiver/plot.js +++ b/src/traces/quiver/plot.js @@ -114,7 +114,10 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition var arrowScale = (trace.arrowsize !== undefined) ? (baseHeadScale * trace.arrowsize) : (trace.arrow_scale !== undefined ? trace.arrow_scale : baseHeadScale); - var angle = trace.angle || Math.PI / 12; // small default + // Fixed arrowhead wedge angle (radians). + // Arrow direction is fully determined by u,v (see barbAng below); + // this constant only controls the opening of the head. + var headAngle = Math.PI / 12; var u = (trace.u && trace.u[cdi.i]) || 0; var v = (trace.v && trace.v[cdi.i]) || 0; @@ -138,8 +141,8 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition var arrowLen = barbLen * arrowScale; var barbAng = Math.atan2(dy, dx / scaleRatio); - var ang1 = barbAng + angle; - var ang2 = barbAng - angle; + var ang1 = barbAng + headAngle; + var ang2 = barbAng - headAngle; var x0, y0, x1, y1; if (anchor === 'tip') { From ec5f85037f1e25e9203f1b1e7352591785fdd81d Mon Sep 17 00:00:00 2001 From: John Degner Date: Tue, 11 Nov 2025 12:37:42 -0800 Subject: [PATCH 195/241] Include colorscale attributes in quiver --- src/traces/quiver/attributes.js | 11 +++++++++++ src/traces/quiver/defaults.js | 23 +++++++++++++++++++++++ src/traces/quiver/plot.js | 12 ++++++++++++ 3 files changed, 46 insertions(+) diff --git a/src/traces/quiver/attributes.js b/src/traces/quiver/attributes.js index 937e31bb0df..15c85784745 100644 --- a/src/traces/quiver/attributes.js +++ b/src/traces/quiver/attributes.js @@ -6,6 +6,7 @@ var fontAttrs = require('../../plots/font_attributes'); var dash = require('../../components/drawing/attributes').dash; var extendFlat = require('../../lib/extend').extendFlat; +var colorScaleAttrs = require('../../components/colorscale/attributes'); var attrs = { x: { @@ -223,6 +224,16 @@ var attrs = { // Extend with base attributes (includes hoverinfo, etc.) extendFlat(attrs, baseAttrs); +// Colorscale attributes to color arrows by |(u,v)| magnitude +extendFlat( + attrs, + colorScaleAttrs('', { + colorAttr: 'u/v norm', + showScaleDflt: true, + editTypeOverride: 'calc' + }) +); + // Add hoverinfo with proper flags for quiver // We need to create a new object to avoid mutating the shared base attributes attrs.hoverinfo = extendFlat({}, baseAttrs.hoverinfo, { diff --git a/src/traces/quiver/defaults.js b/src/traces/quiver/defaults.js index 43d7a633ec4..54e243c8497 100644 --- a/src/traces/quiver/defaults.js +++ b/src/traces/quiver/defaults.js @@ -2,6 +2,9 @@ var Lib = require('../../lib'); var attributes = require('./attributes'); +var Colorscale = require('../../components/colorscale'); +var colorscaleDefaults = Colorscale.handleDefaults; +var hasColorscale = Colorscale.hasColorscale; module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) { // Selection styling - use coerce to set proper defaults @@ -61,6 +64,26 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout // traceOut.hoverinfo will be set by Lib.coerceHoverinfo in plots.js traceOut.hovertemplate = traceIn.hovertemplate; + // Colorscale for magnitude coloring: compute cmin/cmax from |(u,v)| + var cmin = Infinity; + var cmax = -Infinity; + for (var k = 0; k < len; k++) { + var uu = (traceOut.u && traceOut.u[k]) || (traceIn.u && traceIn.u[k]) || 0; + var vv = (traceOut.v && traceOut.v[k]) || (traceIn.v && traceIn.v[k]) || 0; + var nrm = Math.sqrt(uu * uu + vv * vv); + if (isFinite(nrm)) { + if (nrm < cmin) cmin = nrm; + if (nrm > cmax) cmax = nrm; + } + } + if (!isFinite(cmin)) cmin = 0; + if (!isFinite(cmax)) cmax = 1; + if (traceIn.cmin === undefined && traceOut.cmin === undefined) traceOut.cmin = cmin; + if (traceIn.cmax === undefined && traceOut.cmax === undefined) traceOut.cmax = cmax; + // Flag colorscale and apply defaults (adds colorscale, showscale, colorbar, etc.) + traceOut._hasColorscale = hasColorscale(traceIn) || true; + colorscaleDefaults(traceIn, traceOut, layout, coerce, { prefix: '', cLetter: 'c' }); + // Text traceOut.text = traceIn.text; traceOut.textposition = traceIn.textposition || 'middle center'; diff --git a/src/traces/quiver/plot.js b/src/traces/quiver/plot.js index c90ba980c87..b2be39b449a 100644 --- a/src/traces/quiver/plot.js +++ b/src/traces/quiver/plot.js @@ -5,6 +5,7 @@ var d3 = require('@plotly/d3'); var Registry = require('../../registry'); var Lib = require('../../lib'); var Drawing = require('../../components/drawing'); +var Colorscale = require('../../components/colorscale'); module.exports = function plot(gd, plotinfo, cdscatter, scatterLayer, transitionOpts, makeOnCompleteCallback) { var join, onComplete; @@ -184,6 +185,17 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition // Apply styling using Plotly's standard styling system Drawing.lineGroupStyle(lineSegments, trace.line && trace.line.width, trace.line && trace.line.color, trace.line && trace.line.dash); + // If colorscale present, color arrows by magnitude |(u,v)| + if (trace._hasColorscale) { + var colorFunc = Colorscale.makeColorScaleFuncFromTrace(trace); + lineSegments.style('stroke', function(cdi) { + var uVal = (trace.u && trace.u[cdi.i]) || 0; + var vVal = (trace.v && trace.v[cdi.i]) || 0; + var nVal = Math.sqrt(uVal * uVal + vVal * vVal); + return colorFunc(nVal); + }); + } + // Handle transitions if(transitionOpts && transitionOpts.duration > 0) { var transition = d3.transition() From 5534667626520c6697ae955aa3e92f3c89f22a27 Mon Sep 17 00:00:00 2001 From: John Degner Date: Tue, 11 Nov 2025 13:06:44 -0800 Subject: [PATCH 196/241] Add support for coloring by an independent scalar array --- src/traces/quiver/attributes.js | 7 +++++++ src/traces/quiver/calc.js | 32 ++++++++++++++++++++++++++++++++ src/traces/quiver/defaults.js | 19 ++----------------- src/traces/quiver/plot.js | 14 ++++++++++---- 4 files changed, 51 insertions(+), 21 deletions(-) diff --git a/src/traces/quiver/attributes.js b/src/traces/quiver/attributes.js index 15c85784745..88eb603a999 100644 --- a/src/traces/quiver/attributes.js +++ b/src/traces/quiver/attributes.js @@ -33,6 +33,13 @@ var attrs = { anim: true, description: 'Sets the y components of the arrow vectors.' }, + // Optional scalar field used for colorscale mapping. If omitted, |(u,v)| is used. + c: { + valType: 'data_array', + editType: 'calc', + anim: true, + description: 'Sets the scalar values used to map colors via the colorscale. If not provided, the magnitude sqrt(u^2 + v^2) is used.' + }, sizemode: { valType: 'enumerated', values: ['scaled', 'absolute', 'raw'], diff --git a/src/traces/quiver/calc.js b/src/traces/quiver/calc.js index 1fd8877bef7..4484de6960b 100644 --- a/src/traces/quiver/calc.js +++ b/src/traces/quiver/calc.js @@ -5,6 +5,7 @@ var Axes = require('../../plots/cartesian/axes'); var isNumeric = require('fast-isnumeric'); var BADNUM = require('../../constants/numerical').BADNUM; var scatterCalc = require('../scatter/calc'); +var colorscaleCalc = require('../../components/colorscale/calc'); /** * Main calculation function for quiver trace @@ -24,6 +25,12 @@ module.exports = function calc(gd, trace) { trace._length = len; var cd = new Array(len); + var normMin = Infinity; + var normMax = -Infinity; + var cMin = Infinity; + var cMax = -Infinity; + var hasC = Array.isArray(trace.c); + for(var i = 0; i < len; i++) { var cdi = cd[i] = { i: i }; var xValid = isNumeric(xVals[i]); @@ -36,11 +43,36 @@ module.exports = function calc(gd, trace) { cdi.x = BADNUM; cdi.y = BADNUM; } + + // track ranges for colorscale + if(hasC) { + var ci = trace.c[i]; + if(isNumeric(ci)) { + if(ci < cMin) cMin = ci; + if(ci > cMax) cMax = ci; + } + } else { + var ui = (trace.u && trace.u[i]) || 0; + var vi = (trace.v && trace.v[i]) || 0; + var n = Math.sqrt(ui * ui + vi * vi); + if(isFinite(n)) { + if(n < normMin) normMin = n; + if(n > normMax) normMax = n; + } + } } // Ensure axes are expanded and categories registered like scatter traces do scatterCalc.calcAxisExpansion(gd, trace, xa, ya, xVals, yVals); + // Colorscale cmin/cmax computation: prefer provided c, else magnitude + var vals = hasC ? [cMin, cMax] : [normMin, normMax]; + colorscaleCalc(gd, trace, { + vals: vals, + containerStr: '', + cLetter: 'c' + }); + return cd; }; diff --git a/src/traces/quiver/defaults.js b/src/traces/quiver/defaults.js index 54e243c8497..e03df991d97 100644 --- a/src/traces/quiver/defaults.js +++ b/src/traces/quiver/defaults.js @@ -64,23 +64,8 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout // traceOut.hoverinfo will be set by Lib.coerceHoverinfo in plots.js traceOut.hovertemplate = traceIn.hovertemplate; - // Colorscale for magnitude coloring: compute cmin/cmax from |(u,v)| - var cmin = Infinity; - var cmax = -Infinity; - for (var k = 0; k < len; k++) { - var uu = (traceOut.u && traceOut.u[k]) || (traceIn.u && traceIn.u[k]) || 0; - var vv = (traceOut.v && traceOut.v[k]) || (traceIn.v && traceIn.v[k]) || 0; - var nrm = Math.sqrt(uu * uu + vv * vv); - if (isFinite(nrm)) { - if (nrm < cmin) cmin = nrm; - if (nrm > cmax) cmax = nrm; - } - } - if (!isFinite(cmin)) cmin = 0; - if (!isFinite(cmax)) cmax = 1; - if (traceIn.cmin === undefined && traceOut.cmin === undefined) traceOut.cmin = cmin; - if (traceIn.cmax === undefined && traceOut.cmax === undefined) traceOut.cmax = cmax; - // Flag colorscale and apply defaults (adds colorscale, showscale, colorbar, etc.) + // Colorscale defaults (adds colorscale, showscale, colorbar, etc.) + // Keep colorscale enabled by default for quiver traceOut._hasColorscale = hasColorscale(traceIn) || true; colorscaleDefaults(traceIn, traceOut, layout, coerce, { prefix: '', cLetter: 'c' }); diff --git a/src/traces/quiver/plot.js b/src/traces/quiver/plot.js index b2be39b449a..c092e0e40ed 100644 --- a/src/traces/quiver/plot.js +++ b/src/traces/quiver/plot.js @@ -189,10 +189,16 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition if (trace._hasColorscale) { var colorFunc = Colorscale.makeColorScaleFuncFromTrace(trace); lineSegments.style('stroke', function(cdi) { - var uVal = (trace.u && trace.u[cdi.i]) || 0; - var vVal = (trace.v && trace.v[cdi.i]) || 0; - var nVal = Math.sqrt(uVal * uVal + vVal * vVal); - return colorFunc(nVal); + var cArr = trace.c; + var value; + if (Array.isArray(cArr) && cArr.length > cdi.i && isFinite(cArr[cdi.i])) { + value = cArr[cdi.i]; + } else { + var uVal = (trace.u && trace.u[cdi.i]) || 0; + var vVal = (trace.v && trace.v[cdi.i]) || 0; + value = Math.sqrt(uVal * uVal + vVal * vVal); + } + return colorFunc(value); }); } From 5302654c8f0732e932242954dc1029b34f00e994 Mon Sep 17 00:00:00 2001 From: John Degner Date: Tue, 11 Nov 2025 13:19:56 -0800 Subject: [PATCH 197/241] Run npm run schema --- test/plot-schema.json | 697 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 684 insertions(+), 13 deletions(-) diff --git a/test/plot-schema.json b/test/plot-schema.json index 932fd5f0bf6..9c6775175b0 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -17096,14 +17096,6 @@ "middle" ] }, - "angle": { - "description": "Angle of arrowhead in radians. Default = π/9", - "dflt": 0.3490658503988659, - "editType": "calc", - "max": 1.5707963267948966, - "min": 0, - "valType": "number" - }, "arrow_scale": { "description": "Deprecated alias for `arrowsize`-based sizing. Prefer using `arrowsize`.", "editType": "calc", @@ -17124,6 +17116,679 @@ "min": 0.1, "valType": "number" }, + "autocolorscale": { + "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "c": { + "anim": true, + "description": "Sets the scalar values used to map colors via the colorscale. If not provided, the magnitude sqrt(u^2 + v^2) is used.", + "editType": "calc", + "valType": "data_array" + }, + "cauto": { + "description": "Determines whether or not the color domain is computed with respect to the input data (here u/v norm) or the bounds set in `cmin` and `cmax` Defaults to `false` when `cmin` and `cmax` are set by the user.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "cmax": { + "description": "Sets the upper bound of the color domain. Value should have the same units as u/v norm and if set, `cmin` must be set as well.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "cmid": { + "description": "Sets the mid-point of the color domain by scaling `cmin` and/or `cmax` to be equidistant to this point. Value should have the same units as u/v norm. Has no effect when `cauto` is `false`.", + "dflt": null, + "editType": "calc", + "impliedEdits": {}, + "valType": "number" + }, + "cmin": { + "description": "Sets the lower bound of the color domain. Value should have the same units as u/v norm and if set, `cmax` must be set as well.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "coloraxis": { + "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.", + "dflt": null, + "editType": "calc", + "regex": "/^coloraxis([2-9]|[1-9][0-9]+)?$/", + "valType": "subplotid" + }, + "colorbar": { + "bgcolor": { + "description": "Sets the color of padded area.", + "dflt": "rgba(0,0,0,0)", + "editType": "colorbars", + "valType": "color" + }, + "bordercolor": { + "description": "Sets the axis line color.", + "dflt": "#444", + "editType": "colorbars", + "valType": "color" + }, + "borderwidth": { + "description": "Sets the width (in px) or the border enclosing this color bar.", + "dflt": 0, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "dtick": { + "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*", + "editType": "colorbars", + "impliedEdits": { + "tickmode": "linear" + }, + "valType": "any" + }, + "editType": "colorbars", + "exponentformat": { + "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from \"femto\" f (10^-15) to \"tera\" T (10^12). *SI extended* covers instead the full SI range from \"quecto\" q (10^-30) to \"quetta\" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation.", + "dflt": "B", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "none", + "e", + "E", + "power", + "SI", + "B", + "SI extended" + ] + }, + "labelalias": { + "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax.", + "dflt": false, + "editType": "colorbars", + "valType": "any" + }, + "len": { + "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.", + "dflt": 1, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "lenmode": { + "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.", + "dflt": "fraction", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "fraction", + "pixels" + ] + }, + "minexponent": { + "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.", + "dflt": 3, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "nticks": { + "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.", + "dflt": 0, + "editType": "colorbars", + "min": 0, + "valType": "integer" + }, + "orientation": { + "description": "Sets the orientation of the colorbar.", + "dflt": "v", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "h", + "v" + ] + }, + "outlinecolor": { + "description": "Sets the axis line color.", + "dflt": "#444", + "editType": "colorbars", + "valType": "color" + }, + "outlinewidth": { + "description": "Sets the width (in px) of the axis line.", + "dflt": 1, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "role": "object", + "separatethousands": { + "description": "If \"true\", even 4-digit integers are separated", + "dflt": false, + "editType": "colorbars", + "valType": "boolean" + }, + "showexponent": { + "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.", + "dflt": "all", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "showticklabels": { + "description": "Determines whether or not the tick labels are drawn.", + "dflt": true, + "editType": "colorbars", + "valType": "boolean" + }, + "showtickprefix": { + "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.", + "dflt": "all", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "showticksuffix": { + "description": "Same as `showtickprefix` but for tick suffixes.", + "dflt": "all", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "thickness": { + "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.", + "dflt": 30, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "thicknessmode": { + "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.", + "dflt": "pixels", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "fraction", + "pixels" + ] + }, + "tick0": { + "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears.", + "editType": "colorbars", + "impliedEdits": { + "tickmode": "linear" + }, + "valType": "any" + }, + "tickangle": { + "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.", + "dflt": "auto", + "editType": "colorbars", + "valType": "angle" + }, + "tickcolor": { + "description": "Sets the tick color.", + "dflt": "#444", + "editType": "colorbars", + "valType": "color" + }, + "tickfont": { + "color": { + "editType": "colorbars", + "valType": "color" + }, + "description": "Sets the color bar's tick label font", + "editType": "colorbars", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "colorbars", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "colorbars", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "colorbars", + "valType": "string" + }, + "size": { + "editType": "colorbars", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "colorbars", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "tickformat": { + "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*", + "dflt": "", + "editType": "colorbars", + "valType": "string" + }, + "tickformatstops": { + "items": { + "tickformatstop": { + "dtickrange": { + "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*", + "editType": "colorbars", + "items": [ + { + "editType": "colorbars", + "valType": "any" + }, + { + "editType": "colorbars", + "valType": "any" + } + ], + "valType": "info_array" + }, + "editType": "colorbars", + "enabled": { + "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.", + "dflt": true, + "editType": "colorbars", + "valType": "boolean" + }, + "name": { + "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.", + "editType": "colorbars", + "valType": "string" + }, + "role": "object", + "templateitemname": { + "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.", + "editType": "colorbars", + "valType": "string" + }, + "value": { + "description": "string - dtickformat for described zoom level, the same as *tickformat*", + "dflt": "", + "editType": "colorbars", + "valType": "string" + } + } + }, + "role": "object" + }, + "ticklabeloverflow": { + "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "allow", + "hide past div", + "hide past domain" + ] + }, + "ticklabelposition": { + "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.", + "dflt": "outside", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "outside", + "inside", + "outside top", + "inside top", + "outside left", + "inside left", + "outside right", + "inside right", + "outside bottom", + "inside bottom" + ] + }, + "ticklabelstep": { + "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.", + "dflt": 1, + "editType": "colorbars", + "min": 1, + "valType": "integer" + }, + "ticklen": { + "description": "Sets the tick length (in px).", + "dflt": 5, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "tickmode": { + "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).", + "editType": "colorbars", + "impliedEdits": {}, + "valType": "enumerated", + "values": [ + "auto", + "linear", + "array" + ] + }, + "tickprefix": { + "description": "Sets a tick label prefix.", + "dflt": "", + "editType": "colorbars", + "valType": "string" + }, + "ticks": { + "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.", + "dflt": "", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "outside", + "inside", + "" + ] + }, + "ticksuffix": { + "description": "Sets a tick label suffix.", + "dflt": "", + "editType": "colorbars", + "valType": "string" + }, + "ticktext": { + "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", + "editType": "colorbars", + "valType": "data_array" + }, + "ticktextsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", + "editType": "none", + "valType": "string" + }, + "tickvals": { + "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", + "editType": "colorbars", + "valType": "data_array" + }, + "tickvalssrc": { + "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", + "editType": "none", + "valType": "string" + }, + "tickwidth": { + "description": "Sets the tick width (in px).", + "dflt": 1, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "title": { + "editType": "colorbars", + "font": { + "color": { + "editType": "colorbars", + "valType": "color" + }, + "description": "Sets this color bar's title font.", + "editType": "colorbars", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "colorbars", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "colorbars", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "colorbars", + "valType": "string" + }, + "size": { + "editType": "colorbars", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "colorbars", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "role": "object", + "side": { + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "right", + "top", + "bottom" + ] + }, + "text": { + "description": "Sets the title of the color bar.", + "editType": "colorbars", + "valType": "string" + } + }, + "x": { + "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.", + "editType": "colorbars", + "valType": "number" + }, + "xanchor": { + "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "left", + "center", + "right" + ] + }, + "xpad": { + "description": "Sets the amount of padding (in px) along the x direction.", + "dflt": 10, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "xref": { + "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.", + "dflt": "paper", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "container", + "paper" + ] + }, + "y": { + "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.", + "editType": "colorbars", + "valType": "number" + }, + "yanchor": { + "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "top", + "middle", + "bottom" + ] + }, + "ypad": { + "description": "Sets the amount of padding (in px) along the y direction.", + "dflt": 10, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "yref": { + "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.", + "dflt": "paper", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "container", + "paper" + ] + } + }, + "colorscale": { + "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "autocolorscale": false + }, + "valType": "colorscale" + }, + "csrc": { + "description": "Sets the source reference on Chart Studio Cloud for `c`.", + "editType": "none", + "valType": "string" + }, "customdata": { "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements", "editType": "calc", @@ -17600,11 +18265,11 @@ "min": 0, "valType": "number" }, - "scaleratio": { - "description": "The ratio between the scale of the y-axis and the scale of the x-axis (scale_y / scale_x). Default = null, the scale ratio is not fixed.", - "editType": "calc", - "min": 0, - "valType": "number" + "reversescale": { + "description": "Reverses the color mapping if true. If true, `cmin` will correspond to the last color in the array and `cmax` will correspond to the first color.", + "dflt": false, + "editType": "plot", + "valType": "boolean" }, "selected": { "editType": "style", @@ -17645,6 +18310,12 @@ "editType": "style", "valType": "boolean" }, + "showscale": { + "description": "Determines whether or not a colorbar is displayed for this trace.", + "dflt": true, + "editType": "calc", + "valType": "boolean" + }, "sizemode": { "description": "Determines whether `sizeref` is set as a *scaled* (unitless) scalar (normalized by the max u/v norm in the vector field), as an *absolute* value (in the same units as the vector field), or *raw* to use the raw vector lengths.", "dflt": "scaled", From 9d8fa149008d069b4e37d1999363bd62769e4826 Mon Sep 17 00:00:00 2001 From: John Degner Date: Tue, 18 Nov 2025 20:52:51 -0800 Subject: [PATCH 198/241] Use isArrayOrTypedArray --- src/traces/quiver/attributes.js | 2 -- src/traces/quiver/calc.js | 4 +--- src/traces/quiver/defaults.js | 11 +++++------ src/traces/quiver/event_data.js | 2 -- src/traces/quiver/format_labels.js | 25 +++++++++++++++++++++++++ src/traces/quiver/hover.js | 2 -- src/traces/quiver/index.js | 2 -- src/traces/quiver/plot.js | 4 +--- src/traces/quiver/select_points.js | 2 -- src/traces/quiver/style.js | 2 -- 10 files changed, 32 insertions(+), 24 deletions(-) create mode 100644 src/traces/quiver/format_labels.js diff --git a/src/traces/quiver/attributes.js b/src/traces/quiver/attributes.js index 88eb603a999..966344561ca 100644 --- a/src/traces/quiver/attributes.js +++ b/src/traces/quiver/attributes.js @@ -254,5 +254,3 @@ attrs.hovertemplate = extendFlat({}, hovertemplateAttrs({}, { })); module.exports = attrs; - - diff --git a/src/traces/quiver/calc.js b/src/traces/quiver/calc.js index 4484de6960b..1bee1abefd9 100644 --- a/src/traces/quiver/calc.js +++ b/src/traces/quiver/calc.js @@ -29,7 +29,7 @@ module.exports = function calc(gd, trace) { var normMax = -Infinity; var cMin = Infinity; var cMax = -Infinity; - var hasC = Array.isArray(trace.c); + var hasC = Lib.isArrayOrTypedArray(trace.c); for(var i = 0; i < len; i++) { var cdi = cd[i] = { i: i }; @@ -75,5 +75,3 @@ module.exports = function calc(gd, trace) { return cd; }; - - diff --git a/src/traces/quiver/defaults.js b/src/traces/quiver/defaults.js index e03df991d97..b1766539c26 100644 --- a/src/traces/quiver/defaults.js +++ b/src/traces/quiver/defaults.js @@ -19,19 +19,20 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout var v = coerce('v'); // Simple validation - check if we have the required arrays - if(!x || !Array.isArray(x) || x.length === 0 || - !y || !Array.isArray(y) || y.length === 0) { + // Use Lib.isArrayOrTypedArray to support both regular arrays and typed arrays + if(!x || !Lib.isArrayOrTypedArray(x) || x.length === 0 || + !y || !Lib.isArrayOrTypedArray(y) || y.length === 0) { traceOut.visible = false; return; } // If u/v are missing, default to zeros so the trace participates in calc/category logic var len = Math.min(x.length, y.length); - if(!Array.isArray(u) || u.length === 0) { + if(!Lib.isArrayOrTypedArray(u) || u.length === 0) { traceOut.u = new Array(len); for(var i = 0; i < len; i++) traceOut.u[i] = 0; } - if(!Array.isArray(v) || v.length === 0) { + if(!Lib.isArrayOrTypedArray(v) || v.length === 0) { traceOut.v = new Array(len); for(var j = 0; j < len; j++) traceOut.v[j] = 0; } @@ -86,5 +87,3 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout // Set the data length traceOut._length = len; }; - - diff --git a/src/traces/quiver/event_data.js b/src/traces/quiver/event_data.js index c744a23a152..faecde95abb 100644 --- a/src/traces/quiver/event_data.js +++ b/src/traces/quiver/event_data.js @@ -8,5 +8,3 @@ module.exports = function eventData(out, pt, trace, cd, pointNumber) { out.pointNumber = pointNumber; out.trace = trace; }; - - diff --git a/src/traces/quiver/format_labels.js b/src/traces/quiver/format_labels.js new file mode 100644 index 00000000000..8b56f67c2bf --- /dev/null +++ b/src/traces/quiver/format_labels.js @@ -0,0 +1,25 @@ +'use strict'; + +var Axes = require('../../plots/cartesian/axes'); + +module.exports = function formatLabels(cdi, trace, fullLayout) { + var labels = {}; + + var xa = Axes.getFromId({ _fullLayout: fullLayout }, trace.xaxis || 'x'); + var ya = Axes.getFromId({ _fullLayout: fullLayout }, trace.yaxis || 'y'); + + var x = cdi.x; + var y = cdi.y; + + labels.xLabel = Axes.tickText(xa, xa.c2l(x), true).text; + labels.yLabel = Axes.tickText(ya, ya.c2l(y), true).text; + + var u = trace.u ? trace.u[cdi.i] : 0; + var v = trace.v ? trace.v[cdi.i] : 0; + + // Format u and v as plain numbers + labels.uLabel = String(u); + labels.vLabel = String(v); + + return labels; +}; diff --git a/src/traces/quiver/hover.js b/src/traces/quiver/hover.js index d9a3d4573fb..21bfaccb68b 100644 --- a/src/traces/quiver/hover.js +++ b/src/traces/quiver/hover.js @@ -73,5 +73,3 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode) { return [hoverPoint]; }; - - diff --git a/src/traces/quiver/index.js b/src/traces/quiver/index.js index 82850f0840b..066d1e774f3 100644 --- a/src/traces/quiver/index.js +++ b/src/traces/quiver/index.js @@ -29,5 +29,3 @@ module.exports = { ].join(' ') } }; - - diff --git a/src/traces/quiver/plot.js b/src/traces/quiver/plot.js index c092e0e40ed..ee03ad0334c 100644 --- a/src/traces/quiver/plot.js +++ b/src/traces/quiver/plot.js @@ -191,7 +191,7 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition lineSegments.style('stroke', function(cdi) { var cArr = trace.c; var value; - if (Array.isArray(cArr) && cArr.length > cdi.i && isFinite(cArr[cdi.i])) { + if (Lib.isArrayOrTypedArray(cArr) && cArr.length > cdi.i && isFinite(cArr[cdi.i])) { value = cArr[cdi.i]; } else { var uVal = (trace.u && trace.u[cdi.i]) || 0; @@ -212,5 +212,3 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition .style('opacity', 1); } } - - diff --git a/src/traces/quiver/select_points.js b/src/traces/quiver/select_points.js index d2dfa2d1dab..e169b1b9517 100644 --- a/src/traces/quiver/select_points.js +++ b/src/traces/quiver/select_points.js @@ -37,5 +37,3 @@ module.exports = function selectPoints(searchInfo, selectionTester) { return selection; }; - - diff --git a/src/traces/quiver/style.js b/src/traces/quiver/style.js index 30da22034c9..deb72e21718 100644 --- a/src/traces/quiver/style.js +++ b/src/traces/quiver/style.js @@ -14,5 +14,3 @@ module.exports = function style(gd, calcTrace) { s.selectAll('path.js-line') .call(Drawing.lineGroupStyle, trace.line || {}); }; - - From 7c2055f3ec54ba1d5fa6a4aaa9b041a3af606cd5 Mon Sep 17 00:00:00 2001 From: John Degner Date: Mon, 17 Nov 2025 08:58:02 -0800 Subject: [PATCH 199/241] Add quiver jasmine and image tests --- src/traces/quiver/defaults.js | 3 + src/traces/quiver/event_data.js | 8 +- src/traces/quiver/hover.js | 105 +++--- src/traces/quiver/index.js | 1 + test/image/mocks/quiver_anchor.json | 92 +++++ test/image/mocks/quiver_arrow-styling.json | 66 ++++ test/image/mocks/quiver_categorical.json | 23 ++ test/image/mocks/quiver_colorscale.json | 32 ++ .../image/mocks/quiver_custom-colorscale.json | 39 +++ test/image/mocks/quiver_simple.json | 27 ++ test/image/mocks/quiver_sizemode.json | 92 +++++ test/image/mocks/quiver_wind.json | 53 +++ test/image/mocks/quiver_zero-vectors.json | 31 ++ test/jasmine/tests/quiver_test.js | 322 ++++++++++++++++++ 14 files changed, 832 insertions(+), 62 deletions(-) create mode 100644 test/image/mocks/quiver_anchor.json create mode 100644 test/image/mocks/quiver_arrow-styling.json create mode 100644 test/image/mocks/quiver_categorical.json create mode 100644 test/image/mocks/quiver_colorscale.json create mode 100644 test/image/mocks/quiver_custom-colorscale.json create mode 100644 test/image/mocks/quiver_simple.json create mode 100644 test/image/mocks/quiver_sizemode.json create mode 100644 test/image/mocks/quiver_wind.json create mode 100644 test/image/mocks/quiver_zero-vectors.json create mode 100644 test/jasmine/tests/quiver_test.js diff --git a/src/traces/quiver/defaults.js b/src/traces/quiver/defaults.js index b1766539c26..e7e5c0e86fd 100644 --- a/src/traces/quiver/defaults.js +++ b/src/traces/quiver/defaults.js @@ -17,6 +17,9 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout var y = coerce('y'); var u = coerce('u'); var v = coerce('v'); + + // Optional scalar field for colorscale + coerce('c'); // Simple validation - check if we have the required arrays // Use Lib.isArrayOrTypedArray to support both regular arrays and typed arrays diff --git a/src/traces/quiver/event_data.js b/src/traces/quiver/event_data.js index faecde95abb..bd8507a676c 100644 --- a/src/traces/quiver/event_data.js +++ b/src/traces/quiver/event_data.js @@ -3,8 +3,8 @@ module.exports = function eventData(out, pt, trace, cd, pointNumber) { out.x = pt.x; out.y = pt.y; - out.u = trace.u[pointNumber]; - out.v = trace.v[pointNumber]; - out.pointNumber = pointNumber; - out.trace = trace; + out.u = trace.u ? trace.u[pointNumber] : undefined; + out.v = trace.v ? trace.v[pointNumber] : undefined; + + return out; }; diff --git a/src/traces/quiver/hover.js b/src/traces/quiver/hover.js index 21bfaccb68b..41c7735f145 100644 --- a/src/traces/quiver/hover.js +++ b/src/traces/quiver/hover.js @@ -2,7 +2,7 @@ var Lib = require('../../lib'); var Fx = require('../../components/fx'); -var Registry = require('../../registry'); +var getTraceColor = require('../scatter/get_trace_color'); module.exports = function hoverPoints(pointData, xval, yval, hovermode) { var cd = pointData.cd; @@ -12,64 +12,53 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode) { var xpx = xa.c2p(xval); var ypx = ya.c2p(yval); - // Find the closest arrow base point to the hover point - var minDistance = Infinity; - var closestPoint = null; - var closestIndex = -1; - - // Each cd[i] is a calcdata point object with x/y - for(var i = 0; i < cd.length; i++) { - var cdi = cd[i]; - if(cdi.x === undefined || cdi.y === undefined) continue; - - var px = xa.c2p(cdi.x); - var py = ya.c2p(cdi.y); - - var distance = Math.sqrt((xpx - px) * (xpx - px) + (ypx - py) * (ypx - py)); - - if(distance < minDistance) { - minDistance = distance; - closestPoint = cdi; - closestIndex = i; - } - } - - var maxHoverDist = pointData.distance === Infinity ? Infinity : (trace.hoverdistance || 20); - if(!closestPoint || minDistance > maxHoverDist) return; - - // Create hover point data with proper label values and spikeline support - var hoverPoint = { - x: closestPoint.x, - y: closestPoint.y, - u: trace.u ? trace.u[closestIndex] : undefined, - v: trace.v ? trace.v[closestIndex] : undefined, - text: Array.isArray(trace.text) ? trace.text[closestIndex] : trace.text, - name: trace.name || '', - trace: trace, - index: closestIndex, - // Label values for formatting - xLabelVal: closestPoint.x, - yLabelVal: closestPoint.y, - uLabelVal: trace.u ? trace.u[closestIndex] : undefined, - vLabelVal: trace.v ? trace.v[closestIndex] : undefined, - // Spikeline support - xa: pointData.xa, - ya: pointData.ya, - x0: closestPoint.x, - x1: closestPoint.x, - y0: closestPoint.y, - y1: closestPoint.y, - distance: minDistance, - spikeDistance: minDistance, - curveNumber: trace.index, - color: trace.line ? trace.line.color : 'blue' + var distfn = function(di) { + var x = xa.c2p(di.x) - xpx; + var y = ya.c2p(di.y) - ypx; + return Math.max(Math.sqrt(x * x + y * y), 1 - 3 / Math.max(3, di.mrc || 0)); }; - // Set hover text - var hovertext = trace.hovertext || trace.text; - if(hovertext && hovertext[closestIndex]) { - hoverPoint.hovertext = hovertext[closestIndex]; - } + Fx.getClosest(cd, distfn, pointData); - return [hoverPoint]; + // skip if we didn't find a close point + if(pointData.index === false) return; + + // the closest data point + var di = cd[pointData.index]; + var xc = xa.c2p(di.x, true); + var yc = ya.c2p(di.y, true); + + // now we're done using the whole `calcdata` array, replace the + // index with the original index + pointData.index = di.i; + + var u = trace.u ? trace.u[di.i] : 0; + var v = trace.v ? trace.v[di.i] : 0; + + // Build extraText to show u and v values + var extraText = 'u: ' + u + ', v: ' + v; + + Lib.extendFlat(pointData, { + color: getTraceColor(trace, di), + + x0: xc - 3, + x1: xc + 3, + xLabelVal: di.x, + + y0: yc - 3, + y1: yc + 3, + yLabelVal: di.y, + + uLabelVal: u, + vLabelVal: v, + + extraText: extraText, + + spikeDistance: Math.sqrt((xpx - xc) * (xpx - xc) + (ypx - yc) * (ypx - yc)), + hovertemplate: trace.hovertemplate + }); + + Lib.fillText(di, trace, pointData); + + return [pointData]; }; diff --git a/src/traces/quiver/index.js b/src/traces/quiver/index.js index 066d1e774f3..4237fcf810a 100644 --- a/src/traces/quiver/index.js +++ b/src/traces/quiver/index.js @@ -15,6 +15,7 @@ module.exports = { style: require('./style'), styleOnSelect: require('../scatter/style').styleOnSelect, hoverPoints: require('./hover'), + formatLabels: require('./format_labels'), eventData: require('./event_data'), selectPoints: require('./select_points'), animatable: true, diff --git a/test/image/mocks/quiver_anchor.json b/test/image/mocks/quiver_anchor.json new file mode 100644 index 00000000000..dc0a157e889 --- /dev/null +++ b/test/image/mocks/quiver_anchor.json @@ -0,0 +1,92 @@ +{ + "data": [ + { + "type": "quiver", + "name": "tail anchor", + "x": [1, 1, 1], + "y": [0, 0, 0], + "u": [1, 0, -1], + "v": [1, 1, 1], + "sizemode": "scaled", + "sizeref": 0.5, + "anchor": "tail", + "line": { + "color": "red", + "width": 2 + }, + "showscale": false, + "xaxis": "x", + "yaxis": "y" + }, + { + "type": "quiver", + "name": "tip anchor", + "x": [1, 1, 1], + "y": [1, 1, 1], + "u": [1, 0, -1], + "v": [1, 1, 1], + "sizemode": "scaled", + "sizeref": 0.5, + "anchor": "tip", + "line": { + "color": "blue", + "width": 2 + }, + "showscale": false, + "xaxis": "x2", + "yaxis": "y2" + }, + { + "type": "quiver", + "name": "center anchor", + "x": [1, 1, 1], + "y": [2, 2, 2], + "u": [1, 0, -1], + "v": [1, 1, 1], + "sizemode": "scaled", + "sizeref": 0.5, + "anchor": "center", + "line": { + "color": "green", + "width": 2 + }, + "showscale": false, + "xaxis": "x3", + "yaxis": "y3" + } + ], + "layout": { + "width": 900, + "height": 400, + "showlegend": true, + "xaxis": { + "domain": [0, 0.3], + "range": [-0.5, 2.5], + "title": {"text": "tail anchor"} + }, + "yaxis": { + "domain": [0, 1], + "range": [-0.5, 1.5] + }, + "xaxis2": { + "domain": [0.35, 0.65], + "range": [-0.5, 2.5], + "title": {"text": "tip anchor"} + }, + "yaxis2": { + "domain": [0, 1], + "anchor": "x2", + "range": [0, 2] + }, + "xaxis3": { + "domain": [0.7, 1], + "range": [-0.5, 2.5], + "title": {"text": "center anchor"} + }, + "yaxis3": { + "domain": [0, 1], + "anchor": "x3", + "range": [1, 3] + } + } +} diff --git a/test/image/mocks/quiver_arrow-styling.json b/test/image/mocks/quiver_arrow-styling.json new file mode 100644 index 00000000000..d080d62515c --- /dev/null +++ b/test/image/mocks/quiver_arrow-styling.json @@ -0,0 +1,66 @@ +{ + "data": [ + { + "type": "quiver", + "name": "small arrows", + "x": [0, 1, 2], + "y": [0, 0, 0], + "u": [1, 1, 1], + "v": [1, 1, 1], + "sizemode": "scaled", + "sizeref": 0.5, + "arrowsize": 0.5, + "anchor": "tail", + "line": { + "color": "red", + "width": 1 + }, + "showscale": false + }, + { + "type": "quiver", + "name": "medium arrows", + "x": [0, 1, 2], + "y": [1, 1, 1], + "u": [1, 1, 1], + "v": [1, 1, 1], + "sizemode": "scaled", + "sizeref": 0.5, + "arrowsize": 1.0, + "anchor": "tail", + "line": { + "color": "blue", + "width": 2 + }, + "showscale": false + }, + { + "type": "quiver", + "name": "large arrows", + "x": [0, 1, 2], + "y": [2, 2, 2], + "u": [1, 1, 1], + "v": [1, 1, 1], + "sizemode": "scaled", + "sizeref": 0.5, + "arrowsize": 2.0, + "anchor": "tail", + "line": { + "color": "green", + "width": 3 + }, + "showscale": false + } + ], + "layout": { + "width": 500, + "height": 600, + "showlegend": true, + "xaxis": { + "range": [-0.5, 2.5] + }, + "yaxis": { + "range": [-0.5, 2.5] + } + } +} diff --git a/test/image/mocks/quiver_categorical.json b/test/image/mocks/quiver_categorical.json new file mode 100644 index 00000000000..776b03ccd3b --- /dev/null +++ b/test/image/mocks/quiver_categorical.json @@ -0,0 +1,23 @@ +{ + "data": [ + { + "type": "quiver", + "x": ["A", "B", "C", "A", "B", "C", "A", "B", "C"], + "y": ["X", "X", "X", "Y", "Y", "Y", "Z", "Z", "Z"], + "u": [1, 0, -1, 1, 0, -1, 1, 0, -1], + "v": [1, 1, 1, 0, 0, 0, -1, -1, -1], + "sizemode": "scaled", + "sizeref": 0.5, + "anchor": "tail", + "line": { + "width": 2 + }, + "showscale": false + } + ], + "layout": { + "title": {"text": "Quiver with Categorical Axes"}, + "width": 500, + "height": 500 + } +} diff --git a/test/image/mocks/quiver_colorscale.json b/test/image/mocks/quiver_colorscale.json new file mode 100644 index 00000000000..40987cc87c7 --- /dev/null +++ b/test/image/mocks/quiver_colorscale.json @@ -0,0 +1,32 @@ +{ + "data": [ + { + "type": "quiver", + "x": [0, 1, 2, 0, 1, 2, 0, 1, 2], + "y": [0, 0, 0, 1, 1, 1, 2, 2, 2], + "u": [1, 2, 3, 1, 2, 3, 1, 2, 3], + "v": [1, 1, 1, 2, 2, 2, 3, 3, 3], + "sizemode": "scaled", + "sizeref": 0.3, + "anchor": "tail", + "colorscale": "Viridis", + "showscale": true, + "line": { + "width": 2 + }, + "colorbar": { + "title": {"text": "Magnitude"} + } + } + ], + "layout": { + "width": 600, + "height": 500, + "xaxis": { + "range": [-0.5, 2.5] + }, + "yaxis": { + "range": [-0.5, 2.5] + } + } +} diff --git a/test/image/mocks/quiver_custom-colorscale.json b/test/image/mocks/quiver_custom-colorscale.json new file mode 100644 index 00000000000..5a29f3e315b --- /dev/null +++ b/test/image/mocks/quiver_custom-colorscale.json @@ -0,0 +1,39 @@ +{ + "data": [ + { + "type": "quiver", + "x": [0, 1, 2, 0, 1, 2, 0, 1, 2], + "y": [0, 0, 0, 1, 1, 1, 2, 2, 2], + "u": [0.5, 1.5, 2.5, 0.5, 1.5, 2.5, 0.5, 1.5, 2.5], + "v": [0.5, 0.5, 0.5, 1.5, 1.5, 1.5, 2.5, 2.5, 2.5], + "c": [1, 2, 3, 2, 3, 4, 3, 4, 5], + "sizemode": "scaled", + "sizeref": 0.25, + "anchor": "tail", + "colorscale": [ + [0, "rgb(0,0,255)"], + [0.5, "rgb(0,255,0)"], + [1, "rgb(255,0,0)"] + ], + "showscale": true, + "line": { + "width": 2 + }, + "colorbar": { + "title": {"text": "Custom Field"}, + "x": 1.02 + } + } + ], + "layout": { + "title": {"text": "Quiver with Custom Scalar Field (c)"}, + "width": 600, + "height": 500, + "xaxis": { + "range": [-0.5, 2.5] + }, + "yaxis": { + "range": [-0.5, 2.5] + } + } +} diff --git a/test/image/mocks/quiver_simple.json b/test/image/mocks/quiver_simple.json new file mode 100644 index 00000000000..3b9edbf5f78 --- /dev/null +++ b/test/image/mocks/quiver_simple.json @@ -0,0 +1,27 @@ +{ + "data": [ + { + "type": "quiver", + "x": [0, 1, 2, 0, 1, 2, 0, 1, 2], + "y": [0, 0, 0, 1, 1, 1, 2, 2, 2], + "u": [1, 0, -1, 1, 0, -1, 1, 0, -1], + "v": [0, 1, 0, 0, 1, 0, 0, 1, 0], + "sizemode": "scaled", + "sizeref": 0.5, + "anchor": "tail", + "line": { + "width": 2 + } + } + ], + "layout": { + "width": 500, + "height": 500, + "xaxis": { + "range": [-0.5, 2.5] + }, + "yaxis": { + "range": [-0.5, 2.5] + } + } +} diff --git a/test/image/mocks/quiver_sizemode.json b/test/image/mocks/quiver_sizemode.json new file mode 100644 index 00000000000..4a8ade18ebd --- /dev/null +++ b/test/image/mocks/quiver_sizemode.json @@ -0,0 +1,92 @@ +{ + "data": [ + { + "type": "quiver", + "name": "scaled", + "x": [0, 1, 2], + "y": [0, 0, 0], + "u": [1, 2, 3], + "v": [1, 1, 1], + "sizemode": "scaled", + "sizeref": 0.3, + "anchor": "tail", + "line": { + "color": "red", + "width": 2 + }, + "showscale": false, + "xaxis": "x", + "yaxis": "y" + }, + { + "type": "quiver", + "name": "absolute", + "x": [0, 1, 2], + "y": [1, 1, 1], + "u": [1, 2, 3], + "v": [1, 1, 1], + "sizemode": "absolute", + "sizeref": 0.3, + "anchor": "tail", + "line": { + "color": "blue", + "width": 2 + }, + "showscale": false, + "xaxis": "x2", + "yaxis": "y2" + }, + { + "type": "quiver", + "name": "raw", + "x": [0, 1, 2], + "y": [2, 2, 2], + "u": [0.3, 0.6, 0.9], + "v": [0.3, 0.3, 0.3], + "sizemode": "raw", + "sizeref": 1, + "anchor": "tail", + "line": { + "color": "green", + "width": 2 + }, + "showscale": false, + "xaxis": "x3", + "yaxis": "y3" + } + ], + "layout": { + "width": 800, + "height": 400, + "showlegend": true, + "xaxis": { + "domain": [0, 0.3], + "range": [-0.5, 2.5], + "title": {"text": "scaled"} + }, + "yaxis": { + "domain": [0, 1], + "range": [-0.5, 0.5] + }, + "xaxis2": { + "domain": [0.35, 0.65], + "range": [-0.5, 2.5], + "title": {"text": "absolute"} + }, + "yaxis2": { + "domain": [0, 1], + "anchor": "x2", + "range": [0.5, 1.5] + }, + "xaxis3": { + "domain": [0.7, 1], + "range": [-0.5, 2.5], + "title": {"text": "raw"} + }, + "yaxis3": { + "domain": [0, 1], + "anchor": "x3", + "range": [1.5, 2.5] + } + } +} diff --git a/test/image/mocks/quiver_wind.json b/test/image/mocks/quiver_wind.json new file mode 100644 index 00000000000..9ae94159d0e --- /dev/null +++ b/test/image/mocks/quiver_wind.json @@ -0,0 +1,53 @@ +{ + "data": [ + { + "type": "quiver", + "name": "Wind field", + "x": [0, 0.5, 1, 1.5, 2, 2.5, 3, + 0, 0.5, 1, 1.5, 2, 2.5, 3, + 0, 0.5, 1, 1.5, 2, 2.5, 3, + 0, 0.5, 1, 1.5, 2, 2.5, 3, + 0, 0.5, 1, 1.5, 2, 2.5, 3], + "y": [0, 0, 0, 0, 0, 0, 0, + 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, + 1, 1, 1, 1, 1, 1, 1, + 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, + 2, 2, 2, 2, 2, 2, 2], + "u": [1, 1.5, 2, 2.5, 3, 2.5, 2, + 0.8, 1.2, 1.8, 2.2, 2.8, 2.2, 1.8, + 0.5, 1, 1.5, 2, 2.5, 2, 1.5, + 0.3, 0.8, 1.2, 1.8, 2.2, 1.8, 1.2, + 0.1, 0.5, 1, 1.5, 2, 1.5, 1], + "v": [0.2, 0.3, 0.5, 0.8, 1, 0.8, 0.5, + 0.5, 0.8, 1, 1.2, 1.5, 1.2, 1, + 0.8, 1.2, 1.5, 1.8, 2, 1.8, 1.5, + 0.5, 0.8, 1.2, 1.5, 1.8, 1.5, 1.2, + 0.2, 0.5, 0.8, 1.2, 1.5, 1.2, 0.8], + "sizemode": "scaled", + "sizeref": 0.2, + "anchor": "center", + "colorscale": "Jet", + "showscale": true, + "line": { + "width": 1.5 + }, + "colorbar": { + "title": {"text": "Speed"}, + "x": 1.02 + } + } + ], + "layout": { + "title": {"text": "Vector Wind Field Visualization"}, + "width": 700, + "height": 600, + "xaxis": { + "title": {"text": "X"}, + "range": [-0.2, 3.2] + }, + "yaxis": { + "title": {"text": "Y"}, + "range": [-0.2, 2.2] + } + } +} diff --git a/test/image/mocks/quiver_zero-vectors.json b/test/image/mocks/quiver_zero-vectors.json new file mode 100644 index 00000000000..aeb8760aeb2 --- /dev/null +++ b/test/image/mocks/quiver_zero-vectors.json @@ -0,0 +1,31 @@ +{ + "data": [ + { + "type": "quiver", + "name": "Mixed vectors", + "x": [0, 1, 2, 3, 4], + "y": [1, 1, 1, 1, 1], + "u": [1, 0, 0, 1, 2], + "v": [1, 0, 0, 1, 2], + "sizemode": "scaled", + "sizeref": 0.5, + "anchor": "tail", + "line": { + "color": "purple", + "width": 2 + }, + "showscale": false + } + ], + "layout": { + "title": {"text": "Quiver with Zero-Length Vectors"}, + "width": 600, + "height": 400, + "xaxis": { + "range": [-0.5, 4.5] + }, + "yaxis": { + "range": [0, 2] + } + } +} diff --git a/test/jasmine/tests/quiver_test.js b/test/jasmine/tests/quiver_test.js new file mode 100644 index 00000000000..377e34db6c4 --- /dev/null +++ b/test/jasmine/tests/quiver_test.js @@ -0,0 +1,322 @@ +var Plotly = require('../../../lib/index'); +var Lib = require('../../../src/lib'); +var d3Select = require('../../strict-d3').select; + +var supplyAllDefaults = require('../assets/supply_defaults'); +var createGraphDiv = require('../assets/create_graph_div'); +var destroyGraphDiv = require('../assets/destroy_graph_div'); + +var delay = require('../assets/delay'); +var mouseEvent = require('../assets/mouse_event'); + +var customAssertions = require('../assets/custom_assertions'); +var assertHoverLabelContent = customAssertions.assertHoverLabelContent; + +describe('Test quiver defaults', function() { + var gd; + + function makeGD() { + return { + data: [{ + type: 'quiver', + x: [1, 2], + y: [1, 2], + u: [1, 2], + v: [1, 2] + }], + layout: {} + }; + } + + it('should not set `visible: false` for traces with x,y arrays', function() { + gd = makeGD(); + supplyAllDefaults(gd); + expect(gd._fullData[0].visible).toBe(true); + }); + + it('should set `visible: false` for traces missing x or y arrays', function() { + var keysToDelete = ['x', 'y']; + + keysToDelete.forEach(function(k) { + gd = makeGD(); + delete gd.data[0][k]; + + supplyAllDefaults(gd); + expect(gd._fullData[0].visible).toBe(false, 'missing array ' + k); + }); + }); + + it('should set `visible: false` for traces with empty x or y arrays', function() { + var keysToEmpty = ['x', 'y']; + + keysToEmpty.forEach(function(k) { + gd = makeGD(); + gd.data[0][k] = []; + + supplyAllDefaults(gd); + expect(gd._fullData[0].visible).toBe(false, 'empty array ' + k); + }); + }); + + it('should default u,v to zeros when missing', function() { + gd = { + data: [{ + type: 'quiver', + x: [1, 2, 3], + y: [1, 2, 3] + }], + layout: {} + }; + + supplyAllDefaults(gd); + expect(gd._fullData[0].visible).toBe(true); + expect(gd._fullData[0].u).toEqual([0, 0, 0]); + expect(gd._fullData[0].v).toEqual([0, 0, 0]); + }); + + it('should default u,v to zeros when empty', function() { + gd = { + data: [{ + type: 'quiver', + x: [1, 2, 3], + y: [1, 2, 3], + u: [], + v: [] + }], + layout: {} + }; + + supplyAllDefaults(gd); + expect(gd._fullData[0].visible).toBe(true); + expect(gd._fullData[0].u).toEqual([0, 0, 0]); + expect(gd._fullData[0].v).toEqual([0, 0, 0]); + }); + + it('should set sizemode and sizeref defaults correctly', function() { + gd = makeGD(); + supplyAllDefaults(gd); + expect(gd._fullData[0].sizemode).toBe('scaled'); + expect(gd._fullData[0].sizeref).toBe(0.5); + }); + + it('should set sizeref to 1 when sizemode is raw', function() { + gd = makeGD(); + gd.data[0].sizemode = 'raw'; + supplyAllDefaults(gd); + expect(gd._fullData[0].sizemode).toBe('raw'); + expect(gd._fullData[0].sizeref).toBe(1); + }); + + it('should set anchor default to tail', function() { + gd = makeGD(); + supplyAllDefaults(gd); + expect(gd._fullData[0].anchor).toBe('tail'); + }); +}); + +describe('Test quiver calc', function() { + var gd; + + beforeEach(function() { + gd = createGraphDiv(); + }); + + afterEach(function() { + Plotly.purge(gd); + destroyGraphDiv(); + }); + + it('should calculate data correctly for simple vectors', function(done) { + Plotly.newPlot(gd, [{ + type: 'quiver', + x: [0, 1, 2], + y: [0, 1, 2], + u: [1, 0, -1], + v: [0, 1, 0] + }]).then(function() { + var calcData = gd.calcdata[0]; + expect(calcData.length).toBe(3); + expect(calcData[0].x).toBe(0); + expect(calcData[0].y).toBe(0); + expect(calcData[1].x).toBe(1); + expect(calcData[1].y).toBe(1); + expect(calcData[2].x).toBe(2); + expect(calcData[2].y).toBe(2); + }) + .then(done, done.fail); + }); +}); + +describe('Test quiver interactions', function() { + var gd; + + beforeEach(function() { + gd = createGraphDiv(); + }); + + afterEach(function() { + Plotly.purge(gd); + destroyGraphDiv(); + }); + + it('should add/clear svg objects correctly', function(done) { + Plotly.newPlot(gd, [{ + type: 'quiver', + x: [1, 2], + y: [1, 2], + u: [1, 0], + v: [0, 1] + }, { + type: 'quiver', + x: [3, 4], + y: [3, 4], + u: [1, 1], + v: [1, 1] + }]).then(function() { + var quiverLayers = gd._fullLayout._plots.xy.plot.selectAll('.trace.quiver'); + expect(quiverLayers.size()).toBe(2); + + return Plotly.deleteTraces(gd, [0]); + }) + .then(function() { + var quiverLayers = gd._fullLayout._plots.xy.plot.selectAll('.trace.quiver'); + expect(quiverLayers.size()).toBe(1); + + return Plotly.deleteTraces(gd, [0]); + }) + .then(function() { + var quiverLayers = gd._fullLayout._plots.xy.plot.selectAll('.trace.quiver'); + expect(quiverLayers.size()).toBe(0); + }) + .then(done, done.fail); + }); + + it('should restyle arrow properties', function(done) { + Plotly.newPlot(gd, [{ + type: 'quiver', + x: [1, 2], + y: [1, 2], + u: [1, 0], + v: [0, 1], + sizeref: 0.5 + }]).then(function() { + expect(gd._fullData[0].sizeref).toBe(0.5); + return Plotly.restyle(gd, 'sizeref', 1.5); + }) + .then(function() { + expect(gd._fullData[0].sizeref).toBe(1.5); + return Plotly.restyle(gd, 'anchor', 'tip'); + }) + .then(function() { + expect(gd._fullData[0].anchor).toBe('tip'); + }) + .then(done, done.fail); + }); + + it('should display hover labels', function(done) { + var fig = { + data: [{ + type: 'quiver', + x: [1, 2, 3], + y: [1, 2, 3], + u: [1, 0, -1], + v: [0, 1, 0], + showscale: false + }], + layout: { + margin: {l: 0, t: 0, r: 0, b: 0}, + width: 400, + height: 400 + } + }; + + Plotly.newPlot(gd, fig) + .then(function() { + mouseEvent('mousemove', 200, 200); + }) + .then(delay(20)) + .then(function() { + assertHoverLabelContent({ + nums: '(2, 2)\nu: 0, v: 1' + }); + }) + .then(done, done.fail); + }); + + it('should render multiple quiver traces', function(done) { + Plotly.newPlot(gd, [{ + type: 'quiver', + name: 'trace A', + x: [1, 2], + y: [1, 2], + u: [1, 0], + v: [0, 1], + line: {color: 'red'}, + showscale: false + }, { + type: 'quiver', + name: 'trace B', + x: [3, 4], + y: [3, 4], + u: [-1, 0], + v: [0, -1], + line: {color: 'blue'}, + showscale: false + }], { + margin: {l: 0, t: 0, r: 0, b: 0}, + width: 400, + height: 400 + }) + .then(function() { + var quiverLayers = gd._fullLayout._plots.xy.plot.selectAll('.trace.quiver'); + expect(quiverLayers.size()).toBe(2); + }) + .then(done, done.fail); + }); + + it('should handle sizemode changes', function(done) { + Plotly.newPlot(gd, [{ + type: 'quiver', + x: [0, 1, 2], + y: [0, 1, 2], + u: [1, 2, 3], + v: [1, 2, 3], + sizemode: 'scaled', + sizeref: 0.5 + }]).then(function() { + expect(gd._fullData[0].sizemode).toBe('scaled'); + return Plotly.restyle(gd, 'sizemode', 'absolute'); + }) + .then(function() { + expect(gd._fullData[0].sizemode).toBe('absolute'); + return Plotly.restyle(gd, 'sizemode', 'raw'); + }) + .then(function() { + expect(gd._fullData[0].sizemode).toBe('raw'); + }) + .then(done, done.fail); + }); + + it('should handle anchor changes', function(done) { + Plotly.newPlot(gd, [{ + type: 'quiver', + x: [1, 2], + y: [1, 2], + u: [1, 1], + v: [1, 1], + anchor: 'tail' + }]).then(function() { + expect(gd._fullData[0].anchor).toBe('tail'); + return Plotly.restyle(gd, 'anchor', 'tip'); + }) + .then(function() { + expect(gd._fullData[0].anchor).toBe('tip'); + return Plotly.restyle(gd, 'anchor', 'center'); + }) + .then(function() { + expect(gd._fullData[0].anchor).toBe('center'); + }) + .then(done, done.fail); + }); +}); + From 00638de29922cd26ddbd09e761e697d14390337b Mon Sep 17 00:00:00 2001 From: John Degner Date: Mon, 17 Nov 2025 10:50:04 -0800 Subject: [PATCH 200/241] Generate baseline images for quiver tests --- test/image/baselines/quiver_anchor.png | Bin 0 -> 26453 bytes test/image/baselines/quiver_arrow-styling.png | Bin 0 -> 22306 bytes test/image/baselines/quiver_categorical.png | Bin 0 -> 14784 bytes test/image/baselines/quiver_colorscale.png | Bin 0 -> 17292 bytes .../baselines/quiver_custom-colorscale.png | Bin 0 -> 21053 bytes test/image/baselines/quiver_simple.png | Bin 0 -> 13934 bytes test/image/baselines/quiver_sizemode.png | Bin 0 -> 28492 bytes test/image/baselines/quiver_wind.png | Bin 0 -> 32997 bytes test/image/baselines/quiver_zero-vectors.png | Bin 0 -> 14882 bytes 9 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 test/image/baselines/quiver_anchor.png create mode 100644 test/image/baselines/quiver_arrow-styling.png create mode 100644 test/image/baselines/quiver_categorical.png create mode 100644 test/image/baselines/quiver_colorscale.png create mode 100644 test/image/baselines/quiver_custom-colorscale.png create mode 100644 test/image/baselines/quiver_simple.png create mode 100644 test/image/baselines/quiver_sizemode.png create mode 100644 test/image/baselines/quiver_wind.png create mode 100644 test/image/baselines/quiver_zero-vectors.png diff --git a/test/image/baselines/quiver_anchor.png b/test/image/baselines/quiver_anchor.png new file mode 100644 index 0000000000000000000000000000000000000000..463f0fb85dfaf6f6b16f0edc8dba648db3e7567d GIT binary patch literal 26453 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 literal 0 HcmV?d00001 diff --git a/test/image/baselines/quiver_arrow-styling.png b/test/image/baselines/quiver_arrow-styling.png new file mode 100644 index 0000000000000000000000000000000000000000..d6fe39cceb5344f9f2e41d921f097468789f2f3e GIT binary patch literal 22306 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 ip$qxHREOoIm$|cinZryZFIcA@BR{UAuO@ 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 literal 0 HcmV?d00001 diff --git a/test/image/baselines/quiver_simple.png b/test/image/baselines/quiver_simple.png new file mode 100644 index 0000000000000000000000000000000000000000..fb0a7e451f9db87f045c4e133b48f50821218847 GIT binary patch literal 13934 zcmeHudpwi<|36tFg;KdCqf{!S`*x}rmZTCoA?FTQno-W?Fij|u4p_=zkt899-KEb z-n?<=MgakV&1X)ZyeJ?b$X@*u*#L|*Pbc;dRTeS~y4QJcl-T!^k z7BQERRhMnLbKv^B8Z2m=kMm=CLIX`OqU;E!@z{|Hap{1R#ABq91s)l;HSNi4Qtv{r zp0J)SrqVqJ_|!;)6a)lC3`i@aG@>nkaQ+A@k62=-l(am;j9Z? zI-mc3<3yQohtQ7)MtYX2leEr$|-A)9h zb8YsAGOWxfmk#MQ6pJDgKDPKCg|=(*hFT@8TPw$W#k@&w_vV(q8~$p#7d5uy<{jUC zyqW@8LfI)F+zDqjq)kRGeqJ5|owDykk(?PtGe$dPIk&B%s3{FLsKjADz}#Ho6l7UY z2cohye;F^&$BpDnCAX^}$rY2q>=Kk3cnLB-OSk=XIPTl7f|@ZpHQn>ITxZZ2-~345 zlqQU43$-pAzJ8E!3!QS2Wu0qEDFh{yREgq=tP-Y?nq!d#DlyL8;BU9CZAO`s+v*)0 z36_=gmZ<-vE`tA1(Te%Ss4hBJjmh2sg8UZ$;P45GRCPAW6P?R^3}Y;c11B+z-7JC^ zcK$8{vcCc*Q|5+Pn;^eMf}{VMb@lhLSm6Q6jVY~994P%Y|IUlqgV@wIV!^jtbaI4&F} z>3uB#WbX)uO4Pin-2MMan8b!GRS3dO=geY;8!^K@oN`-aUsopk)Bikuq~ zI`dE~@NsI6?S@#Y-bqzPWP4LSHA0FyFq55A`}hfUrC>{zgf3Kn4t``Kw{9iy{heNS zc=uAS&$#t5S0LXCKKDW)xO!fDPO{=NsHsu|h!MCIMv zq5@ZotsEgJb5IQ(r<;U@9mM1Dv;-CF>twwpx8*MkX`3&Ov0q;zW^3$SAc6C7)`dfi z?_MFZys>KO1V@)(_tMsl%7>hN$G(R1NVP825~M*M?6}v?#9A%+_ay@;Zic2j4OIz$ z#CvRY{`h&9OvVW@9&7)&`rz3tc+>oKF)^{iV3Ar>I8bu>eed_Lw5IaDx#LIom(SDS z1IAzoQX^WOA-AZ%gMP!$qJ&}3HOeimjj^Ck%3_3Z?F&0@@%q!b`qB^cV*~8}`^l_gG?y?G}5A?e(33M+^ z5jBKY+`yT72XHze^WbU%e^MXAUEdJdzgJ^ud5`F#(Y7E~we)-0`7V#HsO`#b zjW0B{g1FPOfAp3hUK;6d6cZarmDh56p5sXBsWNYZNwSla8SM4n+S_g6@a*l<(te9} zNebGa7cXDtl$21^x^;WRN41jt$1vz5~DdaLfft5 zs=CY954@G7+SGgU0EA7%bX(=xx!RVv9p10L4g^s*bJdSpoiQdRh9%sahM`6RxY`7BxY)kj*ZRVRC!4{#9m8J} zZz!I6c)FTkNb%9cQByxujSm;uUcK5TMa{8#Fm>@D!SiqEAeU7W+gtnsLoK$&y4{MO zEA78U&$x&j0zoqR3+-NFVWKLCNGWgofm+_2Xf}Vk5rAAfH7gf+*p)(G`sP+IAQFn}8iZt5=X!Z}SN3iZcLu7TMbzn_o?6Ish~(6F`xq=D_lcwZ2uG6s;@) zk6%ppu#G0th(4-|3B}wDKO(}^><|=lDdCye ze#WuNT=h8YcqyI|54O=%mLKdeyjz%PpDT1j04X8(I2EixibV%O2D zCJ8F}^2>d~T0UdnHpyq8egir}|C?o+zwTK?pu4(|I%O9bQxne#~g3TIN9 z#0_8N^>XoJhtMg4g?4fmIZbfOD_Ru1qgD%k?oeHu^I)4Dy2rtIwaqR=;WXQKmGtNL zHYi(3<9|aResyp}`V2+={Pe;|sx7mJfLNNJWTie1h)5AE+O=!z%Bf&~dXoCH=tGBc zMz-I`2^=~-?r?06uvMJAqA0$zZVcjEfW&DAEk6RXsGgz=kodNurWF|rEcn6RJTw+| zjbTMvj0Zkj*ecHhz&qEkeAYn~JzMha0`OUr4E;C_h1j9F#mtuba*Vc&|ci01?~X-VVF7fnX@lXZm#}HN2QRyu8QC&U1F1 zas|7-Z~l1iiCQXMhCf2IAf2lwHaZ45De;C_eZG@=LrPS5$J@U7#jz6vxd~^NL^5H+414VOqk9Av*eTyEagGf$qQuSR|oXYT)UHyRl)Lkj?sZ z*&s@Ebo88isV@FHIwgFQgC}{NrMP&EgJ-PXw)QIooe&Z`+mVjkQOnHW-0wA)Pke{z zPPclJhRqz+Zs6|YjL~6J;nawE)UeX?o9>|?NPZ^cbHDqdhx||e>%{<{%iy2f)7(H4Z6tEXcmX?wu ziKBb&__`wZLd~B|icg%S=m@Bi!6zuQ=S~YBj>P&2*ld(PLAi7Q@-ki&sZ}&Hdj*}6 z>QGPy?8D7DY_JKXbzCpKQ51RV`OKmMI;9=?2mUBJWy_my@+T>mP+~z40dy`ZOcJ2N zfIR-HcEevSER&rf_3xvr#F7p{5GrxXIW1a}eUden3J{YzgE9aW2GC-Z8$y4vT(#-| z;iPN0Mog_ydjFtU{}+>?Psgw*cC+z3cObUwiK4L^clvwD&E`F_N3MQ6){R4SxirUq z`t*rA60up(v`&^+PI5Q*_I`*z3WKCR6L45{I{r>vId`x_AxT`@~*SD>8=nX#T`O0@A_LJd3N+ zZib)$D-4IX=fd*Z^6<2>w`4glh)3C;Bj`TaVa$0^7O$923Z}(M~&AC^^D1M6T+XZfIY= z9zUm&f0qM!^{X(~icycHi3Ug25_F3opZBV?mEXfRZpgVwk!-BKh-~{CtT7!Z_8>Yb z^#pZB)rOGAdID4((k6RN{#4WKR5Gkg|0XGEfLFr**ep+iSErM1XsYEzV-CEuarTj4 z?nFA=(L_}~d~S(8ykEr_V?yx)IXJ68t$z3UKCWAI>(uhIq3Dt^wP!7xMgF6Zw^*~P zF#WBp`YpEnVsuqfO6~z{FX?|Y8;Ky({O8P9#jKf4|ITa<0JT~-<<*)bwWgQ-rCk2S z*Zp@WjVXddFJA0i^(;(w7S=A#jl))b5*N}>IZvNnF$CDRs#RsmBujpc)#R(%hdsUbAv{6u19dNCk%En>{| zos7aFt^g`Ipc&uW9v2T6W1zE@7<}>kjN!+cmdyNTZRI&YT6hmg3Cwk$>Qd2ICGydG zqM(&MJ8W%i+{V6T&G$#E+2lD8`qSkD2Dg;+7RM)Fz;i{vgSj-hRi(-$*lBjzcWIl& z<&>zUAKKRwfO0xB-PGi8q!H?oqkj#M!b@s`%X6+V%c&Q=O65`n{qml04dtQcbhR#V z)pHaz^dw-kummVZvOa$~Q86`WrjDDDXX{>;VF-{f8h-PW^L_S(@6*yw^cTE@i(6OK zGHb{mZDh@oyc#o8%3_NEAZcRS-MWK)px=jC;S$qUKCsj`k>?IE>DM2etLVR_ye(k8 z67qU8B``ETLE3e3&D#oY5|RW(Lh_QMf~VpU;$=Jnq1`*P+7OkSe9=1`W>9sFFi zP40Plhqn>p>#S-;CE3v*bUX*|Hzw<7htv@!;j_byzIFRB9qiH896*>G0LpBcYp3CS zFL7n_cyoH>$F>ywXLqIXoIWOs&^K4YmUUC&vs~b#e0ir;Nlr^cHId>f74e zYssqsGmPX&!uMrKe4H!+;BzhC?HKYko!2~~T>r-6Ot(ZuWXd~RTvfwX_9jY>bz#jS zhbd3`3=Xb`AVqndu+-wGPp9>-W^7}h9{OIaUqX#IK7MBbXKqyC>9m~1(LiNrGGIEf zdTn4rCa;Y{74E?q^-~oXTVHsFJOM$3*4M_$cR+ifg?{;Pk+O7ND{3$zmiR zaxI$bObY5R9eIRY_oM=!y={Fx{oP!CJKyX(DSFjQQZA0 z#tRT3eQ;*v4hVv>^JbqFK^oU(i~~pZ#KN8gEG$Na2{xe2nw_CapQIF?N~jl>WM95T z4su1O9Lo-ZJjIS=Cw|R~#=@EoH5zYaYjlyX`T-=(YhC?&*pV{qro*vVn7{+WhgdJE zAXULNG`!{^`RV5QZ>@>{ZVmeX32^>bK<0m{u_-XHsOd`Kl515FUMIgMs@L)s+etK~ z)S#`T!JhfztCj1@=cu;i2R^^TlcIIWWv9_SGROrMK%B{gk9%zg5!Bf&vmMwlp3lx+ z|AEbcOOv?CyTah3ULF4m7YRa^@2^}NsEx(dJyXgYF}rr@hY$S=eASlOLkL6wh>4{> z$xvRDnl5r}bps4DRGdd|Ui=P-VXB7fQ`6^1cIORw-uYqCd<+JDg=Ft8)tM@-8g5En zP3kfFLp-XjN9T=Lh)XlsNUe?h{P!xLo_Of^PTbcQ?VW$RR3ER502l)4%_yY1qE`5- z`~9w+)M*4oaXK}4J`u9WNcWxYg91*=ha`z$pkJbPbo_>zRz~9Hg|I{O64&Y&@tLcVCBUM;<9ZnGWgsnM<#b%~DrTbS{sS?r z-qT$`2ZqIfdH*^l_+eSyPg`##VBh30kvb$aaXKyvEJ*k>o0&s(l~T*|+Jw z{)LPcDx+&54b$C41Uy@A7(351%N+V_hEXUMzHq#^4e$+p+i}?LCZOv+A~hxemmCWK zX5!IE12&2FkoPnh;Axrwzl#)q*-!%Fq}_cx%pR~JOG+skP^#}G`;;~FwKNwKXshno zcz&%hB9LfhP6-ZZIA>evV!DhOJIRmkWL%nRHkk&DQt#vA;=W9L3{Tl(K=EPTV|0nj z2TfOUFHN~F_iB&7XlRU=Vt3yrFJ%G!NG!i4SwesLNJs*B#oWz5OO08a%vmRje}iMZ z12()nu<;AgXtb}%Nj_rm%M*O`ouLPSbn@Wp(CZ&NO+e6b9f*$6ZvFF(i?uI-_gU5! mVQmq9z5(?=e<$$eRrc79CsoG~&xnS0_Y`u_mMUnH3T literal 0 HcmV?d00001 diff --git a/test/image/baselines/quiver_sizemode.png b/test/image/baselines/quiver_sizemode.png new file mode 100644 index 0000000000000000000000000000000000000000..b914c5129b97027134f23a773feb0ec0072e9bed GIT binary patch literal 28492 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 X75!SQl}aelf{&-WH(9u0_p$#15aZD> literal 0 HcmV?d00001 diff --git a/test/image/baselines/quiver_wind.png b/test/image/baselines/quiver_wind.png new file mode 100644 index 0000000000000000000000000000000000000000..3e799eb8a8b87092332e0fc1566b6cf6db7966e4 GIT binary patch literal 32997 zcmeFadstH0|2C|dI%BC*O<5jt%IWARm3dB?rkR{Fv!kY@Xqu#gm?okqXr@k?+EFW0 zYs^j_P*F$$@sL@0AT>om0W(Dd1SLS_^z6RJd4JFE`#kUUT<>+ge?0x+b;)M$wLfd^ zwb%Nrd)@cV_x_{Ck@&i(v->*b|led>~LA8h>Y#|InHdsps_*!07L zjlZ8+dKA3rkEbp_$Nu~se(85-Z|(TiV1?VYYZsCihcGvyp4*NFJ<%d>a89b<2il7r zVg4ei@MbUGx7h9Elu#(#z5e?LI{I6G)-^hkw&eS#eM|IPAZ4~)F-L(<|M((YUk7Bk z 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�E2DfB+hma`Jbm9Pi@lL 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

    iZRV*Fxu7L?)S1oxrA~lHfGEiCOZr= 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 literal 0 HcmV?d00001 From df33638d1cd8120d1b87aa954186a499a0b4bee9 Mon Sep 17 00:00:00 2001 From: John Degner Date: Sat, 29 Nov 2025 18:32:56 -0800 Subject: [PATCH 201/241] Run npm run schema --- test/plot-schema.json | 17882 ++-------------------------------------- 1 file changed, 876 insertions(+), 17006 deletions(-) diff --git a/test/plot-schema.json b/test/plot-schema.json index 9c6775175b0..c869e669c43 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -14179,17024 +14179,894 @@ "description": "If *normal*, the range is computed in relation to the extrema of the input data. If *tozero*, the range extends to 0, regardless of the input data If *nonnegative*, the range is non-negative, regardless of the input data. Applies only to linear axes.", "dflt": "normal", "editType": "plot", -<<<<<<< HEAD "valType": "enumerated", "values": [ "normal", "tozero", "nonnegative" -======= - "valType": "any" - }, - { - "editType": "plot", - "valType": "any" - } - ], - "valType": "info_array" - }, - "description": "The dimensions (variables) of the parallel coordinates chart. 2..60 dimensions are supported.", - "editType": "calc", - "label": { - "description": "The shown name of the dimension.", - "editType": "plot", - "valType": "string" - }, - "multiselect": { - "description": "Do we allow multiple selection ranges or just a single range?", - "dflt": true, - "editType": "plot", - "valType": "boolean" - }, - "name": { - "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.", - "editType": "none", - "valType": "string" - }, - "range": { - "description": "The domain range that represents the full, shown axis extent. Defaults to the `values` extent. Must be an array of `[fromValue, toValue]` with finite numbers as elements.", - "editType": "plot", - "items": [ - { - "editType": "plot", - "valType": "number" - }, - { - "editType": "plot", - "valType": "number" - } - ], - "valType": "info_array" - }, - "role": "object", - "templateitemname": { - "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.", - "editType": "calc", - "valType": "string" - }, - "tickformat": { - "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*", - "dflt": "", - "editType": "plot", - "valType": "string" - }, - "ticktext": { - "description": "Sets the text displayed at the ticks position via `tickvals`.", - "editType": "plot", - "valType": "data_array" - }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, - "tickvals": { - "description": "Sets the values at which ticks on this axis appear.", - "editType": "plot", - "valType": "data_array" - }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, - "values": { - "description": "Dimension values. `values[n]` represents the value of the `n`th point in the dataset, therefore the `values` vector for all dimensions must be the same (longer vectors will be truncated). Each value must be a finite number.", - "editType": "calc", - "valType": "data_array" - }, - "valuessrc": { - "description": "Sets the source reference on Chart Studio Cloud for `values`.", - "editType": "none", - "valType": "string" - }, - "visible": { - "description": "Shows the dimension when set to `true` (the default). Hides the dimension for `false`.", - "dflt": true, - "editType": "plot", - "valType": "boolean" - } - } - }, - "role": "object" - }, - "domain": { - "column": { - "description": "If there is a layout grid, use the domain for this column in the grid for this parcoords trace .", - "dflt": 0, - "editType": "plot", - "min": 0, - "valType": "integer" - }, - "editType": "plot", - "role": "object", - "row": { - "description": "If there is a layout grid, use the domain for this row in the grid for this parcoords trace .", - "dflt": 0, - "editType": "plot", - "min": 0, - "valType": "integer" - }, - "x": { - "description": "Sets the horizontal domain of this parcoords trace (in plot fraction).", - "dflt": [ - 0, - 1 - ], - "editType": "plot", - "items": [ - { - "editType": "plot", - "max": 1, - "min": 0, - "valType": "number" - }, - { - "editType": "plot", - "max": 1, - "min": 0, - "valType": "number" - } - ], - "valType": "info_array" - }, - "y": { - "description": "Sets the vertical domain of this parcoords trace (in plot fraction).", - "dflt": [ - 0, - 1 - ], - "editType": "plot", - "items": [ - { - "editType": "plot", - "max": 1, - "min": 0, - "valType": "number" - }, - { - "editType": "plot", - "max": 1, - "min": 0, - "valType": "number" - } - ], - "valType": "info_array" - } - }, - "ids": { - "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", - "editType": "calc", - "valType": "data_array" - }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, - "labelangle": { - "description": "Sets the angle of the labels with respect to the horizontal. For example, a `tickangle` of -90 draws the labels vertically. Tilted labels with *labelangle* may be positioned better inside margins when `labelposition` is set to *bottom*.", - "dflt": 0, - "editType": "plot", - "valType": "angle" - }, - "labelfont": { - "color": { - "editType": "plot", - "valType": "color" - }, - "description": "Sets the font for the `dimension` labels.", - "editType": "plot", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "plot", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "lineposition": { - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "plot", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "role": "object", - "shadow": { - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "plot", - "valType": "string" - }, - "size": { - "editType": "plot", - "min": 1, - "valType": "number" - }, - "style": { - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "plot", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "textcase": { - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "plot", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "plot", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "plot", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "labelside": { - "description": "Specifies the location of the `label`. *top* positions labels above, next to the title *bottom* positions labels below the graph Tilted labels with *labelangle* may be positioned better inside margins when `labelposition` is set to *bottom*.", - "dflt": "top", - "editType": "plot", - "valType": "enumerated", - "values": [ - "top", - "bottom" - ] - }, - "legend": { - "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", - "dflt": "legend", - "editType": "style", - "valType": "subplotid" - }, - "legendgrouptitle": { - "editType": "style", - "font": { - "color": { - "editType": "style", - "valType": "color" - }, - "description": "Sets this legend group's title font.", - "editType": "style", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "style", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "lineposition": { - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "style", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "role": "object", - "shadow": { - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "style", - "valType": "string" - }, - "size": { - "editType": "style", - "min": 1, - "valType": "number" - }, - "style": { - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "style", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "textcase": { - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "style", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "style", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "style", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "role": "object", - "text": { - "description": "Sets the title of the legend group.", - "dflt": "", - "editType": "style", - "valType": "string" - } - }, - "legendrank": { - "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.", - "dflt": 1000, - "editType": "style", - "valType": "number" - }, - "legendwidth": { - "description": "Sets the width (in px or fraction) of the legend for this trace.", - "editType": "style", - "min": 0, - "valType": "number" - }, - "line": { - "autocolorscale": { - "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `line.colorscale`. Has an effect only if in `line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", - "dflt": false, - "editType": "calc", - "impliedEdits": {}, - "valType": "boolean" - }, - "cauto": { - "description": "Determines whether or not the color domain is computed with respect to the input data (here in `line.color`) or the bounds set in `line.cmin` and `line.cmax` Has an effect only if in `line.color` is set to a numerical array. Defaults to `false` when `line.cmin` and `line.cmax` are set by the user.", - "dflt": true, - "editType": "calc", - "impliedEdits": {}, - "valType": "boolean" - }, - "cmax": { - "description": "Sets the upper bound of the color domain. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color` and if set, `line.cmin` must be set as well.", - "dflt": null, - "editType": "calc", - "impliedEdits": { - "cauto": false - }, - "valType": "number" - }, - "cmid": { - "description": "Sets the mid-point of the color domain by scaling `line.cmin` and/or `line.cmax` to be equidistant to this point. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color`. Has no effect when `line.cauto` is `false`.", - "dflt": null, - "editType": "calc", - "impliedEdits": {}, - "valType": "number" - }, - "cmin": { - "description": "Sets the lower bound of the color domain. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color` and if set, `line.cmax` must be set as well.", - "dflt": null, - "editType": "calc", - "impliedEdits": { - "cauto": false - }, - "valType": "number" - }, - "color": { - "arrayOk": true, - "description": "Sets the line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `line.cmin` and `line.cmax` if set.", - "editType": "calc", - "valType": "color" - }, - "coloraxis": { - "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.", - "dflt": null, - "editType": "calc", - "regex": "/^coloraxis([2-9]|[1-9][0-9]+)?$/", - "valType": "subplotid" - }, - "colorbar": { - "bgcolor": { - "description": "Sets the color of padded area.", - "dflt": "rgba(0,0,0,0)", - "editType": "colorbars", - "valType": "color" - }, - "bordercolor": { - "description": "Sets the axis line color.", - "dflt": "#444", - "editType": "colorbars", - "valType": "color" - }, - "borderwidth": { - "description": "Sets the width (in px) or the border enclosing this color bar.", - "dflt": 0, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "dtick": { - "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*", - "editType": "colorbars", - "impliedEdits": { - "tickmode": "linear" - }, - "valType": "any" - }, - "editType": "colorbars", - "exponentformat": { - "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from \"femto\" f (10^-15) to \"tera\" T (10^12). *SI extended* covers instead the full SI range from \"quecto\" q (10^-30) to \"quetta\" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation.", - "dflt": "B", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "none", - "e", - "E", - "power", - "SI", - "B", - "SI extended" - ] - }, - "labelalias": { - "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax.", - "dflt": false, - "editType": "colorbars", - "valType": "any" - }, - "len": { - "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.", - "dflt": 1, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "lenmode": { - "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.", - "dflt": "fraction", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "fraction", - "pixels" - ] - }, - "minexponent": { - "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.", - "dflt": 3, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "nticks": { - "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.", - "dflt": 0, - "editType": "colorbars", - "min": 0, - "valType": "integer" - }, - "orientation": { - "description": "Sets the orientation of the colorbar.", - "dflt": "v", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "h", - "v" - ] - }, - "outlinecolor": { - "description": "Sets the axis line color.", - "dflt": "#444", - "editType": "colorbars", - "valType": "color" - }, - "outlinewidth": { - "description": "Sets the width (in px) of the axis line.", - "dflt": 1, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "role": "object", - "separatethousands": { - "description": "If \"true\", even 4-digit integers are separated", - "dflt": false, - "editType": "colorbars", - "valType": "boolean" - }, - "showexponent": { - "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.", - "dflt": "all", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "showticklabels": { - "description": "Determines whether or not the tick labels are drawn.", - "dflt": true, - "editType": "colorbars", - "valType": "boolean" - }, - "showtickprefix": { - "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.", - "dflt": "all", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "showticksuffix": { - "description": "Same as `showtickprefix` but for tick suffixes.", - "dflt": "all", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "thickness": { - "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.", - "dflt": 30, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "thicknessmode": { - "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.", - "dflt": "pixels", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "fraction", - "pixels" - ] - }, - "tick0": { - "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears.", - "editType": "colorbars", - "impliedEdits": { - "tickmode": "linear" - }, - "valType": "any" - }, - "tickangle": { - "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.", - "dflt": "auto", - "editType": "colorbars", - "valType": "angle" - }, - "tickcolor": { - "description": "Sets the tick color.", - "dflt": "#444", - "editType": "colorbars", - "valType": "color" - }, - "tickfont": { - "color": { - "editType": "colorbars", - "valType": "color" - }, - "description": "Sets the color bar's tick label font", - "editType": "colorbars", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "colorbars", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "lineposition": { - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "colorbars", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "role": "object", - "shadow": { - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "colorbars", - "valType": "string" - }, - "size": { - "editType": "colorbars", - "min": 1, - "valType": "number" - }, - "style": { - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "textcase": { - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "colorbars", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "tickformat": { - "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*", - "dflt": "", - "editType": "colorbars", - "valType": "string" - }, - "tickformatstops": { - "items": { - "tickformatstop": { - "dtickrange": { - "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*", - "editType": "colorbars", - "items": [ - { - "editType": "colorbars", - "valType": "any" - }, - { - "editType": "colorbars", - "valType": "any" - } - ], - "valType": "info_array" - }, - "editType": "colorbars", - "enabled": { - "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.", - "dflt": true, - "editType": "colorbars", - "valType": "boolean" - }, - "name": { - "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.", - "editType": "colorbars", - "valType": "string" - }, - "role": "object", - "templateitemname": { - "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.", - "editType": "colorbars", - "valType": "string" - }, - "value": { - "description": "string - dtickformat for described zoom level, the same as *tickformat*", - "dflt": "", - "editType": "colorbars", - "valType": "string" - } - } - }, - "role": "object" - }, - "ticklabeloverflow": { - "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "allow", - "hide past div", - "hide past domain" - ] - }, - "ticklabelposition": { - "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.", - "dflt": "outside", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "outside", - "inside", - "outside top", - "inside top", - "outside left", - "inside left", - "outside right", - "inside right", - "outside bottom", - "inside bottom" - ] - }, - "ticklabelstep": { - "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.", - "dflt": 1, - "editType": "colorbars", - "min": 1, - "valType": "integer" - }, - "ticklen": { - "description": "Sets the tick length (in px).", - "dflt": 5, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "tickmode": { - "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).", - "editType": "colorbars", - "impliedEdits": {}, - "valType": "enumerated", - "values": [ - "auto", - "linear", - "array" - ] - }, - "tickprefix": { - "description": "Sets a tick label prefix.", - "dflt": "", - "editType": "colorbars", - "valType": "string" - }, - "ticks": { - "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.", - "dflt": "", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "outside", - "inside", - "" - ] - }, - "ticksuffix": { - "description": "Sets a tick label suffix.", - "dflt": "", - "editType": "colorbars", - "valType": "string" - }, - "ticktext": { - "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", - "editType": "colorbars", - "valType": "data_array" - }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, - "tickvals": { - "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", - "editType": "colorbars", - "valType": "data_array" - }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, - "tickwidth": { - "description": "Sets the tick width (in px).", - "dflt": 1, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "title": { - "editType": "colorbars", - "font": { - "color": { - "editType": "colorbars", - "valType": "color" - }, - "description": "Sets this color bar's title font.", - "editType": "colorbars", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "colorbars", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "lineposition": { - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "colorbars", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "role": "object", - "shadow": { - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "colorbars", - "valType": "string" - }, - "size": { - "editType": "colorbars", - "min": 1, - "valType": "number" - }, - "style": { - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "textcase": { - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] + ] }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "colorbars", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "role": "object", - "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "right", - "top", - "bottom" - ] - }, - "text": { - "description": "Sets the title of the color bar.", - "editType": "colorbars", - "valType": "string" - } - }, - "x": { - "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.", - "editType": "colorbars", - "valType": "number" - }, - "xanchor": { - "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "left", - "center", - "right" - ] - }, - "xpad": { - "description": "Sets the amount of padding (in px) along the x direction.", - "dflt": 10, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "xref": { - "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.", - "dflt": "paper", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "container", - "paper" - ] - }, - "y": { - "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.", - "editType": "colorbars", - "valType": "number" - }, - "yanchor": { - "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "top", - "middle", - "bottom" - ] - }, - "ypad": { - "description": "Sets the amount of padding (in px) along the y direction.", - "dflt": 10, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "yref": { - "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.", - "dflt": "paper", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "container", - "paper" - ] - } - }, - "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `line.cmin` and `line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", - "dflt": [ - [ - 0, - "#440154" - ], - [ - 0.06274509803921569, - "#48186a" - ], - [ - 0.12549019607843137, - "#472d7b" - ], - [ - 0.18823529411764706, - "#424086" - ], - [ - 0.25098039215686274, - "#3b528b" - ], - [ - 0.3137254901960784, - "#33638d" - ], - [ - 0.3764705882352941, - "#2c728e" - ], - [ - 0.4392156862745098, - "#26828e" - ], - [ - 0.5019607843137255, - "#21918c" - ], - [ - 0.5647058823529412, - "#1fa088" - ], - [ - 0.6274509803921569, - "#28ae80" - ], - [ - 0.6901960784313725, - "#3fbc73" - ], - [ - 0.7529411764705882, - "#5ec962" - ], - [ - 0.8156862745098039, - "#84d44b" - ], - [ - 0.8784313725490196, - "#addc30" - ], - [ - 0.9411764705882353, - "#d8e219" - ], - [ - 1, - "#fde725" - ] - ], - "editType": "calc", - "impliedEdits": { - "autocolorscale": false - }, - "valType": "colorscale" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "editType": "calc", - "reversescale": { - "description": "Reverses the color mapping if true. Has an effect only if in `line.color` is set to a numerical array. If true, `line.cmin` will correspond to the last color in the array and `line.cmax` will correspond to the first color.", - "dflt": false, - "editType": "plot", - "valType": "boolean" - }, - "role": "object", - "showscale": { - "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `line.color` is set to a numerical array.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - } - }, - "meta": { - "arrayOk": true, - "description": "Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index.", - "editType": "plot", - "valType": "any" - }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, - "name": { - "description": "Sets the trace name. The trace name appears as the legend item and on hover.", - "editType": "style", - "valType": "string" - }, - "rangefont": { - "color": { - "editType": "plot", - "valType": "color" - }, - "description": "Sets the font for the `dimension` range values.", - "editType": "plot", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "plot", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "lineposition": { - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "plot", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "role": "object", - "shadow": { - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "plot", - "valType": "string" - }, - "size": { - "editType": "plot", - "min": 1, - "valType": "number" - }, - "style": { - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "plot", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "textcase": { - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "plot", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "plot", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "plot", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, - "tickfont": { - "color": { - "editType": "plot", - "valType": "color" - }, - "description": "Sets the font for the `dimension` tick values.", - "editType": "plot", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "plot", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "lineposition": { - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "plot", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "role": "object", - "shadow": { - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "auto", - "editType": "plot", - "valType": "string" - }, - "size": { - "editType": "plot", - "min": 1, - "valType": "number" - }, - "style": { - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "plot", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "textcase": { - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "plot", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "plot", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "plot", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "type": "parcoords", - "uid": { - "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", - "editType": "plot", - "valType": "string" - }, - "uirevision": { - "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves.", - "editType": "none", - "valType": "any" - }, - "unselected": { - "editType": "plot", - "line": { - "color": { - "description": "Sets the base color of unselected lines. in connection with `unselected.line.opacity`.", - "dflt": "#7f7f7f", - "editType": "plot", - "valType": "color" - }, - "editType": "plot", - "opacity": { - "description": "Sets the opacity of unselected lines. The default *auto* decreases the opacity smoothly as the number of lines increases. Use *1* to achieve exact `unselected.line.color`.", - "dflt": "auto", - "editType": "plot", - "max": 1, - "min": 0, - "valType": "number" - }, - "role": "object" - }, - "role": "object" - }, - "visible": { - "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).", - "dflt": true, - "editType": "calc", - "valType": "enumerated", - "values": [ - true, - false, - "legendonly" - ] - } - }, - "categories": [ - "gl", - "regl", - "noOpacity", - "noHover" - ], - "meta": { - "description": "Parallel coordinates for multidimensional exploratory data analysis. The samples are specified in `dimensions`. The colors are set in `line.color`." - }, - "type": "parcoords" - }, - "pie": { - "animatable": false, - "attributes": { - "automargin": { - "description": "Determines whether outside text labels can push the margins.", - "dflt": false, - "editType": "plot", - "valType": "boolean" - }, - "customdata": { - "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements", - "editType": "calc", - "valType": "data_array" - }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, - "direction": { - "description": "Specifies the direction at which succeeding sectors follow one another.", - "dflt": "counterclockwise", - "editType": "calc", - "valType": "enumerated", - "values": [ - "clockwise", - "counterclockwise" - ] - }, - "dlabel": { - "description": "Sets the label step. See `label0` for more info.", - "dflt": 1, - "editType": "calc", - "valType": "number" - }, - "domain": { - "column": { - "description": "If there is a layout grid, use the domain for this column in the grid for this pie trace .", - "dflt": 0, - "editType": "calc", - "min": 0, - "valType": "integer" - }, - "editType": "calc", - "role": "object", - "row": { - "description": "If there is a layout grid, use the domain for this row in the grid for this pie trace .", - "dflt": 0, - "editType": "calc", - "min": 0, - "valType": "integer" - }, - "x": { - "description": "Sets the horizontal domain of this pie trace (in plot fraction).", - "dflt": [ - 0, - 1 - ], - "editType": "calc", - "items": [ - { - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - }, - { - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - } - ], - "valType": "info_array" - }, - "y": { - "description": "Sets the vertical domain of this pie trace (in plot fraction).", - "dflt": [ - 0, - 1 - ], - "editType": "calc", - "items": [ - { - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - }, - { - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - } - ], - "valType": "info_array" - } - }, - "hole": { - "description": "Sets the fraction of the radius to cut out of the pie. Use this to make a donut chart.", - "dflt": 0, - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - }, - "hoverinfo": { - "arrayOk": true, - "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.", - "dflt": "all", - "editType": "none", - "extras": [ - "all", - "none", - "skip" - ], - "flags": [ - "label", - "text", - "value", - "percent", - "name" - ], - "valType": "flaglist" - }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, - "hoverlabel": { - "align": { - "arrayOk": true, - "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines", - "dflt": "auto", - "editType": "none", - "valType": "enumerated", - "values": [ - "left", - "right", - "auto" - ] - }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, - "bgcolor": { - "arrayOk": true, - "description": "Sets the background color of the hover labels for this trace", - "editType": "none", - "valType": "color" - }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, - "bordercolor": { - "arrayOk": true, - "description": "Sets the border color of the hover labels for this trace.", - "editType": "none", - "valType": "color" - }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, - "editType": "none", - "font": { - "color": { - "arrayOk": true, - "editType": "none", - "valType": "color" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "description": "Sets the font used in hover labels.", - "editType": "none", - "family": { - "arrayOk": true, - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "none", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, - "lineposition": { - "arrayOk": true, - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "none", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, - "role": "object", - "shadow": { - "arrayOk": true, - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "none", - "valType": "string" - }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, - "size": { - "arrayOk": true, - "editType": "none", - "min": 1, - "valType": "number" - }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, - "style": { - "arrayOk": true, - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "none", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, - "textcase": { - "arrayOk": true, - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "none", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, - "variant": { - "arrayOk": true, - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "none", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, - "weight": { - "arrayOk": true, - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "none", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" - } - }, - "namelength": { - "arrayOk": true, - "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.", - "dflt": 15, - "editType": "none", - "min": -1, - "valType": "integer" - }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, - "role": "object", - "showarrow": { - "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", - "dflt": true, - "editType": "none", - "valType": "boolean" - } - }, - "hovertemplate": { - "arrayOk": true, - "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `label`, `color`, `value`, `percent` and `text`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``.", - "dflt": "", - "editType": "none", - "valType": "string" - }, - "hovertemplatefallback": { - "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", - "dflt": "-", - "editType": "none", - "valType": "any" - }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, - "hovertext": { - "arrayOk": true, - "description": "Sets hover text elements associated with each sector. If a single string, the same string appears for all data points. If an array of string, the items are mapped in order of this trace's sectors. To be seen, trace `hoverinfo` must contain a *text* flag.", - "dflt": "", - "editType": "style", - "valType": "string" - }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, - "ids": { - "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", - "editType": "calc", - "valType": "data_array" - }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, - "insidetextfont": { - "color": { - "arrayOk": true, - "editType": "plot", - "valType": "color" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "description": "Sets the font used for `textinfo` lying inside the sector.", - "editType": "plot", - "family": { - "arrayOk": true, - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "plot", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, - "lineposition": { - "arrayOk": true, - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "plot", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, - "role": "object", - "shadow": { - "arrayOk": true, - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "plot", - "valType": "string" - }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, - "size": { - "arrayOk": true, - "editType": "plot", - "min": 1, - "valType": "number" - }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, - "style": { - "arrayOk": true, - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "plot", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, - "textcase": { - "arrayOk": true, - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "plot", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, - "variant": { - "arrayOk": true, - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "plot", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, - "weight": { - "arrayOk": true, - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "plot", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" - } - }, - "insidetextorientation": { - "description": "Controls the orientation of the text inside chart sectors. When set to *auto*, text may be oriented in any direction in order to be as big as possible in the middle of a sector. The *horizontal* option orients text to be parallel with the bottom of the chart, and may make text smaller in order to achieve that goal. The *radial* option orients text along the radius of the sector. The *tangential* option orients text perpendicular to the radius of the sector.", - "dflt": "auto", - "editType": "plot", - "valType": "enumerated", - "values": [ - "horizontal", - "radial", - "tangential", - "auto" - ] - }, - "label0": { - "description": "Alternate to `labels`. Builds a numeric set of labels. Use with `dlabel` where `label0` is the starting label and `dlabel` the step.", - "dflt": 0, - "editType": "calc", - "valType": "number" - }, - "labels": { - "description": "Sets the sector labels. If `labels` entries are duplicated, we sum associated `values` or simply count occurrences if `values` is not provided. For other array attributes (including color) we use the first non-empty entry among all occurrences of the label.", - "editType": "calc", - "valType": "data_array" - }, - "labelssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `labels`.", - "editType": "none", - "valType": "string" - }, - "legend": { - "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", - "dflt": "legend", - "editType": "style", - "valType": "subplotid" - }, - "legendgroup": { - "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.", - "dflt": "", - "editType": "style", - "valType": "string" - }, - "legendgrouptitle": { - "editType": "style", - "font": { - "color": { - "editType": "style", - "valType": "color" - }, - "description": "Sets this legend group's title font.", - "editType": "style", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "style", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "lineposition": { - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "style", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "role": "object", - "shadow": { - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "style", - "valType": "string" - }, - "size": { - "editType": "style", - "min": 1, - "valType": "number" - }, - "style": { - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "style", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "textcase": { - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "style", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "style", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "style", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "role": "object", - "text": { - "description": "Sets the title of the legend group.", - "dflt": "", - "editType": "style", - "valType": "string" - } - }, - "legendrank": { - "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.", - "dflt": 1000, - "editType": "style", - "valType": "number" - }, - "legendwidth": { - "description": "Sets the width (in px or fraction) of the legend for this trace.", - "editType": "style", - "min": 0, - "valType": "number" - }, - "marker": { - "colors": { - "description": "Sets the color of each sector. If not specified, the default trace color set is used to pick the sector colors.", - "editType": "calc", - "valType": "data_array" - }, - "colorssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `colors`.", - "editType": "none", - "valType": "string" - }, - "editType": "calc", - "line": { - "color": { - "arrayOk": true, - "description": "Sets the color of the line enclosing each sector.", - "dflt": "#444", - "editType": "style", - "valType": "color" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "editType": "calc", - "role": "object", - "width": { - "arrayOk": true, - "description": "Sets the width (in px) of the line enclosing each sector.", - "dflt": 0, - "editType": "style", - "min": 0, - "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" - } - }, - "pattern": { - "bgcolor": { - "arrayOk": true, - "description": "When there is no colorscale sets the color of background pattern fill. Defaults to a `marker.color` background when `fillmode` is *overlay*. Otherwise, defaults to a transparent background.", - "editType": "style", - "valType": "color" - }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, - "description": "Sets the pattern within the marker.", - "editType": "style", - "fgcolor": { - "arrayOk": true, - "description": "When there is no colorscale sets the color of foreground pattern fill. Defaults to a `marker.color` background when `fillmode` is *replace*. Otherwise, defaults to dark grey or white to increase contrast with the `bgcolor`.", - "editType": "style", - "valType": "color" - }, - "fgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `fgcolor`.", - "editType": "none", - "valType": "string" - }, - "fgopacity": { - "description": "Sets the opacity of the foreground pattern fill. Defaults to a 0.5 when `fillmode` is *overlay*. Otherwise, defaults to 1.", - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" - }, - "fillmode": { - "description": "Determines whether `marker.color` should be used as a default to `bgcolor` or a `fgcolor`.", - "dflt": "replace", - "editType": "style", - "valType": "enumerated", - "values": [ - "replace", - "overlay" - ] - }, - "path": { - "arrayOk": true, - "description": "Sets a custom path for pattern fill. Use with no `shape` or `solidity`, provide an SVG path string for the regions of the square from (0,0) to (`size`,`size`) to color.", - "editType": "style", - "valType": "string" - }, - "pathsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `path`.", - "editType": "none", - "valType": "string" - }, - "role": "object", - "shape": { - "arrayOk": true, - "description": "Sets the shape of the pattern fill. By default, no pattern is used for filling the area.", - "dflt": "", - "editType": "style", - "valType": "enumerated", - "values": [ - "", - "/", - "\\", - "x", - "-", - "|", - "+", - "." - ] - }, - "shapesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shape`.", - "editType": "none", - "valType": "string" - }, - "size": { - "arrayOk": true, - "description": "Sets the size of unit squares of the pattern fill in pixels, which corresponds to the interval of repetition of the pattern.", - "dflt": 8, - "editType": "style", - "min": 0, - "valType": "number" - }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, - "solidity": { - "arrayOk": true, - "description": "Sets the solidity of the pattern fill. Solidity is roughly the fraction of the area filled by the pattern. Solidity of 0 shows only the background color without pattern and solidty of 1 shows only the foreground color without pattern.", - "dflt": 0.3, - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" - }, - "soliditysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `solidity`.", - "editType": "none", - "valType": "string" - } - }, - "role": "object" - }, - "meta": { - "arrayOk": true, - "description": "Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index.", - "editType": "plot", - "valType": "any" - }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, - "name": { - "description": "Sets the trace name. The trace name appears as the legend item and on hover.", - "editType": "style", - "valType": "string" - }, - "opacity": { - "description": "Sets the opacity of the trace.", - "dflt": 1, - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" - }, - "outsidetextfont": { - "color": { - "arrayOk": true, - "editType": "plot", - "valType": "color" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "description": "Sets the font used for `textinfo` lying outside the sector.", - "editType": "plot", - "family": { - "arrayOk": true, - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "plot", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, - "lineposition": { - "arrayOk": true, - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "plot", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, - "role": "object", - "shadow": { - "arrayOk": true, - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "plot", - "valType": "string" - }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, - "size": { - "arrayOk": true, - "editType": "plot", - "min": 1, - "valType": "number" - }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, - "style": { - "arrayOk": true, - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "plot", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, - "textcase": { - "arrayOk": true, - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "plot", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, - "variant": { - "arrayOk": true, - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "plot", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, - "weight": { - "arrayOk": true, - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "plot", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" - } - }, - "pull": { - "arrayOk": true, - "description": "Sets the fraction of larger radius to pull the sectors out from the center. This can be a constant to pull all slices apart from each other equally or an array to highlight one or more slices.", - "dflt": 0, - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - }, - "pullsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `pull`.", - "editType": "none", - "valType": "string" - }, - "rotation": { - "description": "Instead of the first slice starting at 12 o'clock, rotate to some other angle.", - "dflt": 0, - "editType": "calc", - "valType": "angle" - }, - "scalegroup": { - "description": "If there are multiple pie charts that should be sized according to their totals, link them by providing a non-empty group id here shared by every trace in the same group.", - "dflt": "", - "editType": "calc", - "valType": "string" - }, - "showlegend": { - "description": "Determines whether or not an item corresponding to this trace is shown in the legend.", - "dflt": true, - "editType": "style", - "valType": "boolean" - }, - "sort": { - "description": "Determines whether or not the sectors are reordered from largest to smallest.", - "dflt": true, - "editType": "calc", - "valType": "boolean" - }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, - "text": { - "description": "Sets text elements associated with each sector. If trace `textinfo` contains a *text* flag, these elements will be seen on the chart. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", - "editType": "plot", - "valType": "data_array" - }, - "textfont": { - "color": { - "arrayOk": true, - "editType": "plot", - "valType": "color" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "description": "Sets the font used for `textinfo`.", - "editType": "plot", - "family": { - "arrayOk": true, - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "plot", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, - "lineposition": { - "arrayOk": true, - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "plot", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, - "role": "object", - "shadow": { - "arrayOk": true, - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "plot", - "valType": "string" - }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, - "size": { - "arrayOk": true, - "editType": "plot", - "min": 1, - "valType": "number" - }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, - "style": { - "arrayOk": true, - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "plot", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, - "textcase": { - "arrayOk": true, - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "plot", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, - "variant": { - "arrayOk": true, - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "plot", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, - "weight": { - "arrayOk": true, - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "plot", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" - } - }, - "textinfo": { - "description": "Determines which trace information appear on the graph.", - "editType": "calc", - "extras": [ - "none" - ], - "flags": [ - "label", - "text", - "value", - "percent" - ], - "valType": "flaglist" - }, - "textposition": { - "arrayOk": true, - "description": "Specifies the location of the `textinfo`.", - "dflt": "auto", - "editType": "plot", - "valType": "enumerated", - "values": [ - "inside", - "outside", - "auto", - "none" - ] - }, - "textpositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", - "editType": "none", - "valType": "string" - }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, - "texttemplate": { - "arrayOk": true, - "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `label`, `color`, `value`, `percent` and `text`.", - "dflt": "", - "editType": "plot", - "valType": "string" - }, - "texttemplatefallback": { - "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", - "dflt": "-", - "editType": "plot", - "valType": "any" - }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, - "title": { - "editType": "plot", - "font": { - "color": { - "arrayOk": true, - "editType": "plot", - "valType": "color" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "description": "Sets the font used for `title`.", - "editType": "plot", - "family": { - "arrayOk": true, - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "plot", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, - "lineposition": { - "arrayOk": true, - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "plot", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, - "role": "object", - "shadow": { - "arrayOk": true, - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "plot", - "valType": "string" - }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, - "size": { - "arrayOk": true, - "editType": "plot", - "min": 1, - "valType": "number" - }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, - "style": { - "arrayOk": true, - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "plot", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, - "textcase": { - "arrayOk": true, - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "plot", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, - "variant": { - "arrayOk": true, - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "plot", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, - "weight": { - "arrayOk": true, - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "plot", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" - } - }, - "position": { - "description": "Specifies the location of the `title`.", - "editType": "plot", - "valType": "enumerated", - "values": [ - "top left", - "top center", - "top right", - "middle center", - "bottom left", - "bottom center", - "bottom right" - ] - }, - "role": "object", - "text": { - "description": "Sets the title of the chart. If it is empty, no title is displayed.", - "dflt": "", - "editType": "plot", - "valType": "string" - } - }, - "type": "pie", - "uid": { - "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", - "editType": "plot", - "valType": "string" - }, - "uirevision": { - "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves.", - "editType": "none", - "valType": "any" - }, - "values": { - "description": "Sets the values of the sectors. If omitted, we count occurrences of each label.", - "editType": "calc", - "valType": "data_array" - }, - "valuessrc": { - "description": "Sets the source reference on Chart Studio Cloud for `values`.", - "editType": "none", - "valType": "string" - }, - "visible": { - "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).", - "dflt": true, - "editType": "calc", - "valType": "enumerated", - "values": [ - true, - false, - "legendonly" - ] - } - }, - "categories": [ - "pie-like", - "pie", - "showLegend" - ], - "layoutAttributes": { - "extendpiecolors": { - "description": "If `true`, the pie slice colors (whether given by `piecolorway` or inherited from `colorway`) will be extended to three times its original length by first repeating every color 20% lighter then each color 20% darker. This is intended to reduce the likelihood of reusing the same color when you have many slices, but you can set `false` to disable. Colors provided in the trace, using `marker.colors`, are never extended.", - "dflt": true, - "editType": "calc", - "valType": "boolean" - }, - "hiddenlabels": { - "description": "hiddenlabels is the funnelarea & pie chart analog of visible:'legendonly' but it can contain many labels, and can simultaneously hide slices from several pies/funnelarea charts", - "editType": "calc", - "valType": "data_array" - }, - "hiddenlabelssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hiddenlabels`.", - "editType": "none", - "valType": "string" - }, - "piecolorway": { - "description": "Sets the default pie slice colors. Defaults to the main `colorway` used for trace colors. If you specify a new list here it can still be extended with lighter and darker colors, see `extendpiecolors`.", - "editType": "calc", - "valType": "colorlist" - } - }, - "meta": { - "description": "A data visualized by the sectors of the pie is set in `values`. The sector labels are set in `labels`. The sector colors are set in `marker.colors`" - }, - "type": "pie" - }, - "quiver": { - "animatable": true, - "attributes": { - "anchor": { - "description": "Sets the arrows' anchor with respect to their (x,y) positions. Use *tail* to place (x,y) at the base, *tip* to place (x,y) at the head, or *cm*/*center*/*middle* to center the arrow on (x,y).", - "dflt": "tail", - "editType": "calc", - "valType": "enumerated", - "values": [ - "tip", - "tail", - "cm", - "center", - "middle" - ] - }, - "arrow_scale": { - "description": "Deprecated alias for `arrowsize`-based sizing. Prefer using `arrowsize`.", - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - }, - "arrowsize": { - "description": "Scales the size of the arrow head relative to a base size. Higher values produce larger heads.", - "dflt": 1, - "editType": "calc", - "min": 0.3, - "valType": "number" - }, - "arrowwidth": { - "description": "Sets the width (in px) of the arrow line (alias of `line.width`).", - "editType": "style", - "min": 0.1, - "valType": "number" - }, - "autocolorscale": { - "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", - "dflt": true, - "editType": "calc", - "impliedEdits": {}, - "valType": "boolean" - }, - "c": { - "anim": true, - "description": "Sets the scalar values used to map colors via the colorscale. If not provided, the magnitude sqrt(u^2 + v^2) is used.", - "editType": "calc", - "valType": "data_array" - }, - "cauto": { - "description": "Determines whether or not the color domain is computed with respect to the input data (here u/v norm) or the bounds set in `cmin` and `cmax` Defaults to `false` when `cmin` and `cmax` are set by the user.", - "dflt": true, - "editType": "calc", - "impliedEdits": {}, - "valType": "boolean" - }, - "cmax": { - "description": "Sets the upper bound of the color domain. Value should have the same units as u/v norm and if set, `cmin` must be set as well.", - "dflt": null, - "editType": "calc", - "impliedEdits": { - "cauto": false - }, - "valType": "number" - }, - "cmid": { - "description": "Sets the mid-point of the color domain by scaling `cmin` and/or `cmax` to be equidistant to this point. Value should have the same units as u/v norm. Has no effect when `cauto` is `false`.", - "dflt": null, - "editType": "calc", - "impliedEdits": {}, - "valType": "number" - }, - "cmin": { - "description": "Sets the lower bound of the color domain. Value should have the same units as u/v norm and if set, `cmax` must be set as well.", - "dflt": null, - "editType": "calc", - "impliedEdits": { - "cauto": false - }, - "valType": "number" - }, - "coloraxis": { - "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.", - "dflt": null, - "editType": "calc", - "regex": "/^coloraxis([2-9]|[1-9][0-9]+)?$/", - "valType": "subplotid" - }, - "colorbar": { - "bgcolor": { - "description": "Sets the color of padded area.", - "dflt": "rgba(0,0,0,0)", - "editType": "colorbars", - "valType": "color" - }, - "bordercolor": { - "description": "Sets the axis line color.", - "dflt": "#444", - "editType": "colorbars", - "valType": "color" - }, - "borderwidth": { - "description": "Sets the width (in px) or the border enclosing this color bar.", - "dflt": 0, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "dtick": { - "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*", - "editType": "colorbars", - "impliedEdits": { - "tickmode": "linear" - }, - "valType": "any" - }, - "editType": "colorbars", - "exponentformat": { - "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from \"femto\" f (10^-15) to \"tera\" T (10^12). *SI extended* covers instead the full SI range from \"quecto\" q (10^-30) to \"quetta\" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation.", - "dflt": "B", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "none", - "e", - "E", - "power", - "SI", - "B", - "SI extended" - ] - }, - "labelalias": { - "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax.", - "dflt": false, - "editType": "colorbars", - "valType": "any" - }, - "len": { - "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.", - "dflt": 1, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "lenmode": { - "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.", - "dflt": "fraction", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "fraction", - "pixels" - ] - }, - "minexponent": { - "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.", - "dflt": 3, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "nticks": { - "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.", - "dflt": 0, - "editType": "colorbars", - "min": 0, - "valType": "integer" - }, - "orientation": { - "description": "Sets the orientation of the colorbar.", - "dflt": "v", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "h", - "v" - ] - }, - "outlinecolor": { - "description": "Sets the axis line color.", - "dflt": "#444", - "editType": "colorbars", - "valType": "color" - }, - "outlinewidth": { - "description": "Sets the width (in px) of the axis line.", - "dflt": 1, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "role": "object", - "separatethousands": { - "description": "If \"true\", even 4-digit integers are separated", - "dflt": false, - "editType": "colorbars", - "valType": "boolean" - }, - "showexponent": { - "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.", - "dflt": "all", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "showticklabels": { - "description": "Determines whether or not the tick labels are drawn.", - "dflt": true, - "editType": "colorbars", - "valType": "boolean" - }, - "showtickprefix": { - "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.", - "dflt": "all", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "showticksuffix": { - "description": "Same as `showtickprefix` but for tick suffixes.", - "dflt": "all", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "thickness": { - "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.", - "dflt": 30, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "thicknessmode": { - "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.", - "dflt": "pixels", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "fraction", - "pixels" - ] - }, - "tick0": { - "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears.", - "editType": "colorbars", - "impliedEdits": { - "tickmode": "linear" - }, - "valType": "any" - }, - "tickangle": { - "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.", - "dflt": "auto", - "editType": "colorbars", - "valType": "angle" - }, - "tickcolor": { - "description": "Sets the tick color.", - "dflt": "#444", - "editType": "colorbars", - "valType": "color" - }, - "tickfont": { - "color": { - "editType": "colorbars", - "valType": "color" - }, - "description": "Sets the color bar's tick label font", - "editType": "colorbars", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "colorbars", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "lineposition": { - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "colorbars", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "role": "object", - "shadow": { - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "colorbars", - "valType": "string" - }, - "size": { - "editType": "colorbars", - "min": 1, - "valType": "number" - }, - "style": { - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "textcase": { - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "colorbars", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "tickformat": { - "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*", - "dflt": "", - "editType": "colorbars", - "valType": "string" - }, - "tickformatstops": { - "items": { - "tickformatstop": { - "dtickrange": { - "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*", - "editType": "colorbars", - "items": [ - { - "editType": "colorbars", - "valType": "any" - }, - { - "editType": "colorbars", - "valType": "any" - } - ], - "valType": "info_array" - }, - "editType": "colorbars", - "enabled": { - "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.", - "dflt": true, - "editType": "colorbars", - "valType": "boolean" - }, - "name": { - "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.", - "editType": "colorbars", - "valType": "string" - }, - "role": "object", - "templateitemname": { - "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.", - "editType": "colorbars", - "valType": "string" - }, - "value": { - "description": "string - dtickformat for described zoom level, the same as *tickformat*", - "dflt": "", - "editType": "colorbars", - "valType": "string" - } - } - }, - "role": "object" - }, - "ticklabeloverflow": { - "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "allow", - "hide past div", - "hide past domain" - ] - }, - "ticklabelposition": { - "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.", - "dflt": "outside", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "outside", - "inside", - "outside top", - "inside top", - "outside left", - "inside left", - "outside right", - "inside right", - "outside bottom", - "inside bottom" - ] - }, - "ticklabelstep": { - "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.", - "dflt": 1, - "editType": "colorbars", - "min": 1, - "valType": "integer" - }, - "ticklen": { - "description": "Sets the tick length (in px).", - "dflt": 5, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "tickmode": { - "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).", - "editType": "colorbars", - "impliedEdits": {}, - "valType": "enumerated", - "values": [ - "auto", - "linear", - "array" - ] - }, - "tickprefix": { - "description": "Sets a tick label prefix.", - "dflt": "", - "editType": "colorbars", - "valType": "string" - }, - "ticks": { - "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.", - "dflt": "", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "outside", - "inside", - "" - ] - }, - "ticksuffix": { - "description": "Sets a tick label suffix.", - "dflt": "", - "editType": "colorbars", - "valType": "string" - }, - "ticktext": { - "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", - "editType": "colorbars", - "valType": "data_array" - }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, - "tickvals": { - "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", - "editType": "colorbars", - "valType": "data_array" - }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, - "tickwidth": { - "description": "Sets the tick width (in px).", - "dflt": 1, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "title": { - "editType": "colorbars", - "font": { - "color": { - "editType": "colorbars", - "valType": "color" - }, - "description": "Sets this color bar's title font.", - "editType": "colorbars", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "colorbars", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "lineposition": { - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "colorbars", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "role": "object", - "shadow": { - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "colorbars", - "valType": "string" - }, - "size": { - "editType": "colorbars", - "min": 1, - "valType": "number" - }, - "style": { - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "textcase": { - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "colorbars", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "role": "object", - "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "right", - "top", - "bottom" - ] - }, - "text": { - "description": "Sets the title of the color bar.", - "editType": "colorbars", - "valType": "string" - } - }, - "x": { - "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.", - "editType": "colorbars", - "valType": "number" - }, - "xanchor": { - "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "left", - "center", - "right" - ] - }, - "xpad": { - "description": "Sets the amount of padding (in px) along the x direction.", - "dflt": 10, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "xref": { - "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.", - "dflt": "paper", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "container", - "paper" - ] - }, - "y": { - "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.", - "editType": "colorbars", - "valType": "number" - }, - "yanchor": { - "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "top", - "middle", - "bottom" - ] - }, - "ypad": { - "description": "Sets the amount of padding (in px) along the y direction.", - "dflt": 10, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "yref": { - "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.", - "dflt": "paper", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "container", - "paper" - ] - } - }, - "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", - "dflt": null, - "editType": "calc", - "impliedEdits": { - "autocolorscale": false - }, - "valType": "colorscale" - }, - "csrc": { - "description": "Sets the source reference on Chart Studio Cloud for `c`.", - "editType": "none", - "valType": "string" - }, - "customdata": { - "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements", - "editType": "calc", - "valType": "data_array" - }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, - "hoverdistance": { - "description": "Maximum distance (in pixels) to look for nearby arrows on hover.", - "dflt": 20, - "editType": "calc", - "min": -1, - "valType": "number" - }, - "hoverinfo": { - "arrayOk": true, - "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.", - "dflt": "all", - "editType": "none", - "extras": [ - "all", - "none", - "skip" - ], - "flags": [ - "x", - "y", - "u", - "v", - "text", - "name" - ], - "valType": "flaglist" - }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, - "hoverlabel": { - "align": { - "arrayOk": true, - "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines", - "dflt": "auto", - "editType": "none", - "valType": "enumerated", - "values": [ - "left", - "right", - "auto" - ] - }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, - "bgcolor": { - "arrayOk": true, - "description": "Sets the background color of the hover labels for this trace", - "editType": "none", - "valType": "color" - }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, - "bordercolor": { - "arrayOk": true, - "description": "Sets the border color of the hover labels for this trace.", - "editType": "none", - "valType": "color" - }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, - "editType": "none", - "font": { - "color": { - "arrayOk": true, - "editType": "none", - "valType": "color" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "description": "Sets the font used in hover labels.", - "editType": "none", - "family": { - "arrayOk": true, - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "none", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, - "lineposition": { - "arrayOk": true, - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "none", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, - "role": "object", - "shadow": { - "arrayOk": true, - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "none", - "valType": "string" - }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, - "size": { - "arrayOk": true, - "editType": "none", - "min": 1, - "valType": "number" - }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, - "style": { - "arrayOk": true, - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "none", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, - "textcase": { - "arrayOk": true, - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "none", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, - "variant": { - "arrayOk": true, - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "none", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, - "weight": { - "arrayOk": true, - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "none", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" - } - }, - "namelength": { - "arrayOk": true, - "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.", - "dflt": 15, - "editType": "none", - "min": -1, - "valType": "integer" - }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, - "role": "object", - "showarrow": { - "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", - "dflt": true, - "editType": "none", - "valType": "boolean" - } - }, - "hovertemplate": { - "arrayOk": true, - "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `x`, `y`, `u`, `v`, `text` and `name`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``.", - "dflt": "", - "editType": "none", - "valType": "string" - }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, - "ids": { - "anim": true, - "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", - "editType": "calc", - "valType": "data_array" - }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, - "legend": { - "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", - "dflt": "legend", - "editType": "style", - "valType": "subplotid" - }, - "legendgroup": { - "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.", - "dflt": "", - "editType": "style", - "valType": "string" - }, - "legendgrouptitle": { - "editType": "style", - "font": { - "color": { - "editType": "style", - "valType": "color" - }, - "description": "Sets this legend group's title font.", - "editType": "style", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "style", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "lineposition": { - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "style", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "role": "object", - "shadow": { - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "style", - "valType": "string" - }, - "size": { - "editType": "style", - "min": 1, - "valType": "number" - }, - "style": { - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "style", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "textcase": { - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "style", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "style", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "style", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "role": "object", - "text": { - "description": "Sets the title of the legend group.", - "dflt": "", - "editType": "style", - "valType": "string" - } - }, - "legendrank": { - "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.", - "dflt": 1000, - "editType": "style", - "valType": "number" - }, - "legendwidth": { - "description": "Sets the width (in px or fraction) of the legend for this trace.", - "editType": "style", - "min": 0, - "valType": "number" - }, - "line": { - "color": { - "description": "Sets the color of the arrow lines.", - "dflt": "#000", - "editType": "style", - "valType": "color" - }, - "dash": { - "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", - "dflt": "solid", - "editType": "style", - "valType": "string", - "values": [ - "solid", - "dot", - "dash", - "longdash", - "dashdot", - "longdashdot" - ] - }, - "editType": "style", - "role": "object", - "shape": { - "description": "Determines the line shape.", - "dflt": "linear", - "editType": "plot", - "valType": "enumerated", - "values": [ - "linear", - "spline", - "hv", - "vh", - "hvh", - "vhv" - ] - }, - "simplify": { - "description": "Simplifies lines by removing nearly-overlapping points.", - "dflt": true, - "editType": "plot", - "valType": "boolean" - }, - "smoothing": { - "description": "Has an effect only if `shape` is set to *spline*. Sets the amount of smoothing.", - "dflt": 1, - "editType": "plot", - "max": 1.3, - "min": 0, - "valType": "number" - }, - "width": { - "description": "Sets the width (in px) of the arrow lines.", - "dflt": 1, - "editType": "style", - "min": 0, - "valType": "number" - } - }, - "meta": { - "arrayOk": true, - "description": "Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index.", - "editType": "plot", - "valType": "any" - }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, - "name": { - "description": "Sets the trace name. The trace name appears as the legend item and on hover.", - "editType": "style", - "valType": "string" - }, - "opacity": { - "description": "Sets the opacity of the trace.", - "dflt": 1, - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" - }, - "reversescale": { - "description": "Reverses the color mapping if true. If true, `cmin` will correspond to the last color in the array and `cmax` will correspond to the first color.", - "dflt": false, - "editType": "plot", - "valType": "boolean" - }, - "selected": { - "editType": "style", - "line": { - "color": { - "description": "Sets the line color of selected points.", - "editType": "style", - "valType": "color" - }, - "editType": "style", - "role": "object", - "width": { - "description": "Sets the line width of selected points.", - "editType": "style", - "min": 0, - "valType": "number" - } - }, - "role": "object", - "textfont": { - "color": { - "description": "Sets the text font color of selected points, applied only when a selection exists.", - "editType": "style", - "valType": "color" - }, - "editType": "style", - "role": "object" - } - }, - "selectedpoints": { - "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.", - "editType": "calc", - "valType": "any" - }, - "showlegend": { - "description": "Determines whether or not an item corresponding to this trace is shown in the legend.", - "dflt": true, - "editType": "style", - "valType": "boolean" - }, - "showscale": { - "description": "Determines whether or not a colorbar is displayed for this trace.", - "dflt": true, - "editType": "calc", - "valType": "boolean" - }, - "sizemode": { - "description": "Determines whether `sizeref` is set as a *scaled* (unitless) scalar (normalized by the max u/v norm in the vector field), as an *absolute* value (in the same units as the vector field), or *raw* to use the raw vector lengths.", - "dflt": "scaled", - "editType": "calc", - "valType": "enumerated", - "values": [ - "scaled", - "absolute", - "raw" - ] - }, - "sizeref": { - "description": "Adjusts the arrow size scaling. The arrow length is determined by the vector norm multiplied by `sizeref`, optionally normalized when `sizemode` is *scaled*.", - "editType": "calc", - "min": 0, - "valType": "number" - }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, - "text": { - "anim": true, - "description": "Sets text elements associated with each (x,y) pair.", - "editType": "calc", - "valType": "data_array" - }, - "textfont": { - "color": { - "arrayOk": true, - "editType": "style", - "valType": "color" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "description": "Sets the text font.", - "editType": "calc", - "family": { - "arrayOk": true, - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, - "lineposition": { - "arrayOk": true, - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "calc", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, - "role": "object", - "shadow": { - "arrayOk": true, - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "calc", - "valType": "string" - }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, - "size": { - "arrayOk": true, - "editType": "calc", - "min": 1, - "valType": "number" - }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, - "style": { - "arrayOk": true, - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, - "textcase": { - "arrayOk": true, - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, - "variant": { - "arrayOk": true, - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, - "weight": { - "arrayOk": true, - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "calc", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" - } - }, - "textposition": { - "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.", - "dflt": "middle center", - "editType": "calc", - "valType": "enumerated", - "values": [ - "top left", - "top center", - "top right", - "middle left", - "middle center", - "middle right", - "bottom left", - "bottom center", - "bottom right" - ] - }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, - "type": "quiver", - "u": { - "anim": true, - "description": "Sets the x components of the arrow vectors.", - "editType": "calc", - "valType": "data_array" - }, - "uid": { - "anim": true, - "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", - "editType": "plot", - "valType": "string" - }, - "uirevision": { - "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves.", - "editType": "none", - "valType": "any" - }, - "unselected": { - "editType": "style", - "line": { - "color": { - "description": "Sets the line color of unselected points.", - "editType": "style", - "valType": "color" - }, - "editType": "style", - "role": "object", - "width": { - "description": "Sets the line width of unselected points.", - "editType": "style", - "min": 0, - "valType": "number" - } - }, - "role": "object", - "textfont": { - "color": { - "description": "Sets the text font color of unselected points, applied only when a selection exists.", - "editType": "style", - "valType": "color" - }, - "editType": "style", - "role": "object" - } - }, - "usrc": { - "description": "Sets the source reference on Chart Studio Cloud for `u`.", - "editType": "none", - "valType": "string" - }, - "v": { - "anim": true, - "description": "Sets the y components of the arrow vectors.", - "editType": "calc", - "valType": "data_array" - }, - "visible": { - "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).", - "dflt": true, - "editType": "calc", - "valType": "enumerated", - "values": [ - true, - false, - "legendonly" - ] - }, - "vsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `v`.", - "editType": "none", - "valType": "string" - }, - "x": { - "anim": true, - "description": "Sets the x coordinates of the arrow locations.", - "editType": "calc+clearAxisTypes", - "valType": "data_array" - }, - "xaxis": { - "description": "Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on.", - "dflt": "x", - "editType": "calc+clearAxisTypes", - "valType": "subplotid" - }, - "xsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `x`.", - "editType": "none", - "valType": "string" - }, - "y": { - "anim": true, - "description": "Sets the y coordinates of the arrow locations.", - "editType": "calc+clearAxisTypes", - "valType": "data_array" - }, - "yaxis": { - "description": "Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on.", - "dflt": "y", - "editType": "calc+clearAxisTypes", - "valType": "subplotid" - }, - "ysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `y`.", - "editType": "none", - "valType": "string" - } - }, - "categories": [ - "cartesian", - "svg", - "showLegend", - "scatter-like", - "zoomScale" - ], - "meta": { - "description": "The quiver trace type visualizes vector fields using arrows. Specify a vector field using 4 1D arrays: 2 position arrays `x`, `y` and 2 vector component arrays `u`, `v`. The arrows are drawn exactly at the positions given by `x` and `y`. Arrow length and direction are determined by `u` and `v` components." - }, - "type": "quiver" - }, - "sankey": { - "animatable": false, - "attributes": { - "arrangement": { - "description": "If value is `snap` (the default), the node arrangement is assisted by automatic snapping of elements to preserve space between nodes specified via `nodepad`. If value is `perpendicular`, the nodes can only move along a line perpendicular to the flow. If value is `freeform`, the nodes can freely move on the plane. If value is `fixed`, the nodes are stationary.", - "dflt": "snap", - "editType": "calc", - "valType": "enumerated", - "values": [ - "snap", - "perpendicular", - "freeform", - "fixed" - ] - }, - "customdata": { - "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements", - "editType": "calc", - "valType": "data_array" - }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, - "domain": { - "column": { - "description": "If there is a layout grid, use the domain for this column in the grid for this sankey trace .", - "dflt": 0, - "editType": "calc", - "min": 0, - "valType": "integer" - }, - "editType": "calc", - "role": "object", - "row": { - "description": "If there is a layout grid, use the domain for this row in the grid for this sankey trace .", - "dflt": 0, - "editType": "calc", - "min": 0, - "valType": "integer" - }, - "x": { - "description": "Sets the horizontal domain of this sankey trace (in plot fraction).", - "dflt": [ - 0, - 1 - ], - "editType": "calc", - "items": [ - { - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - }, - { - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - } - ], - "valType": "info_array" - }, - "y": { - "description": "Sets the vertical domain of this sankey trace (in plot fraction).", - "dflt": [ - 0, - 1 - ], - "editType": "calc", - "items": [ - { - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - }, - { - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - } - ], - "valType": "info_array" - } - }, - "hoverinfo": { - "arrayOk": false, - "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. Note that this attribute is superseded by `node.hoverinfo` and `node.hoverinfo` for nodes and links respectively.", - "dflt": "all", - "editType": "calc", - "extras": [ - "all", - "none", - "skip" - ], - "flags": [], - "valType": "flaglist" - }, - "hoverlabel": { - "align": { - "arrayOk": true, - "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines", - "dflt": "auto", - "editType": "calc", - "valType": "enumerated", - "values": [ - "left", - "right", - "auto" - ] - }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, - "bgcolor": { - "arrayOk": true, - "description": "Sets the background color of the hover labels for this trace", - "editType": "calc", - "valType": "color" - }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, - "bordercolor": { - "arrayOk": true, - "description": "Sets the border color of the hover labels for this trace.", - "editType": "calc", - "valType": "color" - }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, - "editType": "calc", - "font": { - "color": { - "arrayOk": true, - "editType": "calc", - "valType": "color" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "description": "Sets the font used in hover labels.", - "editType": "calc", - "family": { - "arrayOk": true, - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, - "lineposition": { - "arrayOk": true, - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "calc", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, - "role": "object", - "shadow": { - "arrayOk": true, - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "calc", - "valType": "string" - }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, - "size": { - "arrayOk": true, - "editType": "calc", - "min": 1, - "valType": "number" - }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, - "style": { - "arrayOk": true, - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, - "textcase": { - "arrayOk": true, - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, - "variant": { - "arrayOk": true, - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, - "weight": { - "arrayOk": true, - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "calc", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" - } - }, - "namelength": { - "arrayOk": true, - "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.", - "dflt": 15, - "editType": "calc", - "min": -1, - "valType": "integer" - }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, - "role": "object", - "showarrow": { - "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", - "dflt": true, - "editType": "calc", - "valType": "boolean" - } - }, - "ids": { - "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", - "editType": "calc", - "valType": "data_array" - }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, - "legend": { - "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", - "dflt": "legend", - "editType": "style", - "valType": "subplotid" - }, - "legendgrouptitle": { - "editType": "style", - "font": { - "color": { - "editType": "style", - "valType": "color" - }, - "description": "Sets this legend group's title font.", - "editType": "style", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "style", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "lineposition": { - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "style", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "role": "object", - "shadow": { - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "style", - "valType": "string" - }, - "size": { - "editType": "style", - "min": 1, - "valType": "number" - }, - "style": { - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "style", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "textcase": { - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "style", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "style", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "style", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "role": "object", - "text": { - "description": "Sets the title of the legend group.", - "dflt": "", - "editType": "style", - "valType": "string" - } - }, - "legendrank": { - "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.", - "dflt": 1000, - "editType": "style", - "valType": "number" - }, - "legendwidth": { - "description": "Sets the width (in px or fraction) of the legend for this trace.", - "editType": "style", - "min": 0, - "valType": "number" - }, - "link": { - "arrowlen": { - "description": "Sets the length (in px) of the links arrow, if 0 no arrow will be drawn.", - "dflt": 0, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "color": { - "arrayOk": true, - "description": "Sets the `link` color. It can be a single value, or an array for specifying color for each `link`. If `link.color` is omitted, then by default, a translucent grey link will be used.", - "editType": "calc", - "valType": "color" - }, - "colorscales": { - "items": { - "concentrationscales": { - "cmax": { - "description": "Sets the upper bound of the color domain.", - "dflt": 1, - "editType": "calc", - "valType": "number" - }, - "cmin": { - "description": "Sets the lower bound of the color domain.", - "dflt": 0, - "editType": "calc", - "valType": "number" - }, - "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", - "dflt": [ - [ - 0, - "white" - ], - [ - 1, - "black" ->>>>>>> b50bcc3af (Match arrowhead attributes for annotations) - ] - }, - "rangeselector": { - "activecolor": { - "description": "Sets the background color of the active range selector button.", - "editType": "plot", - "valType": "color" - }, - "bgcolor": { - "description": "Sets the background color of the range selector buttons.", - "dflt": "#eee", - "editType": "plot", - "valType": "color" - }, - "bordercolor": { - "description": "Sets the color of the border enclosing the range selector.", - "dflt": "#444", - "editType": "plot", - "valType": "color" - }, - "borderwidth": { - "description": "Sets the width (in px) of the border enclosing the range selector.", - "dflt": 0, - "editType": "plot", - "min": 0, - "valType": "number" - }, - "buttons": { - "items": { - "button": { - "count": { - "description": "Sets the number of steps to take to update the range. Use with `step` to specify the update interval.", - "dflt": 1, - "editType": "plot", - "min": 0, - "valType": "number" - }, - "description": "Sets the specifications for each buttons. By default, a range selector comes with no buttons.", - "editType": "plot", - "label": { - "description": "Sets the text label to appear on the button.", - "editType": "plot", - "valType": "string" - }, - "name": { - "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.", - "editType": "none", - "valType": "string" - }, - "role": "object", - "step": { - "description": "The unit of measurement that the `count` value will set the range by.", - "dflt": "month", - "editType": "plot", - "valType": "enumerated", - "values": [ - "month", - "year", - "day", - "hour", - "minute", - "second", - "all" - ] - }, - "stepmode": { - "description": "Sets the range update mode. If *backward*, the range update shifts the start of range back *count* times *step* milliseconds. If *todate*, the range update shifts the start of range back to the first timestamp from *count* times *step* milliseconds back. For example, with `step` set to *year* and `count` set to *1* the range update shifts the start of the range back to January 01 of the current year. Month and year *todate* are currently available only for the built-in (Gregorian) calendar.", - "dflt": "backward", - "editType": "plot", - "valType": "enumerated", - "values": [ - "backward", - "todate" - ] - }, - "templateitemname": { - "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.", - "editType": "calc", - "valType": "string" - }, - "visible": { - "description": "Determines whether or not this button is visible.", - "dflt": true, - "editType": "plot", - "valType": "boolean" - } - } - }, - "role": "object" - }, - "editType": "plot", - "font": { - "color": { - "editType": "plot", - "valType": "color" - }, - "description": "Sets the font of the range selector button text.", - "editType": "plot", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "plot", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "lineposition": { - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "plot", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "role": "object", - "shadow": { - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "plot", - "valType": "string" - }, - "size": { - "editType": "plot", - "min": 1, - "valType": "number" - }, - "style": { - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "plot", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "textcase": { - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "plot", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "plot", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "plot", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "role": "object", - "visible": { - "description": "Determines whether or not this range selector is visible. Note that range selectors are only available for x axes of `type` set to or auto-typed to *date*.", - "editType": "plot", - "valType": "boolean" - }, - "x": { - "description": "Sets the x position (in normalized coordinates) of the range selector.", - "editType": "plot", - "max": 3, - "min": -2, - "valType": "number" - }, - "xanchor": { - "description": "Sets the range selector's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the range selector.", - "dflt": "left", - "editType": "plot", - "valType": "enumerated", - "values": [ - "auto", - "left", - "center", - "right" - ] - }, - "y": { - "description": "Sets the y position (in normalized coordinates) of the range selector.", - "editType": "plot", - "max": 3, - "min": -2, - "valType": "number" - }, - "yanchor": { - "description": "Sets the range selector's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the range selector.", - "dflt": "bottom", - "editType": "plot", - "valType": "enumerated", - "values": [ - "auto", - "top", - "middle", - "bottom" - ] - } - }, - "rangeslider": { - "autorange": { - "description": "Determines whether or not the range slider range is computed in relation to the input data. If `range` is provided, then `autorange` is set to *false*.", - "dflt": true, - "editType": "calc", - "impliedEdits": {}, - "valType": "boolean" - }, - "bgcolor": { - "description": "Sets the background color of the range slider.", - "dflt": "#fff", - "editType": "plot", - "valType": "color" - }, - "bordercolor": { - "description": "Sets the border color of the range slider.", - "dflt": "#444", - "editType": "plot", - "valType": "color" - }, - "borderwidth": { - "description": "Sets the border width of the range slider.", - "dflt": 0, - "editType": "plot", - "min": 0, - "valType": "integer" - }, - "editType": "calc", - "range": { - "description": "Sets the range of the range slider. If not set, defaults to the full xaxis range. If the axis `type` is *log*, then you must take the log of your desired range. If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears.", - "editType": "calc", - "impliedEdits": { - "autorange": false - }, - "items": [ - { - "editType": "calc", - "impliedEdits": { - "^autorange": false - }, - "valType": "any" - }, - { - "editType": "calc", - "impliedEdits": { - "^autorange": false - }, - "valType": "any" - } - ], - "valType": "info_array" - }, - "role": "object", - "thickness": { - "description": "The height of the range slider as a fraction of the total plot area height.", - "dflt": 0.15, - "editType": "plot", - "max": 1, - "min": 0, - "valType": "number" - }, - "visible": { - "description": "Determines whether or not the range slider will be visible. If visible, perpendicular axes will be set to `fixedrange`", - "dflt": true, - "editType": "calc", - "valType": "boolean" - }, - "yaxis": { - "_isSubplotObj": true, - "editType": "calc", - "range": { - "description": "Sets the range of this axis for the rangeslider.", - "editType": "plot", - "items": [ - { - "editType": "plot", - "valType": "any" - }, - { - "editType": "plot", - "valType": "any" - } - ], - "valType": "info_array" - }, - "rangemode": { - "description": "Determines whether or not the range of this axis in the rangeslider use the same value than in the main plot when zooming in/out. If *auto*, the autorange will be used. If *fixed*, the `range` is used. If *match*, the current range of the corresponding y-axis on the main subplot is used.", - "dflt": "match", - "editType": "calc", - "valType": "enumerated", - "values": [ - "auto", - "fixed", - "match" - ] - }, - "role": "object" - } - }, - "role": "object", - "scaleanchor": { - "description": "If set to another axis id (e.g. `x2`, `y`), the range of this axis changes together with the range of the corresponding axis such that the scale of pixels per unit is in a constant ratio. Both axes are still zoomable, but when you zoom one, the other will zoom the same amount, keeping a fixed midpoint. `constrain` and `constraintoward` determine how we enforce the constraint. You can chain these, ie `yaxis: {scaleanchor: *x*}, xaxis2: {scaleanchor: *y*}` but you can only link axes of the same `type`. The linked axis can have the opposite letter (to constrain the aspect ratio) or the same letter (to match scales across subplots). Loops (`yaxis: {scaleanchor: *x*}, xaxis: {scaleanchor: *y*}` or longer) are redundant and the last constraint encountered will be ignored to avoid possible inconsistent constraints via `scaleratio`. Note that setting axes simultaneously in both a `scaleanchor` and a `matches` constraint is currently forbidden. Setting `false` allows to remove a default constraint (occasionally, you may need to prevent a default `scaleanchor` constraint from being applied, eg. when having an image trace `yaxis: {scaleanchor: \"x\"}` is set automatically in order for pixels to be rendered as squares, setting `yaxis: {scaleanchor: false}` allows to remove the constraint).", - "editType": "plot", - "valType": "enumerated", - "values": [ - "/^x([2-9]|[1-9][0-9]+)?( domain)?$/", - "/^y([2-9]|[1-9][0-9]+)?( domain)?$/", - false - ] - }, - "scaleratio": { - "description": "If this axis is linked to another by `scaleanchor`, this determines the pixel to unit scale ratio. For example, if this value is 10, then every unit on this axis spans 10 times the number of pixels as a unit on the linked axis. Use this for example to create an elevation profile where the vertical scale is exaggerated a fixed amount with respect to the horizontal.", - "dflt": 1, - "editType": "plot", - "min": 0, - "valType": "number" - }, - "separatethousands": { - "description": "If \"true\", even 4-digit integers are separated", - "dflt": false, - "editType": "ticks", - "valType": "boolean" - }, - "showdividers": { - "description": "Determines whether or not a dividers are drawn between the category levels of this axis. Only has an effect on *multicategory* axes.", - "dflt": true, - "editType": "ticks", - "valType": "boolean" - }, - "showexponent": { - "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.", - "dflt": "all", - "editType": "ticks", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "showgrid": { - "description": "Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark.", - "editType": "ticks", - "valType": "boolean" - }, - "showline": { - "description": "Determines whether or not a line bounding this axis is drawn.", - "dflt": false, - "editType": "ticks+layoutstyle", - "valType": "boolean" - }, - "showspikes": { - "description": "Determines whether or not spikes (aka droplines) are drawn for this axis. Note: This only takes affect when hovermode = closest", - "dflt": false, - "editType": "modebar", - "valType": "boolean" - }, - "showticklabels": { - "description": "Determines whether or not the tick labels are drawn.", - "dflt": true, - "editType": "ticks", - "valType": "boolean" - }, - "showtickprefix": { - "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.", - "dflt": "all", - "editType": "ticks", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "showticksuffix": { - "description": "Same as `showtickprefix` but for tick suffixes.", - "dflt": "all", - "editType": "ticks", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "side": { - "description": "Determines whether a x (y) axis is positioned at the *bottom* (*left*) or *top* (*right*) of the plotting area.", - "editType": "plot", - "valType": "enumerated", - "values": [ - "top", - "bottom", - "left", - "right" - ] - }, - "spikecolor": { - "description": "Sets the spike color. If undefined, will use the series color", - "dflt": null, - "editType": "none", - "valType": "color" - }, - "spikedash": { - "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", - "dflt": "dash", - "editType": "none", - "valType": "string", - "values": [ - "solid", - "dot", - "dash", - "longdash", - "dashdot", - "longdashdot" - ] - }, - "spikemode": { - "description": "Determines the drawing mode for the spike line If *toaxis*, the line is drawn from the data point to the axis the series is plotted on. If *across*, the line is drawn across the entire plot area, and supercedes *toaxis*. If *marker*, then a marker dot is drawn on the axis the series is plotted on", - "dflt": "toaxis", - "editType": "none", - "flags": [ - "toaxis", - "across", - "marker" - ], - "valType": "flaglist" - }, - "spikesnap": { - "description": "Determines whether spikelines are stuck to the cursor or to the closest datapoints.", - "dflt": "hovered data", - "editType": "none", - "valType": "enumerated", - "values": [ - "data", - "cursor", - "hovered data" - ] - }, - "spikethickness": { - "description": "Sets the width (in px) of the zero line.", - "dflt": 3, - "editType": "none", - "valType": "number" - }, - "tick0": { - "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears.", - "editType": "ticks", - "impliedEdits": { - "tickmode": "linear" - }, - "valType": "any" - }, - "tickangle": { - "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.", - "dflt": "auto", - "editType": "ticks", - "valType": "angle" - }, - "tickcolor": { - "description": "Sets the tick color.", - "dflt": "#444", - "editType": "ticks", - "valType": "color" - }, - "tickfont": { - "color": { - "editType": "ticks", - "valType": "color" - }, - "description": "Sets the tick font.", - "editType": "ticks", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "ticks", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "lineposition": { - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "ticks", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "role": "object", - "shadow": { - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "ticks", - "valType": "string" - }, - "size": { - "editType": "ticks", - "min": 1, - "valType": "number" - }, - "style": { - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "ticks", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "textcase": { - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "ticks", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "ticks", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "ticks", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "tickformat": { - "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*", - "dflt": "", - "editType": "ticks", - "valType": "string" - }, - "tickformatstops": { - "items": { - "tickformatstop": { - "dtickrange": { - "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*", - "editType": "ticks", - "items": [ - { - "editType": "ticks", - "valType": "any" - }, - { - "editType": "ticks", - "valType": "any" - } - ], - "valType": "info_array" - }, - "editType": "ticks", - "enabled": { - "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.", - "dflt": true, - "editType": "ticks", - "valType": "boolean" - }, - "name": { - "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.", - "editType": "none", - "valType": "string" - }, - "role": "object", - "templateitemname": { - "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.", - "editType": "calc", - "valType": "string" - }, - "value": { - "description": "string - dtickformat for described zoom level, the same as *tickformat*", - "dflt": "", - "editType": "ticks", - "valType": "string" - } - } - }, - "role": "object" - }, - "ticklabelindex": { - "arrayOk": true, - "description": "Only for axes with `type` *date* or *linear*. Instead of drawing the major tick label, draw the label for the minor tick that is n positions away from the major tick. E.g. to always draw the label for the minor tick before each major tick, choose `ticklabelindex` -1. This is useful for date axes with `ticklabelmode` *period* if you want to label the period that ends with each major tick instead of the period that begins there.", - "editType": "calc", - "valType": "integer" - }, - "ticklabelindexsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticklabelindex`.", - "editType": "none", - "valType": "string" - }, - "ticklabelmode": { - "description": "Determines where tick labels are drawn with respect to their corresponding ticks and grid lines. Only has an effect for axes of `type` *date* When set to *period*, tick labels are drawn in the middle of the period between ticks.", - "dflt": "instant", - "editType": "ticks", - "valType": "enumerated", - "values": [ - "instant", - "period" - ] - }, - "ticklabeloverflow": { - "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. Otherwise on *category* and *multicategory* axes the default is *allow*. In other cases the default is *hide past div*.", - "editType": "calc", - "valType": "enumerated", - "values": [ - "allow", - "hide past div", - "hide past domain" - ] - }, - "ticklabelposition": { - "description": "Determines where tick labels are drawn with respect to the axis. Please note that top or bottom has no effect on x axes or when `ticklabelmode` is set to *period* or when `tickson` is set to *boundaries*. Similarly, left or right has no effect on y axes or when `ticklabelmode` is set to *period* or when `tickson` is set to *boundaries*. Has no effect on *multicategory* axes. When used on axes linked by `matches` or `scaleanchor`, no extra padding for inside labels would be added by autorange, so that the scales could match.", - "dflt": "outside", - "editType": "calc", - "valType": "enumerated", - "values": [ - "outside", - "inside", - "outside top", - "inside top", - "outside left", - "inside left", - "outside right", - "inside right", - "outside bottom", - "inside bottom" - ] - }, - "ticklabelshift": { - "description": "Shifts the tick labels by the specified number of pixels in parallel to the axis. Positive values move the labels in the positive direction of the axis.", - "dflt": 0, - "editType": "ticks", - "valType": "integer" - }, - "ticklabelstandoff": { - "description": "Sets the standoff distance (in px) between the axis tick labels and their default position. A positive `ticklabelstandoff` moves the labels farther away from the plot area if `ticklabelposition` is *outside*, and deeper into the plot area if `ticklabelposition` is *inside*. A negative `ticklabelstandoff` works in the opposite direction, moving outside ticks towards the plot area and inside ticks towards the outside. If the negative value is large enough, inside ticks can even end up outside and vice versa.", - "dflt": 0, - "editType": "ticks", - "valType": "integer" - }, - "ticklabelstep": { - "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.", - "dflt": 1, - "editType": "ticks", - "min": 1, - "valType": "integer" - }, - "ticklen": { - "description": "Sets the tick length (in px).", - "dflt": 5, - "editType": "ticks", - "min": 0, - "valType": "number" - }, - "tickmode": { - "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). If *sync*, the number of ticks will sync with the overlayed axis set by `overlaying` property.", - "editType": "ticks", - "impliedEdits": {}, - "valType": "enumerated", - "values": [ - "auto", - "linear", - "array", - "sync" - ] - }, - "tickprefix": { - "description": "Sets a tick label prefix.", - "dflt": "", - "editType": "ticks", - "valType": "string" - }, - "ticks": { - "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.", - "editType": "ticks", - "valType": "enumerated", - "values": [ - "outside", - "inside", - "" - ] - }, - "tickson": { - "description": "Determines where ticks and grid lines are drawn with respect to their corresponding tick labels. Only has an effect for axes of `type` *category* or *multicategory*. When set to *boundaries*, ticks and grid lines are drawn half a category to the left/bottom of labels.", - "dflt": "labels", - "editType": "ticks", - "valType": "enumerated", - "values": [ - "labels", - "boundaries" - ] - }, - "ticksuffix": { - "description": "Sets a tick label suffix.", - "dflt": "", - "editType": "ticks", - "valType": "string" - }, - "ticktext": { - "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", - "editType": "ticks", - "valType": "data_array" - }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, - "tickvals": { - "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", - "editType": "ticks", - "valType": "data_array" - }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, - "tickwidth": { - "description": "Sets the tick width (in px).", - "dflt": 1, - "editType": "ticks", - "min": 0, - "valType": "number" - }, - "title": { - "editType": "ticks", - "font": { - "color": { - "editType": "ticks", - "valType": "color" - }, - "description": "Sets this axis' title font.", - "editType": "ticks", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "ticks", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "lineposition": { - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "ticks", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "role": "object", - "shadow": { - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "ticks", - "valType": "string" - }, - "size": { - "editType": "ticks", - "min": 1, - "valType": "number" - }, - "style": { - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "ticks", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "textcase": { - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "ticks", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "ticks", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "ticks", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "role": "object", - "standoff": { - "description": "Sets the standoff distance (in px) between the axis labels and the title text The default value is a function of the axis tick labels, the title `font.size` and the axis `linewidth`. Note that the axis title position is always constrained within the margins, so the actual standoff distance is always less than the set or default value. By setting `standoff` and turning on `automargin`, plotly.js will push the margins to fit the axis title at given standoff distance.", - "editType": "ticks", - "min": 0, - "valType": "number" - }, - "text": { - "description": "Sets the title of this axis.", - "editType": "ticks", - "valType": "string" - } - }, -<<<<<<< HEAD -======= - "role": "object", - "shadow": { - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "calc", - "valType": "string" - }, - "size": { - "editType": "calc", - "min": 1, - "valType": "number" - }, - "style": { - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "textcase": { - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "calc", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "role": "object", - "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", - "editType": "calc", - "valType": "enumerated", - "values": [ - "right", - "top", - "bottom" - ] - }, - "text": { - "description": "Sets the title of the color bar.", - "editType": "calc", - "valType": "string" - } - }, - "x": { - "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.", - "editType": "calc", - "valType": "number" - }, - "xanchor": { - "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.", - "editType": "calc", - "valType": "enumerated", - "values": [ - "left", - "center", - "right" - ] - }, - "xpad": { - "description": "Sets the amount of padding (in px) along the x direction.", - "dflt": 10, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "xref": { - "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.", - "dflt": "paper", - "editType": "calc", - "valType": "enumerated", - "values": [ - "container", - "paper" - ] - }, - "y": { - "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.", - "editType": "calc", - "valType": "number" - }, - "yanchor": { - "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.", - "editType": "calc", - "valType": "enumerated", - "values": [ - "top", - "middle", - "bottom" - ] - }, - "ypad": { - "description": "Sets the amount of padding (in px) along the y direction.", - "dflt": 10, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "yref": { - "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.", - "dflt": "paper", - "editType": "calc", - "valType": "enumerated", - "values": [ - "container", - "paper" - ] - } - }, - "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", - "dflt": null, - "editType": "calc", - "impliedEdits": { - "autocolorscale": false - }, - "valType": "colorscale" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "editType": "calc", - "opacity": { - "arrayOk": true, - "description": "Sets the marker opacity.", - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, - "reversescale": { - "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "role": "object", - "showscale": { - "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "size": { - "arrayOk": true, - "description": "Sets the marker size (in px).", - "dflt": 6, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "sizemin": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points.", - "dflt": 0, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "sizemode": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels.", - "dflt": "diameter", - "editType": "calc", - "valType": "enumerated", - "values": [ - "diameter", - "area" - ] - }, - "sizeref": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`.", - "dflt": 1, - "editType": "calc", - "valType": "number" - }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, - "symbol": { - "arrayOk": true, - "description": "Sets the marker symbol. Full list: https://www.mapbox.com/maki-icons/ Note that the array `marker.color` and `marker.size` are only available for *circle* symbols.", - "dflt": "circle", - "editType": "calc", - "valType": "string" - }, - "symbolsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", - "editType": "none", - "valType": "string" - } - }, - "meta": { - "arrayOk": true, - "description": "Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index.", - "editType": "plot", - "valType": "any" - }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, - "mode": { - "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover.", - "dflt": "markers", - "editType": "calc", - "extras": [ - "none" - ], - "flags": [ - "lines", - "markers", - "text" - ], - "valType": "flaglist" - }, - "name": { - "description": "Sets the trace name. The trace name appears as the legend item and on hover.", - "editType": "style", - "valType": "string" - }, - "opacity": { - "description": "Sets the opacity of the trace.", - "dflt": 1, - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" - }, - "selected": { - "editType": "calc", - "marker": { - "color": { - "description": "Sets the marker color of selected points.", - "editType": "calc", - "valType": "color" - }, - "editType": "calc", - "opacity": { - "description": "Sets the marker opacity of selected points.", - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - }, - "role": "object", - "size": { - "description": "Sets the marker size of selected points.", - "editType": "calc", - "min": 0, - "valType": "number" - } - }, - "role": "object" - }, - "selectedpoints": { - "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.", - "editType": "calc", - "valType": "any" - }, - "showlegend": { - "description": "Determines whether or not an item corresponding to this trace is shown in the legend.", - "dflt": true, - "editType": "style", - "valType": "boolean" - }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, - "subplot": { - "description": "Sets a reference between this trace's data coordinates and a map subplot. If *map* (the default value), the data refer to `layout.map`. If *map2*, the data refer to `layout.map2`, and so on.", - "dflt": "map", - "editType": "calc", - "valType": "subplotid" - }, - "text": { - "arrayOk": true, - "description": "Sets text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", - "dflt": "", - "editType": "calc", - "valType": "string" - }, - "textfont": { - "color": { - "editType": "calc", - "valType": "color" - }, - "description": "Sets the icon text font (color=map.layer.paint.text-color, size=map.layer.layout.text-size). Has an effect only when `type` is set to *symbol*.", - "editType": "calc", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "dflt": "Open Sans Regular, Arial Unicode MS Regular", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "role": "object", - "size": { - "editType": "calc", - "min": 1, - "valType": "number" - }, - "style": { - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "calc", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "textposition": { - "arrayOk": false, - "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.", - "dflt": "middle center", - "editType": "calc", - "valType": "enumerated", - "values": [ - "top left", - "top center", - "top right", - "middle left", - "middle center", - "middle right", - "bottom left", - "bottom center", - "bottom right" - ] - }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, - "texttemplate": { - "arrayOk": true, - "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `lat`, `lon` and `text`.", - "dflt": "", - "editType": "calc", - "valType": "string" - }, - "texttemplatefallback": { - "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", - "dflt": "-", - "editType": "calc", - "valType": "any" - }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, - "type": "scattermap", - "uid": { - "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", - "editType": "plot", - "valType": "string" - }, - "uirevision": { - "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves.", - "editType": "none", - "valType": "any" - }, - "unselected": { - "editType": "calc", - "marker": { - "color": { - "description": "Sets the marker color of unselected points, applied only when a selection exists.", - "editType": "calc", - "valType": "color" - }, - "editType": "calc", - "opacity": { - "description": "Sets the marker opacity of unselected points, applied only when a selection exists.", - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - }, - "role": "object", - "size": { - "description": "Sets the marker size of unselected points, applied only when a selection exists.", - "editType": "calc", - "min": 0, - "valType": "number" - } - }, - "role": "object" - }, - "visible": { - "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).", - "dflt": true, - "editType": "calc", - "valType": "enumerated", - "values": [ - true, - false, - "legendonly" - ] - } - }, - "categories": [ - "map", - "gl", - "symbols", - "showLegend", - "scatter-like" - ], - "meta": { - "description": "The data visualized as scatter point, lines or marker symbols on a MapLibre GL geographic map is provided by longitude/latitude pairs in `lon` and `lat`.", - "hrName": "scatter_map" - }, - "type": "scattermap" - }, - "scattermapbox": { - "animatable": false, - "attributes": { - "below": { - "description": "Determines if this scattermapbox trace's layers are to be inserted before the layer with the specified ID. By default, scattermapbox layers are inserted above all the base layers. To place the scattermapbox layers above every other layer, set `below` to *''*.", - "editType": "calc", - "valType": "string" - }, - "cluster": { - "color": { - "arrayOk": true, - "description": "Sets the color for each cluster step.", - "editType": "calc", - "valType": "color" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "editType": "calc", - "enabled": { - "description": "Determines whether clustering is enabled or disabled.", - "editType": "calc", - "valType": "boolean" - }, - "maxzoom": { - "description": "Sets the maximum zoom level. At zoom levels equal to or greater than this, points will never be clustered.", - "dflt": 24, - "editType": "calc", - "max": 24, - "min": 0, - "valType": "number" - }, - "opacity": { - "arrayOk": true, - "description": "Sets the marker opacity.", - "dflt": 1, - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, - "role": "object", - "size": { - "arrayOk": true, - "description": "Sets the size for each cluster step.", - "dflt": 20, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, - "step": { - "arrayOk": true, - "description": "Sets how many points it takes to create a cluster or advance to the next cluster step. Use this in conjunction with arrays for `size` and / or `color`. If an integer, steps start at multiples of this number. If an array, each step extends from the given value until one less than the next value.", - "dflt": -1, - "editType": "calc", - "min": -1, - "valType": "number" - }, - "stepsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `step`.", - "editType": "none", - "valType": "string" - } - }, - "connectgaps": { - "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "customdata": { - "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements", - "editType": "calc", - "valType": "data_array" - }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, - "fill": { - "description": "Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape.", - "dflt": "none", - "editType": "calc", - "valType": "enumerated", - "values": [ - "none", - "toself" - ] - }, - "fillcolor": { - "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available.", - "editType": "calc", - "valType": "color" - }, - "hoverinfo": { - "arrayOk": true, - "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.", - "dflt": "all", - "editType": "calc", - "extras": [ - "all", - "none", - "skip" - ], - "flags": [ - "lon", - "lat", - "text", - "name" - ], - "valType": "flaglist" - }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, - "hoverlabel": { - "align": { - "arrayOk": true, - "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines", - "dflt": "auto", - "editType": "none", - "valType": "enumerated", - "values": [ - "left", - "right", - "auto" - ] - }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, - "bgcolor": { - "arrayOk": true, - "description": "Sets the background color of the hover labels for this trace", - "editType": "none", - "valType": "color" - }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, - "bordercolor": { - "arrayOk": true, - "description": "Sets the border color of the hover labels for this trace.", - "editType": "none", - "valType": "color" - }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, - "editType": "none", - "font": { - "color": { - "arrayOk": true, - "editType": "none", - "valType": "color" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "description": "Sets the font used in hover labels.", - "editType": "none", - "family": { - "arrayOk": true, - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "none", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, - "lineposition": { - "arrayOk": true, - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "none", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, - "role": "object", - "shadow": { - "arrayOk": true, - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "none", - "valType": "string" - }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, - "size": { - "arrayOk": true, - "editType": "none", - "min": 1, - "valType": "number" - }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, - "style": { - "arrayOk": true, - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "none", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, - "textcase": { - "arrayOk": true, - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "none", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, - "variant": { - "arrayOk": true, - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "none", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, - "weight": { - "arrayOk": true, - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "none", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" - } - }, - "namelength": { - "arrayOk": true, - "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.", - "dflt": 15, - "editType": "none", - "min": -1, - "valType": "integer" - }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, - "role": "object", - "showarrow": { - "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", - "dflt": true, - "editType": "none", - "valType": "boolean" - } - }, - "hovertemplate": { - "arrayOk": true, - "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``.", - "dflt": "", - "editType": "calc", - "valType": "string" - }, - "hovertemplatefallback": { - "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", - "dflt": "-", - "editType": "calc", - "valType": "any" - }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, - "hovertext": { - "arrayOk": true, - "description": "Sets hover text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", - "dflt": "", - "editType": "calc", - "valType": "string" - }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, - "ids": { - "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", - "editType": "calc", - "valType": "data_array" - }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, - "lat": { - "description": "Sets the latitude coordinates (in degrees North).", - "editType": "calc", - "valType": "data_array" - }, - "latsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lat`.", - "editType": "none", - "valType": "string" - }, - "legend": { - "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", - "dflt": "legend", - "editType": "style", - "valType": "subplotid" - }, - "legendgroup": { - "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.", - "dflt": "", - "editType": "style", - "valType": "string" - }, - "legendgrouptitle": { - "editType": "style", - "font": { - "color": { - "editType": "style", - "valType": "color" - }, - "description": "Sets this legend group's title font.", - "editType": "style", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "style", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "lineposition": { - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "style", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "role": "object", - "shadow": { - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "style", - "valType": "string" - }, - "size": { - "editType": "style", - "min": 1, - "valType": "number" - }, - "style": { - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "style", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "textcase": { - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "style", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "style", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "style", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "role": "object", - "text": { - "description": "Sets the title of the legend group.", - "dflt": "", - "editType": "style", - "valType": "string" - } - }, - "legendrank": { - "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.", - "dflt": 1000, - "editType": "style", - "valType": "number" - }, - "legendwidth": { - "description": "Sets the width (in px or fraction) of the legend for this trace.", - "editType": "style", - "min": 0, - "valType": "number" - }, - "line": { - "color": { - "description": "Sets the line color.", - "editType": "calc", - "valType": "color" - }, - "editType": "calc", - "role": "object", - "width": { - "description": "Sets the line width (in px).", - "dflt": 2, - "editType": "calc", - "min": 0, - "valType": "number" - } - }, - "lon": { - "description": "Sets the longitude coordinates (in degrees East).", - "editType": "calc", - "valType": "data_array" - }, - "lonsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lon`.", - "editType": "none", - "valType": "string" - }, - "marker": { - "allowoverlap": { - "description": "Flag to draw all symbols, even if they overlap.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "angle": { - "arrayOk": true, - "description": "Sets the marker orientation from true North, in degrees clockwise. When using the *auto* default, no rotation would be applied in perspective views which is different from using a zero angle.", - "dflt": "auto", - "editType": "calc", - "valType": "number" - }, - "anglesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `angle`.", - "editType": "none", - "valType": "string" - }, - "autocolorscale": { - "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", - "dflt": true, - "editType": "calc", - "impliedEdits": {}, - "valType": "boolean" - }, - "cauto": { - "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.", - "dflt": true, - "editType": "calc", - "impliedEdits": {}, - "valType": "boolean" - }, - "cmax": { - "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well.", - "dflt": null, - "editType": "calc", - "impliedEdits": { - "cauto": false - }, - "valType": "number" - }, - "cmid": { - "description": "Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`.", - "dflt": null, - "editType": "calc", - "impliedEdits": {}, - "valType": "number" - }, - "cmin": { - "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well.", - "dflt": null, - "editType": "calc", - "impliedEdits": { - "cauto": false - }, - "valType": "number" - }, - "color": { - "arrayOk": true, - "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.", - "editType": "calc", - "valType": "color" - }, - "coloraxis": { - "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.", - "dflt": null, - "editType": "calc", - "regex": "/^coloraxis([2-9]|[1-9][0-9]+)?$/", - "valType": "subplotid" - }, - "colorbar": { - "bgcolor": { - "description": "Sets the color of padded area.", - "dflt": "rgba(0,0,0,0)", - "editType": "calc", - "valType": "color" - }, - "bordercolor": { - "description": "Sets the axis line color.", - "dflt": "#444", - "editType": "calc", - "valType": "color" - }, - "borderwidth": { - "description": "Sets the width (in px) or the border enclosing this color bar.", - "dflt": 0, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "dtick": { - "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*", - "editType": "calc", - "impliedEdits": { - "tickmode": "linear" - }, - "valType": "any" - }, - "editType": "calc", - "exponentformat": { - "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from \"femto\" f (10^-15) to \"tera\" T (10^12). *SI extended* covers instead the full SI range from \"quecto\" q (10^-30) to \"quetta\" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation.", - "dflt": "B", - "editType": "calc", - "valType": "enumerated", - "values": [ - "none", - "e", - "E", - "power", - "SI", - "B", - "SI extended" - ] - }, - "labelalias": { - "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax.", - "dflt": false, - "editType": "calc", - "valType": "any" - }, - "len": { - "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.", - "dflt": 1, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "lenmode": { - "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.", - "dflt": "fraction", - "editType": "calc", - "valType": "enumerated", - "values": [ - "fraction", - "pixels" - ] - }, - "minexponent": { - "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.", - "dflt": 3, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "nticks": { - "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.", - "dflt": 0, - "editType": "calc", - "min": 0, - "valType": "integer" - }, - "orientation": { - "description": "Sets the orientation of the colorbar.", - "dflt": "v", - "editType": "calc", - "valType": "enumerated", - "values": [ - "h", - "v" - ] - }, - "outlinecolor": { - "description": "Sets the axis line color.", - "dflt": "#444", - "editType": "calc", - "valType": "color" - }, - "outlinewidth": { - "description": "Sets the width (in px) of the axis line.", - "dflt": 1, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "role": "object", - "separatethousands": { - "description": "If \"true\", even 4-digit integers are separated", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "showexponent": { - "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.", - "dflt": "all", - "editType": "calc", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "showticklabels": { - "description": "Determines whether or not the tick labels are drawn.", - "dflt": true, - "editType": "calc", - "valType": "boolean" - }, - "showtickprefix": { - "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.", - "dflt": "all", - "editType": "calc", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "showticksuffix": { - "description": "Same as `showtickprefix` but for tick suffixes.", - "dflt": "all", - "editType": "calc", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "thickness": { - "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.", - "dflt": 30, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "thicknessmode": { - "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.", - "dflt": "pixels", - "editType": "calc", - "valType": "enumerated", - "values": [ - "fraction", - "pixels" - ] - }, - "tick0": { - "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears.", - "editType": "calc", - "impliedEdits": { - "tickmode": "linear" - }, - "valType": "any" - }, - "tickangle": { - "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.", - "dflt": "auto", - "editType": "calc", - "valType": "angle" - }, - "tickcolor": { - "description": "Sets the tick color.", - "dflt": "#444", - "editType": "calc", - "valType": "color" - }, - "tickfont": { - "color": { - "editType": "calc", - "valType": "color" - }, - "description": "Sets the color bar's tick label font", - "editType": "calc", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "lineposition": { - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "calc", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "role": "object", - "shadow": { - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "calc", - "valType": "string" - }, - "size": { - "editType": "calc", - "min": 1, - "valType": "number" - }, - "style": { - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "textcase": { - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "calc", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "tickformat": { - "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*", - "dflt": "", - "editType": "calc", - "valType": "string" - }, - "tickformatstops": { - "items": { - "tickformatstop": { - "dtickrange": { - "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*", - "editType": "calc", - "items": [ - { - "editType": "calc", - "valType": "any" - }, - { - "editType": "calc", - "valType": "any" - } - ], - "valType": "info_array" - }, - "editType": "calc", - "enabled": { - "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.", - "dflt": true, - "editType": "calc", - "valType": "boolean" - }, - "name": { - "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.", - "editType": "calc", - "valType": "string" - }, - "role": "object", - "templateitemname": { - "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.", - "editType": "calc", - "valType": "string" - }, - "value": { - "description": "string - dtickformat for described zoom level, the same as *tickformat*", - "dflt": "", - "editType": "calc", - "valType": "string" - } - } - }, - "role": "object" - }, - "ticklabeloverflow": { - "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.", - "editType": "calc", - "valType": "enumerated", - "values": [ - "allow", - "hide past div", - "hide past domain" - ] - }, - "ticklabelposition": { - "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.", - "dflt": "outside", - "editType": "calc", - "valType": "enumerated", - "values": [ - "outside", - "inside", - "outside top", - "inside top", - "outside left", - "inside left", - "outside right", - "inside right", - "outside bottom", - "inside bottom" - ] - }, - "ticklabelstep": { - "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.", - "dflt": 1, - "editType": "calc", - "min": 1, - "valType": "integer" - }, - "ticklen": { - "description": "Sets the tick length (in px).", - "dflt": 5, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "tickmode": { - "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).", - "editType": "calc", - "impliedEdits": {}, - "valType": "enumerated", - "values": [ - "auto", - "linear", - "array" - ] - }, - "tickprefix": { - "description": "Sets a tick label prefix.", - "dflt": "", - "editType": "calc", - "valType": "string" - }, - "ticks": { - "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.", - "dflt": "", - "editType": "calc", - "valType": "enumerated", - "values": [ - "outside", - "inside", - "" - ] - }, - "ticksuffix": { - "description": "Sets a tick label suffix.", - "dflt": "", - "editType": "calc", - "valType": "string" - }, - "ticktext": { - "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", - "editType": "calc", - "valType": "data_array" - }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, - "tickvals": { - "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", - "editType": "calc", - "valType": "data_array" - }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, - "tickwidth": { - "description": "Sets the tick width (in px).", - "dflt": 1, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "title": { - "editType": "calc", - "font": { - "color": { - "editType": "calc", - "valType": "color" - }, - "description": "Sets this color bar's title font.", - "editType": "calc", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "lineposition": { - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "calc", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "role": "object", - "shadow": { - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "calc", - "valType": "string" - }, - "size": { - "editType": "calc", - "min": 1, - "valType": "number" - }, - "style": { - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "textcase": { - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "calc", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "role": "object", - "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", - "editType": "calc", - "valType": "enumerated", - "values": [ - "right", - "top", - "bottom" - ] - }, - "text": { - "description": "Sets the title of the color bar.", - "editType": "calc", - "valType": "string" - } - }, - "x": { - "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.", - "editType": "calc", - "valType": "number" - }, - "xanchor": { - "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.", - "editType": "calc", - "valType": "enumerated", - "values": [ - "left", - "center", - "right" - ] - }, - "xpad": { - "description": "Sets the amount of padding (in px) along the x direction.", - "dflt": 10, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "xref": { - "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.", - "dflt": "paper", - "editType": "calc", - "valType": "enumerated", - "values": [ - "container", - "paper" - ] - }, - "y": { - "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.", - "editType": "calc", - "valType": "number" - }, - "yanchor": { - "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.", - "editType": "calc", - "valType": "enumerated", - "values": [ - "top", - "middle", - "bottom" - ] - }, - "ypad": { - "description": "Sets the amount of padding (in px) along the y direction.", - "dflt": 10, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "yref": { - "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.", - "dflt": "paper", - "editType": "calc", - "valType": "enumerated", - "values": [ - "container", - "paper" - ] - } - }, - "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", - "dflt": null, - "editType": "calc", - "impliedEdits": { - "autocolorscale": false - }, - "valType": "colorscale" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "editType": "calc", - "opacity": { - "arrayOk": true, - "description": "Sets the marker opacity.", - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, - "reversescale": { - "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "role": "object", - "showscale": { - "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "size": { - "arrayOk": true, - "description": "Sets the marker size (in px).", - "dflt": 6, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "sizemin": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points.", - "dflt": 0, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "sizemode": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels.", - "dflt": "diameter", - "editType": "calc", - "valType": "enumerated", - "values": [ - "diameter", - "area" - ] - }, - "sizeref": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`.", - "dflt": 1, - "editType": "calc", - "valType": "number" - }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, - "symbol": { - "arrayOk": true, - "description": "Sets the marker symbol. Full list: https://www.mapbox.com/maki-icons/ Note that the array `marker.color` and `marker.size` are only available for *circle* symbols.", - "dflt": "circle", - "editType": "calc", - "valType": "string" - }, - "symbolsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", - "editType": "none", - "valType": "string" - } - }, - "meta": { - "arrayOk": true, - "description": "Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index.", - "editType": "plot", - "valType": "any" - }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, - "mode": { - "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover.", - "dflt": "markers", - "editType": "calc", - "extras": [ - "none" - ], - "flags": [ - "lines", - "markers", - "text" - ], - "valType": "flaglist" - }, - "name": { - "description": "Sets the trace name. The trace name appears as the legend item and on hover.", - "editType": "style", - "valType": "string" - }, - "opacity": { - "description": "Sets the opacity of the trace.", - "dflt": 1, - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" - }, - "selected": { - "editType": "calc", - "marker": { - "color": { - "description": "Sets the marker color of selected points.", - "editType": "calc", - "valType": "color" - }, - "editType": "calc", - "opacity": { - "description": "Sets the marker opacity of selected points.", - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - }, - "role": "object", - "size": { - "description": "Sets the marker size of selected points.", - "editType": "calc", - "min": 0, - "valType": "number" - } - }, - "role": "object" - }, - "selectedpoints": { - "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.", - "editType": "calc", - "valType": "any" - }, - "showlegend": { - "description": "Determines whether or not an item corresponding to this trace is shown in the legend.", - "dflt": true, - "editType": "style", - "valType": "boolean" - }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, - "subplot": { - "description": "mapbox subplots and traces are deprecated! Please consider switching to `map` subplots and traces. Learn more at: https://plotly.com/python/maplibre-migration/ as well as https://plotly.com/javascript/maplibre-migration/ Sets a reference between this trace's data coordinates and a mapbox subplot. If *mapbox* (the default value), the data refer to `layout.mapbox`. If *mapbox2*, the data refer to `layout.mapbox2`, and so on.", - "dflt": "mapbox", - "editType": "calc", - "valType": "subplotid" - }, - "text": { - "arrayOk": true, - "description": "Sets text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", - "dflt": "", - "editType": "calc", - "valType": "string" - }, - "textfont": { - "color": { - "editType": "calc", - "valType": "color" - }, - "description": "Sets the icon text font (color=mapbox.layer.paint.text-color, size=mapbox.layer.layout.text-size). Has an effect only when `type` is set to *symbol*.", - "editType": "calc", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "dflt": "Open Sans Regular, Arial Unicode MS Regular", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "role": "object", - "size": { - "editType": "calc", - "min": 1, - "valType": "number" - }, - "style": { - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "calc", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "textposition": { - "arrayOk": false, - "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.", - "dflt": "middle center", - "editType": "calc", - "valType": "enumerated", - "values": [ - "top left", - "top center", - "top right", - "middle left", - "middle center", - "middle right", - "bottom left", - "bottom center", - "bottom right" - ] - }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, - "texttemplate": { - "arrayOk": true, - "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `lat`, `lon` and `text`.", - "dflt": "", - "editType": "calc", - "valType": "string" - }, - "texttemplatefallback": { - "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", - "dflt": "-", - "editType": "calc", - "valType": "any" - }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, - "type": "scattermapbox", - "uid": { - "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", - "editType": "plot", - "valType": "string" - }, - "uirevision": { - "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves.", - "editType": "none", - "valType": "any" - }, - "unselected": { - "editType": "calc", - "marker": { - "color": { - "description": "Sets the marker color of unselected points, applied only when a selection exists.", - "editType": "calc", - "valType": "color" - }, - "editType": "calc", - "opacity": { - "description": "Sets the marker opacity of unselected points, applied only when a selection exists.", - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - }, - "role": "object", - "size": { - "description": "Sets the marker size of unselected points, applied only when a selection exists.", - "editType": "calc", - "min": 0, - "valType": "number" - } - }, - "role": "object" - }, - "visible": { - "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).", - "dflt": true, - "editType": "calc", - "valType": "enumerated", - "values": [ - true, - false, - "legendonly" - ] - } - }, - "categories": [ - "mapbox", - "gl", - "symbols", - "showLegend", - "scatter-like" - ], - "meta": { - "description": "*scattermapbox* trace is deprecated! Please consider switching to the *scattermap* trace type and `map` subplots. Learn more at: https://plotly.com/python/maplibre-migration/ as well as https://plotly.com/javascript/maplibre-migration/ The data visualized as scatter point, lines or marker symbols on a Mapbox GL geographic map is provided by longitude/latitude pairs in `lon` and `lat`.", - "hrName": "scatter_mapbox" - }, - "type": "scattermapbox" - }, - "scatterpolar": { - "animatable": false, - "attributes": { - "cliponaxis": { - "description": "Determines whether or not markers and text nodes are clipped about the subplot axes. To show markers and text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*.", - "dflt": false, - "editType": "plot", - "valType": "boolean" - }, - "connectgaps": { - "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "customdata": { - "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements", - "editType": "calc", - "valType": "data_array" - }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, - "dr": { - "description": "Sets the r coordinate step.", - "dflt": 1, - "editType": "calc", - "valType": "number" - }, - "dtheta": { - "description": "Sets the theta coordinate step. By default, the `dtheta` step equals the subplot's period divided by the length of the `r` coordinates.", - "editType": "calc", - "valType": "number" - }, - "fill": { - "description": "Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. scatterpolar has a subset of the options available to scatter. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other.", - "dflt": "none", - "editType": "calc", - "valType": "enumerated", - "values": [ - "none", - "toself", - "tonext" - ] - }, - "fillcolor": { - "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available.", - "editType": "style", - "valType": "color" - }, - "hoverinfo": { - "arrayOk": true, - "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.", - "dflt": "all", - "editType": "none", - "extras": [ - "all", - "none", - "skip" - ], - "flags": [ - "r", - "theta", - "text", - "name" - ], - "valType": "flaglist" - }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, - "hoverlabel": { - "align": { - "arrayOk": true, - "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines", - "dflt": "auto", - "editType": "none", - "valType": "enumerated", - "values": [ - "left", - "right", - "auto" - ] - }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, - "bgcolor": { - "arrayOk": true, - "description": "Sets the background color of the hover labels for this trace", - "editType": "none", - "valType": "color" - }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, - "bordercolor": { - "arrayOk": true, - "description": "Sets the border color of the hover labels for this trace.", - "editType": "none", - "valType": "color" - }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, - "editType": "none", - "font": { - "color": { - "arrayOk": true, - "editType": "none", - "valType": "color" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "description": "Sets the font used in hover labels.", - "editType": "none", - "family": { - "arrayOk": true, - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "none", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, - "lineposition": { - "arrayOk": true, - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "none", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, - "role": "object", - "shadow": { - "arrayOk": true, - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "none", - "valType": "string" - }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, - "size": { - "arrayOk": true, - "editType": "none", - "min": 1, - "valType": "number" - }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, - "style": { - "arrayOk": true, - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "none", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, - "textcase": { - "arrayOk": true, - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "none", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, - "variant": { - "arrayOk": true, - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "none", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, - "weight": { - "arrayOk": true, - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "none", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" - } - }, - "namelength": { - "arrayOk": true, - "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.", - "dflt": 15, - "editType": "none", - "min": -1, - "valType": "integer" - }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, - "role": "object", - "showarrow": { - "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", - "dflt": true, - "editType": "none", - "valType": "boolean" - } - }, - "hoveron": { - "description": "Do the hover effects highlight individual points (markers or line points) or do they highlight filled regions? If the fill is *toself* or *tonext* and there are no markers or text, then the default is *fills*, otherwise it is *points*.", - "editType": "style", - "flags": [ - "points", - "fills" - ], - "valType": "flaglist" - }, - "hovertemplate": { - "arrayOk": true, - "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``.", - "dflt": "", - "editType": "none", - "valType": "string" - }, - "hovertemplatefallback": { - "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", - "dflt": "-", - "editType": "none", - "valType": "any" - }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, - "hovertext": { - "arrayOk": true, - "description": "Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", - "dflt": "", - "editType": "style", - "valType": "string" - }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, - "ids": { - "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", - "editType": "calc", - "valType": "data_array" - }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, - "legend": { - "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", - "dflt": "legend", - "editType": "style", - "valType": "subplotid" - }, - "legendgroup": { - "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.", - "dflt": "", - "editType": "style", - "valType": "string" - }, - "legendgrouptitle": { - "editType": "style", - "font": { - "color": { - "editType": "style", - "valType": "color" - }, - "description": "Sets this legend group's title font.", - "editType": "style", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "style", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "lineposition": { - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "style", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "role": "object", - "shadow": { - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "style", - "valType": "string" - }, - "size": { - "editType": "style", - "min": 1, - "valType": "number" - }, - "style": { - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "style", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "textcase": { - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "style", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "style", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "style", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "role": "object", - "text": { - "description": "Sets the title of the legend group.", - "dflt": "", - "editType": "style", - "valType": "string" - } - }, - "legendrank": { - "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.", - "dflt": 1000, - "editType": "style", - "valType": "number" - }, - "legendwidth": { - "description": "Sets the width (in px or fraction) of the legend for this trace.", - "editType": "style", - "min": 0, - "valType": "number" - }, - "line": { - "backoff": { - "arrayOk": true, - "description": "Sets the line back off from the end point of the nth line segment (in px). This option is useful e.g. to avoid overlap with arrowhead markers. With *auto* the lines would trim before markers if `marker.angleref` is set to *previous*.", - "dflt": "auto", - "editType": "plot", - "min": 0, - "valType": "number" - }, - "backoffsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `backoff`.", - "editType": "none", - "valType": "string" - }, - "color": { - "description": "Sets the line color.", - "editType": "style", - "valType": "color" - }, - "dash": { - "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", - "dflt": "solid", - "editType": "style", - "valType": "string", - "values": [ - "solid", - "dot", - "dash", - "longdash", - "dashdot", - "longdashdot" - ] - }, - "editType": "calc", - "role": "object", - "shape": { - "description": "Determines the line shape. With *spline* the lines are drawn using spline interpolation. The other available values correspond to step-wise line shapes.", - "dflt": "linear", - "editType": "plot", - "valType": "enumerated", - "values": [ - "linear", - "spline" - ] - }, - "smoothing": { - "description": "Has an effect only if `shape` is set to *spline* Sets the amount of smoothing. *0* corresponds to no smoothing (equivalent to a *linear* shape).", - "dflt": 1, - "editType": "plot", - "max": 1.3, - "min": 0, - "valType": "number" - }, - "width": { - "description": "Sets the line width (in px).", - "dflt": 2, - "editType": "style", - "min": 0, - "valType": "number" - } - }, - "marker": { - "angle": { - "arrayOk": true, - "description": "Sets the marker angle in respect to `angleref`.", - "dflt": 0, - "editType": "plot", - "valType": "angle" - }, - "angleref": { - "description": "Sets the reference for marker angle. With *previous*, angle 0 points along the line from the previous point to this one. With *up*, angle 0 points toward the top of the screen.", - "dflt": "up", - "editType": "plot", - "valType": "enumerated", - "values": [ - "previous", - "up" - ] - }, - "anglesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `angle`.", - "editType": "none", - "valType": "string" - }, - "autocolorscale": { - "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", - "dflt": true, - "editType": "calc", - "impliedEdits": {}, - "valType": "boolean" - }, - "cauto": { - "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.", - "dflt": true, - "editType": "calc", - "impliedEdits": {}, - "valType": "boolean" - }, - "cmax": { - "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well.", - "dflt": null, - "editType": "plot", - "impliedEdits": { - "cauto": false - }, - "valType": "number" - }, - "cmid": { - "description": "Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`.", - "dflt": null, - "editType": "calc", - "impliedEdits": {}, - "valType": "number" - }, - "cmin": { - "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well.", - "dflt": null, - "editType": "plot", - "impliedEdits": { - "cauto": false - }, - "valType": "number" - }, - "color": { - "arrayOk": true, - "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.", - "editType": "style", - "valType": "color" - }, - "coloraxis": { - "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.", - "dflt": null, - "editType": "calc", - "regex": "/^coloraxis([2-9]|[1-9][0-9]+)?$/", - "valType": "subplotid" - }, - "colorbar": { - "bgcolor": { - "description": "Sets the color of padded area.", - "dflt": "rgba(0,0,0,0)", - "editType": "colorbars", - "valType": "color" - }, - "bordercolor": { - "description": "Sets the axis line color.", - "dflt": "#444", - "editType": "colorbars", - "valType": "color" - }, - "borderwidth": { - "description": "Sets the width (in px) or the border enclosing this color bar.", - "dflt": 0, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "dtick": { - "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*", - "editType": "colorbars", - "impliedEdits": { - "tickmode": "linear" - }, - "valType": "any" - }, - "editType": "colorbars", - "exponentformat": { - "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from \"femto\" f (10^-15) to \"tera\" T (10^12). *SI extended* covers instead the full SI range from \"quecto\" q (10^-30) to \"quetta\" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation.", - "dflt": "B", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "none", - "e", - "E", - "power", - "SI", - "B", - "SI extended" - ] - }, - "labelalias": { - "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax.", - "dflt": false, - "editType": "colorbars", - "valType": "any" - }, - "len": { - "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.", - "dflt": 1, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "lenmode": { - "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.", - "dflt": "fraction", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "fraction", - "pixels" - ] - }, - "minexponent": { - "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.", - "dflt": 3, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "nticks": { - "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.", - "dflt": 0, - "editType": "colorbars", - "min": 0, - "valType": "integer" - }, - "orientation": { - "description": "Sets the orientation of the colorbar.", - "dflt": "v", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "h", - "v" - ] - }, - "outlinecolor": { - "description": "Sets the axis line color.", - "dflt": "#444", - "editType": "colorbars", - "valType": "color" - }, - "outlinewidth": { - "description": "Sets the width (in px) of the axis line.", - "dflt": 1, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "role": "object", - "separatethousands": { - "description": "If \"true\", even 4-digit integers are separated", - "dflt": false, - "editType": "colorbars", - "valType": "boolean" - }, - "showexponent": { - "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.", - "dflt": "all", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "showticklabels": { - "description": "Determines whether or not the tick labels are drawn.", - "dflt": true, - "editType": "colorbars", - "valType": "boolean" - }, - "showtickprefix": { - "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.", - "dflt": "all", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "showticksuffix": { - "description": "Same as `showtickprefix` but for tick suffixes.", - "dflt": "all", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "thickness": { - "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.", - "dflt": 30, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "thicknessmode": { - "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.", - "dflt": "pixels", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "fraction", - "pixels" - ] - }, - "tick0": { - "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears.", - "editType": "colorbars", - "impliedEdits": { - "tickmode": "linear" - }, - "valType": "any" - }, - "tickangle": { - "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.", - "dflt": "auto", - "editType": "colorbars", - "valType": "angle" - }, - "tickcolor": { - "description": "Sets the tick color.", - "dflt": "#444", - "editType": "colorbars", - "valType": "color" - }, - "tickfont": { - "color": { - "editType": "colorbars", - "valType": "color" - }, - "description": "Sets the color bar's tick label font", - "editType": "colorbars", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "colorbars", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "lineposition": { - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "colorbars", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "role": "object", - "shadow": { - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "colorbars", - "valType": "string" - }, - "size": { - "editType": "colorbars", - "min": 1, - "valType": "number" - }, - "style": { - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "textcase": { - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "colorbars", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "tickformat": { - "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*", - "dflt": "", - "editType": "colorbars", - "valType": "string" - }, - "tickformatstops": { - "items": { - "tickformatstop": { - "dtickrange": { - "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*", - "editType": "colorbars", - "items": [ - { - "editType": "colorbars", - "valType": "any" - }, - { - "editType": "colorbars", - "valType": "any" - } - ], - "valType": "info_array" - }, - "editType": "colorbars", - "enabled": { - "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.", - "dflt": true, - "editType": "colorbars", - "valType": "boolean" - }, - "name": { - "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.", - "editType": "colorbars", - "valType": "string" - }, - "role": "object", - "templateitemname": { - "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.", - "editType": "colorbars", - "valType": "string" - }, - "value": { - "description": "string - dtickformat for described zoom level, the same as *tickformat*", - "dflt": "", - "editType": "colorbars", - "valType": "string" - } - } - }, - "role": "object" - }, - "ticklabeloverflow": { - "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "allow", - "hide past div", - "hide past domain" - ] - }, - "ticklabelposition": { - "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.", - "dflt": "outside", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "outside", - "inside", - "outside top", - "inside top", - "outside left", - "inside left", - "outside right", - "inside right", - "outside bottom", - "inside bottom" - ] - }, - "ticklabelstep": { - "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.", - "dflt": 1, - "editType": "colorbars", - "min": 1, - "valType": "integer" - }, - "ticklen": { - "description": "Sets the tick length (in px).", - "dflt": 5, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "tickmode": { - "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).", - "editType": "colorbars", - "impliedEdits": {}, - "valType": "enumerated", - "values": [ - "auto", - "linear", - "array" - ] - }, - "tickprefix": { - "description": "Sets a tick label prefix.", - "dflt": "", - "editType": "colorbars", - "valType": "string" - }, - "ticks": { - "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.", - "dflt": "", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "outside", - "inside", - "" - ] - }, - "ticksuffix": { - "description": "Sets a tick label suffix.", - "dflt": "", - "editType": "colorbars", - "valType": "string" - }, - "ticktext": { - "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", - "editType": "colorbars", - "valType": "data_array" - }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, - "tickvals": { - "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", - "editType": "colorbars", - "valType": "data_array" - }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, - "tickwidth": { - "description": "Sets the tick width (in px).", - "dflt": 1, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "title": { - "editType": "colorbars", - "font": { - "color": { - "editType": "colorbars", - "valType": "color" - }, - "description": "Sets this color bar's title font.", - "editType": "colorbars", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "colorbars", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "lineposition": { - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "colorbars", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "role": "object", - "shadow": { - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "colorbars", - "valType": "string" - }, - "size": { - "editType": "colorbars", - "min": 1, - "valType": "number" - }, - "style": { - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "textcase": { - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "colorbars", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "role": "object", - "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "right", - "top", - "bottom" - ] - }, - "text": { - "description": "Sets the title of the color bar.", - "editType": "colorbars", - "valType": "string" - } - }, - "x": { - "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.", - "editType": "colorbars", - "valType": "number" - }, - "xanchor": { - "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "left", - "center", - "right" - ] - }, - "xpad": { - "description": "Sets the amount of padding (in px) along the x direction.", - "dflt": 10, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "xref": { - "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.", - "dflt": "paper", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "container", - "paper" - ] - }, - "y": { - "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.", - "editType": "colorbars", - "valType": "number" - }, - "yanchor": { - "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "top", - "middle", - "bottom" - ] - }, - "ypad": { - "description": "Sets the amount of padding (in px) along the y direction.", - "dflt": 10, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "yref": { - "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.", - "dflt": "paper", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "container", - "paper" - ] - } - }, - "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", - "dflt": null, - "editType": "calc", - "impliedEdits": { - "autocolorscale": false - }, - "valType": "colorscale" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "editType": "calc", - "gradient": { - "color": { - "arrayOk": true, - "description": "Sets the final color of the gradient fill: the center color for radial, the right for horizontal, or the bottom for vertical.", - "editType": "calc", - "valType": "color" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "editType": "calc", - "role": "object", - "type": { - "arrayOk": true, - "description": "Sets the type of gradient used to fill the markers", - "dflt": "none", - "editType": "calc", - "valType": "enumerated", - "values": [ - "radial", - "horizontal", - "vertical", - "none" - ] - }, - "typesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `type`.", - "editType": "none", - "valType": "string" - } - }, - "line": { - "autocolorscale": { - "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. Has an effect only if in `marker.line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", - "dflt": true, - "editType": "calc", - "impliedEdits": {}, - "valType": "boolean" - }, - "cauto": { - "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.line.color`) or the bounds set in `marker.line.cmin` and `marker.line.cmax` Has an effect only if in `marker.line.color` is set to a numerical array. Defaults to `false` when `marker.line.cmin` and `marker.line.cmax` are set by the user.", - "dflt": true, - "editType": "calc", - "impliedEdits": {}, - "valType": "boolean" - }, - "cmax": { - "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmin` must be set as well.", - "dflt": null, - "editType": "plot", - "impliedEdits": { - "cauto": false - }, - "valType": "number" - }, - "cmid": { - "description": "Sets the mid-point of the color domain by scaling `marker.line.cmin` and/or `marker.line.cmax` to be equidistant to this point. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color`. Has no effect when `marker.line.cauto` is `false`.", - "dflt": null, - "editType": "calc", - "impliedEdits": {}, - "valType": "number" - }, - "cmin": { - "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmax` must be set as well.", - "dflt": null, - "editType": "plot", - "impliedEdits": { - "cauto": false - }, - "valType": "number" - }, - "color": { - "arrayOk": true, - "description": "Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set.", - "editType": "style", - "valType": "color" - }, - "coloraxis": { - "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.", - "dflt": null, - "editType": "calc", - "regex": "/^coloraxis([2-9]|[1-9][0-9]+)?$/", - "valType": "subplotid" - }, - "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", - "dflt": null, - "editType": "calc", - "impliedEdits": { - "autocolorscale": false - }, - "valType": "colorscale" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "editType": "calc", - "reversescale": { - "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.", - "dflt": false, - "editType": "plot", - "valType": "boolean" - }, - "role": "object", - "width": { - "arrayOk": true, - "description": "Sets the width (in px) of the lines bounding the marker points.", - "editType": "style", - "min": 0, - "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" - } - }, - "maxdisplayed": { - "description": "Sets a maximum number of points to be drawn on the graph. *0* corresponds to no limit.", - "dflt": 0, - "editType": "plot", - "min": 0, - "valType": "number" - }, - "opacity": { - "arrayOk": true, - "description": "Sets the marker opacity.", - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" - }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, - "reversescale": { - "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", - "dflt": false, - "editType": "plot", - "valType": "boolean" - }, - "role": "object", - "showscale": { - "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "size": { - "arrayOk": true, - "description": "Sets the marker size (in px).", - "dflt": 6, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "sizemin": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points.", - "dflt": 0, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "sizemode": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels.", - "dflt": "diameter", - "editType": "calc", - "valType": "enumerated", - "values": [ - "diameter", - "area" - ] - }, - "sizeref": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`.", - "dflt": 1, - "editType": "calc", - "valType": "number" - }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, - "standoff": { - "arrayOk": true, - "description": "Moves the marker away from the data point in the direction of `angle` (in px). This can be useful for example if you have another marker at this location and you want to point an arrowhead marker at it.", - "dflt": 0, - "editType": "plot", - "min": 0, - "valType": "number" - }, - "standoffsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `standoff`.", - "editType": "none", - "valType": "string" - }, - "symbol": { - "arrayOk": true, - "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.", - "dflt": "circle", - "editType": "style", - "valType": "enumerated", - "values": [ - 0, - "0", - "circle", - 100, - "100", - "circle-open", - 200, - "200", - "circle-dot", - 300, - "300", - "circle-open-dot", - 1, - "1", - "square", - 101, - "101", - "square-open", - 201, - "201", - "square-dot", - 301, - "301", - "square-open-dot", - 2, - "2", - "diamond", - 102, - "102", - "diamond-open", - 202, - "202", - "diamond-dot", - 302, - "302", - "diamond-open-dot", - 3, - "3", - "cross", - 103, - "103", - "cross-open", - 203, - "203", - "cross-dot", - 303, - "303", - "cross-open-dot", - 4, - "4", - "x", - 104, - "104", - "x-open", - 204, - "204", - "x-dot", - 304, - "304", - "x-open-dot", - 5, - "5", - "triangle-up", - 105, - "105", - "triangle-up-open", - 205, - "205", - "triangle-up-dot", - 305, - "305", - "triangle-up-open-dot", - 6, - "6", - "triangle-down", - 106, - "106", - "triangle-down-open", - 206, - "206", - "triangle-down-dot", - 306, - "306", - "triangle-down-open-dot", - 7, - "7", - "triangle-left", - 107, - "107", - "triangle-left-open", - 207, - "207", - "triangle-left-dot", - 307, - "307", - "triangle-left-open-dot", - 8, - "8", - "triangle-right", - 108, - "108", - "triangle-right-open", - 208, - "208", - "triangle-right-dot", - 308, - "308", - "triangle-right-open-dot", - 9, - "9", - "triangle-ne", - 109, - "109", - "triangle-ne-open", - 209, - "209", - "triangle-ne-dot", - 309, - "309", - "triangle-ne-open-dot", - 10, - "10", - "triangle-se", - 110, - "110", - "triangle-se-open", - 210, - "210", - "triangle-se-dot", - 310, - "310", - "triangle-se-open-dot", - 11, - "11", - "triangle-sw", - 111, - "111", - "triangle-sw-open", - 211, - "211", - "triangle-sw-dot", - 311, - "311", - "triangle-sw-open-dot", - 12, - "12", - "triangle-nw", - 112, - "112", - "triangle-nw-open", - 212, - "212", - "triangle-nw-dot", - 312, - "312", - "triangle-nw-open-dot", - 13, - "13", - "pentagon", - 113, - "113", - "pentagon-open", - 213, - "213", - "pentagon-dot", - 313, - "313", - "pentagon-open-dot", - 14, - "14", - "hexagon", - 114, - "114", - "hexagon-open", - 214, - "214", - "hexagon-dot", - 314, - "314", - "hexagon-open-dot", - 15, - "15", - "hexagon2", - 115, - "115", - "hexagon2-open", - 215, - "215", - "hexagon2-dot", - 315, - "315", - "hexagon2-open-dot", - 16, - "16", - "octagon", - 116, - "116", - "octagon-open", - 216, - "216", - "octagon-dot", - 316, - "316", - "octagon-open-dot", - 17, - "17", - "star", - 117, - "117", - "star-open", - 217, - "217", - "star-dot", - 317, - "317", - "star-open-dot", - 18, - "18", - "hexagram", - 118, - "118", - "hexagram-open", - 218, - "218", - "hexagram-dot", - 318, - "318", - "hexagram-open-dot", - 19, - "19", - "star-triangle-up", - 119, - "119", - "star-triangle-up-open", - 219, - "219", - "star-triangle-up-dot", - 319, - "319", - "star-triangle-up-open-dot", - 20, - "20", - "star-triangle-down", - 120, - "120", - "star-triangle-down-open", - 220, - "220", - "star-triangle-down-dot", - 320, - "320", - "star-triangle-down-open-dot", - 21, - "21", - "star-square", - 121, - "121", - "star-square-open", - 221, - "221", - "star-square-dot", - 321, - "321", - "star-square-open-dot", - 22, - "22", - "star-diamond", - 122, - "122", - "star-diamond-open", - 222, - "222", - "star-diamond-dot", - 322, - "322", - "star-diamond-open-dot", - 23, - "23", - "diamond-tall", - 123, - "123", - "diamond-tall-open", - 223, - "223", - "diamond-tall-dot", - 323, - "323", - "diamond-tall-open-dot", - 24, - "24", - "diamond-wide", - 124, - "124", - "diamond-wide-open", - 224, - "224", - "diamond-wide-dot", - 324, - "324", - "diamond-wide-open-dot", - 25, - "25", - "hourglass", - 125, - "125", - "hourglass-open", - 26, - "26", - "bowtie", - 126, - "126", - "bowtie-open", - 27, - "27", - "circle-cross", - 127, - "127", - "circle-cross-open", - 28, - "28", - "circle-x", - 128, - "128", - "circle-x-open", - 29, - "29", - "square-cross", - 129, - "129", - "square-cross-open", - 30, - "30", - "square-x", - 130, - "130", - "square-x-open", - 31, - "31", - "diamond-cross", - 131, - "131", - "diamond-cross-open", - 32, - "32", - "diamond-x", - 132, - "132", - "diamond-x-open", - 33, - "33", - "cross-thin", - 133, - "133", - "cross-thin-open", - 34, - "34", - "x-thin", - 134, - "134", - "x-thin-open", - 35, - "35", - "asterisk", - 135, - "135", - "asterisk-open", - 36, - "36", - "hash", - 136, - "136", - "hash-open", - 236, - "236", - "hash-dot", - 336, - "336", - "hash-open-dot", - 37, - "37", - "y-up", - 137, - "137", - "y-up-open", - 38, - "38", - "y-down", - 138, - "138", - "y-down-open", - 39, - "39", - "y-left", - 139, - "139", - "y-left-open", - 40, - "40", - "y-right", - 140, - "140", - "y-right-open", - 41, - "41", - "line-ew", - 141, - "141", - "line-ew-open", - 42, - "42", - "line-ns", - 142, - "142", - "line-ns-open", - 43, - "43", - "line-ne", - 143, - "143", - "line-ne-open", - 44, - "44", - "line-nw", - 144, - "144", - "line-nw-open", - 45, - "45", - "arrow-up", - 145, - "145", - "arrow-up-open", - 46, - "46", - "arrow-down", - 146, - "146", - "arrow-down-open", - 47, - "47", - "arrow-left", - 147, - "147", - "arrow-left-open", - 48, - "48", - "arrow-right", - 148, - "148", - "arrow-right-open", - 49, - "49", - "arrow-bar-up", - 149, - "149", - "arrow-bar-up-open", - 50, - "50", - "arrow-bar-down", - 150, - "150", - "arrow-bar-down-open", - 51, - "51", - "arrow-bar-left", - 151, - "151", - "arrow-bar-left-open", - 52, - "52", - "arrow-bar-right", - 152, - "152", - "arrow-bar-right-open", - 53, - "53", - "arrow", - 153, - "153", - "arrow-open", - 54, - "54", - "arrow-wide", - 154, - "154", - "arrow-wide-open" - ] - }, - "symbolsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", - "editType": "none", - "valType": "string" - } - }, - "meta": { - "arrayOk": true, - "description": "Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index.", - "editType": "plot", - "valType": "any" - }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, - "mode": { - "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*.", - "editType": "calc", - "extras": [ - "none" - ], - "flags": [ - "lines", - "markers", - "text" - ], - "valType": "flaglist" - }, - "name": { - "description": "Sets the trace name. The trace name appears as the legend item and on hover.", - "editType": "style", - "valType": "string" - }, - "opacity": { - "description": "Sets the opacity of the trace.", - "dflt": 1, - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" - }, - "r": { - "description": "Sets the radial coordinates", - "editType": "calc+clearAxisTypes", - "valType": "data_array" - }, - "r0": { - "description": "Alternate to `r`. Builds a linear space of r coordinates. Use with `dr` where `r0` is the starting coordinate and `dr` the step.", - "dflt": 0, - "editType": "calc+clearAxisTypes", - "valType": "any" - }, - "rsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `r`.", - "editType": "none", - "valType": "string" - }, - "selected": { - "editType": "style", - "marker": { - "color": { - "description": "Sets the marker color of selected points.", - "editType": "style", - "valType": "color" - }, - "editType": "style", - "opacity": { - "description": "Sets the marker opacity of selected points.", - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" - }, - "role": "object", - "size": { - "description": "Sets the marker size of selected points.", - "editType": "style", - "min": 0, - "valType": "number" - } - }, - "role": "object", - "textfont": { - "color": { - "description": "Sets the text font color of selected points.", - "editType": "style", - "valType": "color" - }, - "editType": "style", - "role": "object" - } - }, - "selectedpoints": { - "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.", - "editType": "calc", - "valType": "any" - }, - "showlegend": { - "description": "Determines whether or not an item corresponding to this trace is shown in the legend.", - "dflt": true, - "editType": "style", - "valType": "boolean" - }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, - "subplot": { - "description": "Sets a reference between this trace's data coordinates and a polar subplot. If *polar* (the default value), the data refer to `layout.polar`. If *polar2*, the data refer to `layout.polar2`, and so on.", - "dflt": "polar", - "editType": "calc", - "valType": "subplotid" - }, - "text": { - "arrayOk": true, - "description": "Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", - "dflt": "", - "editType": "calc", - "valType": "string" - }, - "textfont": { - "color": { - "arrayOk": true, - "editType": "style", - "valType": "color" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "description": "Sets the text font.", - "editType": "calc", - "family": { - "arrayOk": true, - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, - "lineposition": { - "arrayOk": true, - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "calc", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, - "role": "object", - "shadow": { - "arrayOk": true, - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "calc", - "valType": "string" - }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, - "size": { - "arrayOk": true, - "editType": "calc", - "min": 1, - "valType": "number" - }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, - "style": { - "arrayOk": true, - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, - "textcase": { - "arrayOk": true, - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, - "variant": { - "arrayOk": true, - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, - "weight": { - "arrayOk": true, - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "calc", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" - } - }, - "textposition": { - "arrayOk": true, - "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.", - "dflt": "middle center", - "editType": "calc", - "valType": "enumerated", - "values": [ - "top left", - "top center", - "top right", - "middle left", - "middle center", - "middle right", - "bottom left", - "bottom center", - "bottom right" - ] - }, - "textpositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", - "editType": "none", - "valType": "string" - }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, - "texttemplate": { - "arrayOk": true, - "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `r`, `theta` and `text`.", - "dflt": "", - "editType": "plot", - "valType": "string" - }, - "texttemplatefallback": { - "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", - "dflt": "-", - "editType": "plot", - "valType": "any" - }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, - "theta": { - "description": "Sets the angular coordinates", - "editType": "calc+clearAxisTypes", - "valType": "data_array" - }, - "theta0": { - "description": "Alternate to `theta`. Builds a linear space of theta coordinates. Use with `dtheta` where `theta0` is the starting coordinate and `dtheta` the step.", - "dflt": 0, - "editType": "calc+clearAxisTypes", - "valType": "any" - }, - "thetasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `theta`.", - "editType": "none", - "valType": "string" - }, - "thetaunit": { - "description": "Sets the unit of input *theta* values. Has an effect only when on *linear* angular axes.", - "dflt": "degrees", - "editType": "calc+clearAxisTypes", - "valType": "enumerated", - "values": [ - "radians", - "degrees", - "gradians" - ] - }, - "type": "scatterpolar", - "uid": { - "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", - "editType": "plot", - "valType": "string" - }, - "uirevision": { - "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves.", - "editType": "none", - "valType": "any" - }, - "unselected": { - "editType": "style", - "marker": { - "color": { - "description": "Sets the marker color of unselected points, applied only when a selection exists.", - "editType": "style", - "valType": "color" - }, - "editType": "style", - "opacity": { - "description": "Sets the marker opacity of unselected points, applied only when a selection exists.", - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" - }, - "role": "object", - "size": { - "description": "Sets the marker size of unselected points, applied only when a selection exists.", - "editType": "style", - "min": 0, - "valType": "number" - } - }, - "role": "object", - "textfont": { - "color": { - "description": "Sets the text font color of unselected points, applied only when a selection exists.", - "editType": "style", - "valType": "color" - }, - "editType": "style", - "role": "object" - } - }, - "visible": { - "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).", - "dflt": true, - "editType": "calc", - "valType": "enumerated", - "values": [ - true, - false, - "legendonly" - ] - } - }, - "categories": [ - "polar", - "symbols", - "showLegend", - "scatter-like" - ], - "meta": { - "description": "The scatterpolar trace type encompasses line charts, scatter charts, text charts, and bubble charts in polar coordinates. The data visualized as scatter point or lines is set in `r` (radial) and `theta` (angular) coordinates Text (appearing either on the chart or on hover only) is via `text`. Bubble charts are achieved by setting `marker.size` and/or `marker.color` to numerical arrays.", - "hrName": "scatter_polar" - }, - "type": "scatterpolar" - }, - "scatterpolargl": { - "animatable": false, - "attributes": { - "connectgaps": { - "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "customdata": { - "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements", - "editType": "calc", - "valType": "data_array" - }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, - "dr": { - "description": "Sets the r coordinate step.", - "dflt": 1, - "editType": "calc", - "valType": "number" - }, - "dtheta": { - "description": "Sets the theta coordinate step. By default, the `dtheta` step equals the subplot's period divided by the length of the `r` coordinates.", - "editType": "calc", - "valType": "number" - }, - "fill": { - "description": "Sets the area to fill with a solid color. Defaults to *none* unless this trace is stacked, then it gets *tonexty* (*tonextx*) if `orientation` is *v* (*h*) Use with `fillcolor` if not *none*. *tozerox* and *tozeroy* fill to x=0 and y=0 respectively. *tonextx* and *tonexty* fill between the endpoints of this trace and the endpoints of the trace before it, connecting those endpoints with straight lines (to make a stacked area graph); if there is no trace before it, they behave like *tozerox* and *tozeroy*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other. Traces in a `stackgroup` will only fill to (or be filled to) other traces in the same group. With multiple `stackgroup`s or some traces stacked and some not, if fill-linked traces are not already consecutive, the later ones will be pushed down in the drawing order.", - "dflt": "none", - "editType": "calc", - "valType": "enumerated", - "values": [ - "none", - "tozeroy", - "tozerox", - "tonexty", - "tonextx", - "toself", - "tonext" - ] - }, - "fillcolor": { - "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available.", - "editType": "calc", - "valType": "color" - }, - "hoverinfo": { - "arrayOk": true, - "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.", - "dflt": "all", - "editType": "none", - "extras": [ - "all", - "none", - "skip" - ], - "flags": [ - "r", - "theta", - "text", - "name" - ], - "valType": "flaglist" - }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, - "hoverlabel": { - "align": { - "arrayOk": true, - "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines", - "dflt": "auto", - "editType": "none", - "valType": "enumerated", - "values": [ - "left", - "right", - "auto" - ] - }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, - "bgcolor": { - "arrayOk": true, - "description": "Sets the background color of the hover labels for this trace", - "editType": "none", - "valType": "color" - }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, - "bordercolor": { - "arrayOk": true, - "description": "Sets the border color of the hover labels for this trace.", - "editType": "none", - "valType": "color" - }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, - "editType": "none", - "font": { - "color": { - "arrayOk": true, - "editType": "none", - "valType": "color" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "description": "Sets the font used in hover labels.", - "editType": "none", - "family": { - "arrayOk": true, - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "none", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, - "lineposition": { - "arrayOk": true, - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "none", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, - "role": "object", - "shadow": { - "arrayOk": true, - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "none", - "valType": "string" - }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, - "size": { - "arrayOk": true, - "editType": "none", - "min": 1, - "valType": "number" - }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, - "style": { - "arrayOk": true, - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "none", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, - "textcase": { - "arrayOk": true, - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "none", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, - "variant": { - "arrayOk": true, - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "none", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, - "weight": { - "arrayOk": true, - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "none", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" - } - }, - "namelength": { - "arrayOk": true, - "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.", - "dflt": 15, - "editType": "none", - "min": -1, - "valType": "integer" - }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, - "role": "object", - "showarrow": { - "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", - "dflt": true, - "editType": "none", - "valType": "boolean" - } - }, - "hovertemplate": { - "arrayOk": true, - "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``.", - "dflt": "", - "editType": "none", - "valType": "string" - }, - "hovertemplatefallback": { - "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", - "dflt": "-", - "editType": "none", - "valType": "any" - }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, - "hovertext": { - "arrayOk": true, - "description": "Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", - "dflt": "", - "editType": "style", - "valType": "string" - }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, - "ids": { - "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", - "editType": "calc", - "valType": "data_array" - }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, - "legend": { - "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", - "dflt": "legend", - "editType": "style", - "valType": "subplotid" - }, - "legendgroup": { - "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.", - "dflt": "", - "editType": "style", - "valType": "string" - }, - "legendgrouptitle": { - "editType": "style", - "font": { - "color": { - "editType": "style", - "valType": "color" - }, - "description": "Sets this legend group's title font.", - "editType": "style", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "style", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "lineposition": { - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "style", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "role": "object", - "shadow": { - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "style", - "valType": "string" - }, - "size": { - "editType": "style", - "min": 1, - "valType": "number" - }, - "style": { - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "style", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "textcase": { - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "style", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "style", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "style", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "role": "object", - "text": { - "description": "Sets the title of the legend group.", - "dflt": "", - "editType": "style", - "valType": "string" - } - }, - "legendrank": { - "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.", - "dflt": 1000, - "editType": "style", - "valType": "number" - }, - "legendwidth": { - "description": "Sets the width (in px or fraction) of the legend for this trace.", - "editType": "style", - "min": 0, - "valType": "number" - }, - "line": { - "color": { - "description": "Sets the line color.", - "editType": "calc", - "valType": "color" - }, - "dash": { - "description": "Sets the style of the lines.", - "dflt": "solid", - "editType": "calc", - "valType": "enumerated", - "values": [ - "dash", - "dashdot", - "dot", - "longdash", - "longdashdot", - "solid" - ] - }, - "editType": "calc", - "role": "object", - "width": { - "description": "Sets the line width (in px).", - "dflt": 2, - "editType": "calc", - "min": 0, - "valType": "number" - } - }, - "marker": { - "angle": { - "arrayOk": true, - "description": "Sets the marker angle in respect to `angleref`.", - "dflt": 0, - "editType": "calc", - "valType": "angle" - }, - "anglesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `angle`.", - "editType": "none", - "valType": "string" - }, - "autocolorscale": { - "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", - "dflt": true, - "editType": "calc", - "impliedEdits": {}, - "valType": "boolean" - }, - "cauto": { - "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.", - "dflt": true, - "editType": "calc", - "impliedEdits": {}, - "valType": "boolean" - }, - "cmax": { - "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well.", - "dflt": null, - "editType": "calc", - "impliedEdits": { - "cauto": false - }, - "valType": "number" - }, - "cmid": { - "description": "Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`.", - "dflt": null, - "editType": "calc", - "impliedEdits": {}, - "valType": "number" - }, - "cmin": { - "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well.", - "dflt": null, - "editType": "calc", - "impliedEdits": { - "cauto": false - }, - "valType": "number" - }, - "color": { - "arrayOk": true, - "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.", - "editType": "calc", - "valType": "color" - }, - "coloraxis": { - "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.", - "dflt": null, - "editType": "calc", - "regex": "/^coloraxis([2-9]|[1-9][0-9]+)?$/", - "valType": "subplotid" - }, - "colorbar": { - "bgcolor": { - "description": "Sets the color of padded area.", - "dflt": "rgba(0,0,0,0)", - "editType": "calc", - "valType": "color" - }, - "bordercolor": { - "description": "Sets the axis line color.", - "dflt": "#444", - "editType": "calc", - "valType": "color" - }, - "borderwidth": { - "description": "Sets the width (in px) or the border enclosing this color bar.", - "dflt": 0, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "dtick": { - "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*", - "editType": "calc", - "impliedEdits": { - "tickmode": "linear" - }, - "valType": "any" - }, - "editType": "calc", - "exponentformat": { - "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from \"femto\" f (10^-15) to \"tera\" T (10^12). *SI extended* covers instead the full SI range from \"quecto\" q (10^-30) to \"quetta\" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation.", - "dflt": "B", - "editType": "calc", - "valType": "enumerated", - "values": [ - "none", - "e", - "E", - "power", - "SI", - "B", - "SI extended" - ] - }, - "labelalias": { - "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax.", - "dflt": false, - "editType": "calc", - "valType": "any" - }, - "len": { - "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.", - "dflt": 1, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "lenmode": { - "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.", - "dflt": "fraction", - "editType": "calc", - "valType": "enumerated", - "values": [ - "fraction", - "pixels" - ] - }, - "minexponent": { - "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.", - "dflt": 3, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "nticks": { - "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.", - "dflt": 0, - "editType": "calc", - "min": 0, - "valType": "integer" - }, - "orientation": { - "description": "Sets the orientation of the colorbar.", - "dflt": "v", - "editType": "calc", - "valType": "enumerated", - "values": [ - "h", - "v" - ] - }, - "outlinecolor": { - "description": "Sets the axis line color.", - "dflt": "#444", - "editType": "calc", - "valType": "color" - }, - "outlinewidth": { - "description": "Sets the width (in px) of the axis line.", - "dflt": 1, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "role": "object", - "separatethousands": { - "description": "If \"true\", even 4-digit integers are separated", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "showexponent": { - "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.", - "dflt": "all", - "editType": "calc", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "showticklabels": { - "description": "Determines whether or not the tick labels are drawn.", - "dflt": true, - "editType": "calc", - "valType": "boolean" - }, - "showtickprefix": { - "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.", - "dflt": "all", - "editType": "calc", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "showticksuffix": { - "description": "Same as `showtickprefix` but for tick suffixes.", - "dflt": "all", - "editType": "calc", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "thickness": { - "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.", - "dflt": 30, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "thicknessmode": { - "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.", - "dflt": "pixels", - "editType": "calc", - "valType": "enumerated", - "values": [ - "fraction", - "pixels" - ] - }, - "tick0": { - "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears.", - "editType": "calc", - "impliedEdits": { - "tickmode": "linear" - }, - "valType": "any" - }, - "tickangle": { - "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.", - "dflt": "auto", - "editType": "calc", - "valType": "angle" - }, - "tickcolor": { - "description": "Sets the tick color.", - "dflt": "#444", - "editType": "calc", - "valType": "color" - }, - "tickfont": { - "color": { - "editType": "calc", - "valType": "color" - }, - "description": "Sets the color bar's tick label font", - "editType": "calc", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "lineposition": { - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "calc", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "role": "object", - "shadow": { - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "calc", - "valType": "string" - }, - "size": { - "editType": "calc", - "min": 1, - "valType": "number" - }, - "style": { - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "textcase": { - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "calc", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "tickformat": { - "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*", - "dflt": "", - "editType": "calc", - "valType": "string" - }, - "tickformatstops": { - "items": { - "tickformatstop": { - "dtickrange": { - "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*", - "editType": "calc", - "items": [ - { - "editType": "calc", - "valType": "any" - }, - { - "editType": "calc", - "valType": "any" - } - ], - "valType": "info_array" - }, - "editType": "calc", - "enabled": { - "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.", - "dflt": true, - "editType": "calc", - "valType": "boolean" - }, - "name": { - "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.", - "editType": "calc", - "valType": "string" - }, - "role": "object", - "templateitemname": { - "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.", - "editType": "calc", - "valType": "string" - }, - "value": { - "description": "string - dtickformat for described zoom level, the same as *tickformat*", - "dflt": "", - "editType": "calc", - "valType": "string" - } - } - }, - "role": "object" - }, - "ticklabeloverflow": { - "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.", - "editType": "calc", - "valType": "enumerated", - "values": [ - "allow", - "hide past div", - "hide past domain" - ] - }, - "ticklabelposition": { - "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.", - "dflt": "outside", - "editType": "calc", - "valType": "enumerated", - "values": [ - "outside", - "inside", - "outside top", - "inside top", - "outside left", - "inside left", - "outside right", - "inside right", - "outside bottom", - "inside bottom" - ] - }, - "ticklabelstep": { - "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.", - "dflt": 1, - "editType": "calc", - "min": 1, - "valType": "integer" - }, - "ticklen": { - "description": "Sets the tick length (in px).", - "dflt": 5, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "tickmode": { - "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).", - "editType": "calc", - "impliedEdits": {}, - "valType": "enumerated", - "values": [ - "auto", - "linear", - "array" - ] - }, - "tickprefix": { - "description": "Sets a tick label prefix.", - "dflt": "", - "editType": "calc", - "valType": "string" - }, - "ticks": { - "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.", - "dflt": "", - "editType": "calc", - "valType": "enumerated", - "values": [ - "outside", - "inside", - "" - ] - }, - "ticksuffix": { - "description": "Sets a tick label suffix.", - "dflt": "", - "editType": "calc", - "valType": "string" - }, - "ticktext": { - "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", - "editType": "calc", - "valType": "data_array" - }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, - "tickvals": { - "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", - "editType": "calc", - "valType": "data_array" - }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, - "tickwidth": { - "description": "Sets the tick width (in px).", - "dflt": 1, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "title": { - "editType": "calc", - "font": { - "color": { - "editType": "calc", - "valType": "color" - }, - "description": "Sets this color bar's title font.", - "editType": "calc", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "lineposition": { - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "calc", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "role": "object", - "shadow": { - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "calc", - "valType": "string" - }, - "size": { - "editType": "calc", - "min": 1, - "valType": "number" - }, - "style": { - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "textcase": { - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "calc", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "role": "object", - "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", - "editType": "calc", - "valType": "enumerated", - "values": [ - "right", - "top", - "bottom" - ] - }, - "text": { - "description": "Sets the title of the color bar.", - "editType": "calc", - "valType": "string" - } - }, - "x": { - "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.", - "editType": "calc", - "valType": "number" - }, - "xanchor": { - "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.", - "editType": "calc", - "valType": "enumerated", - "values": [ - "left", - "center", - "right" - ] - }, - "xpad": { - "description": "Sets the amount of padding (in px) along the x direction.", - "dflt": 10, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "xref": { - "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.", - "dflt": "paper", - "editType": "calc", - "valType": "enumerated", - "values": [ - "container", - "paper" - ] - }, - "y": { - "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.", - "editType": "calc", - "valType": "number" - }, - "yanchor": { - "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.", - "editType": "calc", - "valType": "enumerated", - "values": [ - "top", - "middle", - "bottom" - ] - }, - "ypad": { - "description": "Sets the amount of padding (in px) along the y direction.", - "dflt": 10, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "yref": { - "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.", - "dflt": "paper", - "editType": "calc", - "valType": "enumerated", - "values": [ - "container", - "paper" - ] - } - }, - "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", - "dflt": null, - "editType": "calc", - "impliedEdits": { - "autocolorscale": false - }, - "valType": "colorscale" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "editType": "calc", - "line": { - "autocolorscale": { - "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. Has an effect only if in `marker.line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", - "dflt": true, - "editType": "calc", - "impliedEdits": {}, - "valType": "boolean" - }, - "cauto": { - "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.line.color`) or the bounds set in `marker.line.cmin` and `marker.line.cmax` Has an effect only if in `marker.line.color` is set to a numerical array. Defaults to `false` when `marker.line.cmin` and `marker.line.cmax` are set by the user.", - "dflt": true, - "editType": "calc", - "impliedEdits": {}, - "valType": "boolean" - }, - "cmax": { - "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmin` must be set as well.", - "dflt": null, - "editType": "calc", - "impliedEdits": { - "cauto": false - }, - "valType": "number" - }, - "cmid": { - "description": "Sets the mid-point of the color domain by scaling `marker.line.cmin` and/or `marker.line.cmax` to be equidistant to this point. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color`. Has no effect when `marker.line.cauto` is `false`.", - "dflt": null, - "editType": "calc", - "impliedEdits": {}, - "valType": "number" - }, - "cmin": { - "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmax` must be set as well.", - "dflt": null, - "editType": "calc", - "impliedEdits": { - "cauto": false - }, - "valType": "number" - }, - "color": { - "arrayOk": true, - "description": "Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set.", - "editType": "calc", - "valType": "color" - }, - "coloraxis": { - "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.", - "dflt": null, - "editType": "calc", - "regex": "/^coloraxis([2-9]|[1-9][0-9]+)?$/", - "valType": "subplotid" - }, - "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", - "dflt": null, - "editType": "calc", - "impliedEdits": { - "autocolorscale": false - }, - "valType": "colorscale" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "editType": "calc", - "reversescale": { - "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "role": "object", - "width": { - "arrayOk": true, - "description": "Sets the width (in px) of the lines bounding the marker points.", - "editType": "calc", - "min": 0, - "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" - } - }, - "opacity": { - "arrayOk": true, - "description": "Sets the marker opacity.", - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, - "reversescale": { - "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "role": "object", - "showscale": { - "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "size": { - "arrayOk": true, - "description": "Sets the marker size (in px).", - "dflt": 6, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "sizemin": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points.", - "dflt": 0, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "sizemode": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels.", - "dflt": "diameter", - "editType": "calc", - "valType": "enumerated", - "values": [ - "diameter", - "area" - ] - }, - "sizeref": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`.", - "dflt": 1, - "editType": "calc", - "valType": "number" - }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, - "symbol": { - "arrayOk": true, - "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.", - "dflt": "circle", - "editType": "calc", - "valType": "enumerated", - "values": [ - 0, - "0", - "circle", - 100, - "100", - "circle-open", - 200, - "200", - "circle-dot", - 300, - "300", - "circle-open-dot", - 1, - "1", - "square", - 101, - "101", - "square-open", - 201, - "201", - "square-dot", - 301, - "301", - "square-open-dot", - 2, - "2", - "diamond", - 102, - "102", - "diamond-open", - 202, - "202", - "diamond-dot", - 302, - "302", - "diamond-open-dot", - 3, - "3", - "cross", - 103, - "103", - "cross-open", - 203, - "203", - "cross-dot", - 303, - "303", - "cross-open-dot", - 4, - "4", - "x", - 104, - "104", - "x-open", - 204, - "204", - "x-dot", - 304, - "304", - "x-open-dot", - 5, - "5", - "triangle-up", - 105, - "105", - "triangle-up-open", - 205, - "205", - "triangle-up-dot", - 305, - "305", - "triangle-up-open-dot", - 6, - "6", - "triangle-down", - 106, - "106", - "triangle-down-open", - 206, - "206", - "triangle-down-dot", - 306, - "306", - "triangle-down-open-dot", - 7, - "7", - "triangle-left", - 107, - "107", - "triangle-left-open", - 207, - "207", - "triangle-left-dot", - 307, - "307", - "triangle-left-open-dot", - 8, - "8", - "triangle-right", - 108, - "108", - "triangle-right-open", - 208, - "208", - "triangle-right-dot", - 308, - "308", - "triangle-right-open-dot", - 9, - "9", - "triangle-ne", - 109, - "109", - "triangle-ne-open", - 209, - "209", - "triangle-ne-dot", - 309, - "309", - "triangle-ne-open-dot", - 10, - "10", - "triangle-se", - 110, - "110", - "triangle-se-open", - 210, - "210", - "triangle-se-dot", - 310, - "310", - "triangle-se-open-dot", - 11, - "11", - "triangle-sw", - 111, - "111", - "triangle-sw-open", - 211, - "211", - "triangle-sw-dot", - 311, - "311", - "triangle-sw-open-dot", - 12, - "12", - "triangle-nw", - 112, - "112", - "triangle-nw-open", - 212, - "212", - "triangle-nw-dot", - 312, - "312", - "triangle-nw-open-dot", - 13, - "13", - "pentagon", - 113, - "113", - "pentagon-open", - 213, - "213", - "pentagon-dot", - 313, - "313", - "pentagon-open-dot", - 14, - "14", - "hexagon", - 114, - "114", - "hexagon-open", - 214, - "214", - "hexagon-dot", - 314, - "314", - "hexagon-open-dot", - 15, - "15", - "hexagon2", - 115, - "115", - "hexagon2-open", - 215, - "215", - "hexagon2-dot", - 315, - "315", - "hexagon2-open-dot", - 16, - "16", - "octagon", - 116, - "116", - "octagon-open", - 216, - "216", - "octagon-dot", - 316, - "316", - "octagon-open-dot", - 17, - "17", - "star", - 117, - "117", - "star-open", - 217, - "217", - "star-dot", - 317, - "317", - "star-open-dot", - 18, - "18", - "hexagram", - 118, - "118", - "hexagram-open", - 218, - "218", - "hexagram-dot", - 318, - "318", - "hexagram-open-dot", - 19, - "19", - "star-triangle-up", - 119, - "119", - "star-triangle-up-open", - 219, - "219", - "star-triangle-up-dot", - 319, - "319", - "star-triangle-up-open-dot", - 20, - "20", - "star-triangle-down", - 120, - "120", - "star-triangle-down-open", - 220, - "220", - "star-triangle-down-dot", - 320, - "320", - "star-triangle-down-open-dot", - 21, - "21", - "star-square", - 121, - "121", - "star-square-open", - 221, - "221", - "star-square-dot", - 321, - "321", - "star-square-open-dot", - 22, - "22", - "star-diamond", - 122, - "122", - "star-diamond-open", - 222, - "222", - "star-diamond-dot", - 322, - "322", - "star-diamond-open-dot", - 23, - "23", - "diamond-tall", - 123, - "123", - "diamond-tall-open", - 223, - "223", - "diamond-tall-dot", - 323, - "323", - "diamond-tall-open-dot", - 24, - "24", - "diamond-wide", - 124, - "124", - "diamond-wide-open", - 224, - "224", - "diamond-wide-dot", - 324, - "324", - "diamond-wide-open-dot", - 25, - "25", - "hourglass", - 125, - "125", - "hourglass-open", - 26, - "26", - "bowtie", - 126, - "126", - "bowtie-open", - 27, - "27", - "circle-cross", - 127, - "127", - "circle-cross-open", - 28, - "28", - "circle-x", - 128, - "128", - "circle-x-open", - 29, - "29", - "square-cross", - 129, - "129", - "square-cross-open", - 30, - "30", - "square-x", - 130, - "130", - "square-x-open", - 31, - "31", - "diamond-cross", - 131, - "131", - "diamond-cross-open", - 32, - "32", - "diamond-x", - 132, - "132", - "diamond-x-open", - 33, - "33", - "cross-thin", - 133, - "133", - "cross-thin-open", - 34, - "34", - "x-thin", - 134, - "134", - "x-thin-open", - 35, - "35", - "asterisk", - 135, - "135", - "asterisk-open", - 36, - "36", - "hash", - 136, - "136", - "hash-open", - 236, - "236", - "hash-dot", - 336, - "336", - "hash-open-dot", - 37, - "37", - "y-up", - 137, - "137", - "y-up-open", - 38, - "38", - "y-down", - 138, - "138", - "y-down-open", - 39, - "39", - "y-left", - 139, - "139", - "y-left-open", - 40, - "40", - "y-right", - 140, - "140", - "y-right-open", - 41, - "41", - "line-ew", - 141, - "141", - "line-ew-open", - 42, - "42", - "line-ns", - 142, - "142", - "line-ns-open", - 43, - "43", - "line-ne", - 143, - "143", - "line-ne-open", - 44, - "44", - "line-nw", - 144, - "144", - "line-nw-open", - 45, - "45", - "arrow-up", - 145, - "145", - "arrow-up-open", - 46, - "46", - "arrow-down", - 146, - "146", - "arrow-down-open", - 47, - "47", - "arrow-left", - 147, - "147", - "arrow-left-open", - 48, - "48", - "arrow-right", - 148, - "148", - "arrow-right-open", - 49, - "49", - "arrow-bar-up", - 149, - "149", - "arrow-bar-up-open", - 50, - "50", - "arrow-bar-down", - 150, - "150", - "arrow-bar-down-open", - 51, - "51", - "arrow-bar-left", - 151, - "151", - "arrow-bar-left-open", - 52, - "52", - "arrow-bar-right", - 152, - "152", - "arrow-bar-right-open", - 53, - "53", - "arrow", - 153, - "153", - "arrow-open", - 54, - "54", - "arrow-wide", - 154, - "154", - "arrow-wide-open" - ] - }, - "symbolsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", - "editType": "none", - "valType": "string" - } - }, - "meta": { - "arrayOk": true, - "description": "Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index.", - "editType": "plot", - "valType": "any" - }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, - "mode": { - "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*.", - "editType": "calc", - "extras": [ - "none" - ], - "flags": [ - "lines", - "markers", - "text" - ], - "valType": "flaglist" - }, - "name": { - "description": "Sets the trace name. The trace name appears as the legend item and on hover.", - "editType": "style", - "valType": "string" - }, - "opacity": { - "description": "Sets the opacity of the trace.", - "dflt": 1, - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" - }, - "r": { - "description": "Sets the radial coordinates", - "editType": "calc+clearAxisTypes", - "valType": "data_array" - }, - "r0": { - "description": "Alternate to `r`. Builds a linear space of r coordinates. Use with `dr` where `r0` is the starting coordinate and `dr` the step.", - "dflt": 0, - "editType": "calc+clearAxisTypes", - "valType": "any" - }, - "rsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `r`.", - "editType": "none", - "valType": "string" - }, - "selected": { - "editType": "style", - "marker": { - "color": { - "description": "Sets the marker color of selected points.", - "editType": "style", - "valType": "color" - }, - "editType": "style", - "opacity": { - "description": "Sets the marker opacity of selected points.", - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" - }, - "role": "object", - "size": { - "description": "Sets the marker size of selected points.", - "editType": "style", - "min": 0, - "valType": "number" - } - }, - "role": "object", - "textfont": { - "color": { - "description": "Sets the text font color of selected points.", - "editType": "style", - "valType": "color" - }, - "editType": "style", - "role": "object" - } - }, - "selectedpoints": { - "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.", - "editType": "calc", - "valType": "any" - }, - "showlegend": { - "description": "Determines whether or not an item corresponding to this trace is shown in the legend.", - "dflt": true, - "editType": "style", - "valType": "boolean" - }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, - "subplot": { - "description": "Sets a reference between this trace's data coordinates and a polar subplot. If *polar* (the default value), the data refer to `layout.polar`. If *polar2*, the data refer to `layout.polar2`, and so on.", - "dflt": "polar", - "editType": "calc", - "valType": "subplotid" - }, - "text": { - "arrayOk": true, - "description": "Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", - "dflt": "", - "editType": "calc", - "valType": "string" - }, - "textfont": { - "color": { - "arrayOk": true, - "editType": "calc", - "valType": "color" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "description": "Sets the text font.", - "editType": "calc", - "family": { - "arrayOk": true, - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, - "role": "object", - "size": { - "arrayOk": true, - "editType": "calc", - "min": 1, - "valType": "number" - }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, - "style": { - "arrayOk": true, - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, - "variant": { - "arrayOk": true, - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "small-caps" - ] - }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, - "weight": { - "arrayOk": true, - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "bold" - ] - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" - } - }, - "textposition": { - "arrayOk": true, - "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.", - "dflt": "middle center", - "editType": "calc", - "valType": "enumerated", - "values": [ - "top left", - "top center", - "top right", - "middle left", - "middle center", - "middle right", - "bottom left", - "bottom center", - "bottom right" - ] - }, - "textpositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", - "editType": "none", - "valType": "string" - }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, - "texttemplate": { - "arrayOk": true, - "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `r`, `theta` and `text`.", - "dflt": "", - "editType": "plot", - "valType": "string" - }, - "texttemplatefallback": { - "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", - "dflt": "-", - "editType": "plot", - "valType": "any" - }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, - "theta": { - "description": "Sets the angular coordinates", - "editType": "calc+clearAxisTypes", - "valType": "data_array" - }, - "theta0": { - "description": "Alternate to `theta`. Builds a linear space of theta coordinates. Use with `dtheta` where `theta0` is the starting coordinate and `dtheta` the step.", - "dflt": 0, - "editType": "calc+clearAxisTypes", - "valType": "any" - }, - "thetasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `theta`.", - "editType": "none", - "valType": "string" - }, - "thetaunit": { - "description": "Sets the unit of input *theta* values. Has an effect only when on *linear* angular axes.", - "dflt": "degrees", - "editType": "calc+clearAxisTypes", - "valType": "enumerated", - "values": [ - "radians", - "degrees", - "gradians" - ] - }, - "type": "scatterpolargl", - "uid": { - "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", - "editType": "plot", - "valType": "string" - }, - "uirevision": { - "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves.", - "editType": "none", - "valType": "any" - }, - "unselected": { - "editType": "style", - "marker": { - "color": { - "description": "Sets the marker color of unselected points, applied only when a selection exists.", - "editType": "style", - "valType": "color" - }, - "editType": "style", - "opacity": { - "description": "Sets the marker opacity of unselected points, applied only when a selection exists.", - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" - }, - "role": "object", - "size": { - "description": "Sets the marker size of unselected points, applied only when a selection exists.", - "editType": "style", - "min": 0, - "valType": "number" - } - }, - "role": "object", - "textfont": { - "color": { - "description": "Sets the text font color of unselected points, applied only when a selection exists.", - "editType": "style", - "valType": "color" - }, - "editType": "style", - "role": "object" - } - }, - "visible": { - "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).", - "dflt": true, - "editType": "calc", - "valType": "enumerated", - "values": [ - true, - false, - "legendonly" - ] - } - }, - "categories": [ - "gl", - "regl", - "polar", - "symbols", - "showLegend", - "scatter-like" - ], - "meta": { - "description": "The scatterpolargl trace type encompasses line charts, scatter charts, and bubble charts in polar coordinates using the WebGL plotting engine. The data visualized as scatter point or lines is set in `r` (radial) and `theta` (angular) coordinates Bubble charts are achieved by setting `marker.size` and/or `marker.color` to numerical arrays.", - "hrName": "scatter_polar_gl" - }, - "type": "scatterpolargl" - }, - "scattersmith": { - "animatable": false, - "attributes": { - "cliponaxis": { - "description": "Determines whether or not markers and text nodes are clipped about the subplot axes. To show markers and text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*.", - "dflt": false, - "editType": "plot", - "valType": "boolean" - }, - "connectgaps": { - "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "customdata": { - "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements", - "editType": "calc", - "valType": "data_array" - }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, - "fill": { - "description": "Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. scattersmith has a subset of the options available to scatter. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other.", - "dflt": "none", - "editType": "calc", - "valType": "enumerated", - "values": [ - "none", - "toself", - "tonext" - ] - }, - "fillcolor": { - "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available.", - "editType": "style", - "valType": "color" - }, - "hoverinfo": { - "arrayOk": true, - "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.", - "dflt": "all", - "editType": "none", - "extras": [ - "all", - "none", - "skip" - ], - "flags": [ - "real", - "imag", - "text", - "name" - ], - "valType": "flaglist" - }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, - "hoverlabel": { - "align": { - "arrayOk": true, - "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines", - "dflt": "auto", - "editType": "none", - "valType": "enumerated", - "values": [ - "left", - "right", - "auto" - ] - }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, - "bgcolor": { - "arrayOk": true, - "description": "Sets the background color of the hover labels for this trace", - "editType": "none", - "valType": "color" - }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, - "bordercolor": { - "arrayOk": true, - "description": "Sets the border color of the hover labels for this trace.", - "editType": "none", - "valType": "color" - }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, - "editType": "none", - "font": { - "color": { - "arrayOk": true, - "editType": "none", - "valType": "color" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "description": "Sets the font used in hover labels.", - "editType": "none", - "family": { - "arrayOk": true, - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "none", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, - "lineposition": { - "arrayOk": true, - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "none", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, - "role": "object", - "shadow": { - "arrayOk": true, - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "none", - "valType": "string" - }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, - "size": { - "arrayOk": true, - "editType": "none", - "min": 1, - "valType": "number" - }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, - "style": { - "arrayOk": true, - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "none", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, - "textcase": { - "arrayOk": true, - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "none", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, - "variant": { - "arrayOk": true, - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "none", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, - "weight": { - "arrayOk": true, - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "none", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" - } - }, - "namelength": { - "arrayOk": true, - "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.", - "dflt": 15, - "editType": "none", - "min": -1, - "valType": "integer" - }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, - "role": "object", - "showarrow": { - "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", - "dflt": true, - "editType": "none", - "valType": "boolean" - } - }, - "hoveron": { - "description": "Do the hover effects highlight individual points (markers or line points) or do they highlight filled regions? If the fill is *toself* or *tonext* and there are no markers or text, then the default is *fills*, otherwise it is *points*.", - "editType": "style", - "flags": [ - "points", - "fills" - ], - "valType": "flaglist" - }, - "hovertemplate": { - "arrayOk": true, - "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``.", - "dflt": "", - "editType": "none", - "valType": "string" - }, - "hovertemplatefallback": { - "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", - "dflt": "-", - "editType": "none", - "valType": "any" - }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, - "hovertext": { - "arrayOk": true, - "description": "Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.", - "dflt": "", - "editType": "style", - "valType": "string" - }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, - "ids": { - "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", - "editType": "calc", - "valType": "data_array" - }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, - "imag": { - "description": "Sets the imaginary component of the data, in units of normalized impedance such that real=1, imag=0 is the center of the chart.", - "editType": "calc+clearAxisTypes", - "valType": "data_array" - }, - "imagsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `imag`.", - "editType": "none", - "valType": "string" - }, - "legend": { - "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", - "dflt": "legend", - "editType": "style", - "valType": "subplotid" - }, - "legendgroup": { - "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.", - "dflt": "", - "editType": "style", - "valType": "string" - }, - "legendgrouptitle": { - "editType": "style", - "font": { - "color": { - "editType": "style", - "valType": "color" - }, - "description": "Sets this legend group's title font.", - "editType": "style", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "style", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "lineposition": { - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "style", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "role": "object", - "shadow": { - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "style", - "valType": "string" - }, - "size": { - "editType": "style", - "min": 1, - "valType": "number" - }, - "style": { - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "style", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "textcase": { - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "style", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "style", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "style", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "role": "object", - "text": { - "description": "Sets the title of the legend group.", - "dflt": "", - "editType": "style", - "valType": "string" - } - }, - "legendrank": { - "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.", - "dflt": 1000, - "editType": "style", - "valType": "number" - }, - "legendwidth": { - "description": "Sets the width (in px or fraction) of the legend for this trace.", - "editType": "style", - "min": 0, - "valType": "number" - }, - "line": { - "backoff": { - "arrayOk": true, - "description": "Sets the line back off from the end point of the nth line segment (in px). This option is useful e.g. to avoid overlap with arrowhead markers. With *auto* the lines would trim before markers if `marker.angleref` is set to *previous*.", - "dflt": "auto", - "editType": "plot", - "min": 0, - "valType": "number" - }, - "backoffsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `backoff`.", - "editType": "none", - "valType": "string" - }, - "color": { - "description": "Sets the line color.", - "editType": "style", - "valType": "color" - }, - "dash": { - "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", - "dflt": "solid", - "editType": "style", - "valType": "string", - "values": [ - "solid", - "dot", - "dash", - "longdash", - "dashdot", - "longdashdot" - ] - }, - "editType": "calc", - "role": "object", - "shape": { - "description": "Determines the line shape. With *spline* the lines are drawn using spline interpolation. The other available values correspond to step-wise line shapes.", - "dflt": "linear", - "editType": "plot", - "valType": "enumerated", - "values": [ - "linear", - "spline" - ] - }, - "smoothing": { - "description": "Has an effect only if `shape` is set to *spline* Sets the amount of smoothing. *0* corresponds to no smoothing (equivalent to a *linear* shape).", - "dflt": 1, - "editType": "plot", - "max": 1.3, - "min": 0, - "valType": "number" - }, - "width": { - "description": "Sets the line width (in px).", - "dflt": 2, - "editType": "style", - "min": 0, - "valType": "number" - } - }, - "marker": { - "angle": { - "arrayOk": true, - "description": "Sets the marker angle in respect to `angleref`.", - "dflt": 0, - "editType": "plot", - "valType": "angle" - }, - "angleref": { - "description": "Sets the reference for marker angle. With *previous*, angle 0 points along the line from the previous point to this one. With *up*, angle 0 points toward the top of the screen.", - "dflt": "up", - "editType": "plot", - "valType": "enumerated", - "values": [ - "previous", - "up" - ] - }, - "anglesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `angle`.", - "editType": "none", - "valType": "string" - }, - "autocolorscale": { - "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", - "dflt": true, - "editType": "calc", - "impliedEdits": {}, - "valType": "boolean" - }, - "cauto": { - "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.", - "dflt": true, - "editType": "calc", - "impliedEdits": {}, - "valType": "boolean" - }, - "cmax": { - "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well.", - "dflt": null, - "editType": "plot", - "impliedEdits": { - "cauto": false - }, - "valType": "number" - }, - "cmid": { - "description": "Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`.", - "dflt": null, - "editType": "calc", - "impliedEdits": {}, - "valType": "number" - }, - "cmin": { - "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well.", - "dflt": null, - "editType": "plot", - "impliedEdits": { - "cauto": false - }, - "valType": "number" - }, - "color": { - "arrayOk": true, - "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.", - "editType": "style", - "valType": "color" - }, - "coloraxis": { - "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.", - "dflt": null, - "editType": "calc", - "regex": "/^coloraxis([2-9]|[1-9][0-9]+)?$/", - "valType": "subplotid" - }, - "colorbar": { - "bgcolor": { - "description": "Sets the color of padded area.", - "dflt": "rgba(0,0,0,0)", - "editType": "colorbars", - "valType": "color" - }, - "bordercolor": { - "description": "Sets the axis line color.", - "dflt": "#444", - "editType": "colorbars", - "valType": "color" - }, - "borderwidth": { - "description": "Sets the width (in px) or the border enclosing this color bar.", - "dflt": 0, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "dtick": { - "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*", - "editType": "colorbars", - "impliedEdits": { - "tickmode": "linear" - }, - "valType": "any" - }, - "editType": "colorbars", - "exponentformat": { - "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from \"femto\" f (10^-15) to \"tera\" T (10^12). *SI extended* covers instead the full SI range from \"quecto\" q (10^-30) to \"quetta\" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation.", - "dflt": "B", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "none", - "e", - "E", - "power", - "SI", - "B", - "SI extended" - ] - }, - "labelalias": { - "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax.", - "dflt": false, - "editType": "colorbars", - "valType": "any" - }, - "len": { - "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.", - "dflt": 1, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "lenmode": { - "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.", - "dflt": "fraction", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "fraction", - "pixels" - ] - }, - "minexponent": { - "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.", - "dflt": 3, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "nticks": { - "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.", - "dflt": 0, - "editType": "colorbars", - "min": 0, - "valType": "integer" - }, - "orientation": { - "description": "Sets the orientation of the colorbar.", - "dflt": "v", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "h", - "v" - ] - }, - "outlinecolor": { - "description": "Sets the axis line color.", - "dflt": "#444", - "editType": "colorbars", - "valType": "color" - }, - "outlinewidth": { - "description": "Sets the width (in px) of the axis line.", - "dflt": 1, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "role": "object", - "separatethousands": { - "description": "If \"true\", even 4-digit integers are separated", - "dflt": false, - "editType": "colorbars", - "valType": "boolean" - }, - "showexponent": { - "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.", - "dflt": "all", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "showticklabels": { - "description": "Determines whether or not the tick labels are drawn.", - "dflt": true, - "editType": "colorbars", - "valType": "boolean" - }, - "showtickprefix": { - "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.", - "dflt": "all", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "showticksuffix": { - "description": "Same as `showtickprefix` but for tick suffixes.", - "dflt": "all", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "thickness": { - "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.", - "dflt": 30, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "thicknessmode": { - "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.", - "dflt": "pixels", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "fraction", - "pixels" - ] - }, - "tick0": { - "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears.", - "editType": "colorbars", - "impliedEdits": { - "tickmode": "linear" - }, - "valType": "any" - }, - "tickangle": { - "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.", - "dflt": "auto", - "editType": "colorbars", - "valType": "angle" - }, - "tickcolor": { - "description": "Sets the tick color.", - "dflt": "#444", - "editType": "colorbars", - "valType": "color" - }, - "tickfont": { - "color": { - "editType": "colorbars", - "valType": "color" - }, - "description": "Sets the color bar's tick label font", - "editType": "colorbars", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "colorbars", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "lineposition": { - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "colorbars", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "role": "object", - "shadow": { - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "colorbars", - "valType": "string" - }, - "size": { - "editType": "colorbars", - "min": 1, - "valType": "number" - }, - "style": { - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "textcase": { - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "colorbars", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "tickformat": { - "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*", - "dflt": "", - "editType": "colorbars", - "valType": "string" - }, - "tickformatstops": { - "items": { - "tickformatstop": { - "dtickrange": { - "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*", - "editType": "colorbars", - "items": [ - { - "editType": "colorbars", - "valType": "any" - }, - { - "editType": "colorbars", - "valType": "any" - } - ], - "valType": "info_array" - }, - "editType": "colorbars", - "enabled": { - "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.", - "dflt": true, - "editType": "colorbars", - "valType": "boolean" - }, - "name": { - "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.", - "editType": "colorbars", - "valType": "string" - }, - "role": "object", - "templateitemname": { - "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.", - "editType": "colorbars", - "valType": "string" - }, - "value": { - "description": "string - dtickformat for described zoom level, the same as *tickformat*", - "dflt": "", - "editType": "colorbars", - "valType": "string" - } - } - }, - "role": "object" - }, - "ticklabeloverflow": { - "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "allow", - "hide past div", - "hide past domain" - ] - }, - "ticklabelposition": { - "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.", - "dflt": "outside", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "outside", - "inside", - "outside top", - "inside top", - "outside left", - "inside left", - "outside right", - "inside right", - "outside bottom", - "inside bottom" - ] - }, - "ticklabelstep": { - "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.", - "dflt": 1, - "editType": "colorbars", - "min": 1, - "valType": "integer" - }, - "ticklen": { - "description": "Sets the tick length (in px).", - "dflt": 5, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "tickmode": { - "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).", - "editType": "colorbars", - "impliedEdits": {}, - "valType": "enumerated", - "values": [ - "auto", - "linear", - "array" - ] - }, - "tickprefix": { - "description": "Sets a tick label prefix.", - "dflt": "", - "editType": "colorbars", - "valType": "string" - }, - "ticks": { - "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.", - "dflt": "", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "outside", - "inside", - "" - ] - }, - "ticksuffix": { - "description": "Sets a tick label suffix.", - "dflt": "", - "editType": "colorbars", - "valType": "string" - }, - "ticktext": { - "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", - "editType": "colorbars", - "valType": "data_array" - }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, - "tickvals": { - "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", - "editType": "colorbars", - "valType": "data_array" - }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, - "tickwidth": { - "description": "Sets the tick width (in px).", - "dflt": 1, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "title": { - "editType": "colorbars", - "font": { - "color": { - "editType": "colorbars", - "valType": "color" - }, - "description": "Sets this color bar's title font.", - "editType": "colorbars", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "colorbars", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "lineposition": { - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "colorbars", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "role": "object", - "shadow": { - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "colorbars", - "valType": "string" - }, - "size": { - "editType": "colorbars", - "min": 1, - "valType": "number" - }, - "style": { - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "textcase": { - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "colorbars", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "role": "object", - "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "right", - "top", - "bottom" - ] - }, - "text": { - "description": "Sets the title of the color bar.", - "editType": "colorbars", - "valType": "string" - } - }, - "x": { - "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.", - "editType": "colorbars", - "valType": "number" - }, - "xanchor": { - "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "left", - "center", - "right" - ] - }, - "xpad": { - "description": "Sets the amount of padding (in px) along the x direction.", - "dflt": 10, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "xref": { - "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.", - "dflt": "paper", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "container", - "paper" - ] - }, - "y": { - "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.", - "editType": "colorbars", - "valType": "number" - }, - "yanchor": { - "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "top", - "middle", - "bottom" - ] - }, - "ypad": { - "description": "Sets the amount of padding (in px) along the y direction.", - "dflt": 10, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "yref": { - "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.", - "dflt": "paper", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "container", - "paper" - ] - } - }, - "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", - "dflt": null, - "editType": "calc", - "impliedEdits": { - "autocolorscale": false - }, - "valType": "colorscale" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "editType": "calc", - "gradient": { - "color": { - "arrayOk": true, - "description": "Sets the final color of the gradient fill: the center color for radial, the right for horizontal, or the bottom for vertical.", - "editType": "calc", - "valType": "color" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "editType": "calc", - "role": "object", - "type": { - "arrayOk": true, - "description": "Sets the type of gradient used to fill the markers", - "dflt": "none", - "editType": "calc", - "valType": "enumerated", - "values": [ - "radial", - "horizontal", - "vertical", - "none" - ] - }, - "typesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `type`.", - "editType": "none", - "valType": "string" - } - }, - "line": { - "autocolorscale": { - "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. Has an effect only if in `marker.line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", - "dflt": true, - "editType": "calc", - "impliedEdits": {}, - "valType": "boolean" - }, - "cauto": { - "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.line.color`) or the bounds set in `marker.line.cmin` and `marker.line.cmax` Has an effect only if in `marker.line.color` is set to a numerical array. Defaults to `false` when `marker.line.cmin` and `marker.line.cmax` are set by the user.", - "dflt": true, - "editType": "calc", - "impliedEdits": {}, - "valType": "boolean" - }, - "cmax": { - "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmin` must be set as well.", - "dflt": null, - "editType": "plot", - "impliedEdits": { - "cauto": false - }, - "valType": "number" - }, - "cmid": { - "description": "Sets the mid-point of the color domain by scaling `marker.line.cmin` and/or `marker.line.cmax` to be equidistant to this point. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color`. Has no effect when `marker.line.cauto` is `false`.", - "dflt": null, - "editType": "calc", - "impliedEdits": {}, - "valType": "number" - }, - "cmin": { - "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmax` must be set as well.", - "dflt": null, - "editType": "plot", - "impliedEdits": { - "cauto": false - }, - "valType": "number" - }, - "color": { - "arrayOk": true, - "description": "Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set.", - "editType": "style", - "valType": "color" - }, - "coloraxis": { - "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.", - "dflt": null, - "editType": "calc", - "regex": "/^coloraxis([2-9]|[1-9][0-9]+)?$/", - "valType": "subplotid" - }, - "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", - "dflt": null, - "editType": "calc", - "impliedEdits": { - "autocolorscale": false - }, - "valType": "colorscale" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "editType": "calc", - "reversescale": { - "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.", - "dflt": false, - "editType": "plot", - "valType": "boolean" - }, - "role": "object", - "width": { - "arrayOk": true, - "description": "Sets the width (in px) of the lines bounding the marker points.", - "editType": "style", - "min": 0, - "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" - } - }, - "maxdisplayed": { - "description": "Sets a maximum number of points to be drawn on the graph. *0* corresponds to no limit.", - "dflt": 0, - "editType": "plot", - "min": 0, - "valType": "number" - }, - "opacity": { - "arrayOk": true, - "description": "Sets the marker opacity.", - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" - }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, - "reversescale": { - "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", - "dflt": false, - "editType": "plot", - "valType": "boolean" - }, - "role": "object", - "showscale": { - "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "size": { - "arrayOk": true, - "description": "Sets the marker size (in px).", - "dflt": 6, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "sizemin": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points.", - "dflt": 0, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "sizemode": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels.", - "dflt": "diameter", - "editType": "calc", - "valType": "enumerated", - "values": [ - "diameter", - "area" - ] - }, - "sizeref": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`.", - "dflt": 1, - "editType": "calc", - "valType": "number" - }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, - "standoff": { - "arrayOk": true, - "description": "Moves the marker away from the data point in the direction of `angle` (in px). This can be useful for example if you have another marker at this location and you want to point an arrowhead marker at it.", - "dflt": 0, - "editType": "plot", - "min": 0, - "valType": "number" - }, - "standoffsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `standoff`.", - "editType": "none", - "valType": "string" - }, - "symbol": { - "arrayOk": true, - "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.", - "dflt": "circle", - "editType": "style", - "valType": "enumerated", - "values": [ - 0, - "0", - "circle", - 100, - "100", - "circle-open", - 200, - "200", - "circle-dot", - 300, - "300", - "circle-open-dot", - 1, - "1", - "square", - 101, - "101", - "square-open", - 201, - "201", - "square-dot", - 301, - "301", - "square-open-dot", - 2, - "2", - "diamond", - 102, - "102", - "diamond-open", - 202, - "202", - "diamond-dot", - 302, - "302", - "diamond-open-dot", - 3, - "3", - "cross", - 103, - "103", - "cross-open", - 203, - "203", - "cross-dot", - 303, - "303", - "cross-open-dot", - 4, - "4", - "x", - 104, - "104", - "x-open", - 204, - "204", - "x-dot", - 304, - "304", - "x-open-dot", - 5, - "5", - "triangle-up", - 105, - "105", - "triangle-up-open", - 205, - "205", - "triangle-up-dot", - 305, - "305", - "triangle-up-open-dot", - 6, - "6", - "triangle-down", - 106, - "106", - "triangle-down-open", - 206, - "206", - "triangle-down-dot", - 306, - "306", - "triangle-down-open-dot", - 7, - "7", - "triangle-left", - 107, - "107", - "triangle-left-open", - 207, - "207", - "triangle-left-dot", - 307, - "307", - "triangle-left-open-dot", - 8, - "8", - "triangle-right", - 108, - "108", - "triangle-right-open", - 208, - "208", - "triangle-right-dot", - 308, - "308", - "triangle-right-open-dot", - 9, - "9", - "triangle-ne", - 109, - "109", - "triangle-ne-open", - 209, - "209", - "triangle-ne-dot", - 309, - "309", - "triangle-ne-open-dot", - 10, - "10", - "triangle-se", - 110, - "110", - "triangle-se-open", - 210, - "210", - "triangle-se-dot", - 310, - "310", - "triangle-se-open-dot", - 11, - "11", - "triangle-sw", - 111, - "111", - "triangle-sw-open", - 211, - "211", - "triangle-sw-dot", - 311, - "311", - "triangle-sw-open-dot", - 12, - "12", - "triangle-nw", - 112, - "112", - "triangle-nw-open", - 212, - "212", - "triangle-nw-dot", - 312, - "312", - "triangle-nw-open-dot", - 13, - "13", - "pentagon", - 113, - "113", - "pentagon-open", - 213, - "213", - "pentagon-dot", - 313, - "313", - "pentagon-open-dot", - 14, - "14", - "hexagon", - 114, - "114", - "hexagon-open", - 214, - "214", - "hexagon-dot", - 314, - "314", - "hexagon-open-dot", - 15, - "15", - "hexagon2", - 115, - "115", - "hexagon2-open", - 215, - "215", - "hexagon2-dot", - 315, - "315", - "hexagon2-open-dot", - 16, - "16", - "octagon", - 116, - "116", - "octagon-open", - 216, - "216", - "octagon-dot", - 316, - "316", - "octagon-open-dot", - 17, - "17", - "star", - 117, - "117", - "star-open", - 217, - "217", - "star-dot", - 317, - "317", - "star-open-dot", - 18, - "18", - "hexagram", - 118, - "118", - "hexagram-open", - 218, - "218", - "hexagram-dot", - 318, - "318", - "hexagram-open-dot", - 19, - "19", - "star-triangle-up", - 119, - "119", - "star-triangle-up-open", - 219, - "219", - "star-triangle-up-dot", - 319, - "319", - "star-triangle-up-open-dot", - 20, - "20", - "star-triangle-down", - 120, - "120", - "star-triangle-down-open", - 220, - "220", - "star-triangle-down-dot", - 320, - "320", - "star-triangle-down-open-dot", - 21, - "21", - "star-square", - 121, - "121", - "star-square-open", - 221, - "221", - "star-square-dot", - 321, - "321", - "star-square-open-dot", - 22, - "22", - "star-diamond", - 122, - "122", - "star-diamond-open", - 222, - "222", - "star-diamond-dot", - 322, - "322", - "star-diamond-open-dot", - 23, - "23", - "diamond-tall", - 123, - "123", - "diamond-tall-open", - 223, - "223", - "diamond-tall-dot", - 323, - "323", - "diamond-tall-open-dot", - 24, - "24", - "diamond-wide", - 124, - "124", - "diamond-wide-open", - 224, - "224", - "diamond-wide-dot", - 324, - "324", - "diamond-wide-open-dot", - 25, - "25", - "hourglass", - 125, - "125", - "hourglass-open", - 26, - "26", - "bowtie", - 126, - "126", - "bowtie-open", - 27, - "27", - "circle-cross", - 127, - "127", - "circle-cross-open", - 28, - "28", - "circle-x", - 128, - "128", - "circle-x-open", - 29, - "29", - "square-cross", - 129, - "129", - "square-cross-open", - 30, - "30", - "square-x", - 130, - "130", - "square-x-open", - 31, - "31", - "diamond-cross", - 131, - "131", - "diamond-cross-open", - 32, - "32", - "diamond-x", - 132, - "132", - "diamond-x-open", - 33, - "33", - "cross-thin", - 133, - "133", - "cross-thin-open", - 34, - "34", - "x-thin", - 134, - "134", - "x-thin-open", - 35, - "35", - "asterisk", - 135, - "135", - "asterisk-open", - 36, - "36", - "hash", - 136, - "136", - "hash-open", - 236, - "236", - "hash-dot", - 336, - "336", - "hash-open-dot", - 37, - "37", - "y-up", - 137, - "137", - "y-up-open", - 38, - "38", - "y-down", - 138, - "138", - "y-down-open", - 39, - "39", - "y-left", - 139, - "139", - "y-left-open", - 40, - "40", - "y-right", - 140, - "140", - "y-right-open", - 41, - "41", - "line-ew", - 141, - "141", - "line-ew-open", - 42, - "42", - "line-ns", - 142, - "142", - "line-ns-open", - 43, - "43", - "line-ne", - 143, - "143", - "line-ne-open", - 44, - "44", - "line-nw", - 144, - "144", - "line-nw-open", - 45, - "45", - "arrow-up", - 145, - "145", - "arrow-up-open", - 46, - "46", - "arrow-down", - 146, - "146", - "arrow-down-open", - 47, - "47", - "arrow-left", - 147, - "147", - "arrow-left-open", - 48, - "48", - "arrow-right", - 148, - "148", - "arrow-right-open", - 49, - "49", - "arrow-bar-up", - 149, - "149", - "arrow-bar-up-open", - 50, - "50", - "arrow-bar-down", - 150, - "150", - "arrow-bar-down-open", - 51, - "51", - "arrow-bar-left", - 151, - "151", - "arrow-bar-left-open", - 52, - "52", - "arrow-bar-right", - 152, - "152", - "arrow-bar-right-open", - 53, - "53", - "arrow", - 153, - "153", - "arrow-open", - 54, - "54", - "arrow-wide", - 154, - "154", - "arrow-wide-open" - ] - }, - "symbolsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", - "editType": "none", - "valType": "string" - } - }, - "meta": { - "arrayOk": true, - "description": "Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index.", - "editType": "plot", - "valType": "any" - }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, - "mode": { - "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*.", - "editType": "calc", - "extras": [ - "none" - ], - "flags": [ - "lines", - "markers", - "text" - ], - "valType": "flaglist" - }, - "name": { - "description": "Sets the trace name. The trace name appears as the legend item and on hover.", - "editType": "style", - "valType": "string" - }, - "opacity": { - "description": "Sets the opacity of the trace.", - "dflt": 1, - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" - }, - "real": { - "description": "Sets the real component of the data, in units of normalized impedance such that real=1, imag=0 is the center of the chart.", - "editType": "calc+clearAxisTypes", - "valType": "data_array" - }, - "realsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `real`.", - "editType": "none", - "valType": "string" - }, - "selected": { - "editType": "style", - "marker": { - "color": { - "description": "Sets the marker color of selected points.", - "editType": "style", - "valType": "color" - }, - "editType": "style", - "opacity": { - "description": "Sets the marker opacity of selected points.", - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" - }, - "role": "object", - "size": { - "description": "Sets the marker size of selected points.", - "editType": "style", - "min": 0, - "valType": "number" - } - }, - "role": "object", - "textfont": { - "color": { - "description": "Sets the text font color of selected points.", - "editType": "style", - "valType": "color" - }, - "editType": "style", - "role": "object" - } - }, - "selectedpoints": { - "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.", - "editType": "calc", - "valType": "any" - }, - "showlegend": { - "description": "Determines whether or not an item corresponding to this trace is shown in the legend.", - "dflt": true, - "editType": "style", - "valType": "boolean" - }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, - "subplot": { - "description": "Sets a reference between this trace's data coordinates and a smith subplot. If *smith* (the default value), the data refer to `layout.smith`. If *smith2*, the data refer to `layout.smith2`, and so on.", - "dflt": "smith", - "editType": "calc", - "valType": "subplotid" - }, - "text": { - "arrayOk": true, - "description": "Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", - "dflt": "", - "editType": "calc", - "valType": "string" - }, - "textfont": { - "color": { - "arrayOk": true, - "editType": "style", - "valType": "color" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "description": "Sets the text font.", - "editType": "calc", - "family": { - "arrayOk": true, - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, - "lineposition": { - "arrayOk": true, - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "calc", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, - "role": "object", - "shadow": { - "arrayOk": true, - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "calc", - "valType": "string" - }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, - "size": { - "arrayOk": true, - "editType": "calc", - "min": 1, - "valType": "number" - }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, - "style": { - "arrayOk": true, - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, - "textcase": { - "arrayOk": true, - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, - "variant": { - "arrayOk": true, - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, - "weight": { - "arrayOk": true, - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "calc", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" - } - }, - "textposition": { - "arrayOk": true, - "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.", - "dflt": "middle center", - "editType": "calc", - "valType": "enumerated", - "values": [ - "top left", - "top center", - "top right", - "middle left", - "middle center", - "middle right", - "bottom left", - "bottom center", - "bottom right" - ] - }, - "textpositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", - "editType": "none", - "valType": "string" - }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, - "texttemplate": { - "arrayOk": true, - "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `real`, `imag` and `text`.", - "dflt": "", - "editType": "plot", - "valType": "string" - }, - "texttemplatefallback": { - "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", - "dflt": "-", - "editType": "plot", - "valType": "any" - }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, - "type": "scattersmith", - "uid": { - "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", - "editType": "plot", - "valType": "string" - }, - "uirevision": { - "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves.", - "editType": "none", - "valType": "any" - }, - "unselected": { - "editType": "style", - "marker": { - "color": { - "description": "Sets the marker color of unselected points, applied only when a selection exists.", - "editType": "style", - "valType": "color" - }, - "editType": "style", - "opacity": { - "description": "Sets the marker opacity of unselected points, applied only when a selection exists.", - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" - }, - "role": "object", - "size": { - "description": "Sets the marker size of unselected points, applied only when a selection exists.", - "editType": "style", - "min": 0, - "valType": "number" - } - }, - "role": "object", - "textfont": { - "color": { - "description": "Sets the text font color of unselected points, applied only when a selection exists.", - "editType": "style", - "valType": "color" - }, - "editType": "style", - "role": "object" - } - }, - "visible": { - "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).", - "dflt": true, - "editType": "calc", - "valType": "enumerated", - "values": [ - true, - false, - "legendonly" - ] - } - }, - "categories": [ - "smith", - "symbols", - "showLegend", - "scatter-like" - ], - "meta": { - "description": "The scattersmith trace type encompasses line charts, scatter charts, text charts, and bubble charts in smith coordinates. The data visualized as scatter point or lines is set in `real` and `imag` (imaginary) coordinates Text (appearing either on the chart or on hover only) is via `text`. Bubble charts are achieved by setting `marker.size` and/or `marker.color` to numerical arrays.", - "hrName": "scatter_smith" - }, - "type": "scattersmith" - }, - "scatterternary": { - "animatable": false, - "attributes": { - "a": { - "description": "Sets the quantity of component `a` in each data point. If `a`, `b`, and `c` are all provided, they need not be normalized, only the relative values matter. If only two arrays are provided they must be normalized to match `ternary.sum`.", - "editType": "calc", - "valType": "data_array" - }, - "asrc": { - "description": "Sets the source reference on Chart Studio Cloud for `a`.", - "editType": "none", - "valType": "string" - }, - "b": { - "description": "Sets the quantity of component `a` in each data point. If `a`, `b`, and `c` are all provided, they need not be normalized, only the relative values matter. If only two arrays are provided they must be normalized to match `ternary.sum`.", - "editType": "calc", - "valType": "data_array" - }, - "bsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `b`.", - "editType": "none", - "valType": "string" - }, - "c": { - "description": "Sets the quantity of component `a` in each data point. If `a`, `b`, and `c` are all provided, they need not be normalized, only the relative values matter. If only two arrays are provided they must be normalized to match `ternary.sum`.", - "editType": "calc", - "valType": "data_array" - }, - "cliponaxis": { - "description": "Determines whether or not markers and text nodes are clipped about the subplot axes. To show markers and text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*.", - "dflt": true, - "editType": "plot", - "valType": "boolean" - }, - "connectgaps": { - "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "csrc": { - "description": "Sets the source reference on Chart Studio Cloud for `c`.", - "editType": "none", - "valType": "string" - }, - "customdata": { - "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements", - "editType": "calc", - "valType": "data_array" - }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, - "fill": { - "description": "Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. scatterternary has a subset of the options available to scatter. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other.", - "dflt": "none", - "editType": "calc", - "valType": "enumerated", - "values": [ - "none", - "toself", - "tonext" - ] - }, - "fillcolor": { - "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available.", - "editType": "style", - "valType": "color" - }, - "hoverinfo": { - "arrayOk": true, - "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.", - "dflt": "all", - "editType": "none", - "extras": [ - "all", - "none", - "skip" - ], - "flags": [ - "a", - "b", - "c", - "text", - "name" - ], - "valType": "flaglist" - }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, - "hoverlabel": { - "align": { - "arrayOk": true, - "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines", - "dflt": "auto", - "editType": "none", - "valType": "enumerated", - "values": [ - "left", - "right", - "auto" - ] - }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, - "bgcolor": { - "arrayOk": true, - "description": "Sets the background color of the hover labels for this trace", - "editType": "none", - "valType": "color" - }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, - "bordercolor": { - "arrayOk": true, - "description": "Sets the border color of the hover labels for this trace.", - "editType": "none", - "valType": "color" - }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, - "editType": "none", - "font": { - "color": { - "arrayOk": true, - "editType": "none", - "valType": "color" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "description": "Sets the font used in hover labels.", - "editType": "none", - "family": { - "arrayOk": true, - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "none", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, - "lineposition": { - "arrayOk": true, - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "none", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, - "role": "object", - "shadow": { - "arrayOk": true, - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "none", - "valType": "string" - }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, - "size": { - "arrayOk": true, - "editType": "none", - "min": 1, - "valType": "number" - }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, - "style": { - "arrayOk": true, - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "none", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, - "textcase": { - "arrayOk": true, - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "none", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, - "variant": { - "arrayOk": true, - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "none", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, - "weight": { - "arrayOk": true, - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "none", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" - } - }, - "namelength": { - "arrayOk": true, - "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.", - "dflt": 15, - "editType": "none", - "min": -1, - "valType": "integer" - }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, - "role": "object", - "showarrow": { - "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", - "dflt": true, - "editType": "none", - "valType": "boolean" - } - }, - "hoveron": { - "description": "Do the hover effects highlight individual points (markers or line points) or do they highlight filled regions? If the fill is *toself* or *tonext* and there are no markers or text, then the default is *fills*, otherwise it is *points*.", - "editType": "style", - "flags": [ - "points", - "fills" - ], - "valType": "flaglist" - }, - "hovertemplate": { - "arrayOk": true, - "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``.", - "dflt": "", - "editType": "none", - "valType": "string" - }, - "hovertemplatefallback": { - "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", - "dflt": "-", - "editType": "none", - "valType": "any" - }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, - "hovertext": { - "arrayOk": true, - "description": "Sets hover text elements associated with each (a,b,c) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the the data points in (a,b,c). To be seen, trace `hoverinfo` must contain a *text* flag.", - "dflt": "", - "editType": "style", - "valType": "string" - }, - "hovertextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.", - "editType": "none", - "valType": "string" - }, - "ids": { - "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", - "editType": "calc", - "valType": "data_array" - }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, - "legend": { - "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", - "dflt": "legend", - "editType": "style", - "valType": "subplotid" - }, - "legendgroup": { - "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.", - "dflt": "", - "editType": "style", - "valType": "string" - }, - "legendgrouptitle": { - "editType": "style", - "font": { - "color": { - "editType": "style", - "valType": "color" - }, - "description": "Sets this legend group's title font.", - "editType": "style", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "style", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "lineposition": { - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "style", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "role": "object", - "shadow": { - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "style", - "valType": "string" - }, - "size": { - "editType": "style", - "min": 1, - "valType": "number" - }, - "style": { - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "style", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "textcase": { - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "style", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "style", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "style", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "role": "object", - "text": { - "description": "Sets the title of the legend group.", - "dflt": "", - "editType": "style", - "valType": "string" - } - }, - "legendrank": { - "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.", - "dflt": 1000, - "editType": "style", - "valType": "number" - }, - "legendwidth": { - "description": "Sets the width (in px or fraction) of the legend for this trace.", - "editType": "style", - "min": 0, - "valType": "number" - }, - "line": { - "backoff": { - "arrayOk": true, - "description": "Sets the line back off from the end point of the nth line segment (in px). This option is useful e.g. to avoid overlap with arrowhead markers. With *auto* the lines would trim before markers if `marker.angleref` is set to *previous*.", - "dflt": "auto", - "editType": "plot", - "min": 0, - "valType": "number" - }, - "backoffsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `backoff`.", - "editType": "none", - "valType": "string" - }, - "color": { - "description": "Sets the line color.", - "editType": "style", - "valType": "color" - }, - "dash": { - "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", - "dflt": "solid", - "editType": "style", - "valType": "string", - "values": [ - "solid", - "dot", - "dash", - "longdash", - "dashdot", - "longdashdot" - ] - }, - "editType": "calc", - "role": "object", - "shape": { - "description": "Determines the line shape. With *spline* the lines are drawn using spline interpolation. The other available values correspond to step-wise line shapes.", - "dflt": "linear", - "editType": "plot", - "valType": "enumerated", - "values": [ - "linear", - "spline" - ] - }, - "smoothing": { - "description": "Has an effect only if `shape` is set to *spline* Sets the amount of smoothing. *0* corresponds to no smoothing (equivalent to a *linear* shape).", - "dflt": 1, - "editType": "plot", - "max": 1.3, - "min": 0, - "valType": "number" - }, - "width": { - "description": "Sets the line width (in px).", - "dflt": 2, - "editType": "style", - "min": 0, - "valType": "number" - } - }, - "marker": { - "angle": { - "arrayOk": true, - "description": "Sets the marker angle in respect to `angleref`.", - "dflt": 0, - "editType": "plot", - "valType": "angle" - }, - "angleref": { - "description": "Sets the reference for marker angle. With *previous*, angle 0 points along the line from the previous point to this one. With *up*, angle 0 points toward the top of the screen.", - "dflt": "up", - "editType": "plot", - "valType": "enumerated", - "values": [ - "previous", - "up" - ] - }, - "anglesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `angle`.", - "editType": "none", - "valType": "string" - }, - "autocolorscale": { - "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", - "dflt": true, - "editType": "calc", - "impliedEdits": {}, - "valType": "boolean" - }, - "cauto": { - "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.", - "dflt": true, - "editType": "calc", - "impliedEdits": {}, - "valType": "boolean" - }, - "cmax": { - "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well.", - "dflt": null, - "editType": "plot", - "impliedEdits": { - "cauto": false - }, - "valType": "number" - }, - "cmid": { - "description": "Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`.", - "dflt": null, - "editType": "calc", - "impliedEdits": {}, - "valType": "number" - }, - "cmin": { - "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well.", - "dflt": null, - "editType": "plot", - "impliedEdits": { - "cauto": false - }, - "valType": "number" - }, - "color": { - "arrayOk": true, - "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.", - "editType": "style", - "valType": "color" - }, - "coloraxis": { - "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.", - "dflt": null, - "editType": "calc", - "regex": "/^coloraxis([2-9]|[1-9][0-9]+)?$/", - "valType": "subplotid" - }, - "colorbar": { - "bgcolor": { - "description": "Sets the color of padded area.", - "dflt": "rgba(0,0,0,0)", - "editType": "colorbars", - "valType": "color" - }, - "bordercolor": { - "description": "Sets the axis line color.", - "dflt": "#444", - "editType": "colorbars", - "valType": "color" - }, - "borderwidth": { - "description": "Sets the width (in px) or the border enclosing this color bar.", - "dflt": 0, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "dtick": { - "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*", - "editType": "colorbars", - "impliedEdits": { - "tickmode": "linear" - }, - "valType": "any" - }, - "editType": "colorbars", - "exponentformat": { - "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from \"femto\" f (10^-15) to \"tera\" T (10^12). *SI extended* covers instead the full SI range from \"quecto\" q (10^-30) to \"quetta\" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation.", - "dflt": "B", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "none", - "e", - "E", - "power", - "SI", - "B", - "SI extended" - ] - }, - "labelalias": { - "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax.", - "dflt": false, - "editType": "colorbars", - "valType": "any" - }, - "len": { - "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.", - "dflt": 1, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "lenmode": { - "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.", - "dflt": "fraction", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "fraction", - "pixels" - ] - }, - "minexponent": { - "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.", - "dflt": 3, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "nticks": { - "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.", - "dflt": 0, - "editType": "colorbars", - "min": 0, - "valType": "integer" - }, - "orientation": { - "description": "Sets the orientation of the colorbar.", - "dflt": "v", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "h", - "v" - ] - }, - "outlinecolor": { - "description": "Sets the axis line color.", - "dflt": "#444", - "editType": "colorbars", - "valType": "color" - }, - "outlinewidth": { - "description": "Sets the width (in px) of the axis line.", - "dflt": 1, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "role": "object", - "separatethousands": { - "description": "If \"true\", even 4-digit integers are separated", - "dflt": false, - "editType": "colorbars", - "valType": "boolean" - }, - "showexponent": { - "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.", - "dflt": "all", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "showticklabels": { - "description": "Determines whether or not the tick labels are drawn.", - "dflt": true, - "editType": "colorbars", - "valType": "boolean" - }, - "showtickprefix": { - "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.", - "dflt": "all", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "showticksuffix": { - "description": "Same as `showtickprefix` but for tick suffixes.", - "dflt": "all", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "thickness": { - "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.", - "dflt": 30, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "thicknessmode": { - "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.", - "dflt": "pixels", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "fraction", - "pixels" - ] - }, - "tick0": { - "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears.", - "editType": "colorbars", - "impliedEdits": { - "tickmode": "linear" - }, - "valType": "any" - }, - "tickangle": { - "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.", - "dflt": "auto", - "editType": "colorbars", - "valType": "angle" - }, - "tickcolor": { - "description": "Sets the tick color.", - "dflt": "#444", - "editType": "colorbars", - "valType": "color" - }, - "tickfont": { - "color": { - "editType": "colorbars", - "valType": "color" - }, - "description": "Sets the color bar's tick label font", - "editType": "colorbars", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "colorbars", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "lineposition": { - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "colorbars", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "role": "object", - "shadow": { - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "colorbars", - "valType": "string" - }, - "size": { - "editType": "colorbars", - "min": 1, - "valType": "number" - }, - "style": { - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "textcase": { - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "colorbars", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "tickformat": { - "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*", - "dflt": "", - "editType": "colorbars", - "valType": "string" - }, - "tickformatstops": { - "items": { - "tickformatstop": { - "dtickrange": { - "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*", - "editType": "colorbars", - "items": [ - { - "editType": "colorbars", - "valType": "any" - }, - { - "editType": "colorbars", - "valType": "any" - } - ], - "valType": "info_array" - }, - "editType": "colorbars", - "enabled": { - "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.", + "rangeselector": { + "activecolor": { + "description": "Sets the background color of the active range selector button.", + "editType": "plot", + "valType": "color" + }, + "bgcolor": { + "description": "Sets the background color of the range selector buttons.", + "dflt": "#eee", + "editType": "plot", + "valType": "color" + }, + "bordercolor": { + "description": "Sets the color of the border enclosing the range selector.", + "dflt": "#444", + "editType": "plot", + "valType": "color" + }, + "borderwidth": { + "description": "Sets the width (in px) of the border enclosing the range selector.", + "dflt": 0, + "editType": "plot", + "min": 0, + "valType": "number" + }, + "buttons": { + "items": { + "button": { + "count": { + "description": "Sets the number of steps to take to update the range. Use with `step` to specify the update interval.", + "dflt": 1, + "editType": "plot", + "min": 0, + "valType": "number" + }, + "description": "Sets the specifications for each buttons. By default, a range selector comes with no buttons.", + "editType": "plot", + "label": { + "description": "Sets the text label to appear on the button.", + "editType": "plot", + "valType": "string" + }, + "name": { + "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.", + "editType": "none", + "valType": "string" + }, + "role": "object", + "step": { + "description": "The unit of measurement that the `count` value will set the range by.", + "dflt": "month", + "editType": "plot", + "valType": "enumerated", + "values": [ + "month", + "year", + "day", + "hour", + "minute", + "second", + "all" + ] + }, + "stepmode": { + "description": "Sets the range update mode. If *backward*, the range update shifts the start of range back *count* times *step* milliseconds. If *todate*, the range update shifts the start of range back to the first timestamp from *count* times *step* milliseconds back. For example, with `step` set to *year* and `count` set to *1* the range update shifts the start of the range back to January 01 of the current year. Month and year *todate* are currently available only for the built-in (Gregorian) calendar.", + "dflt": "backward", + "editType": "plot", + "valType": "enumerated", + "values": [ + "backward", + "todate" + ] + }, + "templateitemname": { + "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.", + "editType": "calc", + "valType": "string" + }, + "visible": { + "description": "Determines whether or not this button is visible.", + "dflt": true, + "editType": "plot", + "valType": "boolean" + } + } + }, + "role": "object" + }, + "editType": "plot", + "font": { + "color": { + "editType": "plot", + "valType": "color" + }, + "description": "Sets the font of the range selector button text.", + "editType": "plot", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "plot", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "plot", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "plot", + "valType": "string" + }, + "size": { + "editType": "plot", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "plot", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "plot", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "plot", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "plot", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "role": "object", + "visible": { + "description": "Determines whether or not this range selector is visible. Note that range selectors are only available for x axes of `type` set to or auto-typed to *date*.", + "editType": "plot", + "valType": "boolean" + }, + "x": { + "description": "Sets the x position (in normalized coordinates) of the range selector.", + "editType": "plot", + "max": 3, + "min": -2, + "valType": "number" + }, + "xanchor": { + "description": "Sets the range selector's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the range selector.", + "dflt": "left", + "editType": "plot", + "valType": "enumerated", + "values": [ + "auto", + "left", + "center", + "right" + ] + }, + "y": { + "description": "Sets the y position (in normalized coordinates) of the range selector.", + "editType": "plot", + "max": 3, + "min": -2, + "valType": "number" + }, + "yanchor": { + "description": "Sets the range selector's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the range selector.", + "dflt": "bottom", + "editType": "plot", + "valType": "enumerated", + "values": [ + "auto", + "top", + "middle", + "bottom" + ] + } + }, + "rangeslider": { + "autorange": { + "description": "Determines whether or not the range slider range is computed in relation to the input data. If `range` is provided, then `autorange` is set to *false*.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "bgcolor": { + "description": "Sets the background color of the range slider.", + "dflt": "#fff", + "editType": "plot", + "valType": "color" + }, + "bordercolor": { + "description": "Sets the border color of the range slider.", + "dflt": "#444", + "editType": "plot", + "valType": "color" + }, + "borderwidth": { + "description": "Sets the border width of the range slider.", + "dflt": 0, + "editType": "plot", + "min": 0, + "valType": "integer" + }, + "editType": "calc", + "range": { + "description": "Sets the range of the range slider. If not set, defaults to the full xaxis range. If the axis `type` is *log*, then you must take the log of your desired range. If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears.", + "editType": "calc", + "impliedEdits": { + "autorange": false + }, + "items": [ + { + "editType": "calc", + "impliedEdits": { + "^autorange": false + }, + "valType": "any" + }, + { + "editType": "calc", + "impliedEdits": { + "^autorange": false + }, + "valType": "any" + } + ], + "valType": "info_array" + }, + "role": "object", + "thickness": { + "description": "The height of the range slider as a fraction of the total plot area height.", + "dflt": 0.15, + "editType": "plot", + "max": 1, + "min": 0, + "valType": "number" + }, + "visible": { + "description": "Determines whether or not the range slider will be visible. If visible, perpendicular axes will be set to `fixedrange`", + "dflt": true, + "editType": "calc", + "valType": "boolean" + }, + "yaxis": { + "_isSubplotObj": true, + "editType": "calc", + "range": { + "description": "Sets the range of this axis for the rangeslider.", + "editType": "plot", + "items": [ + { + "editType": "plot", + "valType": "any" + }, + { + "editType": "plot", + "valType": "any" + } + ], + "valType": "info_array" + }, + "rangemode": { + "description": "Determines whether or not the range of this axis in the rangeslider use the same value than in the main plot when zooming in/out. If *auto*, the autorange will be used. If *fixed*, the `range` is used. If *match*, the current range of the corresponding y-axis on the main subplot is used.", + "dflt": "match", + "editType": "calc", + "valType": "enumerated", + "values": [ + "auto", + "fixed", + "match" + ] + }, + "role": "object" + } + }, + "role": "object", + "scaleanchor": { + "description": "If set to another axis id (e.g. `x2`, `y`), the range of this axis changes together with the range of the corresponding axis such that the scale of pixels per unit is in a constant ratio. Both axes are still zoomable, but when you zoom one, the other will zoom the same amount, keeping a fixed midpoint. `constrain` and `constraintoward` determine how we enforce the constraint. You can chain these, ie `yaxis: {scaleanchor: *x*}, xaxis2: {scaleanchor: *y*}` but you can only link axes of the same `type`. The linked axis can have the opposite letter (to constrain the aspect ratio) or the same letter (to match scales across subplots). Loops (`yaxis: {scaleanchor: *x*}, xaxis: {scaleanchor: *y*}` or longer) are redundant and the last constraint encountered will be ignored to avoid possible inconsistent constraints via `scaleratio`. Note that setting axes simultaneously in both a `scaleanchor` and a `matches` constraint is currently forbidden. Setting `false` allows to remove a default constraint (occasionally, you may need to prevent a default `scaleanchor` constraint from being applied, eg. when having an image trace `yaxis: {scaleanchor: \"x\"}` is set automatically in order for pixels to be rendered as squares, setting `yaxis: {scaleanchor: false}` allows to remove the constraint).", + "editType": "plot", + "valType": "enumerated", + "values": [ + "/^x([2-9]|[1-9][0-9]+)?( domain)?$/", + "/^y([2-9]|[1-9][0-9]+)?( domain)?$/", + false + ] + }, + "scaleratio": { + "description": "If this axis is linked to another by `scaleanchor`, this determines the pixel to unit scale ratio. For example, if this value is 10, then every unit on this axis spans 10 times the number of pixels as a unit on the linked axis. Use this for example to create an elevation profile where the vertical scale is exaggerated a fixed amount with respect to the horizontal.", + "dflt": 1, + "editType": "plot", + "min": 0, + "valType": "number" + }, + "separatethousands": { + "description": "If \"true\", even 4-digit integers are separated", + "dflt": false, + "editType": "ticks", + "valType": "boolean" + }, + "showdividers": { + "description": "Determines whether or not a dividers are drawn between the category levels of this axis. Only has an effect on *multicategory* axes.", "dflt": true, - "editType": "colorbars", + "editType": "ticks", "valType": "boolean" - }, - "name": { - "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.", - "editType": "colorbars", - "valType": "string" - }, - "role": "object", - "templateitemname": { - "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.", - "editType": "colorbars", - "valType": "string" - }, - "value": { - "description": "string - dtickformat for described zoom level, the same as *tickformat*", + }, + "showexponent": { + "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.", + "dflt": "all", + "editType": "ticks", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "showgrid": { + "description": "Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark.", + "editType": "ticks", + "valType": "boolean" + }, + "showline": { + "description": "Determines whether or not a line bounding this axis is drawn.", + "dflt": false, + "editType": "ticks+layoutstyle", + "valType": "boolean" + }, + "showspikes": { + "description": "Determines whether or not spikes (aka droplines) are drawn for this axis. Note: This only takes affect when hovermode = closest", + "dflt": false, + "editType": "modebar", + "valType": "boolean" + }, + "showticklabels": { + "description": "Determines whether or not the tick labels are drawn.", + "dflt": true, + "editType": "ticks", + "valType": "boolean" + }, + "showtickprefix": { + "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.", + "dflt": "all", + "editType": "ticks", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "showticksuffix": { + "description": "Same as `showtickprefix` but for tick suffixes.", + "dflt": "all", + "editType": "ticks", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "side": { + "description": "Determines whether a x (y) axis is positioned at the *bottom* (*left*) or *top* (*right*) of the plotting area.", + "editType": "plot", + "valType": "enumerated", + "values": [ + "top", + "bottom", + "left", + "right" + ] + }, + "spikecolor": { + "description": "Sets the spike color. If undefined, will use the series color", + "dflt": null, + "editType": "none", + "valType": "color" + }, + "spikedash": { + "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", + "dflt": "dash", + "editType": "none", + "valType": "string", + "values": [ + "solid", + "dot", + "dash", + "longdash", + "dashdot", + "longdashdot" + ] + }, + "spikemode": { + "description": "Determines the drawing mode for the spike line If *toaxis*, the line is drawn from the data point to the axis the series is plotted on. If *across*, the line is drawn across the entire plot area, and supercedes *toaxis*. If *marker*, then a marker dot is drawn on the axis the series is plotted on", + "dflt": "toaxis", + "editType": "none", + "flags": [ + "toaxis", + "across", + "marker" + ], + "valType": "flaglist" + }, + "spikesnap": { + "description": "Determines whether spikelines are stuck to the cursor or to the closest datapoints.", + "dflt": "hovered data", + "editType": "none", + "valType": "enumerated", + "values": [ + "data", + "cursor", + "hovered data" + ] + }, + "spikethickness": { + "description": "Sets the width (in px) of the zero line.", + "dflt": 3, + "editType": "none", + "valType": "number" + }, + "tick0": { + "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears.", + "editType": "ticks", + "impliedEdits": { + "tickmode": "linear" + }, + "valType": "any" + }, + "tickangle": { + "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.", + "dflt": "auto", + "editType": "ticks", + "valType": "angle" + }, + "tickcolor": { + "description": "Sets the tick color.", + "dflt": "#444", + "editType": "ticks", + "valType": "color" + }, + "tickfont": { + "color": { + "editType": "ticks", + "valType": "color" + }, + "description": "Sets the tick font.", + "editType": "ticks", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "ticks", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "ticks", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "ticks", + "valType": "string" + }, + "size": { + "editType": "ticks", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "ticks", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "ticks", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "ticks", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "ticks", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "tickformat": { + "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*", "dflt": "", - "editType": "colorbars", + "editType": "ticks", "valType": "string" - } - } - }, - "role": "object" - }, - "ticklabeloverflow": { - "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "allow", - "hide past div", - "hide past domain" - ] - }, - "ticklabelposition": { - "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.", - "dflt": "outside", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "outside", - "inside", - "outside top", - "inside top", - "outside left", - "inside left", - "outside right", - "inside right", - "outside bottom", - "inside bottom" - ] - }, - "ticklabelstep": { - "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.", - "dflt": 1, - "editType": "colorbars", - "min": 1, - "valType": "integer" - }, - "ticklen": { - "description": "Sets the tick length (in px).", - "dflt": 5, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "tickmode": { - "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).", - "editType": "colorbars", - "impliedEdits": {}, - "valType": "enumerated", - "values": [ - "auto", - "linear", - "array" - ] - }, - "tickprefix": { - "description": "Sets a tick label prefix.", - "dflt": "", - "editType": "colorbars", - "valType": "string" - }, - "ticks": { - "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.", - "dflt": "", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "outside", - "inside", - "" - ] - }, - "ticksuffix": { - "description": "Sets a tick label suffix.", - "dflt": "", - "editType": "colorbars", - "valType": "string" - }, - "ticktext": { - "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", - "editType": "colorbars", - "valType": "data_array" - }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, - "tickvals": { - "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", - "editType": "colorbars", - "valType": "data_array" - }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, - "tickwidth": { - "description": "Sets the tick width (in px).", - "dflt": 1, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "title": { - "editType": "colorbars", - "font": { - "color": { - "editType": "colorbars", - "valType": "color" - }, - "description": "Sets this color bar's title font.", - "editType": "colorbars", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "colorbars", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "lineposition": { - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "colorbars", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" }, - "role": "object", - "shadow": { - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "colorbars", - "valType": "string" - }, - "size": { - "editType": "colorbars", - "min": 1, - "valType": "number" - }, - "style": { - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "textcase": { - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "colorbars", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "role": "object", - "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "right", - "top", - "bottom" - ] - }, - "text": { - "description": "Sets the title of the color bar.", - "editType": "colorbars", - "valType": "string" - } - }, - "x": { - "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.", - "editType": "colorbars", - "valType": "number" - }, - "xanchor": { - "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "left", - "center", - "right" - ] - }, - "xpad": { - "description": "Sets the amount of padding (in px) along the x direction.", - "dflt": 10, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "xref": { - "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.", - "dflt": "paper", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "container", - "paper" - ] - }, - "y": { - "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.", - "editType": "colorbars", - "valType": "number" - }, - "yanchor": { - "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "top", - "middle", - "bottom" - ] - }, - "ypad": { - "description": "Sets the amount of padding (in px) along the y direction.", - "dflt": 10, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "yref": { - "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.", - "dflt": "paper", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "container", - "paper" - ] - } - }, - "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", - "dflt": null, - "editType": "calc", - "impliedEdits": { - "autocolorscale": false - }, - "valType": "colorscale" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "editType": "calc", - "gradient": { - "color": { - "arrayOk": true, - "description": "Sets the final color of the gradient fill: the center color for radial, the right for horizontal, or the bottom for vertical.", - "editType": "calc", - "valType": "color" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "editType": "calc", - "role": "object", - "type": { - "arrayOk": true, - "description": "Sets the type of gradient used to fill the markers", - "dflt": "none", - "editType": "calc", - "valType": "enumerated", - "values": [ - "radial", - "horizontal", - "vertical", - "none" - ] - }, - "typesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `type`.", - "editType": "none", - "valType": "string" - } - }, - "line": { - "autocolorscale": { - "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. Has an effect only if in `marker.line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", - "dflt": true, - "editType": "calc", - "impliedEdits": {}, - "valType": "boolean" - }, - "cauto": { - "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.line.color`) or the bounds set in `marker.line.cmin` and `marker.line.cmax` Has an effect only if in `marker.line.color` is set to a numerical array. Defaults to `false` when `marker.line.cmin` and `marker.line.cmax` are set by the user.", - "dflt": true, - "editType": "calc", - "impliedEdits": {}, - "valType": "boolean" - }, - "cmax": { - "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmin` must be set as well.", - "dflt": null, - "editType": "plot", - "impliedEdits": { - "cauto": false - }, - "valType": "number" - }, - "cmid": { - "description": "Sets the mid-point of the color domain by scaling `marker.line.cmin` and/or `marker.line.cmax` to be equidistant to this point. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color`. Has no effect when `marker.line.cauto` is `false`.", - "dflt": null, - "editType": "calc", - "impliedEdits": {}, - "valType": "number" - }, - "cmin": { - "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmax` must be set as well.", - "dflt": null, - "editType": "plot", - "impliedEdits": { - "cauto": false - }, - "valType": "number" - }, - "color": { - "arrayOk": true, - "description": "Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set.", - "editType": "style", - "valType": "color" - }, - "coloraxis": { - "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.", - "dflt": null, - "editType": "calc", - "regex": "/^coloraxis([2-9]|[1-9][0-9]+)?$/", - "valType": "subplotid" - }, - "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", - "dflt": null, - "editType": "calc", - "impliedEdits": { - "autocolorscale": false - }, - "valType": "colorscale" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "editType": "calc", - "reversescale": { - "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.", - "dflt": false, - "editType": "plot", - "valType": "boolean" - }, - "role": "object", - "width": { - "arrayOk": true, - "description": "Sets the width (in px) of the lines bounding the marker points.", - "editType": "style", - "min": 0, - "valType": "number" - }, - "widthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `width`.", - "editType": "none", - "valType": "string" - } - }, - "maxdisplayed": { - "description": "Sets a maximum number of points to be drawn on the graph. *0* corresponds to no limit.", - "dflt": 0, - "editType": "plot", - "min": 0, - "valType": "number" - }, - "opacity": { - "arrayOk": true, - "description": "Sets the marker opacity.", - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" - }, - "opacitysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `opacity`.", - "editType": "none", - "valType": "string" - }, - "reversescale": { - "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", - "dflt": false, - "editType": "plot", - "valType": "boolean" - }, - "role": "object", - "showscale": { - "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.", - "dflt": false, - "editType": "calc", - "valType": "boolean" - }, - "size": { - "arrayOk": true, - "description": "Sets the marker size (in px).", - "dflt": 6, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "sizemin": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points.", - "dflt": 0, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "sizemode": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels.", - "dflt": "diameter", - "editType": "calc", - "valType": "enumerated", - "values": [ - "diameter", - "area" - ] - }, - "sizeref": { - "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`.", - "dflt": 1, - "editType": "calc", - "valType": "number" - }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, - "standoff": { - "arrayOk": true, - "description": "Moves the marker away from the data point in the direction of `angle` (in px). This can be useful for example if you have another marker at this location and you want to point an arrowhead marker at it.", - "dflt": 0, - "editType": "plot", - "min": 0, - "valType": "number" - }, - "standoffsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `standoff`.", - "editType": "none", - "valType": "string" - }, - "symbol": { - "arrayOk": true, - "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.", - "dflt": "circle", - "editType": "style", - "valType": "enumerated", - "values": [ - 0, - "0", - "circle", - 100, - "100", - "circle-open", - 200, - "200", - "circle-dot", - 300, - "300", - "circle-open-dot", - 1, - "1", - "square", - 101, - "101", - "square-open", - 201, - "201", - "square-dot", - 301, - "301", - "square-open-dot", - 2, - "2", - "diamond", - 102, - "102", - "diamond-open", - 202, - "202", - "diamond-dot", - 302, - "302", - "diamond-open-dot", - 3, - "3", - "cross", - 103, - "103", - "cross-open", - 203, - "203", - "cross-dot", - 303, - "303", - "cross-open-dot", - 4, - "4", - "x", - 104, - "104", - "x-open", - 204, - "204", - "x-dot", - 304, - "304", - "x-open-dot", - 5, - "5", - "triangle-up", - 105, - "105", - "triangle-up-open", - 205, - "205", - "triangle-up-dot", - 305, - "305", - "triangle-up-open-dot", - 6, - "6", - "triangle-down", - 106, - "106", - "triangle-down-open", - 206, - "206", - "triangle-down-dot", - 306, - "306", - "triangle-down-open-dot", - 7, - "7", - "triangle-left", - 107, - "107", - "triangle-left-open", - 207, - "207", - "triangle-left-dot", - 307, - "307", - "triangle-left-open-dot", - 8, - "8", - "triangle-right", - 108, - "108", - "triangle-right-open", - 208, - "208", - "triangle-right-dot", - 308, - "308", - "triangle-right-open-dot", - 9, - "9", - "triangle-ne", - 109, - "109", - "triangle-ne-open", - 209, - "209", - "triangle-ne-dot", - 309, - "309", - "triangle-ne-open-dot", - 10, - "10", - "triangle-se", - 110, - "110", - "triangle-se-open", - 210, - "210", - "triangle-se-dot", - 310, - "310", - "triangle-se-open-dot", - 11, - "11", - "triangle-sw", - 111, - "111", - "triangle-sw-open", - 211, - "211", - "triangle-sw-dot", - 311, - "311", - "triangle-sw-open-dot", - 12, - "12", - "triangle-nw", - 112, - "112", - "triangle-nw-open", - 212, - "212", - "triangle-nw-dot", - 312, - "312", - "triangle-nw-open-dot", - 13, - "13", - "pentagon", - 113, - "113", - "pentagon-open", - 213, - "213", - "pentagon-dot", - 313, - "313", - "pentagon-open-dot", - 14, - "14", - "hexagon", - 114, - "114", - "hexagon-open", - 214, - "214", - "hexagon-dot", - 314, - "314", - "hexagon-open-dot", - 15, - "15", - "hexagon2", - 115, - "115", - "hexagon2-open", - 215, - "215", - "hexagon2-dot", - 315, - "315", - "hexagon2-open-dot", - 16, - "16", - "octagon", - 116, - "116", - "octagon-open", - 216, - "216", - "octagon-dot", - 316, - "316", - "octagon-open-dot", - 17, - "17", - "star", - 117, - "117", - "star-open", - 217, - "217", - "star-dot", - 317, - "317", - "star-open-dot", - 18, - "18", - "hexagram", - 118, - "118", - "hexagram-open", - 218, - "218", - "hexagram-dot", - 318, - "318", - "hexagram-open-dot", - 19, - "19", - "star-triangle-up", - 119, - "119", - "star-triangle-up-open", - 219, - "219", - "star-triangle-up-dot", - 319, - "319", - "star-triangle-up-open-dot", - 20, - "20", - "star-triangle-down", - 120, - "120", - "star-triangle-down-open", - 220, - "220", - "star-triangle-down-dot", - 320, - "320", - "star-triangle-down-open-dot", - 21, - "21", - "star-square", - 121, - "121", - "star-square-open", - 221, - "221", - "star-square-dot", - 321, - "321", - "star-square-open-dot", - 22, - "22", - "star-diamond", - 122, - "122", - "star-diamond-open", - 222, - "222", - "star-diamond-dot", - 322, - "322", - "star-diamond-open-dot", - 23, - "23", - "diamond-tall", - 123, - "123", - "diamond-tall-open", - 223, - "223", - "diamond-tall-dot", - 323, - "323", - "diamond-tall-open-dot", - 24, - "24", - "diamond-wide", - 124, - "124", - "diamond-wide-open", - 224, - "224", - "diamond-wide-dot", - 324, - "324", - "diamond-wide-open-dot", - 25, - "25", - "hourglass", - 125, - "125", - "hourglass-open", - 26, - "26", - "bowtie", - 126, - "126", - "bowtie-open", - 27, - "27", - "circle-cross", - 127, - "127", - "circle-cross-open", - 28, - "28", - "circle-x", - 128, - "128", - "circle-x-open", - 29, - "29", - "square-cross", - 129, - "129", - "square-cross-open", - 30, - "30", - "square-x", - 130, - "130", - "square-x-open", - 31, - "31", - "diamond-cross", - 131, - "131", - "diamond-cross-open", - 32, - "32", - "diamond-x", - 132, - "132", - "diamond-x-open", - 33, - "33", - "cross-thin", - 133, - "133", - "cross-thin-open", - 34, - "34", - "x-thin", - 134, - "134", - "x-thin-open", - 35, - "35", - "asterisk", - 135, - "135", - "asterisk-open", - 36, - "36", - "hash", - 136, - "136", - "hash-open", - 236, - "236", - "hash-dot", - 336, - "336", - "hash-open-dot", - 37, - "37", - "y-up", - 137, - "137", - "y-up-open", - 38, - "38", - "y-down", - 138, - "138", - "y-down-open", - 39, - "39", - "y-left", - 139, - "139", - "y-left-open", - 40, - "40", - "y-right", - 140, - "140", - "y-right-open", - 41, - "41", - "line-ew", - 141, - "141", - "line-ew-open", - 42, - "42", - "line-ns", - 142, - "142", - "line-ns-open", - 43, - "43", - "line-ne", - 143, - "143", - "line-ne-open", - 44, - "44", - "line-nw", - 144, - "144", - "line-nw-open", - 45, - "45", - "arrow-up", - 145, - "145", - "arrow-up-open", - 46, - "46", - "arrow-down", - 146, - "146", - "arrow-down-open", - 47, - "47", - "arrow-left", - 147, - "147", - "arrow-left-open", - 48, - "48", - "arrow-right", - 148, - "148", - "arrow-right-open", - 49, - "49", - "arrow-bar-up", - 149, - "149", - "arrow-bar-up-open", - 50, - "50", - "arrow-bar-down", - 150, - "150", - "arrow-bar-down-open", - 51, - "51", - "arrow-bar-left", - 151, - "151", - "arrow-bar-left-open", - 52, - "52", - "arrow-bar-right", - 152, - "152", - "arrow-bar-right-open", - 53, - "53", - "arrow", - 153, - "153", - "arrow-open", - 54, - "54", - "arrow-wide", - 154, - "154", - "arrow-wide-open" - ] - }, - "symbolsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `symbol`.", - "editType": "none", - "valType": "string" - } - }, - "meta": { - "arrayOk": true, - "description": "Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index.", - "editType": "plot", - "valType": "any" - }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, - "mode": { - "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*.", - "dflt": "markers", - "editType": "calc", - "extras": [ - "none" - ], - "flags": [ - "lines", - "markers", - "text" - ], - "valType": "flaglist" - }, - "name": { - "description": "Sets the trace name. The trace name appears as the legend item and on hover.", - "editType": "style", - "valType": "string" - }, - "opacity": { - "description": "Sets the opacity of the trace.", - "dflt": 1, - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" - }, - "selected": { - "editType": "style", - "marker": { - "color": { - "description": "Sets the marker color of selected points.", - "editType": "style", - "valType": "color" - }, - "editType": "style", - "opacity": { - "description": "Sets the marker opacity of selected points.", - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" - }, - "role": "object", - "size": { - "description": "Sets the marker size of selected points.", - "editType": "style", - "min": 0, - "valType": "number" - } - }, - "role": "object", - "textfont": { - "color": { - "description": "Sets the text font color of selected points.", - "editType": "style", - "valType": "color" - }, - "editType": "style", - "role": "object" - } - }, - "selectedpoints": { - "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect.", - "editType": "calc", - "valType": "any" - }, - "showlegend": { - "description": "Determines whether or not an item corresponding to this trace is shown in the legend.", - "dflt": true, - "editType": "style", - "valType": "boolean" - }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, - "subplot": { - "description": "Sets a reference between this trace's data coordinates and a ternary subplot. If *ternary* (the default value), the data refer to `layout.ternary`. If *ternary2*, the data refer to `layout.ternary2`, and so on.", - "dflt": "ternary", - "editType": "calc", - "valType": "subplotid" - }, - "sum": { - "description": "The number each triplet should sum to, if only two of `a`, `b`, and `c` are provided. This overrides `ternary.sum` to normalize this specific trace, but does not affect the values displayed on the axes. 0 (or missing) means to use ternary.sum", - "dflt": 0, - "editType": "calc", - "min": 0, - "valType": "number" - }, - "text": { - "arrayOk": true, - "description": "Sets text elements associated with each (a,b,c) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the the data points in (a,b,c). If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.", - "dflt": "", - "editType": "calc", - "valType": "string" - }, - "textfont": { - "color": { - "arrayOk": true, - "editType": "style", - "valType": "color" - }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "description": "Sets the text font.", - "editType": "calc", - "family": { - "arrayOk": true, - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, - "lineposition": { - "arrayOk": true, - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "calc", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, - "role": "object", - "shadow": { - "arrayOk": true, - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "calc", - "valType": "string" - }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, - "size": { - "arrayOk": true, - "editType": "calc", - "min": 1, - "valType": "number" - }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, - "style": { - "arrayOk": true, - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, - "textcase": { - "arrayOk": true, - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, - "variant": { - "arrayOk": true, - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "calc", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, - "weight": { - "arrayOk": true, - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "calc", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" - } - }, - "textposition": { - "arrayOk": true, - "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.", - "dflt": "middle center", - "editType": "calc", - "valType": "enumerated", - "values": [ - "top left", - "top center", - "top right", - "middle left", - "middle center", - "middle right", - "bottom left", - "bottom center", - "bottom right" - ] - }, - "textpositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textposition`.", - "editType": "none", - "valType": "string" - }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, - "texttemplate": { - "arrayOk": true, - "description": "Template string used for rendering the information text that appears on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. All attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `a`, `b`, `c` and `text`.", - "dflt": "", - "editType": "plot", - "valType": "string" - }, - "texttemplatefallback": { - "description": "Fallback string that's displayed when a variable referenced in a template is missing. If the boolean value 'false' is passed in, the specifier with the missing variable will be displayed.", - "dflt": "-", - "editType": "plot", - "valType": "any" - }, - "texttemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.", - "editType": "none", - "valType": "string" - }, - "type": "scatterternary", - "uid": { - "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", - "editType": "plot", - "valType": "string" - }, - "uirevision": { - "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves.", - "editType": "none", - "valType": "any" - }, - "unselected": { - "editType": "style", - "marker": { - "color": { - "description": "Sets the marker color of unselected points, applied only when a selection exists.", - "editType": "style", - "valType": "color" - }, - "editType": "style", - "opacity": { - "description": "Sets the marker opacity of unselected points, applied only when a selection exists.", - "editType": "style", - "max": 1, - "min": 0, - "valType": "number" - }, - "role": "object", - "size": { - "description": "Sets the marker size of unselected points, applied only when a selection exists.", - "editType": "style", - "min": 0, - "valType": "number" - } - }, - "role": "object", - "textfont": { - "color": { - "description": "Sets the text font color of unselected points, applied only when a selection exists.", - "editType": "style", - "valType": "color" - }, - "editType": "style", - "role": "object" - } - }, - "visible": { - "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).", - "dflt": true, - "editType": "calc", - "valType": "enumerated", - "values": [ - true, - false, - "legendonly" - ] - } - }, - "categories": [ - "ternary", - "symbols", - "showLegend", - "scatter-like" - ], - "meta": { - "description": "Provides similar functionality to the *scatter* type but on a ternary phase diagram. The data is provided by at least two arrays out of `a`, `b`, `c` triplets.", - "hrName": "scatter_ternary" - }, - "type": "scatterternary" - }, - "splom": { - "animatable": false, - "attributes": { - "customdata": { - "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements", - "editType": "calc", - "valType": "data_array" - }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, - "diagonal": { - "editType": "calc", - "role": "object", - "visible": { - "description": "Determines whether or not subplots on the diagonal are displayed.", - "dflt": true, - "editType": "calc", - "valType": "boolean" - } - }, - "dimensions": { - "items": { - "dimension": { - "axis": { - "editType": "calc+clearAxisTypes", - "matches": { - "description": "Determines whether or not the x & y axes generated by this dimension match. Equivalent to setting the `matches` axis attribute in the layout with the correct axis id.", - "dflt": false, - "editType": "calc", - "valType": "boolean" + "tickformatstops": { + "items": { + "tickformatstop": { + "dtickrange": { + "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*", + "editType": "ticks", + "items": [ + { + "editType": "ticks", + "valType": "any" + }, + { + "editType": "ticks", + "valType": "any" + } + ], + "valType": "info_array" + }, + "editType": "ticks", + "enabled": { + "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.", + "dflt": true, + "editType": "ticks", + "valType": "boolean" + }, + "name": { + "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.", + "editType": "none", + "valType": "string" + }, + "role": "object", + "templateitemname": { + "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.", + "editType": "calc", + "valType": "string" + }, + "value": { + "description": "string - dtickformat for described zoom level, the same as *tickformat*", + "dflt": "", + "editType": "ticks", + "valType": "string" + } + } + }, + "role": "object" + }, + "ticklabelindex": { + "arrayOk": true, + "description": "Only for axes with `type` *date* or *linear*. Instead of drawing the major tick label, draw the label for the minor tick that is n positions away from the major tick. E.g. to always draw the label for the minor tick before each major tick, choose `ticklabelindex` -1. This is useful for date axes with `ticklabelmode` *period* if you want to label the period that ends with each major tick instead of the period that begins there.", + "editType": "calc", + "valType": "integer" + }, + "ticklabelindexsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `ticklabelindex`.", + "editType": "none", + "valType": "string" + }, + "ticklabelmode": { + "description": "Determines where tick labels are drawn with respect to their corresponding ticks and grid lines. Only has an effect for axes of `type` *date* When set to *period*, tick labels are drawn in the middle of the period between ticks.", + "dflt": "instant", + "editType": "ticks", + "valType": "enumerated", + "values": [ + "instant", + "period" + ] + }, + "ticklabeloverflow": { + "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. Otherwise on *category* and *multicategory* axes the default is *allow*. In other cases the default is *hide past div*.", + "editType": "calc", + "valType": "enumerated", + "values": [ + "allow", + "hide past div", + "hide past domain" + ] + }, + "ticklabelposition": { + "description": "Determines where tick labels are drawn with respect to the axis. Please note that top or bottom has no effect on x axes or when `ticklabelmode` is set to *period* or when `tickson` is set to *boundaries*. Similarly, left or right has no effect on y axes or when `ticklabelmode` is set to *period* or when `tickson` is set to *boundaries*. Has no effect on *multicategory* axes. When used on axes linked by `matches` or `scaleanchor`, no extra padding for inside labels would be added by autorange, so that the scales could match.", + "dflt": "outside", + "editType": "calc", + "valType": "enumerated", + "values": [ + "outside", + "inside", + "outside top", + "inside top", + "outside left", + "inside left", + "outside right", + "inside right", + "outside bottom", + "inside bottom" + ] + }, + "ticklabelshift": { + "description": "Shifts the tick labels by the specified number of pixels in parallel to the axis. Positive values move the labels in the positive direction of the axis.", + "dflt": 0, + "editType": "ticks", + "valType": "integer" + }, + "ticklabelstandoff": { + "description": "Sets the standoff distance (in px) between the axis tick labels and their default position. A positive `ticklabelstandoff` moves the labels farther away from the plot area if `ticklabelposition` is *outside*, and deeper into the plot area if `ticklabelposition` is *inside*. A negative `ticklabelstandoff` works in the opposite direction, moving outside ticks towards the plot area and inside ticks towards the outside. If the negative value is large enough, inside ticks can even end up outside and vice versa.", + "dflt": 0, + "editType": "ticks", + "valType": "integer" + }, + "ticklabelstep": { + "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.", + "dflt": 1, + "editType": "ticks", + "min": 1, + "valType": "integer" + }, + "ticklen": { + "description": "Sets the tick length (in px).", + "dflt": 5, + "editType": "ticks", + "min": 0, + "valType": "number" + }, + "tickmode": { + "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). If *sync*, the number of ticks will sync with the overlayed axis set by `overlaying` property.", + "editType": "ticks", + "impliedEdits": {}, + "valType": "enumerated", + "values": [ + "auto", + "linear", + "array", + "sync" + ] + }, + "tickprefix": { + "description": "Sets a tick label prefix.", + "dflt": "", + "editType": "ticks", + "valType": "string" + }, + "ticks": { + "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.", + "editType": "ticks", + "valType": "enumerated", + "values": [ + "outside", + "inside", + "" + ] + }, + "tickson": { + "description": "Determines where ticks and grid lines are drawn with respect to their corresponding tick labels. Only has an effect for axes of `type` *category* or *multicategory*. When set to *boundaries*, ticks and grid lines are drawn half a category to the left/bottom of labels.", + "dflt": "labels", + "editType": "ticks", + "valType": "enumerated", + "values": [ + "labels", + "boundaries" + ] + }, + "ticksuffix": { + "description": "Sets a tick label suffix.", + "dflt": "", + "editType": "ticks", + "valType": "string" + }, + "ticktext": { + "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", + "editType": "ticks", + "valType": "data_array" + }, + "ticktextsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", + "editType": "none", + "valType": "string" + }, + "tickvals": { + "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", + "editType": "ticks", + "valType": "data_array" + }, + "tickvalssrc": { + "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", + "editType": "none", + "valType": "string" + }, + "tickwidth": { + "description": "Sets the tick width (in px).", + "dflt": 1, + "editType": "ticks", + "min": 0, + "valType": "number" + }, + "title": { + "editType": "ticks", + "font": { + "color": { + "editType": "ticks", + "valType": "color" + }, + "description": "Sets this axis' title font.", + "editType": "ticks", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "ticks", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "ticks", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "ticks", + "valType": "string" + }, + "size": { + "editType": "ticks", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "ticks", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "ticks", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "ticks", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "ticks", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "role": "object", + "standoff": { + "description": "Sets the standoff distance (in px) between the axis labels and the title text The default value is a function of the axis tick labels, the title `font.size` and the axis `linewidth`. Note that the axis title position is always constrained within the margins, so the actual standoff distance is always less than the set or default value. By setting `standoff` and turning on `automargin`, plotly.js will push the margins to fit the axis title at given standoff distance.", + "editType": "ticks", + "min": 0, + "valType": "number" + }, + "text": { + "description": "Sets the title of this axis.", + "editType": "ticks", + "valType": "string" + } }, - "role": "object", ->>>>>>> 776a4535b (Name plot type quiver not scatterquiver) "type": { "_noTemplating": true, "description": "Sets the axis type. By default, plotly attempts to determined the axis type by looking into the data of the traces that referenced the axis in question.", From a1c40a6031947d451c64f546c9e326860eb80115 Mon Sep 17 00:00:00 2001 From: John Degner Date: Thu, 18 Dec 2025 13:31:29 -0800 Subject: [PATCH 202/241] Improve code readability --- src/traces/quiver/attributes.js | 6 ++ src/traces/quiver/defaults.js | 67 +++++++++--------- src/traces/quiver/format_labels.js | 15 ++-- src/traces/quiver/hover.js | 2 +- src/traces/quiver/index.js | 4 +- src/traces/quiver/plot.js | 16 ++--- src/traces/quiver/select_points.js | 22 +++--- src/traces/quiver/style.js | 33 ++++++--- test/image/baselines/quiver_anchor.png | Bin 26453 -> 25935 bytes test/image/baselines/quiver_arrow-styling.png | Bin 22306 -> 21942 bytes test/image/baselines/quiver_categorical.png | Bin 14784 -> 14650 bytes test/image/baselines/quiver_colorscale.png | Bin 17292 -> 17103 bytes .../baselines/quiver_custom-colorscale.png | Bin 21053 -> 21113 bytes test/image/baselines/quiver_simple.png | Bin 13934 -> 14093 bytes test/image/baselines/quiver_sizemode.png | Bin 28492 -> 28936 bytes test/image/baselines/quiver_wind.png | Bin 32997 -> 31990 bytes test/image/baselines/quiver_zero-vectors.png | Bin 14882 -> 14785 bytes test/plot-schema.json | 24 +++++++ 18 files changed, 118 insertions(+), 71 deletions(-) diff --git a/src/traces/quiver/attributes.js b/src/traces/quiver/attributes.js index 966344561ca..a237d9044f7 100644 --- a/src/traces/quiver/attributes.js +++ b/src/traces/quiver/attributes.js @@ -3,6 +3,7 @@ var baseAttrs = require('../../plots/attributes'); var hovertemplateAttrs = require('../../plots/template_attributes').hovertemplateAttrs; var fontAttrs = require('../../plots/font_attributes'); +var axisHoverFormat = require('../../plots/cartesian/axis_format_attributes').axisHoverFormat; var dash = require('../../components/drawing/attributes').dash; var extendFlat = require('../../lib/extend').extendFlat; @@ -81,6 +82,11 @@ var attrs = { description: 'Maximum distance (in pixels) to look for nearby arrows on hover.' }, + xhoverformat: axisHoverFormat('x'), + yhoverformat: axisHoverFormat('y'), + uhoverformat: axisHoverFormat('u', 'noDate'), + vhoverformat: axisHoverFormat('v', 'noDate'), + // Arrowhead sizing, consistent with annotations API naming arrowsize: { valType: 'number', diff --git a/src/traces/quiver/defaults.js b/src/traces/quiver/defaults.js index e7e5c0e86fd..9ba70a09d46 100644 --- a/src/traces/quiver/defaults.js +++ b/src/traces/quiver/defaults.js @@ -2,12 +2,9 @@ var Lib = require('../../lib'); var attributes = require('./attributes'); -var Colorscale = require('../../components/colorscale'); -var colorscaleDefaults = Colorscale.handleDefaults; -var hasColorscale = Colorscale.hasColorscale; +var colorscaleDefaults = require('../../components/colorscale/defaults'); module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) { - // Selection styling - use coerce to set proper defaults function coerce(attr, dflt) { return Lib.coerce(traceIn, traceOut, attributes, attr, dflt); } @@ -17,7 +14,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout var y = coerce('y'); var u = coerce('u'); var v = coerce('v'); - + // Optional scalar field for colorscale coerce('c'); @@ -40,46 +37,48 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout for(var j = 0; j < len; j++) traceOut.v[j] = 0; } - // Set basic properties - traceOut.type = 'quiver'; - // Sizing API similar to cone var sizemode = coerce('sizemode'); coerce('sizeref', sizemode === 'raw' ? 1 : 0.5); coerce('anchor'); - // Set default values using coerce - coerce('arrowsize', 1); - // back-compat - coerce('arrow_scale'); - coerce('hoverdistance', 20); + // Arrow styling + coerce('arrowsize'); + coerce('arrow_scale'); // back-compat alias + coerce('arrowwidth'); + coerce('hoverdistance'); + + // Line styling - use coerce for proper validation + coerce('line.color', defaultColor); + // If arrowwidth is set, use it as line.width default + var arrowwidth = traceOut.arrowwidth; + if(arrowwidth !== undefined) { + coerce('line.width', arrowwidth); + } else { + coerce('line.width'); + } + coerce('line.dash'); + coerce('line.shape'); + coerce('line.smoothing'); + coerce('line.simplify'); - // Line styling - traceOut.line = { - color: traceIn.line && traceIn.line.color ? traceIn.line.color : defaultColor, - width: (traceIn.arrowwidth !== undefined) ? traceIn.arrowwidth : (traceIn.line && traceIn.line.width ? traceIn.line.width : 1), - dash: traceIn.line && traceIn.line.dash ? traceIn.line.dash : 'solid', - shape: traceIn.line && traceIn.line.shape ? traceIn.line.shape : 'linear', - smoothing: traceIn.line && traceIn.line.smoothing ? traceIn.line.smoothing : 1, - simplify: traceIn.line && traceIn.line.simplify !== undefined ? traceIn.line.simplify : true - }; + // Text + coerce('text'); + coerce('textposition'); + Lib.coerceFont(coerce, 'textfont', layout.font); - // Hover and interaction - let the plots module handle hoverinfo defaults - // traceOut.hoverinfo will be set by Lib.coerceHoverinfo in plots.js - traceOut.hovertemplate = traceIn.hovertemplate; + // Hover + coerce('hovertemplate'); + coerce('xhoverformat'); + coerce('yhoverformat'); + coerce('uhoverformat'); + coerce('vhoverformat'); // Colorscale defaults (adds colorscale, showscale, colorbar, etc.) - // Keep colorscale enabled by default for quiver - traceOut._hasColorscale = hasColorscale(traceIn) || true; + traceOut._hasColorscale = true; colorscaleDefaults(traceIn, traceOut, layout, coerce, { prefix: '', cLetter: 'c' }); - // Text - traceOut.text = traceIn.text; - traceOut.textposition = traceIn.textposition || 'middle center'; - - // Use Lib.coerceFont to set textfont properly - Lib.coerceFont(coerce, 'textfont', layout.font); - + // Selection styling coerce('selected.line.color'); coerce('selected.line.width'); coerce('selected.textfont.color'); diff --git a/src/traces/quiver/format_labels.js b/src/traces/quiver/format_labels.js index 8b56f67c2bf..6ed314702ef 100644 --- a/src/traces/quiver/format_labels.js +++ b/src/traces/quiver/format_labels.js @@ -1,12 +1,14 @@ 'use strict'; var Axes = require('../../plots/cartesian/axes'); +var Lib = require('../../lib'); module.exports = function formatLabels(cdi, trace, fullLayout) { var labels = {}; - var xa = Axes.getFromId({ _fullLayout: fullLayout }, trace.xaxis || 'x'); - var ya = Axes.getFromId({ _fullLayout: fullLayout }, trace.yaxis || 'y'); + var mockGd = {_fullLayout: fullLayout}; + var xa = Axes.getFromTrace(mockGd, trace, 'x'); + var ya = Axes.getFromTrace(mockGd, trace, 'y'); var x = cdi.x; var y = cdi.y; @@ -17,9 +19,12 @@ module.exports = function formatLabels(cdi, trace, fullLayout) { var u = trace.u ? trace.u[cdi.i] : 0; var v = trace.v ? trace.v[cdi.i] : 0; - // Format u and v as plain numbers - labels.uLabel = String(u); - labels.vLabel = String(v); + // Format u and v using hoverformat if provided + var uhoverformat = trace.uhoverformat; + var vhoverformat = trace.vhoverformat; + + labels.uLabel = uhoverformat ? Lib.numberFormat(uhoverformat)(u) : String(u); + labels.vLabel = vhoverformat ? Lib.numberFormat(vhoverformat)(v) : String(v); return labels; }; diff --git a/src/traces/quiver/hover.js b/src/traces/quiver/hover.js index 41c7735f145..97eaea35aae 100644 --- a/src/traces/quiver/hover.js +++ b/src/traces/quiver/hover.js @@ -15,7 +15,7 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode) { var distfn = function(di) { var x = xa.c2p(di.x) - xpx; var y = ya.c2p(di.y) - ypx; - return Math.max(Math.sqrt(x * x + y * y), 1 - 3 / Math.max(3, di.mrc || 0)); + return Math.sqrt(x * x + y * y); }; Fx.getClosest(cd, distfn, pointData); diff --git a/src/traces/quiver/index.js b/src/traces/quiver/index.js index 4237fcf810a..942ef83fd9b 100644 --- a/src/traces/quiver/index.js +++ b/src/traces/quiver/index.js @@ -12,8 +12,8 @@ module.exports = { supplyDefaults: require('./defaults'), calc: require('./calc'), plot: require('./plot'), - style: require('./style'), - styleOnSelect: require('../scatter/style').styleOnSelect, + style: require('./style').style, + styleOnSelect: require('./style').styleOnSelect, hoverPoints: require('./hover'), formatLabels: require('./format_labels'), eventData: require('./event_data'), diff --git a/src/traces/quiver/plot.js b/src/traces/quiver/plot.js index ee03ad0334c..a571e2ef409 100644 --- a/src/traces/quiver/plot.js +++ b/src/traces/quiver/plot.js @@ -2,7 +2,6 @@ var d3 = require('@plotly/d3'); -var Registry = require('../../registry'); var Lib = require('../../lib'); var Drawing = require('../../components/drawing'); var Colorscale = require('../../components/colorscale'); @@ -61,7 +60,6 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition var trace = cdscatter[0].trace; var xa = plotinfo.xaxis; var ya = plotinfo.yaxis; - var fullLayout = gd._fullLayout; // Create line group for arrows var lines = d3.select(element).selectAll('g.lines') @@ -86,11 +84,11 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition var uArr = trace.u || []; var vArr = trace.v || []; var maxNorm = 0; - for (var ni = 0; ni < trace._length; ni++) { + for(var ni = 0; ni < trace._length; ni++) { var uu = uArr[ni] || 0; var vv = vArr[ni] || 0; var nrm = Math.sqrt(uu * uu + vv * vv); - if (nrm > maxNorm) maxNorm = nrm; + if(nrm > maxNorm) maxNorm = nrm; } var sizemode = trace.sizemode || 'scaled'; var sizeref = (trace.sizeref !== undefined) ? trace.sizeref : (sizemode === 'raw' ? 1 : 0.5); @@ -127,7 +125,7 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition var unitx = norm ? (u / norm) : 0; var unity = norm ? (v / norm) : 0; var baseLen; - if (sizemode === 'scaled') { + if(sizemode === 'scaled') { var n = maxNorm ? (norm / maxNorm) : 0; baseLen = n * sizeref; } else { @@ -146,12 +144,12 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition var ang2 = barbAng - headAngle; var x0, y0, x1, y1; - if (anchor === 'tip') { + if(anchor === 'tip') { x1 = cdi.x; y1 = cdi.y; x0 = x1 - dx; y0 = y1 - dy; - } else if (anchor === 'cm' || anchor === 'center' || anchor === 'middle') { + } else if(anchor === 'cm' || anchor === 'center' || anchor === 'middle') { x0 = cdi.x - dx / 2; y0 = cdi.y - dy / 2; x1 = cdi.x + dx / 2; @@ -186,12 +184,12 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition Drawing.lineGroupStyle(lineSegments, trace.line && trace.line.width, trace.line && trace.line.color, trace.line && trace.line.dash); // If colorscale present, color arrows by magnitude |(u,v)| - if (trace._hasColorscale) { + if(trace._hasColorscale) { var colorFunc = Colorscale.makeColorScaleFuncFromTrace(trace); lineSegments.style('stroke', function(cdi) { var cArr = trace.c; var value; - if (Lib.isArrayOrTypedArray(cArr) && cArr.length > cdi.i && isFinite(cArr[cdi.i])) { + if(Lib.isArrayOrTypedArray(cArr) && cArr.length > cdi.i && isFinite(cArr[cdi.i])) { value = cArr[cdi.i]; } else { var uVal = (trace.u && trace.u[cdi.i]) || 0; diff --git a/src/traces/quiver/select_points.js b/src/traces/quiver/select_points.js index e169b1b9517..66f26e444bf 100644 --- a/src/traces/quiver/select_points.js +++ b/src/traces/quiver/select_points.js @@ -5,9 +5,8 @@ module.exports = function selectPoints(searchInfo, selectionTester) { var xa = searchInfo.xaxis; var ya = searchInfo.yaxis; var selection = []; - var trace = cd[0].trace; var i; - var segment; + var di; var x; var y; @@ -17,20 +16,19 @@ module.exports = function selectPoints(searchInfo, selectionTester) { } } else { for(i = 0; i < cd.length; i++) { - segment = cd[i]; - // Use the start point of the arrow for selection testing - x = xa.c2p(segment[0].x); - y = ya.c2p(segment[0].y); + di = cd[i]; + x = xa.c2p(di.x); + y = ya.c2p(di.y); - if((segment[0].i !== null) && selectionTester.contains([x, y], false, i, searchInfo)) { + if((di.i !== null) && selectionTester.contains([x, y], false, i, searchInfo)) { selection.push({ - pointNumber: segment[0].i, - x: xa.c2d(segment[0].x), - y: ya.c2d(segment[0].y) + pointNumber: di.i, + x: xa.c2d(di.x), + y: ya.c2d(di.y) }); - segment.selected = 1; + di.selected = 1; } else { - segment.selected = 0; + di.selected = 0; } } } diff --git a/src/traces/quiver/style.js b/src/traces/quiver/style.js index deb72e21718..3e910b6d091 100644 --- a/src/traces/quiver/style.js +++ b/src/traces/quiver/style.js @@ -3,14 +3,31 @@ var d3 = require('@plotly/d3'); var Drawing = require('../../components/drawing'); -var Lib = require('../../lib'); -module.exports = function style(gd, calcTrace) { - if(!calcTrace || !calcTrace.length || !calcTrace[0]) return; - - var trace = calcTrace[0].trace; - var s = d3.select(gd).selectAll('g.trace' + trace.uid); +function style(gd) { + var s = d3.select(gd).selectAll('g.trace.quiver'); - s.selectAll('path.js-line') - .call(Drawing.lineGroupStyle, trace.line || {}); + s.each(function(d) { + var trace = d[0].trace; + var line = trace.line || {}; + + d3.select(this).selectAll('path.js-line') + .call(Drawing.lineGroupStyle, line.width, line.color, line.dash); + }); +} + +function styleOnSelect(gd, cd, sel) { + var trace = cd[0].trace; + var line = trace.line || {}; + + if(!sel) return; + + // Style the line paths based on selection state + sel.selectAll('path.js-line') + .call(Drawing.lineGroupStyle, line.width, line.color, line.dash); +} + +module.exports = { + style: style, + styleOnSelect: styleOnSelect }; diff --git a/test/image/baselines/quiver_anchor.png b/test/image/baselines/quiver_anchor.png index 463f0fb85dfaf6f6b16f0edc8dba648db3e7567d..688e05bc59d4e4e2a947db59296c86df37ae7bd4 100644 GIT binary patch literal 25935 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 R0xwEo@O1TaS?83{1OSJv?4|$! literal 26453 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 diff --git a/test/image/baselines/quiver_arrow-styling.png b/test/image/baselines/quiver_arrow-styling.png index d6fe39cceb5344f9f2e41d921f097468789f2f3e..26c92dfce802be0e96450cd95f0f002f6bd54341 100644 GIT binary patch literal 21942 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 Zm8i?i<3oO|;7%lk<_*2;rE2${{12gCmKOj3 literal 14784 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 ip$qxHRE;65GjPcBqrc8yiey= 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 literal 17292 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 literal 21053 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 diff --git a/test/image/baselines/quiver_simple.png b/test/image/baselines/quiver_simple.png index fb0a7e451f9db87f045c4e133b48f50821218847..af35ecc0b8f0fc8ebc9a852249e54b91f0308040 100644 GIT binary patch literal 14093 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 diff --git a/test/image/baselines/quiver_sizemode.png b/test/image/baselines/quiver_sizemode.png index b914c5129b97027134f23a773feb0ec0072e9bed..1fa4d32c2ddef57a471e8f61d853ea98d2ef907d 100644 GIT binary patch literal 28936 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 C?&OmI literal 28492 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 X75!SQl}aelf{&-WH(9u0_p$#15aZD> diff --git a/test/image/baselines/quiver_wind.png b/test/image/baselines/quiver_wind.png index 3e799eb8a8b87092332e0fc1566b6cf6db7966e4..ab33273e57389216324429496246a574e1072e9b 100644 GIT binary patch literal 31990 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 z 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�E2DfB+hma`Jbm9Pi@lL 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

    iZRV*Fxu7L?)S1oxrA~lHfGEiCOZr= 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 diff --git a/test/plot-schema.json b/test/plot-schema.json index c869e669c43..79222983c5a 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -59071,6 +59071,12 @@ "editType": "calc", "valType": "data_array" }, + "uhoverformat": { + "description": "Sets the hover text formatting rulefor `u` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", + "dflt": "", + "editType": "none", + "valType": "string" + }, "uid": { "anim": true, "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.", @@ -59121,6 +59127,12 @@ "editType": "calc", "valType": "data_array" }, + "vhoverformat": { + "description": "Sets the hover text formatting rulefor `v` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", + "dflt": "", + "editType": "none", + "valType": "string" + }, "visible": { "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).", "dflt": true, @@ -59149,6 +59161,12 @@ "editType": "calc+clearAxisTypes", "valType": "subplotid" }, + "xhoverformat": { + "description": "Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", + "dflt": "", + "editType": "none", + "valType": "string" + }, "xsrc": { "description": "Sets the source reference on Chart Studio Cloud for `x`.", "editType": "none", @@ -59166,6 +59184,12 @@ "editType": "calc+clearAxisTypes", "valType": "subplotid" }, + "yhoverformat": { + "description": "Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", + "dflt": "", + "editType": "none", + "valType": "string" + }, "ysrc": { "description": "Sets the source reference on Chart Studio Cloud for `y`.", "editType": "none", From 4d9f656d9a82bebe848055f143f0ac9103debcf3 Mon Sep 17 00:00:00 2001 From: degzhaus Date: Mon, 16 Feb 2026 12:29:05 -0800 Subject: [PATCH 203/241] Reuse scatter selectPoints for quiver instead of duplicating selection logic Co-authored-by: Cursor --- src/traces/quiver/index.js | 2 +- src/traces/quiver/select_points.js | 37 ------------------------------ src/traces/scatter/select.js | 2 +- 3 files changed, 2 insertions(+), 39 deletions(-) delete mode 100644 src/traces/quiver/select_points.js diff --git a/src/traces/quiver/index.js b/src/traces/quiver/index.js index 942ef83fd9b..f01dc527851 100644 --- a/src/traces/quiver/index.js +++ b/src/traces/quiver/index.js @@ -17,7 +17,7 @@ module.exports = { hoverPoints: require('./hover'), formatLabels: require('./format_labels'), eventData: require('./event_data'), - selectPoints: require('./select_points'), + selectPoints: require('../scatter/select'), animatable: true, meta: { diff --git a/src/traces/quiver/select_points.js b/src/traces/quiver/select_points.js deleted file mode 100644 index 66f26e444bf..00000000000 --- a/src/traces/quiver/select_points.js +++ /dev/null @@ -1,37 +0,0 @@ -'use strict'; - -module.exports = function selectPoints(searchInfo, selectionTester) { - var cd = searchInfo.cd; - var xa = searchInfo.xaxis; - var ya = searchInfo.yaxis; - var selection = []; - var i; - var di; - var x; - var y; - - if(selectionTester === false) { // clear selection - for(i = 0; i < cd.length; i++) { - cd[i].selected = 0; - } - } else { - for(i = 0; i < cd.length; i++) { - di = cd[i]; - x = xa.c2p(di.x); - y = ya.c2p(di.y); - - if((di.i !== null) && selectionTester.contains([x, y], false, i, searchInfo)) { - selection.push({ - pointNumber: di.i, - x: xa.c2d(di.x), - y: ya.c2d(di.y) - }); - di.selected = 1; - } else { - di.selected = 0; - } - } - } - - return selection; -}; diff --git a/src/traces/scatter/select.js b/src/traces/scatter/select.js index 01f757a779e..c4c4c3479cc 100644 --- a/src/traces/scatter/select.js +++ b/src/traces/scatter/select.js @@ -13,7 +13,7 @@ module.exports = function selectPoints(searchInfo, selectionTester) { var x; var y; - var hasOnlyLines = (!subtypes.hasMarkers(trace) && !subtypes.hasText(trace)); + var hasOnlyLines = trace.mode && !subtypes.hasMarkers(trace) && !subtypes.hasText(trace); if(hasOnlyLines) return []; if(selectionTester === false) { // clear selection From 452ba9dec489a1a2098c60eb5db4a4f1eb723c03 Mon Sep 17 00:00:00 2001 From: degzhaus Date: Mon, 16 Feb 2026 12:36:08 -0800 Subject: [PATCH 204/241] Use hasColorscale() to conditionally enable colorscale instead of hardcoding hasColorscale to true --- src/traces/quiver/calc.js | 14 ++++++++------ src/traces/quiver/defaults.js | 8 ++++++-- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/traces/quiver/calc.js b/src/traces/quiver/calc.js index 1bee1abefd9..f6678b31c59 100644 --- a/src/traces/quiver/calc.js +++ b/src/traces/quiver/calc.js @@ -66,12 +66,14 @@ module.exports = function calc(gd, trace) { scatterCalc.calcAxisExpansion(gd, trace, xa, ya, xVals, yVals); // Colorscale cmin/cmax computation: prefer provided c, else magnitude - var vals = hasC ? [cMin, cMax] : [normMin, normMax]; - colorscaleCalc(gd, trace, { - vals: vals, - containerStr: '', - cLetter: 'c' - }); + if(trace._hasColorscale) { + var vals = hasC ? [cMin, cMax] : [normMin, normMax]; + colorscaleCalc(gd, trace, { + vals: vals, + containerStr: '', + cLetter: 'c' + }); + } return cd; }; diff --git a/src/traces/quiver/defaults.js b/src/traces/quiver/defaults.js index 9ba70a09d46..d50dec61c47 100644 --- a/src/traces/quiver/defaults.js +++ b/src/traces/quiver/defaults.js @@ -2,6 +2,7 @@ var Lib = require('../../lib'); var attributes = require('./attributes'); +var hasColorscale = require('../../components/colorscale/helpers').hasColorscale; var colorscaleDefaults = require('../../components/colorscale/defaults'); module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) { @@ -75,8 +76,11 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout coerce('vhoverformat'); // Colorscale defaults (adds colorscale, showscale, colorbar, etc.) - traceOut._hasColorscale = true; - colorscaleDefaults(traceIn, traceOut, layout, coerce, { prefix: '', cLetter: 'c' }); + var withColorscale = hasColorscale(traceIn, '', 'c') || traceIn.coloraxis; + traceOut._hasColorscale = !!withColorscale; + if(withColorscale) { + colorscaleDefaults(traceIn, traceOut, layout, coerce, { prefix: '', cLetter: 'c' }); + } // Selection styling coerce('selected.line.color'); From 3c42defdd184c9d6f9bc308a01a420b05a1cec54 Mon Sep 17 00:00:00 2001 From: degzhaus Date: Mon, 16 Feb 2026 12:42:51 -0800 Subject: [PATCH 205/241] Reuse scatter handleXYDefaults() for quiver x/y coercion, validation, and calendar handling --- src/traces/quiver/defaults.js | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/src/traces/quiver/defaults.js b/src/traces/quiver/defaults.js index d50dec61c47..bace2a6a8a5 100644 --- a/src/traces/quiver/defaults.js +++ b/src/traces/quiver/defaults.js @@ -2,6 +2,7 @@ var Lib = require('../../lib'); var attributes = require('./attributes'); +var handleXYDefaults = require('../scatter/xy_defaults'); var hasColorscale = require('../../components/colorscale/helpers').hasColorscale; var colorscaleDefaults = require('../../components/colorscale/defaults'); @@ -10,25 +11,19 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout return Lib.coerce(traceIn, traceOut, attributes, attr, dflt); } - // Coerce x and y data arrays (this ensures proper data structure for category ordering) - var x = coerce('x'); - var y = coerce('y'); + var len = handleXYDefaults(traceIn, traceOut, layout, coerce); + if(!len) { + traceOut.visible = false; + return; + } + var u = coerce('u'); var v = coerce('v'); // Optional scalar field for colorscale coerce('c'); - // Simple validation - check if we have the required arrays - // Use Lib.isArrayOrTypedArray to support both regular arrays and typed arrays - if(!x || !Lib.isArrayOrTypedArray(x) || x.length === 0 || - !y || !Lib.isArrayOrTypedArray(y) || y.length === 0) { - traceOut.visible = false; - return; - } - // If u/v are missing, default to zeros so the trace participates in calc/category logic - var len = Math.min(x.length, y.length); if(!Lib.isArrayOrTypedArray(u) || u.length === 0) { traceOut.u = new Array(len); for(var i = 0; i < len; i++) traceOut.u[i] = 0; @@ -90,6 +85,4 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout coerce('unselected.line.width'); coerce('unselected.textfont.color'); - // Set the data length - traceOut._length = len; }; From 36cab2193eb7da55db608365a2cb1cc17f64cb7c Mon Sep 17 00:00:00 2001 From: degzhaus Date: Mon, 16 Feb 2026 12:54:54 -0800 Subject: [PATCH 206/241] Move colorscale attrs under marker and replace custom c attribute with standard marker.color --- src/traces/quiver/attributes.js | 28 ++++++++----------- src/traces/quiver/calc.js | 13 +++++---- src/traces/quiver/defaults.js | 8 ++---- src/traces/quiver/plot.js | 11 ++++---- test/image/mocks/quiver_colorscale.json | 12 ++++---- .../image/mocks/quiver_custom-colorscale.json | 26 +++++++++-------- test/jasmine/tests/quiver_test.js | 9 ++---- 7 files changed, 51 insertions(+), 56 deletions(-) diff --git a/src/traces/quiver/attributes.js b/src/traces/quiver/attributes.js index a237d9044f7..742f31d41ee 100644 --- a/src/traces/quiver/attributes.js +++ b/src/traces/quiver/attributes.js @@ -34,13 +34,6 @@ var attrs = { anim: true, description: 'Sets the y components of the arrow vectors.' }, - // Optional scalar field used for colorscale mapping. If omitted, |(u,v)| is used. - c: { - valType: 'data_array', - editType: 'calc', - anim: true, - description: 'Sets the scalar values used to map colors via the colorscale. If not provided, the magnitude sqrt(u^2 + v^2) is used.' - }, sizemode: { valType: 'enumerated', values: ['scaled', 'absolute', 'raw'], @@ -181,6 +174,17 @@ var attrs = { description: 'Sets the text font.' }), + // Marker (for colorscale-based coloring of arrows) + marker: extendFlat( + { + editType: 'calc' + }, + colorScaleAttrs('marker', { + showScaleDflt: true, + editTypeOverride: 'calc' + }) + ), + // Selection and styling selected: { line: { @@ -237,16 +241,6 @@ var attrs = { // Extend with base attributes (includes hoverinfo, etc.) extendFlat(attrs, baseAttrs); -// Colorscale attributes to color arrows by |(u,v)| magnitude -extendFlat( - attrs, - colorScaleAttrs('', { - colorAttr: 'u/v norm', - showScaleDflt: true, - editTypeOverride: 'calc' - }) -); - // Add hoverinfo with proper flags for quiver // We need to create a new object to avoid mutating the shared base attributes attrs.hoverinfo = extendFlat({}, baseAttrs.hoverinfo, { diff --git a/src/traces/quiver/calc.js b/src/traces/quiver/calc.js index f6678b31c59..8123c00e443 100644 --- a/src/traces/quiver/calc.js +++ b/src/traces/quiver/calc.js @@ -29,7 +29,8 @@ module.exports = function calc(gd, trace) { var normMax = -Infinity; var cMin = Infinity; var cMax = -Infinity; - var hasC = Lib.isArrayOrTypedArray(trace.c); + var markerColor = (trace.marker || {}).color; + var hasMarkerColorArray = Lib.isArrayOrTypedArray(markerColor); for(var i = 0; i < len; i++) { var cdi = cd[i] = { i: i }; @@ -45,8 +46,8 @@ module.exports = function calc(gd, trace) { } // track ranges for colorscale - if(hasC) { - var ci = trace.c[i]; + if(hasMarkerColorArray) { + var ci = markerColor[i]; if(isNumeric(ci)) { if(ci < cMin) cMin = ci; if(ci > cMax) cMax = ci; @@ -65,12 +66,12 @@ module.exports = function calc(gd, trace) { // Ensure axes are expanded and categories registered like scatter traces do scatterCalc.calcAxisExpansion(gd, trace, xa, ya, xVals, yVals); - // Colorscale cmin/cmax computation: prefer provided c, else magnitude + // Colorscale cmin/cmax computation: prefer provided marker.color, else magnitude if(trace._hasColorscale) { - var vals = hasC ? [cMin, cMax] : [normMin, normMax]; + var vals = hasMarkerColorArray ? [cMin, cMax] : [normMin, normMax]; colorscaleCalc(gd, trace, { vals: vals, - containerStr: '', + containerStr: 'marker', cLetter: 'c' }); } diff --git a/src/traces/quiver/defaults.js b/src/traces/quiver/defaults.js index bace2a6a8a5..b0a659ca2b2 100644 --- a/src/traces/quiver/defaults.js +++ b/src/traces/quiver/defaults.js @@ -20,9 +20,6 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout var u = coerce('u'); var v = coerce('v'); - // Optional scalar field for colorscale - coerce('c'); - // If u/v are missing, default to zeros so the trace participates in calc/category logic if(!Lib.isArrayOrTypedArray(u) || u.length === 0) { traceOut.u = new Array(len); @@ -71,10 +68,11 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout coerce('vhoverformat'); // Colorscale defaults (adds colorscale, showscale, colorbar, etc.) - var withColorscale = hasColorscale(traceIn, '', 'c') || traceIn.coloraxis; + coerce('marker.color'); + var withColorscale = hasColorscale(traceIn, 'marker') || (traceIn.marker || {}).coloraxis; traceOut._hasColorscale = !!withColorscale; if(withColorscale) { - colorscaleDefaults(traceIn, traceOut, layout, coerce, { prefix: '', cLetter: 'c' }); + colorscaleDefaults(traceIn, traceOut, layout, coerce, { prefix: 'marker.', cLetter: 'c' }); } // Selection styling diff --git a/src/traces/quiver/plot.js b/src/traces/quiver/plot.js index a571e2ef409..84ab82fb1d6 100644 --- a/src/traces/quiver/plot.js +++ b/src/traces/quiver/plot.js @@ -183,14 +183,15 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition // Apply styling using Plotly's standard styling system Drawing.lineGroupStyle(lineSegments, trace.line && trace.line.width, trace.line && trace.line.color, trace.line && trace.line.dash); - // If colorscale present, color arrows by magnitude |(u,v)| + // If colorscale present, color arrows by marker.color or magnitude |(u,v)| if(trace._hasColorscale) { - var colorFunc = Colorscale.makeColorScaleFuncFromTrace(trace); + var marker = trace.marker || {}; + var colorFunc = Colorscale.makeColorScaleFuncFromTrace(marker); lineSegments.style('stroke', function(cdi) { - var cArr = trace.c; + var markerColor = marker.color; var value; - if(Lib.isArrayOrTypedArray(cArr) && cArr.length > cdi.i && isFinite(cArr[cdi.i])) { - value = cArr[cdi.i]; + if(Lib.isArrayOrTypedArray(markerColor) && markerColor.length > cdi.i && isFinite(markerColor[cdi.i])) { + value = markerColor[cdi.i]; } else { var uVal = (trace.u && trace.u[cdi.i]) || 0; var vVal = (trace.v && trace.v[cdi.i]) || 0; diff --git a/test/image/mocks/quiver_colorscale.json b/test/image/mocks/quiver_colorscale.json index 40987cc87c7..a9471491013 100644 --- a/test/image/mocks/quiver_colorscale.json +++ b/test/image/mocks/quiver_colorscale.json @@ -9,13 +9,15 @@ "sizemode": "scaled", "sizeref": 0.3, "anchor": "tail", - "colorscale": "Viridis", - "showscale": true, + "marker": { + "colorscale": "Viridis", + "showscale": true, + "colorbar": { + "title": {"text": "Magnitude"} + } + }, "line": { "width": 2 - }, - "colorbar": { - "title": {"text": "Magnitude"} } } ], diff --git a/test/image/mocks/quiver_custom-colorscale.json b/test/image/mocks/quiver_custom-colorscale.json index 5a29f3e315b..75461f435d8 100644 --- a/test/image/mocks/quiver_custom-colorscale.json +++ b/test/image/mocks/quiver_custom-colorscale.json @@ -6,27 +6,29 @@ "y": [0, 0, 0, 1, 1, 1, 2, 2, 2], "u": [0.5, 1.5, 2.5, 0.5, 1.5, 2.5, 0.5, 1.5, 2.5], "v": [0.5, 0.5, 0.5, 1.5, 1.5, 1.5, 2.5, 2.5, 2.5], - "c": [1, 2, 3, 2, 3, 4, 3, 4, 5], + "marker": { + "color": [1, 2, 3, 2, 3, 4, 3, 4, 5], + "colorscale": [ + [0, "rgb(0,0,255)"], + [0.5, "rgb(0,255,0)"], + [1, "rgb(255,0,0)"] + ], + "showscale": true, + "colorbar": { + "title": {"text": "Custom Field"}, + "x": 1.02 + } + }, "sizemode": "scaled", "sizeref": 0.25, "anchor": "tail", - "colorscale": [ - [0, "rgb(0,0,255)"], - [0.5, "rgb(0,255,0)"], - [1, "rgb(255,0,0)"] - ], - "showscale": true, "line": { "width": 2 - }, - "colorbar": { - "title": {"text": "Custom Field"}, - "x": 1.02 } } ], "layout": { - "title": {"text": "Quiver with Custom Scalar Field (c)"}, + "title": {"text": "Quiver with Custom Scalar Field"}, "width": 600, "height": 500, "xaxis": { diff --git a/test/jasmine/tests/quiver_test.js b/test/jasmine/tests/quiver_test.js index 377e34db6c4..6c829a7278e 100644 --- a/test/jasmine/tests/quiver_test.js +++ b/test/jasmine/tests/quiver_test.js @@ -220,8 +220,7 @@ describe('Test quiver interactions', function() { x: [1, 2, 3], y: [1, 2, 3], u: [1, 0, -1], - v: [0, 1, 0], - showscale: false + v: [0, 1, 0] }], layout: { margin: {l: 0, t: 0, r: 0, b: 0}, @@ -251,8 +250,7 @@ describe('Test quiver interactions', function() { y: [1, 2], u: [1, 0], v: [0, 1], - line: {color: 'red'}, - showscale: false + line: {color: 'red'} }, { type: 'quiver', name: 'trace B', @@ -260,8 +258,7 @@ describe('Test quiver interactions', function() { y: [3, 4], u: [-1, 0], v: [0, -1], - line: {color: 'blue'}, - showscale: false + line: {color: 'blue'} }], { margin: {l: 0, t: 0, r: 0, b: 0}, width: 400, From b8e2aa87495c2e823e4c23e3de0c79218f8402da Mon Sep 17 00:00:00 2001 From: degzhaus Date: Mon, 16 Feb 2026 13:01:34 -0800 Subject: [PATCH 207/241] Fix axis autorange to include arrow tips, not just base positions; remove hard-coded ranges from mocks --- src/traces/quiver/calc.js | 81 ++++++++++++++++--- src/traces/quiver/plot.js | 12 +-- test/image/mocks/quiver_anchor.json | 15 +--- test/image/mocks/quiver_arrow-styling.json | 17 +--- test/image/mocks/quiver_colorscale.json | 8 +- .../image/mocks/quiver_custom-colorscale.json | 8 +- test/image/mocks/quiver_multi-trace.json | 40 +++++++++ test/image/mocks/quiver_simple.json | 8 +- test/image/mocks/quiver_sizemode.json | 15 +--- test/image/mocks/quiver_wind.json | 20 ++--- test/image/mocks/quiver_zero-vectors.json | 11 +-- 11 files changed, 135 insertions(+), 100 deletions(-) create mode 100644 test/image/mocks/quiver_multi-trace.json diff --git a/src/traces/quiver/calc.js b/src/traces/quiver/calc.js index 8123c00e443..4423b02abe4 100644 --- a/src/traces/quiver/calc.js +++ b/src/traces/quiver/calc.js @@ -4,7 +4,6 @@ var Lib = require('../../lib'); var Axes = require('../../plots/cartesian/axes'); var isNumeric = require('fast-isnumeric'); var BADNUM = require('../../constants/numerical').BADNUM; -var scatterCalc = require('../scatter/calc'); var colorscaleCalc = require('../../components/colorscale/calc'); /** @@ -19,8 +18,6 @@ module.exports = function calc(gd, trace) { var xVals = xa.makeCalcdata(trace, 'x'); var yVals = ya.makeCalcdata(trace, 'y'); - // u/v are read in plot using the original trace arrays via cdi.i - var len = Math.min(xVals.length, yVals.length); trace._length = len; var cd = new Array(len); @@ -32,6 +29,10 @@ module.exports = function calc(gd, trace) { var markerColor = (trace.marker || {}).color; var hasMarkerColorArray = Lib.isArrayOrTypedArray(markerColor); + var uArr = trace.u || []; + var vArr = trace.v || []; + + // First pass: build calcdata and compute maxNorm (needed for 'scaled' sizemode) for(var i = 0; i < len; i++) { var cdi = cd[i] = { i: i }; var xValid = isNumeric(xVals[i]); @@ -45,26 +46,80 @@ module.exports = function calc(gd, trace) { cdi.y = BADNUM; } - // track ranges for colorscale + var ui = uArr[i] || 0; + var vi = vArr[i] || 0; + var norm = Math.sqrt(ui * ui + vi * vi); + + if(isFinite(norm)) { + if(norm > normMax) normMax = norm; + if(norm < normMin) normMin = norm; + } + if(hasMarkerColorArray) { var ci = markerColor[i]; if(isNumeric(ci)) { if(ci < cMin) cMin = ci; if(ci > cMax) cMax = ci; } + } + } + + // Store maxNorm for use by plot.js + trace._maxNorm = normMax; + + // Compute arrow endpoints for axis expansion. + // We approximate with scaleRatio=1 (exact for square plots, + // close enough for autorange padding in non-square plots). + var sizemode = trace.sizemode || 'scaled'; + var sizeref = (trace.sizeref !== undefined) ? trace.sizeref : (sizemode === 'raw' ? 1 : 0.5); + var anchor = trace.anchor || 'tail'; + + var allX = new Array(len * 2); + var allY = new Array(len * 2); + + for(var k = 0; k < len; k++) { + var xk = xVals[k]; + var yk = yVals[k]; + var uk = uArr[k] || 0; + var vk = vArr[k] || 0; + var nk = Math.sqrt(uk * uk + vk * vk); + + var baseLen; + if(sizemode === 'scaled') { + baseLen = normMax ? (nk / normMax) * sizeref : 0; } else { - var ui = (trace.u && trace.u[i]) || 0; - var vi = (trace.v && trace.v[i]) || 0; - var n = Math.sqrt(ui * ui + vi * vi); - if(isFinite(n)) { - if(n < normMin) normMin = n; - if(n > normMax) normMax = n; - } + baseLen = nk * sizeref; + } + + var unitxk = nk ? (uk / nk) : 0; + var unityk = nk ? (vk / nk) : 0; + var dxk = unitxk * baseLen; + var dyk = unityk * baseLen; + + if(anchor === 'tip') { + allX[k * 2] = xk; + allY[k * 2] = yk; + allX[k * 2 + 1] = xk - dxk; + allY[k * 2 + 1] = yk - dyk; + } else if(anchor === 'cm' || anchor === 'center' || anchor === 'middle') { + allX[k * 2] = xk - dxk / 2; + allY[k * 2] = yk - dyk / 2; + allX[k * 2 + 1] = xk + dxk / 2; + allY[k * 2 + 1] = yk + dyk / 2; + } else { // tail (default) + allX[k * 2] = xk; + allY[k * 2] = yk; + allX[k * 2 + 1] = xk + dxk; + allY[k * 2 + 1] = yk + dyk; } } - // Ensure axes are expanded and categories registered like scatter traces do - scatterCalc.calcAxisExpansion(gd, trace, xa, ya, xVals, yVals); + // Expand axes to include both base positions and arrow tips + xa._minDtick = 0; + ya._minDtick = 0; + + trace._extremes[xa._id] = Axes.findExtremes(xa, allX, {padded: true}); + trace._extremes[ya._id] = Axes.findExtremes(ya, allY, {padded: true}); // Colorscale cmin/cmax computation: prefer provided marker.color, else magnitude if(trace._hasColorscale) { diff --git a/src/traces/quiver/plot.js b/src/traces/quiver/plot.js index 84ab82fb1d6..86a2f723c2a 100644 --- a/src/traces/quiver/plot.js +++ b/src/traces/quiver/plot.js @@ -80,16 +80,8 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition lineSegments.exit().remove(); - // Precompute norms for sizing - var uArr = trace.u || []; - var vArr = trace.v || []; - var maxNorm = 0; - for(var ni = 0; ni < trace._length; ni++) { - var uu = uArr[ni] || 0; - var vv = vArr[ni] || 0; - var nrm = Math.sqrt(uu * uu + vv * vv); - if(nrm > maxNorm) maxNorm = nrm; - } + // Use maxNorm precomputed in calc + var maxNorm = trace._maxNorm || 0; var sizemode = trace.sizemode || 'scaled'; var sizeref = (trace.sizeref !== undefined) ? trace.sizeref : (sizemode === 'raw' ? 1 : 0.5); var anchor = trace.anchor || 'tail'; diff --git a/test/image/mocks/quiver_anchor.json b/test/image/mocks/quiver_anchor.json index dc0a157e889..c16e5e2d10d 100644 --- a/test/image/mocks/quiver_anchor.json +++ b/test/image/mocks/quiver_anchor.json @@ -14,7 +14,6 @@ "color": "red", "width": 2 }, - "showscale": false, "xaxis": "x", "yaxis": "y" }, @@ -32,7 +31,6 @@ "color": "blue", "width": 2 }, - "showscale": false, "xaxis": "x2", "yaxis": "y2" }, @@ -50,7 +48,6 @@ "color": "green", "width": 2 }, - "showscale": false, "xaxis": "x3", "yaxis": "y3" } @@ -61,32 +58,26 @@ "showlegend": true, "xaxis": { "domain": [0, 0.3], - "range": [-0.5, 2.5], "title": {"text": "tail anchor"} }, "yaxis": { - "domain": [0, 1], - "range": [-0.5, 1.5] + "domain": [0, 1] }, "xaxis2": { "domain": [0.35, 0.65], - "range": [-0.5, 2.5], "title": {"text": "tip anchor"} }, "yaxis2": { "domain": [0, 1], - "anchor": "x2", - "range": [0, 2] + "anchor": "x2" }, "xaxis3": { "domain": [0.7, 1], - "range": [-0.5, 2.5], "title": {"text": "center anchor"} }, "yaxis3": { "domain": [0, 1], - "anchor": "x3", - "range": [1, 3] + "anchor": "x3" } } } diff --git a/test/image/mocks/quiver_arrow-styling.json b/test/image/mocks/quiver_arrow-styling.json index d080d62515c..2a74a96a884 100644 --- a/test/image/mocks/quiver_arrow-styling.json +++ b/test/image/mocks/quiver_arrow-styling.json @@ -14,8 +14,7 @@ "line": { "color": "red", "width": 1 - }, - "showscale": false + } }, { "type": "quiver", @@ -31,8 +30,7 @@ "line": { "color": "blue", "width": 2 - }, - "showscale": false + } }, { "type": "quiver", @@ -48,19 +46,12 @@ "line": { "color": "green", "width": 3 - }, - "showscale": false + } } ], "layout": { "width": 500, "height": 600, - "showlegend": true, - "xaxis": { - "range": [-0.5, 2.5] - }, - "yaxis": { - "range": [-0.5, 2.5] - } + "showlegend": true } } diff --git a/test/image/mocks/quiver_colorscale.json b/test/image/mocks/quiver_colorscale.json index a9471491013..897cb5cca51 100644 --- a/test/image/mocks/quiver_colorscale.json +++ b/test/image/mocks/quiver_colorscale.json @@ -23,12 +23,6 @@ ], "layout": { "width": 600, - "height": 500, - "xaxis": { - "range": [-0.5, 2.5] - }, - "yaxis": { - "range": [-0.5, 2.5] - } + "height": 500 } } diff --git a/test/image/mocks/quiver_custom-colorscale.json b/test/image/mocks/quiver_custom-colorscale.json index 75461f435d8..9cf8854a094 100644 --- a/test/image/mocks/quiver_custom-colorscale.json +++ b/test/image/mocks/quiver_custom-colorscale.json @@ -30,12 +30,6 @@ "layout": { "title": {"text": "Quiver with Custom Scalar Field"}, "width": 600, - "height": 500, - "xaxis": { - "range": [-0.5, 2.5] - }, - "yaxis": { - "range": [-0.5, 2.5] - } + "height": 500 } } diff --git a/test/image/mocks/quiver_multi-trace.json b/test/image/mocks/quiver_multi-trace.json new file mode 100644 index 00000000000..f6332936b93 --- /dev/null +++ b/test/image/mocks/quiver_multi-trace.json @@ -0,0 +1,40 @@ +{ + "data": [ + { + "type": "quiver", + "name": "Field A", + "x": [0, 1, 2, 0, 1, 2], + "y": [0, 0, 0, 1, 1, 1], + "u": [1, 1.5, 2, 1, 1.5, 2], + "v": [0.5, 1, 0.5, 1, 1.5, 1], + "sizemode": "scaled", + "sizeref": 0.4, + "anchor": "tail", + "line": { + "color": "red", + "width": 2 + } + }, + { + "type": "quiver", + "name": "Field B", + "x": [3, 4, 5, 3, 4, 5], + "y": [0, 0, 0, 1, 1, 1], + "u": [-1, -1.5, -2, -1, -1.5, -2], + "v": [1, 0.5, 1, 0.5, 1, 0.5], + "sizemode": "scaled", + "sizeref": 0.4, + "anchor": "tail", + "line": { + "color": "blue", + "width": 2 + } + } + ], + "layout": { + "title": {"text": "Multiple Quiver Traces"}, + "width": 700, + "height": 500, + "showlegend": true + } +} diff --git a/test/image/mocks/quiver_simple.json b/test/image/mocks/quiver_simple.json index 3b9edbf5f78..b1539e017d0 100644 --- a/test/image/mocks/quiver_simple.json +++ b/test/image/mocks/quiver_simple.json @@ -16,12 +16,6 @@ ], "layout": { "width": 500, - "height": 500, - "xaxis": { - "range": [-0.5, 2.5] - }, - "yaxis": { - "range": [-0.5, 2.5] - } + "height": 500 } } diff --git a/test/image/mocks/quiver_sizemode.json b/test/image/mocks/quiver_sizemode.json index 4a8ade18ebd..7b412afaded 100644 --- a/test/image/mocks/quiver_sizemode.json +++ b/test/image/mocks/quiver_sizemode.json @@ -14,7 +14,6 @@ "color": "red", "width": 2 }, - "showscale": false, "xaxis": "x", "yaxis": "y" }, @@ -32,7 +31,6 @@ "color": "blue", "width": 2 }, - "showscale": false, "xaxis": "x2", "yaxis": "y2" }, @@ -50,7 +48,6 @@ "color": "green", "width": 2 }, - "showscale": false, "xaxis": "x3", "yaxis": "y3" } @@ -61,32 +58,26 @@ "showlegend": true, "xaxis": { "domain": [0, 0.3], - "range": [-0.5, 2.5], "title": {"text": "scaled"} }, "yaxis": { - "domain": [0, 1], - "range": [-0.5, 0.5] + "domain": [0, 1] }, "xaxis2": { "domain": [0.35, 0.65], - "range": [-0.5, 2.5], "title": {"text": "absolute"} }, "yaxis2": { "domain": [0, 1], - "anchor": "x2", - "range": [0.5, 1.5] + "anchor": "x2" }, "xaxis3": { "domain": [0.7, 1], - "range": [-0.5, 2.5], "title": {"text": "raw"} }, "yaxis3": { "domain": [0, 1], - "anchor": "x3", - "range": [1.5, 2.5] + "anchor": "x3" } } } diff --git a/test/image/mocks/quiver_wind.json b/test/image/mocks/quiver_wind.json index 9ae94159d0e..cea3a550e17 100644 --- a/test/image/mocks/quiver_wind.json +++ b/test/image/mocks/quiver_wind.json @@ -26,14 +26,16 @@ "sizemode": "scaled", "sizeref": 0.2, "anchor": "center", - "colorscale": "Jet", - "showscale": true, + "marker": { + "colorscale": "Jet", + "showscale": true, + "colorbar": { + "title": {"text": "Speed"}, + "x": 1.02 + } + }, "line": { "width": 1.5 - }, - "colorbar": { - "title": {"text": "Speed"}, - "x": 1.02 } } ], @@ -42,12 +44,10 @@ "width": 700, "height": 600, "xaxis": { - "title": {"text": "X"}, - "range": [-0.2, 3.2] + "title": {"text": "X"} }, "yaxis": { - "title": {"text": "Y"}, - "range": [-0.2, 2.2] + "title": {"text": "Y"} } } } diff --git a/test/image/mocks/quiver_zero-vectors.json b/test/image/mocks/quiver_zero-vectors.json index aeb8760aeb2..b7384edcb40 100644 --- a/test/image/mocks/quiver_zero-vectors.json +++ b/test/image/mocks/quiver_zero-vectors.json @@ -13,19 +13,12 @@ "line": { "color": "purple", "width": 2 - }, - "showscale": false + } } ], "layout": { "title": {"text": "Quiver with Zero-Length Vectors"}, "width": 600, - "height": 400, - "xaxis": { - "range": [-0.5, 4.5] - }, - "yaxis": { - "range": [0, 2] - } + "height": 400 } } From 13bb96a5642cc0f06f24c7b6096f04f7a125a46f Mon Sep 17 00:00:00 2001 From: degzhaus Date: Mon, 16 Feb 2026 13:12:28 -0800 Subject: [PATCH 208/241] Add legend line icon for quiver traces by including quiver in getStyleGuide showLine check --- src/components/legend/style.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/legend/style.js b/src/components/legend/style.js index d2b3350c0c8..16ff8e716a4 100644 --- a/src/components/legend/style.js +++ b/src/components/legend/style.js @@ -683,7 +683,7 @@ function getGradientDirection(reversescale, isRadial) { function getStyleGuide(d) { var trace = d[0].trace; var contours = trace.contours; - var showLine = subTypes.hasLines(trace); + var showLine = subTypes.hasLines(trace) || (trace.visible && trace.type === 'quiver'); var showMarker = subTypes.hasMarkers(trace); var showFill = trace.visible && trace.fill && trace.fill !== 'none'; From d4ad7baa25b2c8bea120fff63ee46d825e9e164f Mon Sep 17 00:00:00 2001 From: degzhaus Date: Mon, 16 Feb 2026 13:14:31 -0800 Subject: [PATCH 209/241] Add marker_colorbar config to quiver module so colorbars render correctly --- src/traces/quiver/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/traces/quiver/index.js b/src/traces/quiver/index.js index f01dc527851..42d17716358 100644 --- a/src/traces/quiver/index.js +++ b/src/traces/quiver/index.js @@ -18,6 +18,7 @@ module.exports = { formatLabels: require('./format_labels'), eventData: require('./event_data'), selectPoints: require('../scatter/select'), + colorbar: require('../scatter/marker_colorbar'), animatable: true, meta: { From 7556092cd7484474db8712e7d9bb5ee7deb6a79f Mon Sep 17 00:00:00 2001 From: degzhaus Date: Mon, 16 Feb 2026 13:35:13 -0800 Subject: [PATCH 210/241] Implement visual text label rendering for quiver using shared Drawing.textPointStyle utility --- src/traces/quiver/calc.js | 12 ++++++++++++ src/traces/quiver/plot.js | 30 +++++++++++++++++++++++++++++ test/image/mocks/quiver_simple.json | 3 +++ 3 files changed, 45 insertions(+) diff --git a/src/traces/quiver/calc.js b/src/traces/quiver/calc.js index 4423b02abe4..c7a13bca831 100644 --- a/src/traces/quiver/calc.js +++ b/src/traces/quiver/calc.js @@ -121,6 +121,18 @@ module.exports = function calc(gd, trace) { trace._extremes[xa._id] = Axes.findExtremes(xa, allX, {padded: true}); trace._extremes[ya._id] = Axes.findExtremes(ya, allY, {padded: true}); + // Merge text arrays into calcdata for Drawing.textPointStyle + Lib.mergeArray(trace.text, cd, 'tx'); + Lib.mergeArray(trace.textposition, cd, 'tp'); + if(trace.textfont) { + Lib.mergeArrayCastPositive(trace.textfont.size, cd, 'ts'); + Lib.mergeArray(trace.textfont.color, cd, 'tc'); + Lib.mergeArray(trace.textfont.family, cd, 'tf'); + Lib.mergeArray(trace.textfont.weight, cd, 'tw'); + Lib.mergeArray(trace.textfont.style, cd, 'ty'); + Lib.mergeArray(trace.textfont.variant, cd, 'tv'); + } + // Colorscale cmin/cmax computation: prefer provided marker.color, else magnitude if(trace._hasColorscale) { var vals = hasMarkerColorArray ? [cMin, cMax] : [normMin, normMax]; diff --git a/src/traces/quiver/plot.js b/src/traces/quiver/plot.js index 86a2f723c2a..3e2c13ac3aa 100644 --- a/src/traces/quiver/plot.js +++ b/src/traces/quiver/plot.js @@ -193,6 +193,36 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition }); } + // Render text labels at data points + var textGroup = d3.select(element).selectAll('g.text') + .data([cdscatter]); + + textGroup.enter().append('g').classed('text', true); + + Drawing.setClipUrl(textGroup, plotinfo.layerClipId, gd); + + var textJoin = textGroup.selectAll('g.textpoint') + .data(cdscatter); + + textJoin.enter().append('g').classed('textpoint', true).append('text'); + textJoin.exit().remove(); + + textJoin.each(function(d) { + var g = d3.select(this); + var hasNode = Drawing.translatePoint(d, g.select('text'), xa, ya); + if(!hasNode) g.remove(); + }); + + textJoin.selectAll('text') + .call(Drawing.textPointStyle, trace, gd) + .each(function(d) { + var x = xa.c2p(d.x); + var y = ya.c2p(d.y); + d3.select(this).selectAll('tspan.line').each(function() { + d3.select(this).attr({x: x, y: y}); + }); + }); + // Handle transitions if(transitionOpts && transitionOpts.duration > 0) { var transition = d3.transition() diff --git a/test/image/mocks/quiver_simple.json b/test/image/mocks/quiver_simple.json index b1539e017d0..b7c0aa6d581 100644 --- a/test/image/mocks/quiver_simple.json +++ b/test/image/mocks/quiver_simple.json @@ -6,6 +6,9 @@ "y": [0, 0, 0, 1, 1, 1, 2, 2, 2], "u": [1, 0, -1, 1, 0, -1, 1, 0, -1], "v": [0, 1, 0, 0, 1, 0, 0, 1, 0], + "text": ["A", "B", "C", "D", "E", "F", "G", "H", "I"], + "textposition": "top center", + "textfont": { "size": 12 }, "sizemode": "scaled", "sizeref": 0.5, "anchor": "tail", From fa078c2143f5afead65ffc6550285a76a9d08ef6 Mon Sep 17 00:00:00 2001 From: degzhaus Date: Mon, 16 Feb 2026 13:38:27 -0800 Subject: [PATCH 211/241] Implement per-arrow selected/unselected styling with opacity dimming for unselected arrows --- src/traces/quiver/style.js | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/src/traces/quiver/style.js b/src/traces/quiver/style.js index 3e910b6d091..c65dede56a9 100644 --- a/src/traces/quiver/style.js +++ b/src/traces/quiver/style.js @@ -3,6 +3,8 @@ var d3 = require('@plotly/d3'); var Drawing = require('../../components/drawing'); +var Color = require('../../components/color'); +var DESELECTDIM = require('../../constants/interactions').DESELECTDIM; function style(gd) { var s = d3.select(gd).selectAll('g.trace.quiver'); @@ -22,9 +24,36 @@ function styleOnSelect(gd, cd, sel) { if(!sel) return; - // Style the line paths based on selection state - sel.selectAll('path.js-line') - .call(Drawing.lineGroupStyle, line.width, line.color, line.dash); + if(trace.selectedpoints) { + var selectedAttrs = trace.selected || {}; + var unselectedAttrs = trace.unselected || {}; + var selectedLine = selectedAttrs.line || {}; + var unselectedLine = unselectedAttrs.line || {}; + + sel.selectAll('path.js-line').each(function(d) { + var path = d3.select(this); + + if(d.selected) { + var sc = selectedLine.color || line.color; + var sw = selectedLine.width !== undefined ? selectedLine.width : line.width; + Drawing.lineGroupStyle(path, sw, sc, line.dash); + } else { + var uc = unselectedLine.color; + var uw = unselectedLine.width; + if(!uc) { + uc = line.color ? Color.addOpacity(line.color, DESELECTDIM) : undefined; + } + if(uw === undefined) uw = line.width; + Drawing.lineGroupStyle(path, uw, uc, line.dash); + } + }); + + Drawing.selectedTextStyle(sel.selectAll('text'), trace); + } else { + sel.selectAll('path.js-line') + .call(Drawing.lineGroupStyle, line.width, line.color, line.dash); + Drawing.textPointStyle(sel.selectAll('text'), trace, gd); + } } module.exports = { From 9cb41db274b73cdf7cd9aa0efb1329536c158a9c Mon Sep 17 00:00:00 2001 From: degzhaus Date: Mon, 16 Feb 2026 13:40:31 -0800 Subject: [PATCH 212/241] Run npm run schema --- test/plot-schema.json | 1886 +++++++++++++++++++++-------------------- 1 file changed, 945 insertions(+), 941 deletions(-) diff --git a/test/plot-schema.json b/test/plot-schema.json index 79222983c5a..d5fe0d3b366 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -57657,266 +57657,120 @@ "min": 0.1, "valType": "number" }, - "autocolorscale": { - "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", - "dflt": true, - "editType": "calc", - "impliedEdits": {}, - "valType": "boolean" - }, - "c": { - "anim": true, - "description": "Sets the scalar values used to map colors via the colorscale. If not provided, the magnitude sqrt(u^2 + v^2) is used.", + "customdata": { + "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements", "editType": "calc", "valType": "data_array" }, - "cauto": { - "description": "Determines whether or not the color domain is computed with respect to the input data (here u/v norm) or the bounds set in `cmin` and `cmax` Defaults to `false` when `cmin` and `cmax` are set by the user.", - "dflt": true, - "editType": "calc", - "impliedEdits": {}, - "valType": "boolean" - }, - "cmax": { - "description": "Sets the upper bound of the color domain. Value should have the same units as u/v norm and if set, `cmin` must be set as well.", - "dflt": null, - "editType": "calc", - "impliedEdits": { - "cauto": false - }, - "valType": "number" + "customdatasrc": { + "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", + "editType": "none", + "valType": "string" }, - "cmid": { - "description": "Sets the mid-point of the color domain by scaling `cmin` and/or `cmax` to be equidistant to this point. Value should have the same units as u/v norm. Has no effect when `cauto` is `false`.", - "dflt": null, + "hoverdistance": { + "description": "Maximum distance (in pixels) to look for nearby arrows on hover.", + "dflt": 20, "editType": "calc", - "impliedEdits": {}, + "min": -1, "valType": "number" }, - "cmin": { - "description": "Sets the lower bound of the color domain. Value should have the same units as u/v norm and if set, `cmax` must be set as well.", - "dflt": null, - "editType": "calc", - "impliedEdits": { - "cauto": false - }, - "valType": "number" + "hoverinfo": { + "arrayOk": true, + "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.", + "dflt": "all", + "editType": "none", + "extras": [ + "all", + "none", + "skip" + ], + "flags": [ + "x", + "y", + "u", + "v", + "text", + "name" + ], + "valType": "flaglist" }, - "coloraxis": { - "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.", - "dflt": null, - "editType": "calc", - "regex": "/^coloraxis([2-9]|[1-9][0-9]+)?$/", - "valType": "subplotid" + "hoverinfosrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", + "editType": "none", + "valType": "string" }, - "colorbar": { - "bgcolor": { - "description": "Sets the color of padded area.", - "dflt": "rgba(0,0,0,0)", - "editType": "colorbars", - "valType": "color" - }, - "bordercolor": { - "description": "Sets the axis line color.", - "dflt": "#444", - "editType": "colorbars", - "valType": "color" - }, - "borderwidth": { - "description": "Sets the width (in px) or the border enclosing this color bar.", - "dflt": 0, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "dtick": { - "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*", - "editType": "colorbars", - "impliedEdits": { - "tickmode": "linear" - }, - "valType": "any" - }, - "editType": "colorbars", - "exponentformat": { - "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from \"femto\" f (10^-15) to \"tera\" T (10^12). *SI extended* covers instead the full SI range from \"quecto\" q (10^-30) to \"quetta\" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation.", - "dflt": "B", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "none", - "e", - "E", - "power", - "SI", - "B", - "SI extended" - ] - }, - "labelalias": { - "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax.", - "dflt": false, - "editType": "colorbars", - "valType": "any" - }, - "len": { - "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.", - "dflt": 1, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "lenmode": { - "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.", - "dflt": "fraction", - "editType": "colorbars", + "hoverlabel": { + "align": { + "arrayOk": true, + "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines", + "dflt": "auto", + "editType": "none", "valType": "enumerated", "values": [ - "fraction", - "pixels" + "left", + "right", + "auto" ] }, - "minexponent": { - "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.", - "dflt": 3, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "nticks": { - "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.", - "dflt": 0, - "editType": "colorbars", - "min": 0, - "valType": "integer" - }, - "orientation": { - "description": "Sets the orientation of the colorbar.", - "dflt": "v", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "h", - "v" - ] + "alignsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `align`.", + "editType": "none", + "valType": "string" }, - "outlinecolor": { - "description": "Sets the axis line color.", - "dflt": "#444", - "editType": "colorbars", + "bgcolor": { + "arrayOk": true, + "description": "Sets the background color of the hover labels for this trace", + "editType": "none", "valType": "color" }, - "outlinewidth": { - "description": "Sets the width (in px) of the axis line.", - "dflt": 1, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "role": "object", - "separatethousands": { - "description": "If \"true\", even 4-digit integers are separated", - "dflt": false, - "editType": "colorbars", - "valType": "boolean" - }, - "showexponent": { - "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.", - "dflt": "all", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] - }, - "showticklabels": { - "description": "Determines whether or not the tick labels are drawn.", - "dflt": true, - "editType": "colorbars", - "valType": "boolean" - }, - "showtickprefix": { - "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.", - "dflt": "all", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] + "bgcolorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", + "editType": "none", + "valType": "string" }, - "showticksuffix": { - "description": "Same as `showtickprefix` but for tick suffixes.", - "dflt": "all", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "all", - "first", - "last", - "none" - ] + "bordercolor": { + "arrayOk": true, + "description": "Sets the border color of the hover labels for this trace.", + "editType": "none", + "valType": "color" }, - "thickness": { - "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.", - "dflt": 30, - "editType": "colorbars", - "min": 0, - "valType": "number" + "bordercolorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", + "editType": "none", + "valType": "string" }, - "thicknessmode": { - "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.", - "dflt": "pixels", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "fraction", - "pixels" - ] - }, - "tick0": { - "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears.", - "editType": "colorbars", - "impliedEdits": { - "tickmode": "linear" - }, - "valType": "any" - }, - "tickangle": { - "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.", - "dflt": "auto", - "editType": "colorbars", - "valType": "angle" - }, - "tickcolor": { - "description": "Sets the tick color.", - "dflt": "#444", - "editType": "colorbars", - "valType": "color" - }, - "tickfont": { + "editType": "none", + "font": { "color": { - "editType": "colorbars", + "arrayOk": true, + "editType": "none", "valType": "color" }, - "description": "Sets the color bar's tick label font", - "editType": "colorbars", + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" + }, + "description": "Sets the font used in hover labels.", + "editType": "none", "family": { + "arrayOk": true, "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "colorbars", + "editType": "none", "noBlank": true, "strict": true, "valType": "string" }, + "familysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `family`.", + "editType": "none", + "valType": "string" + }, "lineposition": { + "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", "dflt": "none", - "editType": "colorbars", + "editType": "none", "extras": [ "none" ], @@ -57927,32 +57781,56 @@ ], "valType": "flaglist" }, + "linepositionsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", + "editType": "none", + "valType": "string" + }, "role": "object", "shadow": { + "arrayOk": true, "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", "dflt": "none", - "editType": "colorbars", + "editType": "none", + "valType": "string" + }, + "shadowsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", + "editType": "none", "valType": "string" }, "size": { - "editType": "colorbars", + "arrayOk": true, + "editType": "none", "min": 1, "valType": "number" }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, "style": { + "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", "dflt": "normal", - "editType": "colorbars", + "editType": "none", "valType": "enumerated", "values": [ "normal", "italic" ] }, + "stylesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `style`.", + "editType": "none", + "valType": "string" + }, "textcase": { + "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", "dflt": "normal", - "editType": "colorbars", + "editType": "none", "valType": "enumerated", "values": [ "normal", @@ -57961,10 +57839,16 @@ "lower" ] }, + "textcasesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", + "editType": "none", + "valType": "string" + }, "variant": { + "arrayOk": true, "description": "Sets the variant of the font.", "dflt": "normal", - "editType": "colorbars", + "editType": "none", "valType": "enumerated", "values": [ "normal", @@ -57975,10 +57859,16 @@ "unicase" ] }, + "variantsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `variant`.", + "editType": "none", + "valType": "string" + }, "weight": { + "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", "dflt": "normal", - "editType": "colorbars", + "editType": "none", "extras": [ "normal", "bold" @@ -57986,464 +57876,89 @@ "max": 1000, "min": 1, "valType": "integer" - } - }, - "tickformat": { - "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*", - "dflt": "", - "editType": "colorbars", - "valType": "string" - }, - "tickformatstops": { - "items": { - "tickformatstop": { - "dtickrange": { - "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*", - "editType": "colorbars", - "items": [ - { - "editType": "colorbars", - "valType": "any" - }, - { - "editType": "colorbars", - "valType": "any" - } - ], - "valType": "info_array" - }, - "editType": "colorbars", - "enabled": { - "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.", - "dflt": true, - "editType": "colorbars", - "valType": "boolean" - }, - "name": { - "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.", - "editType": "colorbars", - "valType": "string" - }, - "role": "object", - "templateitemname": { - "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.", - "editType": "colorbars", - "valType": "string" - }, - "value": { - "description": "string - dtickformat for described zoom level, the same as *tickformat*", - "dflt": "", - "editType": "colorbars", - "valType": "string" - } - } }, - "role": "object" - }, - "ticklabeloverflow": { - "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "allow", - "hide past div", - "hide past domain" - ] - }, - "ticklabelposition": { - "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.", - "dflt": "outside", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "outside", - "inside", - "outside top", - "inside top", - "outside left", - "inside left", - "outside right", - "inside right", - "outside bottom", - "inside bottom" - ] + "weightsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `weight`.", + "editType": "none", + "valType": "string" + } }, - "ticklabelstep": { - "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.", - "dflt": 1, - "editType": "colorbars", - "min": 1, + "namelength": { + "arrayOk": true, + "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.", + "dflt": 15, + "editType": "none", + "min": -1, "valType": "integer" }, - "ticklen": { - "description": "Sets the tick length (in px).", - "dflt": 5, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "tickmode": { - "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).", - "editType": "colorbars", - "impliedEdits": {}, - "valType": "enumerated", - "values": [ - "auto", - "linear", - "array" - ] - }, - "tickprefix": { - "description": "Sets a tick label prefix.", - "dflt": "", - "editType": "colorbars", - "valType": "string" - }, - "ticks": { - "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.", - "dflt": "", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "outside", - "inside", - "" - ] - }, - "ticksuffix": { - "description": "Sets a tick label suffix.", - "dflt": "", - "editType": "colorbars", - "valType": "string" - }, - "ticktext": { - "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", - "editType": "colorbars", - "valType": "data_array" - }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", + "namelengthsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", "editType": "none", "valType": "string" }, - "tickvals": { - "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", - "editType": "colorbars", - "valType": "data_array" - }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", + "role": "object", + "showarrow": { + "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", + "dflt": true, "editType": "none", - "valType": "string" - }, - "tickwidth": { - "description": "Sets the tick width (in px).", - "dflt": 1, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "title": { - "editType": "colorbars", - "font": { - "color": { - "editType": "colorbars", - "valType": "color" - }, - "description": "Sets this color bar's title font.", - "editType": "colorbars", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "colorbars", - "noBlank": true, - "strict": true, - "valType": "string" - }, - "lineposition": { - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "colorbars", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" - }, - "role": "object", - "shadow": { - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "colorbars", - "valType": "string" - }, - "size": { - "editType": "colorbars", - "min": 1, - "valType": "number" - }, - "style": { - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "italic" - ] - }, - "textcase": { - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "word caps", - "upper", - "lower" - ] - }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "colorbars", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" - } - }, - "role": "object", - "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "right", - "top", - "bottom" - ] - }, - "text": { - "description": "Sets the title of the color bar.", - "editType": "colorbars", - "valType": "string" - } - }, - "x": { - "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.", - "editType": "colorbars", - "valType": "number" - }, - "xanchor": { - "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "left", - "center", - "right" - ] - }, - "xpad": { - "description": "Sets the amount of padding (in px) along the x direction.", - "dflt": 10, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "xref": { - "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.", - "dflt": "paper", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "container", - "paper" - ] - }, - "y": { - "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.", - "editType": "colorbars", - "valType": "number" - }, - "yanchor": { - "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "top", - "middle", - "bottom" - ] - }, - "ypad": { - "description": "Sets the amount of padding (in px) along the y direction.", - "dflt": 10, - "editType": "colorbars", - "min": 0, - "valType": "number" - }, - "yref": { - "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.", - "dflt": "paper", - "editType": "colorbars", - "valType": "enumerated", - "values": [ - "container", - "paper" - ] + "valType": "boolean" } }, - "colorscale": { - "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", - "dflt": null, - "editType": "calc", - "impliedEdits": { - "autocolorscale": false - }, - "valType": "colorscale" + "hovertemplate": { + "arrayOk": true, + "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `x`, `y`, `u`, `v`, `text` and `name`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``.", + "dflt": "", + "editType": "none", + "valType": "string" }, - "csrc": { - "description": "Sets the source reference on Chart Studio Cloud for `c`.", + "hovertemplatesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", "editType": "none", "valType": "string" }, - "customdata": { - "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements", + "ids": { + "anim": true, + "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", + "idssrc": { + "description": "Sets the source reference on Chart Studio Cloud for `ids`.", "editType": "none", "valType": "string" }, - "hoverdistance": { - "description": "Maximum distance (in pixels) to look for nearby arrows on hover.", - "dflt": 20, - "editType": "calc", - "min": -1, - "valType": "number" - }, - "hoverinfo": { - "arrayOk": true, - "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.", - "dflt": "all", - "editType": "none", - "extras": [ - "all", - "none", - "skip" - ], - "flags": [ - "x", - "y", - "u", - "v", - "text", - "name" - ], - "valType": "flaglist" + "legend": { + "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", + "dflt": "legend", + "editType": "style", + "valType": "subplotid" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", + "legendgroup": { + "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.", + "dflt": "", + "editType": "style", "valType": "string" }, - "hoverlabel": { - "align": { - "arrayOk": true, - "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines", - "dflt": "auto", - "editType": "none", - "valType": "enumerated", - "values": [ - "left", - "right", - "auto" - ] - }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, - "bgcolor": { - "arrayOk": true, - "description": "Sets the background color of the hover labels for this trace", - "editType": "none", - "valType": "color" - }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, - "bordercolor": { - "arrayOk": true, - "description": "Sets the border color of the hover labels for this trace.", - "editType": "none", - "valType": "color" - }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, - "editType": "none", + "legendgrouptitle": { + "editType": "style", "font": { "color": { - "arrayOk": true, - "editType": "none", + "editType": "style", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, - "description": "Sets the font used in hover labels.", - "editType": "none", + "description": "Sets this legend group's title font.", + "editType": "style", "family": { - "arrayOk": true, "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "none", + "editType": "style", "noBlank": true, "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { - "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", "dflt": "none", - "editType": "none", + "editType": "style", "extras": [ "none" ], @@ -58454,332 +57969,833 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { - "arrayOk": true, "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", "dflt": "none", - "editType": "none", + "editType": "style", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" + "size": { + "editType": "style", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "style", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "style", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "style", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "style", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "role": "object", + "text": { + "description": "Sets the title of the legend group.", + "dflt": "", + "editType": "style", + "valType": "string" + } + }, + "legendrank": { + "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.", + "dflt": 1000, + "editType": "style", + "valType": "number" + }, + "legendwidth": { + "description": "Sets the width (in px or fraction) of the legend for this trace.", + "editType": "style", + "min": 0, + "valType": "number" + }, + "line": { + "color": { + "description": "Sets the color of the arrow lines.", + "dflt": "#000", + "editType": "style", + "valType": "color" + }, + "dash": { + "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", + "dflt": "solid", + "editType": "style", + "valType": "string", + "values": [ + "solid", + "dot", + "dash", + "longdash", + "dashdot", + "longdashdot" + ] + }, + "editType": "style", + "role": "object", + "shape": { + "description": "Determines the line shape.", + "dflt": "linear", + "editType": "plot", + "valType": "enumerated", + "values": [ + "linear", + "spline", + "hv", + "vh", + "hvh", + "vhv" + ] + }, + "simplify": { + "description": "Simplifies lines by removing nearly-overlapping points.", + "dflt": true, + "editType": "plot", + "valType": "boolean" + }, + "smoothing": { + "description": "Has an effect only if `shape` is set to *spline*. Sets the amount of smoothing.", + "dflt": 1, + "editType": "plot", + "max": 1.3, + "min": 0, + "valType": "number" + }, + "width": { + "description": "Sets the width (in px) of the arrow lines.", + "dflt": 1, + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "marker": { + "autocolorscale": { + "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "cauto": { + "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.", + "dflt": true, + "editType": "calc", + "impliedEdits": {}, + "valType": "boolean" + }, + "cmax": { + "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "cmid": { + "description": "Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`.", + "dflt": null, + "editType": "calc", + "impliedEdits": {}, + "valType": "number" + }, + "cmin": { + "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "cauto": false + }, + "valType": "number" + }, + "color": { + "arrayOk": true, + "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.", + "editType": "calc", + "valType": "color" + }, + "coloraxis": { + "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.", + "dflt": null, + "editType": "calc", + "regex": "/^coloraxis([2-9]|[1-9][0-9]+)?$/", + "valType": "subplotid" + }, + "colorbar": { + "bgcolor": { + "description": "Sets the color of padded area.", + "dflt": "rgba(0,0,0,0)", + "editType": "colorbars", + "valType": "color" + }, + "bordercolor": { + "description": "Sets the axis line color.", + "dflt": "#444", + "editType": "colorbars", + "valType": "color" + }, + "borderwidth": { + "description": "Sets the width (in px) or the border enclosing this color bar.", + "dflt": 0, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "dtick": { + "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*", + "editType": "colorbars", + "impliedEdits": { + "tickmode": "linear" + }, + "valType": "any" + }, + "editType": "colorbars", + "exponentformat": { + "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B. *SI* uses prefixes from \"femto\" f (10^-15) to \"tera\" T (10^12). *SI extended* covers instead the full SI range from \"quecto\" q (10^-30) to \"quetta\" Q (10^30). If *SI* or *SI extended* is used and the exponent is beyond the above ranges, the formatting rule will automatically be switched to the power notation.", + "dflt": "B", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "none", + "e", + "E", + "power", + "SI", + "B", + "SI extended" + ] + }, + "labelalias": { + "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax.", + "dflt": false, + "editType": "colorbars", + "valType": "any" + }, + "len": { + "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.", + "dflt": 1, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "lenmode": { + "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.", + "dflt": "fraction", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "fraction", + "pixels" + ] + }, + "minexponent": { + "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.", + "dflt": 3, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "nticks": { + "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.", + "dflt": 0, + "editType": "colorbars", + "min": 0, + "valType": "integer" + }, + "orientation": { + "description": "Sets the orientation of the colorbar.", + "dflt": "v", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "h", + "v" + ] + }, + "outlinecolor": { + "description": "Sets the axis line color.", + "dflt": "#444", + "editType": "colorbars", + "valType": "color" + }, + "outlinewidth": { + "description": "Sets the width (in px) of the axis line.", + "dflt": 1, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "role": "object", + "separatethousands": { + "description": "If \"true\", even 4-digit integers are separated", + "dflt": false, + "editType": "colorbars", + "valType": "boolean" + }, + "showexponent": { + "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.", + "dflt": "all", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "showticklabels": { + "description": "Determines whether or not the tick labels are drawn.", + "dflt": true, + "editType": "colorbars", + "valType": "boolean" + }, + "showtickprefix": { + "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.", + "dflt": "all", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "showticksuffix": { + "description": "Same as `showtickprefix` but for tick suffixes.", + "dflt": "all", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "all", + "first", + "last", + "none" + ] + }, + "thickness": { + "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.", + "dflt": 30, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "thicknessmode": { + "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.", + "dflt": "pixels", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "fraction", + "pixels" + ] + }, + "tick0": { + "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears.", + "editType": "colorbars", + "impliedEdits": { + "tickmode": "linear" + }, + "valType": "any" + }, + "tickangle": { + "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.", + "dflt": "auto", + "editType": "colorbars", + "valType": "angle" + }, + "tickcolor": { + "description": "Sets the tick color.", + "dflt": "#444", + "editType": "colorbars", + "valType": "color" + }, + "tickfont": { + "color": { + "editType": "colorbars", + "valType": "color" + }, + "description": "Sets the color bar's tick label font", + "editType": "colorbars", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "colorbars", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "colorbars", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "colorbars", + "valType": "string" + }, + "size": { + "editType": "colorbars", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "colorbars", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "tickformat": { + "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*", + "dflt": "", + "editType": "colorbars", + "valType": "string" + }, + "tickformatstops": { + "items": { + "tickformatstop": { + "dtickrange": { + "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*", + "editType": "colorbars", + "items": [ + { + "editType": "colorbars", + "valType": "any" + }, + { + "editType": "colorbars", + "valType": "any" + } + ], + "valType": "info_array" + }, + "editType": "colorbars", + "enabled": { + "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.", + "dflt": true, + "editType": "colorbars", + "valType": "boolean" + }, + "name": { + "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.", + "editType": "colorbars", + "valType": "string" + }, + "role": "object", + "templateitemname": { + "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.", + "editType": "colorbars", + "valType": "string" + }, + "value": { + "description": "string - dtickformat for described zoom level, the same as *tickformat*", + "dflt": "", + "editType": "colorbars", + "valType": "string" + } + } + }, + "role": "object" + }, + "ticklabeloverflow": { + "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "allow", + "hide past div", + "hide past domain" + ] + }, + "ticklabelposition": { + "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.", + "dflt": "outside", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "outside", + "inside", + "outside top", + "inside top", + "outside left", + "inside left", + "outside right", + "inside right", + "outside bottom", + "inside bottom" + ] }, - "size": { - "arrayOk": true, - "editType": "none", + "ticklabelstep": { + "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.", + "dflt": 1, + "editType": "colorbars", "min": 1, - "valType": "number" + "valType": "integer" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" + "ticklen": { + "description": "Sets the tick length (in px).", + "dflt": 5, + "editType": "colorbars", + "min": 0, + "valType": "number" }, - "style": { - "arrayOk": true, - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "none", + "tickmode": { + "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).", + "editType": "colorbars", + "impliedEdits": {}, "valType": "enumerated", "values": [ - "normal", - "italic" + "auto", + "linear", + "array" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", + "tickprefix": { + "description": "Sets a tick label prefix.", + "dflt": "", + "editType": "colorbars", "valType": "string" }, - "textcase": { - "arrayOk": true, - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "none", + "ticks": { + "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.", + "dflt": "", + "editType": "colorbars", "valType": "enumerated", "values": [ - "normal", - "word caps", - "upper", - "lower" + "outside", + "inside", + "" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", + "ticksuffix": { + "description": "Sets a tick label suffix.", + "dflt": "", + "editType": "colorbars", "valType": "string" }, - "variant": { - "arrayOk": true, - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "none", - "valType": "enumerated", - "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" - ] + "ticktext": { + "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.", + "editType": "colorbars", + "valType": "data_array" }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", + "ticktextsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", "editType": "none", "valType": "string" }, - "weight": { - "arrayOk": true, - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "none", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" + "tickvals": { + "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", + "editType": "colorbars", + "valType": "data_array" }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", + "tickvalssrc": { + "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", "editType": "none", "valType": "string" - } - }, - "namelength": { - "arrayOk": true, - "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.", - "dflt": 15, - "editType": "none", - "min": -1, - "valType": "integer" - }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, - "role": "object", - "showarrow": { - "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", - "dflt": true, - "editType": "none", - "valType": "boolean" - } - }, - "hovertemplate": { - "arrayOk": true, - "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of \"data: %{x}, %{y}\" will result in a value of \"data: 1, %{y}\" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `x`, `y`, `u`, `v`, `text` and `name`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``.", - "dflt": "", - "editType": "none", - "valType": "string" - }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, - "ids": { - "anim": true, - "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", - "editType": "calc", - "valType": "data_array" - }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, - "legend": { - "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", - "dflt": "legend", - "editType": "style", - "valType": "subplotid" - }, - "legendgroup": { - "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.", - "dflt": "", - "editType": "style", - "valType": "string" - }, - "legendgrouptitle": { - "editType": "style", - "font": { - "color": { - "editType": "style", - "valType": "color" }, - "description": "Sets this legend group's title font.", - "editType": "style", - "family": { - "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", - "editType": "style", - "noBlank": true, - "strict": true, - "valType": "string" + "tickwidth": { + "description": "Sets the tick width (in px).", + "dflt": 1, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "title": { + "editType": "colorbars", + "font": { + "color": { + "editType": "colorbars", + "valType": "color" + }, + "description": "Sets this color bar's title font.", + "editType": "colorbars", + "family": { + "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.", + "editType": "colorbars", + "noBlank": true, + "strict": true, + "valType": "string" + }, + "lineposition": { + "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", + "dflt": "none", + "editType": "colorbars", + "extras": [ + "none" + ], + "flags": [ + "under", + "over", + "through" + ], + "valType": "flaglist" + }, + "role": "object", + "shadow": { + "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", + "dflt": "none", + "editType": "colorbars", + "valType": "string" + }, + "size": { + "editType": "colorbars", + "min": 1, + "valType": "number" + }, + "style": { + "description": "Sets whether a font should be styled with a normal or italic face from its family.", + "dflt": "normal", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "italic" + ] + }, + "textcase": { + "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", + "dflt": "normal", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "word caps", + "upper", + "lower" + ] + }, + "variant": { + "description": "Sets the variant of the font.", + "dflt": "normal", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "normal", + "small-caps", + "all-small-caps", + "all-petite-caps", + "petite-caps", + "unicase" + ] + }, + "weight": { + "description": "Sets the weight (or boldness) of the font.", + "dflt": "normal", + "editType": "colorbars", + "extras": [ + "normal", + "bold" + ], + "max": 1000, + "min": 1, + "valType": "integer" + } + }, + "role": "object", + "side": { + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "right", + "top", + "bottom" + ] + }, + "text": { + "description": "Sets the title of the color bar.", + "editType": "colorbars", + "valType": "string" + } }, - "lineposition": { - "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", - "dflt": "none", - "editType": "style", - "extras": [ - "none" - ], - "flags": [ - "under", - "over", - "through" - ], - "valType": "flaglist" + "x": { + "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.", + "editType": "colorbars", + "valType": "number" }, - "role": "object", - "shadow": { - "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow for additional options.", - "dflt": "none", - "editType": "style", - "valType": "string" + "xanchor": { + "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.", + "editType": "colorbars", + "valType": "enumerated", + "values": [ + "left", + "center", + "right" + ] }, - "size": { - "editType": "style", - "min": 1, + "xpad": { + "description": "Sets the amount of padding (in px) along the x direction.", + "dflt": 10, + "editType": "colorbars", + "min": 0, "valType": "number" }, - "style": { - "description": "Sets whether a font should be styled with a normal or italic face from its family.", - "dflt": "normal", - "editType": "style", + "xref": { + "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.", + "dflt": "paper", + "editType": "colorbars", "valType": "enumerated", "values": [ - "normal", - "italic" + "container", + "paper" ] }, - "textcase": { - "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", - "dflt": "normal", - "editType": "style", + "y": { + "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.", + "editType": "colorbars", + "valType": "number" + }, + "yanchor": { + "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.", + "editType": "colorbars", "valType": "enumerated", "values": [ - "normal", - "word caps", - "upper", - "lower" + "top", + "middle", + "bottom" ] }, - "variant": { - "description": "Sets the variant of the font.", - "dflt": "normal", - "editType": "style", + "ypad": { + "description": "Sets the amount of padding (in px) along the y direction.", + "dflt": 10, + "editType": "colorbars", + "min": 0, + "valType": "number" + }, + "yref": { + "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.", + "dflt": "paper", + "editType": "colorbars", "valType": "enumerated", "values": [ - "normal", - "small-caps", - "all-small-caps", - "all-petite-caps", - "petite-caps", - "unicase" + "container", + "paper" ] - }, - "weight": { - "description": "Sets the weight (or boldness) of the font.", - "dflt": "normal", - "editType": "style", - "extras": [ - "normal", - "bold" - ], - "max": 1000, - "min": 1, - "valType": "integer" } }, - "role": "object", - "text": { - "description": "Sets the title of the legend group.", - "dflt": "", - "editType": "style", - "valType": "string" - } - }, - "legendrank": { - "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.", - "dflt": 1000, - "editType": "style", - "valType": "number" - }, - "legendwidth": { - "description": "Sets the width (in px or fraction) of the legend for this trace.", - "editType": "style", - "min": 0, - "valType": "number" - }, - "line": { - "color": { - "description": "Sets the color of the arrow lines.", - "dflt": "#000", - "editType": "style", - "valType": "color" + "colorscale": { + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "dflt": null, + "editType": "calc", + "impliedEdits": { + "autocolorscale": false + }, + "valType": "colorscale" }, - "dash": { - "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", - "dflt": "solid", - "editType": "style", - "valType": "string", - "values": [ - "solid", - "dot", - "dash", - "longdash", - "dashdot", - "longdashdot" - ] + "colorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `color`.", + "editType": "none", + "valType": "string" }, - "editType": "style", - "role": "object", - "shape": { - "description": "Determines the line shape.", - "dflt": "linear", + "editType": "calc", + "reversescale": { + "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", + "dflt": false, "editType": "plot", - "valType": "enumerated", - "values": [ - "linear", - "spline", - "hv", - "vh", - "hvh", - "vhv" - ] + "valType": "boolean" }, - "simplify": { - "description": "Simplifies lines by removing nearly-overlapping points.", + "role": "object", + "showscale": { + "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.", "dflt": true, - "editType": "plot", + "editType": "calc", "valType": "boolean" - }, - "smoothing": { - "description": "Has an effect only if `shape` is set to *spline*. Sets the amount of smoothing.", - "dflt": 1, - "editType": "plot", - "max": 1.3, - "min": 0, - "valType": "number" - }, - "width": { - "description": "Sets the width (in px) of the arrow lines.", - "dflt": 1, - "editType": "style", - "min": 0, - "valType": "number" } }, "meta": { @@ -58806,12 +58822,6 @@ "min": 0, "valType": "number" }, - "reversescale": { - "description": "Reverses the color mapping if true. If true, `cmin` will correspond to the last color in the array and `cmax` will correspond to the first color.", - "dflt": false, - "editType": "plot", - "valType": "boolean" - }, "selected": { "editType": "style", "line": { @@ -58851,12 +58861,6 @@ "editType": "style", "valType": "boolean" }, - "showscale": { - "description": "Determines whether or not a colorbar is displayed for this trace.", - "dflt": true, - "editType": "calc", - "valType": "boolean" - }, "sizemode": { "description": "Determines whether `sizeref` is set as a *scaled* (unitless) scalar (normalized by the max u/v norm in the vector field), as an *absolute* value (in the same units as the vector field), or *raw* to use the raw vector lengths.", "dflt": "scaled", From 7f634ed0c19867b8ecd4f657be00bb15b3ca85ef Mon Sep 17 00:00:00 2001 From: degzhaus Date: Mon, 16 Feb 2026 13:58:00 -0800 Subject: [PATCH 213/241] Fix colorbar crash by ensuring traceOut.marker exists before colorscaleDefaults captures its reference --- src/traces/quiver/defaults.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/traces/quiver/defaults.js b/src/traces/quiver/defaults.js index b0a659ca2b2..1694160d17f 100644 --- a/src/traces/quiver/defaults.js +++ b/src/traces/quiver/defaults.js @@ -68,6 +68,9 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout coerce('vhoverformat'); // Colorscale defaults (adds colorscale, showscale, colorbar, etc.) + // Ensure traceOut.marker exists before colorscaleDefaults, which captures + // a reference to it via npMaybe at the start of its execution. + if(!traceOut.marker) traceOut.marker = {}; coerce('marker.color'); var withColorscale = hasColorscale(traceIn, 'marker') || (traceIn.marker || {}).coloraxis; traceOut._hasColorscale = !!withColorscale; From 37c2a8d55018bb31c20ce4ca5ddbdaeae90af968 Mon Sep 17 00:00:00 2001 From: degzhaus Date: Mon, 9 Mar 2026 09:59:44 -0700 Subject: [PATCH 214/241] Regenerate image baselines --- test/image/baselines/quiver_anchor.png | Bin 25935 -> 37535 bytes test/image/baselines/quiver_arrow-styling.png | Bin 21942 -> 21258 bytes test/image/baselines/quiver_categorical.png | Bin 14650 -> 17320 bytes test/image/baselines/quiver_colorscale.png | Bin 17103 -> 23974 bytes .../baselines/quiver_custom-colorscale.png | Bin 21113 -> 27483 bytes test/image/baselines/quiver_multi-trace.png | Bin 0 -> 30245 bytes test/image/baselines/quiver_simple.png | Bin 14093 -> 16862 bytes test/image/baselines/quiver_sizemode.png | Bin 28936 -> 40498 bytes test/image/baselines/quiver_wind.png | Bin 31990 -> 39094 bytes test/image/baselines/quiver_zero-vectors.png | Bin 14785 -> 18879 bytes test/image/mocks/quiver_categorical.json | 3 +-- 11 files changed, 1 insertion(+), 2 deletions(-) create mode 100644 test/image/baselines/quiver_multi-trace.png diff --git a/test/image/baselines/quiver_anchor.png b/test/image/baselines/quiver_anchor.png index 688e05bc59d4e4e2a947db59296c86df37ae7bd4..3bec0ad57aa62d3298b1d32fe192086df255a077 100644 GIT binary patch literal 37535 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 UtX4XD1n@t#OWI0h*z14&KZJDrY5)KL literal 25935 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 R0xwEo@O1TaS?83{1OSJv?4|$! diff --git a/test/image/baselines/quiver_arrow-styling.png b/test/image/baselines/quiver_arrow-styling.png index 26c92dfce802be0e96450cd95f0f002f6bd54341..f25f952899e553e79ea6e06a9dc4adb41e2ae2cc 100644 GIT binary patch literal 21258 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

    F&`;P^_mb8jb38vzs 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 Zm8i?i<3oO|;7%lk<_*2;rE2${{12gCmKOj3 diff --git a/test/image/baselines/quiver_colorscale.png b/test/image/baselines/quiver_colorscale.png index 38108b8f8f9d9df8d1d372aa63bc82f594742343..150f6f7d8833c564cca4abd121d96eac1e207a46 100644 GIT binary patch literal 23974 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

    krl(07ofo31K|+D!Sxt! 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 L-v0Ex*bDy$7IGOo literal 17103 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 diff --git a/test/image/baselines/quiver_custom-colorscale.png b/test/image/baselines/quiver_custom-colorscale.png index 3d8e2191605e7ab7ae30ea700e511cfe25a09bbf..4250a406e67ad204a73034aaac209c3f717e15a3 100644 GIT binary patch literal 27483 zcmeFac|6qZ_dh;pxU-fl*;`1ArIch(C0mho#x^FUvPYJzLyMB62q9$O24ml1Mo36P z$X;2;nth#_-!|oZn&rRf!7o3q8h(X94nedosu|rw&I~fVKG4;NU*JY~Gl(5I@(h}4_C5JN zl#`QF|LQ)dkMxsj>t}E86RjIrt?TY5AJ6>8De>3w<56!7E^@pa8uJ;du)1?F922hei7g+Py=qhUM?yGoCew{N=m`-iJ| zX$bc0KFZ&&QXUH!p@p=#Tuo2eeIEP<3Az4X?@K|j{0uej5h34SfuG_P;b$Da9a@?0iGD7isGX?dm#Q1DV5{7ik0Y4{G4mW@Q(k`Y zHQN}LEB|y__gb0XV5Pfj{eF#)vON|@Ei2u$?C+M4%UwoBtJj7ipiEp(K4-O>mpX`v zCfrLtZQCK7>!s5iPuiFe;!*W~_inY%UItC_6*DizI25&>DQpz<`6!n0=7@2QiTkRN zpx5aBjrEbRv4ut<&oj5~93d+3D&4yixRmHKSJ6>)ORoaFZ<7)45pJlb+;v+~>fNvN zy)KOcHsA4q=GDXB3a*c}YY44`!JIgbXF(w*T7!2T%B)Zui({@EW6>?|A2E$hri4Xx z=bGz)-^O~Z(453$)egNf6)WB5X{JRtKQy>K2P9q2tDF+gGRg{HAciclLLIAAxF03g zoIB=RiZ?61{W7cwN7`(e&(9Qx=e=PI6*El#C=zXPq{P0*BR2W%#E)efW>KH@ACJc# zaU)+G&^@cxSL!%TXP88uEgNoj@39oMX?}I`O~J1p`m{PYr~7BW3Rx^4H25y-G=Qk| zn6+CTfJEs_(MSKHh2%V($9L3h$PN1z`L6cfa-FYU+Z_J2H0)+GR@fpH0k{@ibAr%( z-nN>MJ=A+EaW>zif;K8|;P_h(Q_o?)GMwFOg88+!qn%+@B^zPNtB77_9PtJ|fQD!I z+3~=%+ZfZL^v;Pr*f--h3MGIIDfDG1@Os3Jcz3U0dA7et^-2=i{EOrGrx+69$vq{h zt(l@Q)lqOj(RFO97P<xVt#$IjkkYwUks^ z$Euh*px4+Ib4ugVvx7g##I<4cd{~^UeH1RXGwA|DyCKYdx_gDJTw%978ll&$A>=14 zU9+ByK@_~VlC=NwR;_uUa!@BqVu2>&o!>$Ox9dt5e5-9_xl?a=d(B(h=KaIHi`z?W z84gu>i8zzq;U78%uW4 zxuKnVi`x^?Br(qc7ma3LZ^p?$2Eku?1q8>=^eZwqKOOX1YLy!U6h}Yhgl$%@Q~+JU zewj$xchy&U>C>sj)qdx#wOnL%C9X|RakiM__+(8x=b6Frj70xF)!eK#)fsHvb|a6x zYwG3L(@jLYMB|S(V&OSAG9%(6&%;D9iQ>G_0AMZJ|pl_CICW~&+TPqm4`RVl! zA*M>9C@IUS2PGO|g07!VHahsv+z&|0b;C_(rwN+(=_D2Ho+tHRD3;MX}ysC5ujb9u|d2UlrUpwLQ zUK6tH275L=-yD(H-V!2*6M^Ea&L1tszM!4Qk!#SQuimF)4Ffjs=Sp9FEa;sX#$TOA zC*eoay+u&E^~UAHxMW9H!BDl&mh|mPnOB;^7p;6(hkTsdBSV2r+3GLzm^JhIRm(s$ zE*8crxK9Z`tsi-=sGDt+^%Hl99^Q*Y6WuE&5`4BhSQRa6XwtC?MpNhXy8|)6- zJK{^~-J33lpoZ1{Ou-E9WEccLX%-;A2(+abUtG z#vR#^57HW=kxOZ98eu|@D$jH}=If^fp;i47D#Os*3mSxB9L}L?wp68_u~Oxv07@+L zv-|`<`J28GVRhR5<$TRn9!|NbtM$;QWd?4`4aLzH7q&+XaLDEIEucKxWH#*js#Q1> z1QY&lO?#shx7?wl0$GOo+jFzSo-8-q0P18*r(^YG`O#&o6PLmSt9i~>y1xDH1*{8^ zo71v2M$S0_r~RTn94VA8on1MVDvj6rIw}70d8hpc#wsy(HxVtpM^oCbt<|Il;4@-( z+`6>&(_pA-@0G=T?#{-KY?#rIOytqDe*G_E=lw1O(296Zr;sGz-#m+Njv>#(c8H5=Z61EI(YT17?<0l)8vv{mE!K;p4sZTF^eOU)W;Ud zmguuzNR@@@{fYJ0^tmgh7cz337(W2Rr9+_fBrOn6L~S z2=!;Ky&^X_YV{z(_gYI!%K>5pAiUHKdJ%p;9EM<2QHSfx`MGo$3lOb{OD)p4^_&BY zakic58|aJ-JcsBe&ifS9M6EwL!@IA|p!Kn&O zMdqaD_%KTP9oAL3r1rfDO*Fl8{ekr2Bg^A?_zpuyttX-rdzmn!_mo+ePcAb+EMMBU zCqKeQ6PHRCuCKFlF0o{pBtxIE9QH^G*Jx z;pJk?eI68NN!j|E1MtlYz2>ow=8|tS&~7W2^3ffgH=%>exr>{vR#rFq%be%g+B>Cy z7uNsth^M7|J9pT9DObIOo1GyAE5)fKw_Isj@AzPnQKIic4>x1=xXuLI(6Rzd+406^ z`(K+sy@)G4ThiYuvs3%?QI}QZs&zGL%Ya#NQi;65h`F!AkaHYGAQ&jS$B=oG-g~@$ zzA+M}T3Y_mGXFq_e^bc7(y*1HnD+8lOdjL0d_UM7;uxILgbZ#y0G0@B*ll2ZCH z5crpAu^Y;M>1{=ap4Dtl<&bP;8iJ6%i4Q}OJ;0aDIUkso2v2Ja6s&3rJKip5cRS@f zqsi;G#12Qj367*>qm#z_zPqhl)r+SOOe5!JfDZkdD7#XSCD#*4lD?7{VHo+ zJr;4+Wor*8axuN<)#Pi%`FBNM?4Mi?OzVM)^(~tnslIIvr{l0|vUgkNJ?y8}VPCu4 zfN+M==tzI);U3zSzG>bcl^l>Jo$0-4AYIclQB_j54D;uBS}Fb#NN&{f`{nxqk^C83 zCUA}Lj6_Cn!OH9mNY#%ZzU|Jera0tq3b*@oqVW4u)%VlFa$%a4@lSmQRfm0-Lc_wo z%UU-shSGDHUX>`ie z;CgOI;#sI)L62u6;mqVzvdXRaqvVj9Ja&Tn^{1EoqTg7HZfH#^=q9DX1UJQgcss_u z*ZPr}0bhwdR?WGrwEXoIxW*fili6WTj}zW^5wpK{btR4R9k!s=Nz6!y>gv+3E;p~5 za<{GAOg`5U(j1YaUpd&Pqn3y7xegze&Ey^y&6n?pJY;FxA-{aYcW|Oo#`GYzIKx_3 zExBii(6IbeARa!^jAk)82FDf`kiI8d`Bc8oZp@myK8W625N-<7+)JyIFZOlfZH`~% zR89uV%2#X+%rNX|K!e;yxCI0iIa=LVx&>Y4tGKU~-_*fmw}M+q=ia1OrPCrK;f@@a z6p*UUn(zk{JwBf=9RT<;Oq=iA)Kk_l(WvX{IjJFg{O5AR1*;pJjGKFhH{a(=zfXrD z6!H_S4J0N*5R30^i9UY)xSG3HtsbtNwq7*Zhg~j8T)vyRtd3BZ0U1%hbIyY8M{{SJvc-^I8fh^}^AIZ;EqVXNXoE}rcM6Q^d8{cw#@a8)=D2$ws z=$J@((P5awcxq6^@$J2C`z*IKUDbqh1%<@b{;hd@=XFhT?g^AweRx$d?YZF5rWCoUOM}d`-`ELxAJ4;w$rAL?a^U`;ENqh#Wfp(Z_XNQib(n!FFC{q z-f;NFu0D0<2K25xR#pb3a%@dYxB&(4NmXWd!d1m@qw^)ui(t-^>T~z{V zx8TNr;F)5@4m^Y+oD{(Clw}W};?M)+Dh<+@1Xa>W$X%oP|KxU2r96V(lZQ>Ky-S$+ z&tmZzH7+BUhIBATPF-{QXX{1`={0rBH zd?;X@&F44r$+-%ia}JzDfZMIW{gK`TksPnf^KbTapK4PYQB54pHAvGYp{IvIq@g%A z%;>`$U}J{kc*aI+|Nhe>gCbX`ZH1$Imj1>tT^>iO=9U;Ornob0;AA`}#wMqyWzd;? zD8s|)SbtC6%*_kh>k>e=7;ds7!u(Hbj7ytJ_INtm;*$2a{%RCLe{2#>lz>~fJmSBD zr-7%DZtLTu$Z{ z)x%@MD{jL8EfHx`UK<$a zln}_6G^=#WI_*4ULC<{f(3RNJ3-jE2qJA#TRn4!$w~AW`8HrL9lu>D8G~&&XXOrcU ztB?26=CraLxUmt-;@YmJ*wSF>DYiNb+sg-3aYn=tC6@PG=%ndQV(Dc&qvi-6IsU2t z;TkO>@fcUj*!A?5cOp4N7Jj!II`Y+bPi=*UqJp@seDyiF857?-snbjYEG#1UfT*?v zR|E(PHg9KJR+Tyc4lPokQt-#P!uu-#eQTj$!~kpxawBv!Fnk4I;}HhId*8mRgw(uNuSBae~A7LfCr5};HcZwz|L9nZWfrWQ;xcj9<}jw(%V!8hX+mlV55XlKihsdH4drFL`p57xNcupToT;+j!okF(oozz!1b_ zy_ydDzO1iL^8jkBG4gY7i4C3Cdg`jvnbe1EwAdNXw>qd+%R)2yusE>;w}>@fb=mOd zhz0IhxV4ETd25)wsd?2Rl?emH!g$Dk%TfOcL985v=K(7KTWSJO?6z^@D9H8LvWGQ} zjYV6nlC=X%+EljIGbC3^eK%YQy+s)V06y-hbhjtZt8C4jqTp&w_1D-Dj5XV3Kk6QD z<>+p}v2L6*FD|gYe88r1Z|MuN+Pi6`$4Yv(uSAEY8>pVmukW=aakIs*DS00VwpXQG z%gCD&Cr^zsm}DeH+#n5;w+M`=N5hXGFkcuqp7E#lgoIWOjguXx3KPCidWI3IF+E!xo33}*x#u5RpJ)Y*7gpC<2xcNwtG+nyKkE-(}n?Q z+>6s$wK6u%4hfg^e31SdV=9%4`6xnjl(oUN*moie4A>c*iq0oyEtDTFX>Pm=Hn{%0 zb?W2YTl1FI2^ua=$MLR)sxypHHMduI7P5S|`WIW-wtqx2M7{2U$dy1$jwx2sMmb&g z9k}eZJ(4KrJm*m&-qHvcc-_?Msj@cNoHtZ$Vo&+G83Hj9b-KE^iPPe}45!9)_^mcAc{xG`CrZy499W zBO$kSL;}0qzNxgFbvb4!nv54&fVNyIxPR*!w528whHACIUfz7ZZWJ|UUhADnPH?@Q z^U04joLDsM8g%i<4=W{=8y{bs4@~M29UB{KlAm}}U2h zsKcY+miZ|`**x#vqBf7B$ISTFly+Fck*{4DqgV9y58bI_A&H&0)au~G053j25`>>Q z=mKxGGN4A&CCgrf?3gp{{d%gz(Xwk$*a3~(QJ-Uk5VxLhpC5`{sd`oK3~7krMpa}9 zaUq)Qp%Fa=lTS@@F3Ao!Tx9)3(V%1|pjpQG%DgQ|#qP-9Q`}MC?4k1&6M|mA1a5PR zR6nthp6Tw&avf`K0)EGl1II4^8g|JTSq5?9Tl0MLK7j4{p$J)O)nOA}B!V3A6Re>J zAb1kqYCa&dH408BnoH7beV*Q;@J28?ufX^{?N+3M%o z(nzZkyU58B6U!=(l|&7Hu3M z;%P$4`f1vn06+^xTbk`dG;zYJ>2(qxAf?lfe>IGLsyU>N_{4D6h%IrCNs*96Q;q38at9V6C!iL2)b@8uOG>}a8?VI zn>~cseE#}V!|dT$=wk@xbTa3iXbNazp}|c4f}5D8TOBJ#9qy%xA}+j^!r~+Sd~RZ4 z5bVsRd^NbmBDjpB$TdrJLTxWDSq4O2Dn1SN#1g;iUh$&)U=mIzu{8pa@j%$t+$WS3 z1l23&cIE;*Voleo4LWCQ0!7#cF%3A{!w?(N4&?P_x(!)fNK304{G&uVo)*qCC~(;c z1WY{j&C6eev7dde7myF9SbTRv@}pwpV3UH6XhN9!TQ>{u+jQr=Z9fKHS*?z#wWJ9c z%S&6i%!o3<6gIw&P>=(aWS+^7QJ%1 zx9Ev03Y$L?HaAQM7%6b#{^8gTv2PyE4)2MFZKIvM<^gY!QU_-(!Xj{nTZaN z?reYR0f}^;sNTNWL;xwlsH4x%p7&m!ymrdw^B_0Mrd>+l4k2>UZi85kAGA({NQB(m zn2RM_KK#!@ximS&KkYV`3CZZEBi(tHitVZ!Yb}-T)7w@hDY(2#=!GSU-xaUuDfPUy zrMYnr!nD|2x6=2C?^P#HsXJxgL?JClkTiI03DY*wQgdM_f@^_9&a36bbUcN%o^&16 zj8X9|FSabKSHaXWTlM5gIx;Z-Lib#|CP%D(vgyMpT`|i3Am*;maXe!I8UWmuWbO-7 z8{GnqJAH_a=TzK*9qe zkpSZbmbK$qjxhGj;K6AByX>piSZ?0SjuExV3v=W|%n_fwVPh6!LcMB{^$ef=Uj-CIBx@w ztKwJy&%$hn-c=Z78L0b{iJlbzuBGJDc}#te^Z49q$ptb#Qvt3zGvK|7bmhSHMur{@ zr;SBQH)qR4f}>0p#}__{p3e)3l8Aml-U=pLd-S`^j+QI)RmGIQYNeR<@;sCuY2>{8 z5+PqlHV@$Xe2?qL9$Fg&mb0GsSX&`j zX3ufp)`~x%X9*Wg^zFc9_%BqI6BJ84__j-p#H=pW1PhH@Hyg-5rnLugf&oYr8EkA@ zDiglJtXeX~mbRy966K3ha%^=5m4FZaYxtURo<)Vh+JL3<4=b+xS1EHuL{$FZab?e8 zT_@Gg#4(<{Qg{2MSCZ!4o7dc+_H|cW2wV2Wc<=OJQLi2+B1h6nL`&^nNK~!vAi(e~ zyv8CaxmnE&-S};vDR)yTr&;*41a$oT5pEBe#2ht$kabd&drP|7eV*lC6&Fu`P0SK zOILS)WpC9ZV&N^hqUZ$Ev+B2T`E}db{977gJg1Ihy9e2$RhGah+znOEx+9C1QPzf- zJh9$P_Up0q+|VI{tgO=$pH#U$sI(qQay0~m-tjcQV`2=NPaNAVjvd!v!c3IWAqf0U z5ZJ|%t+}c;p-4hmA}wa0V#<@le+G9Z;1%Xjoq1?Gt^MVrdg90i#wbENGxq86GtNUw z^1u-;D^H&Qk>b*@?2koy?2J7n_ND~)J7Kyuw0r8Bi~L;K?ZB1yr3prr?5G&Qc1TMx zg1!;l3gv%qwr__Qu-m zNohz0b0PA(R#R6Y)LCY=RzLOx2c&npL@Dd;VX9Qv7tq?<7UOxX4xrNRo~FaNW!p@u z0M<(U!CE5}(aYI_)rw0JJCylDYmf<1OZC&jwtjXvdVxbLsub;i!$$qn+|U-R=KCeF z$BdRzhrA#y%TMSL=?yYx1yQ|?P=GN3jE5qZ8Uc}vm|>wOElDu&Y4zC&UsbuO%jB=x za{fYbAd|)o5%d$(WD0++Ojvov5l6BI2xfO@12!m z$OVTsZ?u@&9z%WQjj;MLdS19iPpMLMcqCOh9=?qsIdx@zKQN7DIX{HAZbsN^O!l>qLFpNiBh>=F}3y4$F;$2-RwYG6rrDC^o^kJ--?f`+5Cvs z79RP$fM>bOsqWI$seKmxv(UWccA%`^BT+|h>L-_uGjBU#OS~Ek8Yc%na2^>Wm<}QJ0)6`lzlDF2pdI2HPPYOJkzYCF3RpJPfXX zco@fUJkgd@;2sv@^6FSPVM3h`Zs#pLoc2j#{kI1rs#&4b#Z2a;l%ni2E`+M&@{Rcm z5UQqE2*(*MP!`IC2p(4I&45u?&6Ki{pR!N65O=xmbr8P44_pEDvpW@3_!~FKt9?#dO^?CqFn%GEiQ^`c3S^=(<01D_#%kLbfv8>&+Nf6y~?`21@ zscvJxg4m|gjqvkAh~dMmM&B%CE$^wD&n_n@nRa7Lk49U#Y9-+-L8VM8C|4~6fKk=P zbN!DXOQ0hC54WV6jI@Y#5CUfxKix!PNTr?bcgC%#$vS*HVOr|IgBSmPN4g6id&V)g z*se=Euly%t#rOM6jL_~EhcBdp5U?Zt3ZLBYNr=e@kYbXvU3tt(NuJrr9f;~MU4E3I z9Vs3j9SzrJ`ljkgaX;3E!dh0Z0E;wWr7Vvkqj!+liuIo%HlWxKBz7*CR=SA+wn5Pa z(;efWCK+)Yn^!fb5Tods2dY_Xtyq=EUK!p1sCyCl^ZwU?oDy59lmmeQ@3`nN+KWo6kd5_mQtz*FV{Bfb;j0Q^Y-NGsuQx z!?*H|qjD{)x^X0JG604z(6b3j06ZUu-Y02VSl@eiAAq_6e!2qhDo?XIhx^v@N-To3 zXCMM(UO^KB$T5{BxQu>$DMP3$cj!3{^pV^fLANHkeVrFkD}JwsR$@Qe_AY>WYTdl` zeH)((jJMCt3G*i;_lNgH7R+hTtvZnyRVto zR899Lss*k*r_C{4#w%o=0?ObEG2z8`a7y^~T%7nEf5pey9r!P8O=9P_f)wa>yyRZb zQH~!t7EXjSnj`uWvKVi6qA}uu;)2#(y2dHII0Uf?^#g_4+GG+@J=%RGK1e{p?VIn@ ztE%%C+D?Ju(ZOOlysMc*OA{n24!`3=+6?db-nn5Tg|p9r#*{r2wOpeCD!;oN>)z@Y zmU>Xo2V&$@{)0Y7{%$&2EwSeM&zYjOC;(@^E|qdsf+5t8iMxVQ2pRoM8VJlN{RjgM z=Ewm~c?fXp?SG28*p?dtQr9CyAJ4F0pDH2f=pcVY0U%bi&7^2!6vaV1pc1O{ARb&W z^QzvilSp7%Z~wakEGOESMv?-;(ax5@-@TveZM5>?RryzYK}jrWeJH|-O!>-xkDXLP zTF&gJn{Mlcz~WPQP-%ve7XV*YL5B5@sKtJJ!X>N!NFOJrVc5&{9s_mL>P-wO|Jo~S zh9a)yifR-yP@%vGRlRCsVOIuBtIka?*U<#(SB#6{h(V4q@Hc$YMF-a))EC|~wy-M& z9)}KYVKj4)`bC$29NTx14I@}ZLp9R-pc|qSS_;mgwr(0;7JaimtEjAqo)TE_BDF|FwqL6$Bw6x4PVIi&p4zF%@_T2 z7Tg48TaQGmJ#DCm0TVSLI*%wuaBw1F*_MXt1@7(PVbM$m0Y)zQQ^ZId^$nt~Oni%)_9 zYW9FKc60VGs$a&tVrbFq2AqO8m4#Fs1NCQPo`kr8?H3C~MP;eGQOfe7QgN%mFR@Ws z934%ka=hTq6ZL=IqPnHdgeesAc5P;*{%|8Yxa9*e1!_{krX*jomx{*&4Op?aICGI1 z^KK3Jalrg)XP5=e(P3xm{)qrxzdKS$3b+l&HsdCmZ2ODuQ^ku?mVOrI=@jF$f8~j0 z$WcEsWf@f|dp2NkI7Pi&KX_38w8z}_Hmz#yv^gD$32%D;qAEDDKg-H7Dre15#{T^g zMWxhTO6B4cQaP0%&JuU_a`m`CU5g(uVlE^zbj!0)_dMCQ1*0P$gEg}cD9e|rP&o$x zM3K~8OkEIwWoK$5mZqo+?%dW6S>{82)>2ppq#;yJsp72^bt)1X zTui+$0xIN(BABMBg{BY$x?yboNucqxdqCu8fN6GQMI~*4>lFKkb88SN>#JoE#m_U# zXfoTQ#B(){ld4H4ZFyRdrhqk_dbTv0Y)1Xls-i#GEa(Gin9E6E#_aunY33JtM2ks& zG;d@}Rqqr2*EXQI1eDBhHi5$Xz*~k&dWR!GHH14MmZi{dwz*+xlv&6fIA5+kh2`75 zN6k=Z$SWa^^S)`a;fX*en7#q*clx-Q3O@SalcqxeM@ds7N=%y3*HD)Pb!NNwB6hVMVII(MLn*onbJg!5h%>pEr7G8tNT(c zL?^7PrSWpKjs2N*Lk|ZNjRZv>=l|JG1gmmIBC6)-G3NsPwl^iwGqYVK!{3lm@6*eLS1_ZQw7UT@u>81;_!QuVwM1eJbj@)b> z5h6=eIhk8JsXECavFAM)5Qi^to|FKIem9-r{fSP<>ZuZq>lG=UigJ7}=_tNg{3I>n zZZu{U{nr=6`y0+8d*PLXjF^6t4`XXcz@=K91PdhP`e@w+#V3AOb>uwif)suKot=iM z=5d(NRm~ldg^fi%u{Rws68Gk!6x=0W`UcU-XYrjGNgSIi!>tLWd#5Q?)cC++wmYqR z?Hema=FHTf-MKkG3x9pP9oY3tT`w;a!1oF!56Iwf0NCftj__KEZQ5U_`fAqBI4Ue( z;lzWm*FJ`zE^e#%I11|0kZoKGyq%rI@3PzX?>#r0C^bT%XG;tXE7reTYA>@v7%|s! zMi%>Bz)joFtyEFS4wN)@7qix*wV%lcseLtK(7x#*@&BytW)BjzKltb{zj7J*Y#A}% z3FrJeALW^iy;m&YL|o{pw^5r11mAup3OC*Zu1w(SQ}B8%RQ%cpYhAYVUf^BwfE?oc z0BGK)Ouu-6e+mB$ii|0l);|f5QaO?mm-2 zn}He5H-eXoPU5vsS?mYjL2!p62<|QD{9GDXv>pQ&JtnTF(PnM|K)jA*jA+j*P%=Uh zrNbeuiK7(v3TF1+=jV+IC}Nib3D(b-V(xkZ&~p9qSuG<^nxNK3c5A&#@}|MP5vO z_)47W#M8ENnVsA;bbkMyD1Yqicb8Lg=v6bRcZw$*M4+uNLR~h-9^MWtsq0LzfJ=dx z3P&uR0STavVq3%Zk?r?P(ywyzDz!ZZ-FvWlq7#iYn0;02pv^Q2l#4Y_=i{Vg?Y@3I zh-Iz$skTutv${hDBuYJXpC{;pYVOK9id(e$h&O(68_G@CcI(HlekMO(GqYZ8PB`C z=*C0bphXvsK7KUbQAJm0Vt^Vf7n8cX3GS|&dS0%6G4})0wr+tENs?&-rJyVSYEJ;}nDES!DT2%>67fV_h-j|r>G;*J%p0zAGV%o%j>?zajbPunmgK!! zx0;TBs$;lhA+NQ5YCU^IX(p+EBAUekod^(;p*1ePZOw}Ja;WacRHU)yR&X8-;8qC zWow(f=m=eftS^lMpa69~u~N7XOfovq{j^j*2Cy1v^TujgY_)(A#2+n z5ZH~J?K*&=w9B}2gJ=H)LBX>@+R1BVl`fU+IJxwf^*b5hYhclTqebvo@QDB219GDh zLrneJn2t!WLH_88e}AFUn7vWTZRdp$77>#T#sJPjZoCXLX9Ioc_NveITlQ+Aq?6_hnr9;adyHJn4e$Xd285kQcv} zc{~UlRr4R7-hF)K1@=Y`I&8KjkX|<1yjmINsHPv_nSW-8qlU$TQ^x|i>8v;gFP|D6h2yqR~I@N=`7V@@AU z-@&J~G2`c`as*9=vk#J8cZexhV9#;i4~Stx@dQ1!K8r8RXZ|CR2f>KciMWii%eh?m z{IlA`+`5DTLXDQqX+bUig|b}+=8F_4aMMzI+zf*^o7y3KK^Bxcm~1>=ILTsrvE{2J zs6{aShu9Lm@`YKg#&;fl@pNeMn0MK>9 zh=ZaPHvd>&veJtEaqjLRJ+x!b@f4)Wmtmn7^+~WD!ICS;uAfR|!k%BHMFb@!9|U!C zFp6UTr>ubyV*leo_}LqgJA4_+K2iV@!~f2g`*?3nc1w_WVQHgB1U)`If8_MP2$nzJ z;ot}GsvS+9ZD#LZm7p9w>|d#@EcuBrtHtyV1GP9sN(Xs> zZh{=wLGh;)DVO;J6^CHQmBoXlrU!QHgcCGaRz-lSstq&>yWqWd1q+U}?oXtr#=z;G zMv($C{qEz5q6Nn?sFF^}61VRtkkBhS#9{L>p%0CxQ};_6dV-+D<{$dDvUDK)+q}@u z+I|QVYsEM38G)o={#7UB^|Y;ruQ>e-deg9#`K&%RftecVu#*Pt@q@)IiXm$SnwVZK z2+RRX7HSkbUx$hTX{wp&KcELj$aIE&_@vQ?9qJPu!e93YQ5W+CF|8TH?%l^pM+*eD zsM;)E$>3@rT8i<1QEZm(e%^nv`Kn6b!RDPy!g=vh@T@N_RhtEp$KjK&Cw62-j8C{! z$BL>EDoTv3M>p>ZZqW+6J;)$aGeYwT5f>jb?lRmrzTRw^265Pj=HKk+%Is43ZL8hm zx57kz%d4iU_^rH0gOy>s*I|n+yS*1bRa#;gG0i)a#8vX59yvs!4+?d@xKw-@pnAR0 zeSEQ@F6{*t){bFRxhU(15$@~WwTC?|!rgPXsV;6+eI)pd?CwR|Y7jgN zQp^8-(eCNa3BPU0jPD~J53sqXxpa~xs8&WET*y8DWZ+kq@Y}{MJ70K;9Q93bkaCp& zu9?zS5f@wfc0aM?qP36UUTT^-9nvFGU@x$%_*>ESeL^%;A75GszpdZ1L(H&b6yk9m zRk`w84HAxZ9@$ZeUbOa%>L7&L{X@wz@A^S&XmB~?F0zeSKK!@4@QS}7d(~IZolBf8 zM7W!hZ9czh4b{1Lvn@fAGMzvI`3~U$X5LgxW#^QOP9Vr@Yl#2Ij$RcntVYorNpYbKD0YDKOowckR9d~?W5&wv9Dwe>HKP6yh2geS1O$eYHroe!g;WsmsaFj`^ z{9G)Uk`lg9Ih_|#ad)CQh=nf|1Us(HVi_Nus%CG#uAKY<$(g*Q9*TnIWS;*)0yo{X z(bwYv#zslWWC0XFncMrrfAMk(eE#v5^Jm&%cZIW1#4ws%t+e>@sLZX;{FK>K{5~@U zr1N{q&`ht)P@$l;$sde|A#+??Ovi(0YnbbvS(QgFnixrnIe9$@&8rW`P4(nU!{B*t z9!g@P&s9nH$Zo=A%Z#ATGv7*@Q`|_?nRafB`x_`)CF7c=S)0OxQSG!aGIqab>bu$MBsWKkW%tvYLI`GvHN-)1gD!OYlV3zchFF_5m*n>yV6p+`}^d+Qu4&E^WWuBBu z%%sntV%nTiI68#ZW4}^bwzKiHMer>8ToS%R?lB?e!O~~NHdOb3kQvyx>dZ^ckCgty z5H88^V^?C=K{N?+{^a6BI}1JN)W#^EQ@I+Yvk)B>O4{nZm1sF?TkpmyK&f#0O2Mc9 z+YgTJ5Z9=`if&?GyMv(n%q9iSN$ zss2}KDkw_d3KZs@|Gs0^yl|SB7JqZdG@y^&ukN+frB}=Lqvz94@X}+Sx!QP~0Gjw` zMh=3}64JJ=x;>mV(MmS8W|#wz6{r`m`tV!;CO7DIz*$^;^eTv~YZ%VPfD82&rQP>G zrIu_en`8(U0D1U- zzhNQWe1^jM`4u~)lh%>egCsgCcN^{WDJ_QsC$XeA08Bjl#*6#fzs2_>s?iq*xpt1g zd^^6LbskUMqv^rDxEOD_`;k3m?25_CRK2U7npYQRqjr~<(XrN;qk4hc4;X2EwHw=! zMcgfI%$6Y4^Fb1|*=5alyiR9=9J`{OCsl@1lJe!0%SZ^J>;a;PfA=_LJz|CJirsgv zv`s3rp)oUtICn{YaGy){VtbYKyOQFl!n0?|ON#bREnsKI)76O9p3G?SACg z>EIPR7AofsnSSIftZ&1%V-RvTwXGXVse7C^(}l(72|En$G8FN!(4j)hK17kQzL+&C zcY__3=5ltaC86_4R8|$x%))=_8OdDB$YFkG*%B*F%vv7x(B6AaQOjs@*9N&K>R|Mk zsE`3cw0(}cxIx}IN@wCNcEuWbsxo-1Ci)^$V}~V!R|B z>dZWhr|K1klJwba);xAZMKw`-raqpkSE!tZ?`x!3tabcU*-@%w>#J%dUl!dZd-I|- zQJE@Fjvfeq@p(rCBf>;H3{FvfSnu=8`gFe?C5De54UQk+plW&!sOtPoB<@%$`09n= z_(D3Wgg2sJ)_)-Gu0BT>9N)Kx%IbT%^TWUGJBeK!VnEpPf8H*fIGt=WB?ScP&*lLL zRxl10yuz?^>iOF~?23*)yFT*20YJ(MdhFAcyU)L`Vpps_NtJ4iaUJW~z#R_eoYk_v z<-kBy&wfC|5qDqgm}BwkqXnnKC1MSx8E+|2#}j<=`RR)o5+&-XFV%5#A4XNVj_) z{q2!E6-84+5k-P=N9j#+duU8}AD_a_$cNsJsibto|I>f@p(9){s=1?PUH(_B>FkQ` zQ^VY*acG^N`E$EepVGDF?xJd7-Pa7XBvhJrd=z)9$Zz;qsyEu4*|A_%pIyrq2N(8m zVWFzWo>I~ELK-`FL;esV*wTPHL?-|fE|@&H`>AMC>u3|Im!NwUZBE7xy93=#jsHW( zuR}X2d6WL`7oaXdW8s(l!a-0#;PktI0QNZc&Zp?58>H|qkgP&bDhM2`6bFdsuORO; zNSc>k29rdOczJn=tebMor&rN;TRQtmhoO};%+6#JR10_`7jM*S&4#RL1^F(&JgT9+ zT^bp_UJd`~Q_eFkdr!+c8cu@kXrSRz1;uP$hy1~YwKgNwmbgL>uG zpizdXpV{+InmSzjc^79)eF8Br#DJ_{RcB^m!o)B|HHBDxjtDN|YNjN!O&J7w4Rq%R zKD7qD`eh1cAs&C&#T(2!LoRV^{0z1RVMh&i2!TBf$j6lJ2pY;}Lr5YqC0N+CE98z&r{^Hn{^-J#lE-BzFwrzQK-*CE=G;?MUE9tWV96c zoLPmN>2!!3Br$e>kqt+D>8DVLOgYJ3m3;&+a~lA}^_xp=s+8{4MKDssQIPoYXqaXw zuWYKPa~Z=1A$sso1dOaM{UAyoG;}TK6&5TXndS--8alg}&lL0ZG%5CnZI=$%9? zO|(UWtTa;4Z@IlSMFVuqZmOdfn?yrMXm}Yz`u1U_Y}x2RySzwbD7-SZ^lNL%S%j;bXf0l0Cty8DXccZ_VtXcPzuW<9*3>eAeoe;{&GANUhB* z|3^vn2ENj(T6kR0SuwJmSUsB<`Av4rv{okjgZiBMc!%^HKutDYP;eSmQlEW(BxR~J z7!hnVO1whB`>`?BB)D)0Ch;$l+DJwCFdAM)v=(4Yq_!K@lLpUbJGO%r^HUvlsdky}|Si3B34Q5j>+;fci=1|3fk|G*0+rM&gb|ja3#Y zm~P>?$3mI#G8PF((jXwP(RQQDb>RCzx9fjJ=vjDP72hBUQ})@3quqJRmh{ZGnJ7@d z36}YRjVmR^_s5MkJ^Z{gLywzi$PWfN_XU&o4uQgZUuQ60>#PBj*JYq1rzm~F|7jtu zAiT~pg>d1UzZQ(SAp>j@5Bzt=6?Ff_#6nRtn9Bm@x)T7*mH#8x^1r_PiQSJTul8w; zS5g=l%;ib{-zg^0#~UNE2?pP7jzeG%S^+9h4qBb%1U7^{{~XiBCc)g~$+)8Xk+tI>IcH%)`4Nm)`D1RF$=^f8n0}WEfUo~OkZdXQKjZc8 zfbn{DiqRRDevjAN9W55Gk@kDW;A5~E|4@aJ?C*JdPcuOEe!`qs7-&KrY{MFFO2)UNZ%asQ|X)@p>1ol2wy435HZh(a_Orf{EC^dnV`WzXFFp#Ut)@%;YI5-`PSrn4HVpY!!12vvduQMGQLO$2n0ix zkrZ?BZDY+38|yWc|Do&r@pJoZx6hY--n-}f^?JO+S4Wfgx|Io1qL^SKu|TvkW}JY~ z@@X@U3EyIX)(m;~8{x5%lPL(dO(sz!3cW3MJwpvU3=DtdfW=w0stp7|y2_ z=Z-@KQUHM70^}$xnh-1t4!}v0()DXMPeE5q2S5oGm}DehGjf^Rb$rYp$4@lmjapS4 zvA*iHK*D-R-JW*Nmo}ZuDCZ56j^YuT-x>kE@68fG&%9R@Q~=Cm&%Vy#!l&7@yxg7f zS=-V4KJ2KxRL8q8!9P>9KNHNc8*qjO!Sk6DzsgdvZ6kM$3F$Bi3!k`QoJ)aDsJQYX zD4yz{>HRd3?)Z3I_@d3Vmw{M&ua7n|I{xxTj~mgPb6t!g`2${Q@v-i(=CPr3($X4KF0XY(g-! z%e7h5U@?d+F5A&8Q2bpgv<-pB{s2l#7d>09n!wqRbUXbVNRed7ni*D$(Xtk4jhfTM z&!T2T>Zx^~NfkHC0iH9JxSS>G=4wv4BES}!)?;7{dx-Fq&`>ugW-fFmk}C4b?)vR; zR7?Rl2T8vF2Bnw1f(|tXnH7^It{TNcxWqLLW)!N^N*;`J>9PF!i&$>#;arSzpV})n z1Ms?Gg|%ZzlNI{FN=B_T*4O`u7iRIxifaU2_auap#kQpZIam=LIa4=wQw~_jin?B^ zj|v`%IqLWv{FZFGO9YR^0@+vFu53Lu|0BCBBY#f>Zi9t@Zoh32T@S2%*XNOkEyhlR z!3a01%j_Ip_KD#rzu_pQvY`yj=4NYv&v%-arrzV&zY|0RPLgPHq=;KP=q8*wwV&LjL9> zVQJx2t5%7eIeqH|6K7${APxUGFB} zA)$Szv-a3VZ5TCuGk$w|m+dievorp62Mv6`Jd>!~A-?v20B&>az3wBWEcfne_s7DS zE=t1*n~$P%?(MjFEuET+n*4f=y+9aSlG@%wuS&l=)<3K>)lV<&$IZ>o!4E1b#j60=}9r4}LD|(?K!S4mvZ-NTmJS6+85Bl)pHNTpOydfx* zf8+SmjX#D4E;}$#{$EY#*YXKi*S&vITlHzr|8E~ys@;atW&g;-3C208o8 zOre@y*|o3lzD!jRxCrbrx!l9m&a?P-7|jG$f(#v!x$X7wlVZ9j1yPZf=1+FJ-E0?9 zl2?Q$Pre;{9z4ct;VrdzQet%%uW}{>2p+t}B3{bU(Iiy|cg|!L65G$}^&I#AUMEE< zac=bd^5o#;(I(DK`K6k$?Rs3AIkT{8vShDi7L>zg_I=-=4@U@Zf_hk{a*Q_zE-#ER zdwpBV&C(#GWzG~*Czyp9X-uX(JLb!nteR@>-=JE>DA|MiL>KX8Gf4hR-|H21l2C5v z!s57{mgeP_X2*7i+-yd+)hrIl^R5OT?)B?1Wzu21NbGdKx zG4!>hMQp}5tuxQAjeJggO0z@aoZsISt!N1yJ&c9d@`Zpg6c|KH`VYq&?P*TX@I(kE z5$gn{>@nnP=7M1Dz9^?oG?MlNVrtZFbynekBuS?1MO85Dq2w$8^q zHiLY^_W9ds4LvyA`_~cs2(n}*EsSKHWsue0>=StkYs-;EICe@};NX2y{H+diy}q=f zl(pjxpD*2&b?J5tL0pQQ1@k~Iu9x%BVqi{6UNqG?-?Mejn9}y-Sk!h-H(|L8&t)QA z50-$XkUECK`4$w^EOw+XU$I1+?e`0b+L%8StJRF9hI0(-+TV-nc@BMyDFp-Xs`O{t zj`Q_H&*$JzurHVfP)IOia{iMCyZ$EiuVk9Ac zC7ri4X0xy@t@+sai<^v8>XHkaI=g0OJR{D9uv7W0Uj%O!#!F1&YeYhByu7wh5y7cY z8TIRkeq+{#Tb#%v7CRYHd|Px%H+l9|qS$i~$cv8HZde4)^tm=Ed?uB8MUA~kEk~ws z25yRCxonCWXJIMJJB9biMD>%|`w>mqGo;X&Cg##i3v8rVkJWmT#NB_fMt|09d3?DSa3Rze7flWcmxrnNzt8J#I2$+D-x$uGBk;of#m`8>mZy`MttUkb zNUjU1)v@l&gHnWsj}!OMSQ{fvKb~gqwUhn=#%K+cFyq!1v+O`)T8w6Y19tC7S@Mkw z9%tqjK*KIBhuY$I^evA?EZ55g4y;bqL_Vi^yUWuq^h)8s-Igw`jLgiqOlNoZI|vI;!W|Eks)Jg0VVYrV*{lvx~a@)W3&)hN)c+&a|qns-z_!(rKBkZl6h#;iE^biYzZ=tdld^bHID>gG#U;!XT4kqJ~Sr zHP8jE#X37{+V`q)KjvF11P?VJg&&nRLmK@MQD(Tl2p*Rdjd!eGyK(!IzH~Ws>?>N6 zg{DE1ft14)-n1I;k>Cfp5Jo)i=^U-YwY;g7i(42?C2e0YEzZ_+GvNxxowkghGH*{D_O4ZYiUFE^k?P6T1-0mQU=0mc<+I-esQnzh>H#K0hWC9kz`o29L1}O znN$}|e1pyniN+tOnrYT5RkA)k5tLbvhTUT|-hY>U9!`^zy`50Vee4#_S)L;x z&2<;9NaBQjZ(}c8x7=UK%7_uR0>XEsX4~Ze7 zD_Xm>JYD}PFhA_Lzg!mNo%LR6zt>->JTBGaUGYojr_xYJAGT4o>Pn;)wV>U<;e=7= zgq&$de40gup|g>2xh(h!`>%Px?#_TS9};rd#-0g2SoMGc&4{L#Jvn}s;^SqHPhbM3 z`q^DY;p)+&4foQ(5VSm zlz?fA#grej%&p@rC!_uLQg!vN*6qMa^3C>5mk^ZR0u`1^i@h&E1iefZjB5PAL$18YCTWXBi?Fqlc{_WzHkil2H z@GdJGXXHe;y>E;Tm(@YC;O~=`fui1<5N7H3py9(s`1)*w^&i%dN=uIGd4Bqs9xq7p zWYqRFX>RYBZpCK@8(|fLqW&7XTw<%(9%evTibdSch{r8AwbJd;AH?k;68Q?p7fg+e zP^Szc>3x2}mL8{!tWdYk#+@+|KzV$&*dlmOj?)mYP^$2vGE;!K#auhypvgRZ`Z1#{ z5Z`2rUZ5e>FcZre5GD8jF1J};n!KnW`@Zuiq8pZVlR^D(>Yd(i7riF(>GFFsmbI@kwxar;;9d_|kaO znQmJeZz4`Li-^(^mcd2R3AF4azO%fFy^&UP#p4OdX4@vl<6;}S0y_6u(y}Z! z(XVF2X4A@?PsW++p)K7iHH=}XmkN4|A5wL1&jWWyb1QVgCSm-$^2hQ?zdx)vMPBf| zmBRylegevRF%BX5mrrpr@Cp{f#~qxWz+9j3o?%Ulj?JtpV^w!q9B10;Am8r9s0wX@(%(4_9PAVtMx$7FT1#D9 zf}O=T20!jlmkB=Dg;EQCUl-d#0#{;r6f^ZKJ)Z7xR#x)<0o z*UBeQEF`71)l@2lo_(P&x)+>SjOPl`{}xv#Hx6omz=Q_WHrHlNKGpt4vfz z`73>5e9oO%xSI~`Smv17$)Ug;gMav_K7!LlZmsG@!9(o^lyW3w^NaOQXJyJ_cZ_E# zoPlx3-6cxx5iQ6C8jg&%m@tg`I8ou{pqXju9&FhmLnz$VZW?FwGQ)DWNEpw;iQhzu zIU!=}ojJAqNl&*Zx)$Y)nKVJFF2-o^SG1?@z>yva6FuSxt%j$LYG=GbFC z8#G5;ceZbWOdn5rt|nYcZjoxrK)r0u7l#VF$uZ3q(iX9oK&Xein_VOKz z!-@TvX%Cd&+F8M*LRy=}RtL%}%j3cC^JOI~F;L`aW%wD37u0vNXO4zl%IViu#}-Fs z*5@KR+SFwCwmN-5rdXyYv@2%06Sj4QF@lz8m)+6~JKMxbr}#|bj(3+{4Usq#?3rRY zmnkYgE^;BxPSc^cfc`}MHH175JUJb$&1ia}-$7qFD8%74!Xjb3A!*l1c`!R|iR86#Yf@}_BzTV-*6J1b&Y zZakW0?4tB)9l11Yhq?jeGFkz;_~FG37`jrtII4TGu=f1D@m=0&($+7=mGbd?CyH}m zszet!?QKRNQE^N8Mpoz-!ZoY(!A_}GqHEEnPI-f}aBF$vHZj+_M?`mUH0J0VBo$V* z$A1Oiw;yD4HcVTbRhe||PPtyqOHMoeRQT}IWJ>{};A%b(ho1G?ce(_o>E~FZuXr#d zHaMfJO*xI77qT<2zlZfv%Y&G&!spi%gSS4u`h`cDG{hiVt6S#!jpKTjTK>~(v!1|7(`7!j4GJk5&^Lz&S%9_itoVw-VK>A@8C&<5`+EvWQkU2i*OMgm_(@ETz_#vB=Em zY!vw*;rZ#>tkV>aBAh$60MBfNO=PF?nHnjwj*1^#JeKzSOOePv2&OEqT$B|dAzry` z)}84_5tlCSeojn#b)I8^=J~zeuQ!-u*)42!`^_##dHdGIF158$*~U_DJye+%G#&|%UZj19GgHaGNZetd-RPT$yl!9 zdwU-4mS1?XbM~Q6GqO^&V5cmtYpY-ZpBnGO)$sfJ6SG&Vdv{^50z&!ayPLST1XzYe z9!FR%8683Pu4043cg3KJf_@jT!76ecxNkv53(z}qp(u)Jhf-4&yQt{u1B$qVRDVYb2|e( zw`BI3xH^fzi5zrEhjrx|MV{`ixw~5dnM04cuIrHJq2!S+SHv1{ZGQIDfn!5el%-NPwdbOL-dic_!>yQw&hLLxR4?9w z6&QUq7B2QD+x5a7Fjl#J<(^xA@>xfcS4DQ&Pxq?*yua{!68MDvD<&bbeGPGXq>+iG zc$Kb|3#`#y7~Vp0NkuSN9p)8)Zz;f*qRrF27CUmS@)%RWtno`*6wUI<2DSg#eP>^k zMa}}yP1c#~b>d7B2<1p>f0k*g%L*kFuV7TT2NE=Wh2DXVW8yiJ2NB`YKlicm&U56N z+^PWHbTXmmjrWk}=Y+j^%=v>(AA4F~o-9C8@tII@&p&={sSjWaMlAM)OySsr(P}Q} zb@YDKHv@dBdJ%Y9+2!s+2WEppTv=K`|FJzS<_drL5?t7T&Fk6b`Yc|ymJEmu8w$xJ zN##=^p*{U#sS9bmErXfjQJ6CqT#)Oq_a8g@kM#+<7)cc<+%*lA6vm-YvEkgs-L)~Y zTEsOQw!*=gdqx^Idc3mG6b(h2rP;cy383iB5Af4_iZjYRN$s+B#MSZH`nd36dhAUD(lzrkgW zTx}&&Ea@~IF{qnXtW+rVe$8}@kP7v*LLff#*ui~!!1UQx2Nr`d2a(W1^l-?vx+n<^ zxAs3|bVJ_&9A4-0<;f*3XRhd&LExv|$ycP_)9>+D+yUQinZ&#G_^DIy1w(-(GrZQyNbXW;FE(mwAVZ zdxm@77v5V~{XDZR*BE)_==-drLhP*3Kt#z z2|LlQ%52_dB@JASBUP0_8b?I)zuUk(ZhqA9T#%8EET34uS3RKF^4x(lHzAm0*3IC& zr*`HS%j$Ktg?mpV6PNiBA4C4Yw0}!o4DE=|iyV@}it@I7tE{lR8`_Mo>SntIe91l! zJfBQ*pGSn#ObukT+S|W(zjnBomJoY+R42S=5a#5xs+ z(TDQ5MZYnBcC;k{nw#<3?cIY%AeIM#X7H7pi*2l$^iEy)OhpWb;}|kko}Z%6?_bCQ z6VaAd5oHSR%|qz z6toU!U-|FnUk-}rS`-bEe%!ZdGXX*pGYm0{2*hbDw4Tm zT|Q+dDSk0jp|D+hn-u{}+-ERxLGW2Qe`~gch_h~3$0omt^~=(I7wPlEiG1`PyXTm- zW7WY_dX3;UugXsB z@9Q29D~x-L1~U^!u^M(NRKvK#dYS{oo&r;$+#G@zvvG@k;0|K8mv84=L~3JPycR@M zuOaoxA+@j!EjOK~)%cphcWkQwIbdp@$ONza;Ld|-L10GjiLG8ONDOkSr#PjC-d^9k zF2Bb3P@W9bz6TFc1W$k1Cn)KiI9i{51lW(J`xd6+=iq5Rq*;x;jzaqZGq}391b3+3 zeXXPvw%hy+Sf}DezUVi`rA`+rfnD>eYuF>Cgo&-3R%9DjTQSyj4WUi>9b z+XC*uZD`b3=q|d#leB+ID8@aKj2tOah-sZcIMcE0f*eB2GUE8)zNQ$9m@PXn(qoA+ z{UC~gAeXs;*j4?WCBL`fSI7#bp2PezEAu9-wv^l-O5M2B@)SETG-Az0dMaWrH`2N) z`pbvB(ofpgZC!9P0vKs{^HUJ$iP?Uv-3z}k%21q@QKR#<^NeOy&N1K zlDWcs>!no7*i4G=g|bMAX`I&b6+KRe40bHGk5Ty^Ut^nV1P7iJHt_qP=YH=zl>>~* zdglEg`71_+URtBD1*25ubLH+`QO@EZR4*NgegfezN}1RBH)10B*ShGvh1cFN{BjQe zGESTO$RUJ-^Z)KvPmb-=N)X-Q9bJyK#d@BBs}Ic9zRL6`@$i=wLurSx&STj7B_q;U zpAlorE8jo%d<#$KF7j1Pe|_uUbzEz+jmSCFL}!k@`HLGBNj1g-UD3o9k2!ij7NZb* zbk}$E)})BX9AF@7uPVvu&hO9~$!{36Cg^8IL~knMNexKnmvz;s$GMq3hyq9Ey70w< zYwvEYBNjSnX??x5WpntAoo`p1G0DK%xwMsU18jpMH^%Hzwq#reX!Hhk_|xN33&rPw zm)~8z(+PwQ?L>aHdHj}t^QA_%;z0n?zth5~z<**C1T3+a-ruR4(@$*Chi5Y3e2oFX z4g7a!>8BeATK(zY{`S9qyOqB|zzQz=2b%hgZGIrc|KpGiZ~!jN&)l5qW6Qq})vq98 zo1$?Rt-~||sEHD}VR3Rgo`WCmdviB`IS?>uFLT)CfoU3~T)>XPG6lF$>tA4Kr-yOtilNR#0Am>&K_M4QV~!shyh26v}M0wnNNAnD(s`9w|dA`M*tf~@|; zi>{(!E0EMTfu8_gZudVL`R`CV0fOO{95sJXLY+vVU_K6xrH6rj^7hn$7aiU_ILziHJVUsV`S0|7OW5MTwDU2WS%Z+*#cs7(d*0LKX+RRVY$6YEsCl1Kl^k?iKYzQkMRdYFkh`h40=5_=je ztM!p(@~s1S$!4R1)c>$p6YKIbO_E)tO6Z+L4T`5zhG9$zsnpeuPAn)0nVZzO{6UBg z?(GQzfTwWNdRjC6%b@<1!Z@-6Sj7FJe{T_g(+9uFp5GkSeA1lrac^aHFhKBlfc{NqGjzH6j7UB` zVlImNEdqv#htUz#9%qw?!F|%lf&2WWVFs}r63r}Bgq6dZ!#h^E1^+&O%PQ_0hmOf7 z7MUQtH_pF+kNJO4FfLGoNgjU$l4^e2r{fWn0b=MvRR|O5$*hqMq`ha8InhkKCB9+(`80>NPN}7Gf>G*} z9H1}A-sMARhzlB_x@bE!8iHx^YZ0)P4s}XL#u1jh{5vPQ<|JJMFg8U^h-UhF&(B}E zf%{Dq)JBx}@)D}TmM2}F7z{3ElQ-!NxRPxTr$h6?Am_R-(rzB3_IYs1 zwBX`=E{5>p4a97HIcUT(qvEJe&vn1gE1Zc1y>=MIAN|HQ3=LLe{o9vgc426KwIy35 zCD){??9;Z}HF|&s|B(5O>`_Dl@*o6(%Pw6}@Bt8*RRf_v%45zsum@N>A|--PbZ%4` z%ndgN%W=O;3i@p0*`M?Td=|uaC|x!%#EKr+5f>~5UFWi}Ns#z$onFNPQ@4?JoG(vI z*>(0MUgkf5f=p-pXl~)=6>4N+jU<}Cqjzi9(G?!TB)%0N7E%R*2l+q}3*h2K zX3gTnuwGAnfyQ9RO#y2KYcp=-54_u1rsoW+)3-110#S$k#elGB4nvlkul0c(XnJUY z2c)@7*Mm3TKguA6Vl?+)q%W}twzQCn^%mBn*UBC)teuwXqD+NdHR@e5;>@JVZ?=(m zBcu``>-OPU5Rzg=NT~OYZITHrdj(Z5j)ro^;4c%)3&5zvEJz+Vdf6LJf?!Xd@G{ zAW*e5-57Mz6CSVBIh%DFZe?hT4}Hs>@{K5spm-f7o)^rLP`2&?%5EW*F~J4olvp-~7a9#`=Q?m;reYiYa*M&R@(MGD{qu7LcN_xnnu?5{;OrR!0X)L>o?RsQ7) zaoX+v{Xt`%4;)+HSV^9PI{>8X4}_()0HnXWy}lHKYtlB0s0Ov@Gcrxtl`Fx0AoQR*2GcSb;+Mi#l5jxF8}sg?mk4VA zqzV#OB!fjjL_)eDxE^XHBJ?Fyv*lx)JkrJiC1EBaq||Bmg9?Yg4s10w>z$A~cm4By z&5w6%gjy=fT+abnMf;jVxsEFmm6f!bl`Jig*HW=&bbctVVujQQ1_?_8KHIeX^F{t7 z65f^g{IFQ3j{Y6`2kVEMAB_INRh&-n3cdsZ2{xWT!wze#Py!y`25L2~w!U~0zAiik zFfpI12RQ$sYfzCj)Ej-`#Q3nqybNeUoYQxOGK%XN(~W8^8;i|Tj(oZ!D(~e`=~uk% zu*;S7BVWwLCQ@F3bpbb|_^;eh`LqOO$6)b@@=v;9a3Sd*@&{n$fy+B`{691tzgfrsJFMex{mXCa`~M5Il7(2LI%igp z{k6WaREs{F6T2da`K9YvS7nC`UrD6|q3C8vz@#TSJ-l+3)}i=SaoeGPlI>k9q8Y>9 z>01uVF)eme`yr8*KrcI;e9{ofYQJXCLO#PJio=JO$dNtSB=?)tZs}R zp|}PgF~#tVp=rFR-@_gftIF&fA$Z%tu&QL74C74XHC9`6%BlWtmdw@SNTQC@ellZQl6=(DX;;Ry_~x3O_d1 zl%k0%!G8yczU5xRn4O%ZuOke8*fG3&w0b#m|NNLm9(it>*34wI`La(}IT{@`#>9XFb{{v#m9G(IBzCrfjCw$_sROz0amm-{HvA>=A<Dk_d)Rc9lBT3;mp&<87bI+YwHHqu z`qn3tChC#%b@zAM)B@&045xd8JI?1R3d+W#92Yg|n58iAkDqe2?p1q{vV-vZ0vew{ zlGEIZw|QUj`IEF=UyvZVxByY|X%EO{I{-3J9Xn=CzC9N1Jk#xf1RmeOJb9oY@aFE(cfW9OTmccOr;!FcMzq8f07E(WHj@ z`hSSDdk?5gvhde`#zfkMo+JOED1e0dlAM!CE19pdb&wVJ7)A(Rr}t?S_}oOk-I)42 zjptSU>tGYg{fFD~8*Kju+rPo~e+k(Be^iqFn?v|J4&hDsx*tk|L;s;PxPXG|%zQZv z(hpvDB^W-~dI^bN$ilJOO-Os+E%|@k=Gp@aZeVS-{~{&$2S4z?k%(na)VSXp1L-B$ zr-xn1pje9CVa8wK{|iP>u@j=^`f80U4G-t#;A?*6I6+ougJ?DU)h&C@HpHHyWl@(l zLdJIhB|!=b{H9j6KmmGlttj^R%{5kiH{dsaraJ9d$%AM&VAgN9C(TgfEO_5jt|}zP`U}m#pgG`SHOvlA_3r<*j6UpZlgy57mhj&re?Z)dQ%!ps@^; zd{K?CRN~-Ia%QtBND9#onHDB$JvZ5hptWa`{vOt&M3Mufy~FG`XuJFzjgsMu&d4tD zcb#gAI`sTf&*o>xh_4Ky8D9A1*&+%^%%vn$*&`$Nbh+dDY7BL+IW*{c^&ai8x#c(6 zOES~rvKXAMiT?S^l&(usYL1@Cj=^qhDJfW}x57vsavlgZO4ao6^unr=jHyJg>Wu~a zWj{*$8 z2bI%5=lNblGk+luc&uUNMMsRQDeW5+Fw(_&GBYEu>tzG%{r%3G4<725cCwO`7rYUB zT`qk7Yu0?{TwdQ#=h{jL^wY}bR_p;-;Md#4Jewj0%t0vxPNQEA|8`Tp2P7xCELJ{E zUuK~t(oZ-?$mUKZCxhIh4h?GPOp5s}s&~DtIzcFTq+E&Gypqy{?e#IC_f-Y3d)s#( z4o+)-no6#qawh{w-O^plonfT>loA|>QFTg#9^RD;zRFHLA1;t57GNoHQpU+jLWbda z>&6W5!jEu?XsS4>>Mt%hDlvUD8evmsUv|~P9}+<-aRzmQxcRKe-D!GDUqye^Rq!z0 zljsGyIqhi2rbh5yi)sYTTxg`y)!jf{8e1m6{ak+t(!bLj=Ja8|1Mr6`K8M?#<@%i0 z@t&2*GDCz;`lcTa6TB7cm@q=zns?|)HK<8Jvbo;7;*6)}ot#O7ph`||Ja$Eb58s1b zmUubV-x9Ix%STVwUQkR2;nNbrMs*hX5VBue=9tgxK9B+B9JtP>!h%pUPId~b#7_oj z19C8pL>m{;=&4yLT(nYh2#4O>r?r=~iZ8EuWB0Db5w(c77@vCHUu3`Gp;+nrY+$2IIsWnCo%e}kN2xINA z8&n+#a7bjLvhibymygS9kS<5>FF8Hnl4W_lve`IUaa<`eU?qB4LO(rwT-GZQgjWso zV;hnmPjqb4><@Hu!)qyD?z-nt(!Ze#jb|BPD|&sRQJ{`XNbgvB1fB`D{v@(Bw0J)# zp>YBU#s``zOnrVABAC@-ulVfRyWp9{;yv=?H$`=?LWW+zhKC>dQ~^|55|M5rRp+aK z5x&ST5_T+S8F4bq-qze!wxBf~P=NicTf_xAmA5?SUngNBK7EvU_l$Ijt-KsBCGf#e zeOwFvjWt1?UZIzEsB=~x!f2MFEDmn3osNTlhje~}v|kkH6S^63l)KnXXjZ+{hCYuv zW5P`BFJ-Ok2UUMsmgnpB$Q!j74`YJp1r;R`m(98pk`|OzmuyrH$HFs}x}+^>jb~;J zUN73NNvkKm>U?R9>!F35^zZeqSE<$jj5P>JF6vZ2>RQBEnMSaHruqx<9^TT>sF)S+ z%2nnIEk>m5jT~7kS#&b7yB!p}ayODiB>?p0lX%=nKCCPxMHg|qFe1b6^E{~4VK>q- z8Eks~8jY^Z;zBE}O_Mc-<+EBnlEcl?HHL|xW?P-`@n2=ye%D(2T~ZDh?BA91c3l5& eD-gIOe@7k``uNos2T)RS)foe`Q-vqsH~tq;VUvvj diff --git a/test/image/baselines/quiver_multi-trace.png b/test/image/baselines/quiver_multi-trace.png new file mode 100644 index 0000000000000000000000000000000000000000..a94291799eb054d9a9dc1cf37217d9066243545a GIT binary patch literal 30245 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 YJ5jf2z&#O^f8Anq*7Qu~pH~9^0}I4#kN^Mx literal 0 HcmV?d00001 diff --git a/test/image/baselines/quiver_simple.png b/test/image/baselines/quiver_simple.png index af35ecc0b8f0fc8ebc9a852249e54b91f0308040..e36b0d54388d8a14102ab410b060762d42fbe3a5 100644 GIT binary patch literal 16862 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 literal 14093 zcmeHudoi&AB-Bw$rPQ0l*`~mxed9+ zV3OR+49cAe;lmh`4>M*k&u8j<&pFR|zU#N1_50&lzu&X6mbGlN_h)}>d%xfB*Ja;5 zVP(2u{kHW&LP8skA3J(VNN5cx_!e6S{id~x5iKO7By{{J=1hLU-@_VUYX!MvcpH#{}gdl;gIH*12+&~e+4eAJM(7qQIUGWaJth;;d9C(64#T1 zut|W5rpNKDk)7{TfX6YG2b)IMKfmtvo5{3Eumwx~ed(I97&yhWDwyBfY-5o!p*l%!>qfB~^@KMLIv5|ajn zcD)paDG5Q{Z<2hazKs!r2`e3@uYJ(8{(HYQgf^6*1N1zxn?e|=!#mXe=qIMfhMp<- zOi4%>h7!7)_eVcylC?i3`LSF-cGtIK_v4&=TZaEbSUKz#QG;a|hJfv+tjX-OvK1cN z!PWJdWt!n&r9U&^QP&~Qu5)0fcYoPjcy3P4%V*|^>qu#vzsH_U!buyrGlLXXvuaui z5n0ot7chM#*OpwC?@->Ctm_+dgA%%QgUO&$?{7J`HHW5>gOkD(>zQO`lI&qg>(IKKB>_=&zoO)4gTh z{aVDKtl7TOT+3vg_H~lmx3r*MD}Em$w1(j0HcRE#IEJq*%&CFU>mi=`&kj}3v1yrz zLx&D&VTTMHid^asP#KD^QMKP=tF^Q?~Au}x*D-=L(B1Df{27y(*tEK zj}On270JsawSre~#@kXnQ6YDe>R>BYxjuciVBs5a%<6;F4VBi}REV%ycg-*%ezeHpHcTa4o_h~uW#+xy?NL3$Mh z^Q)9=8j@$(rN`@X?fp@y$&zabsgi-EFOoLkjEo`%{W>k@vIk<9LGG=!qF%i(UA24$ zbkx+;il?SL;7|e@E+3HBIKL%4sNi(Al}F9IAreD_+nq!W=R}2LX+9kD&@5kGKzUj$ zjpg_}!=6z0HoPRk7RpSGJ0J9t$c~h*nHrvtXJ?kBrb#=MIYMHgtt?FaCyUyu)vW7*>^h=7LR7`jxAGLSNg7>0nzN~la zP}WvSVLF&@8$RW||Dv{9?o;(I41Vhgo)!7V;Im(FHwdXG=Yk6?>GQCJ(kNL!$5Hdt zmEytqfd)5;^V(BS7vp@X&nRb1tgYypdktx&;<(h;FBh*73OttyA$ZSloO@ug$elC( zMf?Lx`jzIc;Aa>rb7cPfQ__U^K2IrC;7J1$Zdj`66Egldid?Z^pr)>i@h!TS`h?_u zCN$Mk7Bsl!${L0_c5*sPXZt>XL^^=cp(_beBPvf;m)u9&Ue5Duu4p8*pZ@+Qc@t7q z3-eIPB+qSB)(iWPPxbk7VYI4A9$?8|&b$~Ozzm-p#8Ot>n*l@zb6F^b(FRw?Q_ycOnnZYVud)-Nmy=Ez8ITn8JBc=_cgg2ujB60=pm zWDQ2j#5IE`4IZ7Fa!w{O^*?Wh1``Tq>6g|LW-xX^>oD>OjcR^j!Bt138qyng{HO6d zfm$8#+-*|G3At1ZJ#tJ2>IXw@iBcp=`$@ID(G;sJG$0fpV@aZ;^h+{-KF^fCFeU?D z*pAzGgpS%HK~nXx#~Lzl!1Z zOQPhI0mVm=?$Ul2gJF)&ikKfS_rG}MP@*l=rT5tBc2h*DBPGCYqAkUH>cfkGhOO?O zzgVn9Jr}87WZ{^B9xn_z!agT-J-tIqp%b$Alg$G1nICzYL1jQ00*bu@{oFvO8_=oQ z-cw*#+)%@=p0#7o4CZHLHH^Q1>Q3d9ohZl8@Rm#q->N^7QIf z?_)N><7=(yXrAsC5hxbu=9|-QADC3`jc4SXCdNpTdGG*|+5_^wYQF?XDD8dLA-wz%3l3gWVOYAmq%ThL! z;eAtV5Zt0LcO%V**=ZfkXJZiiuA`;Fv#YzBnmVCam%+d>)t_p*$DlyE(VS*x+7)Fe zv&FjiWUugxOR)?mxAzJNt)AbgLE)=kvTgld_9Ibs+|-S$*rtr?5XLffWI=nSoWEzZ z@Q~=>mo}fLORAhXMIG`{u@!23OF$mM=bBK~vtgB*=HhuOG0wsu#W#kqtVJ*1+d zc1cBpD=I4XkSoZvcD?GrvoF_B zuYWWD3xv8RlytfE*P0)y%pre8ug=B#2ASwco#ZOwKvZY3JlS&{nrnEqlTD*`<{D_q z@C|O~iLA_1Ot13?Cu(BxpC{B(sl(fAq7>VZwn>cJq={=1`v2c%(=@z0s>SLadRQ^iz!Py(ziTjYjD%?3$+dJ|R<5x0FB?vATtt(31#hj-8E#Td z|9Qb^BRIOJrzVWD0+^y-YI*k^47t3ivglG{md5_cwa-ORR~4hXRe|WPCuvDg7zcZ9 z{uz}O^z<;@fyd|z3OKLBe-F4-M$k#PaAtR<7{+=Nd9_}UH=NR$`n#YUg3?m@Gr(3I z=}v4^`w_5zq`Dt@_Z`e|GG)LJMB?X*~d_$7aljiO3` zTR;_Qc95dIx*7~-{*gx2&gK>R3|96+57>3I9DLC27?|?@@qs!V2()*Yf2n#Tp2uNP z8&o-D#)?Uc>cvoV@uO+Ce#Jwtk@YO`LC_F{9QR#sb3yIG(3Anw7NX%%?aNKl@IxMt z6m+hU&JD_aK5y$3{A}<>t9n;pb*u-Dk%P%;h<0XcYf9y*$Y*a@VC zem(vjShcj6J=G5^`1oItRrA|wBf9^gZtYMH_kl%=Vi6A?6wS=site~KQ&kn%x;bs4 z4~DY7U>5>Gt3#`PEQ(g}LhE}uPVcMY>1F)pe+Psr8~Cg8;f3Ki*N|e7hEPh>N}a3w zltz4e+&_>Fa~q=UN(zfpnBFUlYB8IRgtxW-yLk`Rc)LfWR0pN_Ptn@~v}cHkSGW@s zSe?cirv?VI;Bo>ToqFS;K^^Dfylbh0OtoE1J!%Vg@R0JydeodX!_h)TKzL1P#5*G!Xe zFLka5H`B8nVMnatT=K+OiC3l;AGETdcak&?#*rkNxrEHKZT4_};tyQ)16TboMWni? zhKeply-(6?tl_WB_NyeGe<&!fO`y6^u=kNg{_V!x*2{hoe@jQ1uygwIP^=d{wW`8-vAlp$Jo-c{fT=SwEp0=kFIhn3rrAE2Q2Zn!zj z`sdPlu1yc!X-uocHgS{Hne98pEA1A>rSfpTDX7!D0`H*g)xyV59B6Tz`v?p&Ce6Ga zzn+j9l`g6n^xDdB=`tZzRFf8Ef^lAWlfaRmS#U7a@c@IvDE;)IF|FTo2Dm9tQpz=o zw}5@+Oz*#tT9(zY++9Ot!N- zix(0?K#fzIz~A3*j;=IpdCEN?qrmrtBZMG!pDuS*I$pl z5&cG52?)Nn3kZH~Hklqvtr~=QKjPXpgagk)7=y)Yno#G6!c+*-E~o26A`Qn1F8sWr zxe){vHZ6#Ah_2E0)>ctF0o{vxr$lAIjIPrMp_XxGhK|$`Ir^T_~6r)J;FCM$-%3+Xlvg&A23|5!o61-c` zst=PSI1S)Wp%pOJj+k7j!*qxH`xhjn!4I2{ZNEt}zhXA~K#-RrpIFc(jDM+SN`qjJ zn&oc5tn8GI8pe7J?w09BP%x=?iX}r`NK?84Z9hv*8Z6mRf;YrqQFZ&y-y*r! z-cSqJ1?1nf-DRx;81Kl~+^7V#64SFcfVPFvF#u+mV)`QQgO{lRqp!4Y591F%(dcLsweQqJ1ix>tv=%j}BX?1F=rP7eGH zLFND7ASky8{HNDzp6>`}T(;iVsQh58d>-cL0;uke|;GoQ^#ic2XS*_cYXBcDCeuDw-EXP zc__}Oh%ShMach{MrC~EoW6Rd8U3WV~HMG_ZqNH{I z-8~;(oMx4DT6s3$|B$Zw%du(xtiF%Ct&*>-6_vb)kX<<{vBb>DEqJNxJAMwrWkyb# zz@XvM=Qt?HFS7bYtKFMgjgdOrwrz{S70L9qSu(nQ@k(S%;AF6mIx z77*Gajcm`%d+YRScsncd7aZ=pPLI*o3Ym+l$v{UrojiH5J?hsC zsTyN!zU|qweFGJ~`DJBYeWjlAe0Fo3DuV63WPsYlsuRbx=jhJVma)7F1vKO0t3Lo! znkibNYDb6=2KkG!F)kT`>&H?yeJm2got$i9?$34VahYEYHY%QYw}f|oda!CQnfc`t zC=R79g+0kPNowcJ=I+5z#+>}^VIS+L0%-ND*QSltKZrNPpHL&e>#P=+_QQ@mnHQ_f z(k?$O>!C$^ECeHxGVL3PkS5|y}f8N|C&u1wA^mbR%xp*MAd zG*2?BpPSOc5Kk>65S&s;@|)ZXIk<22Y6!Lsh*nSKxk2@fz3gw`^a_TRm zqu0aH_^Rr;2DlbPCQ|sTy!&f zNcmIhh;s{BdLeFglrn*EWjyj~eJ_cGNxr=J%&!EziL z^4a#Wvu0`5kSAvbIES$D4Lc;#mVR9v;NUaWgJ$xP)uNSYegqr84(?)WynB3a5~>a# zIRtUA^l-i1l?V)4atMfrxZX?C!%+wU<@z%oe6P*$l6MM9-vHOzcT%_h+V#@ebZb0^ z4T)S_H=w4g;xnTrHnmo&<&c(E1DS4a_HtoOEugu1u7BpKVF)v#C=qB z4h6b!BJXH!x(%V#HKUG!gRaomoWpc`_CRL&Cj<^q)}K3if0jB{I3jO&6p~ywt{pe@ zroh>~6=9TcxjCn?uGtS>{F7;U>sFecRxYx*bqrf9cZiFaNM$@pQ}m&Y8C~~z{tUvP z+rco%02RPvmG^s+tL3O>)WtqeZ>V_CH8{K_5I}F0}*b;66kfV60QGcgTw2I&Q~N4FwG`s39gNJ8+An zD%L&O0UH$eBU}>05w5MRJcyAx=C(0c8r=1q>l8=geYJAghOs7i1aSPsHUSM_!j{L8va&A3j2_gTmj{Gp){5S1N|6@?}{}cELeu?8kyi_IOEaE1q zeA~q-h_QO1_CV(_9m5|*@UOHcsOy`({oEYK8VqEVYBNGL@vYU9OfHjL-io9yKR@?3 zNpLsb!4T)q$al~dZ_d}pbwvcNX#;J56rR-J&+O{uE-+aQaIC>{ z;oos&hyI0Hf{5044e(6B%qFc!fz$m~#%>5(V+UTfC+xG^NbQKJ$zZIB-KyDemh9vW z32@v~SO0QV674mjBEF59mWG_BnNqcuPYyO`StPkYuFh!m*ec}1>{SRHxY!;}9Lhmx z`y|K5$J_b)`!65oWPLMGUQx3xF!13N`@)NU{^qm)-BPI-6Z;xFRMqQ4T?v5FEj!Ph zmO7VaM1KCf(Ascm*Xkz+unPxSXWysjcYAnx=0onKx$xK;(eSGBu}-`qTITzw;kh8$##04kk(&{J7iH9Mdr@DQ~9z)Q(d@##D$O_JHeqxFU z`;dy~PICGQ?GpEZ2^TrT2gKE7s1R6Aavj-v5|$CTvmq9NZD%}}U$I-}%~BbC5Y2FR z#pv8GxQWRG2cIH{Xl@9H@4$2ySB9{CLcTVuvPOu=7(V_UplJwE1Emo80I1j9l~p}V zmo?4PR^t9t3n>RKv8ctz0xsL>QpPMPIprrzte58+5si$qT(Hxcl}KGy z!AN~F>?yf=db!OG+^SfkbZwX52E+ADx7dtu^y+9xtiji&VSWH3j9nid3%Vvct~+o* zxZRlq<~pxLlZe6kUDwlaQ$G_|Z(D(7`pytE99Y|^Qh2E`hLhiClY3SH?**Q9?qr0A z4@i8unX%(AooHrCl#*RB(dV|3Gi(9Ku8N)W4{~`03yM@M=$FIFg;5W2M?>2kW-Of{ zq)zsq>`+0oYNKekR(V*AF?1cndAqR^m)du4^6bi#0 zQ`ck_P-dd}r&0jEix&4$2q?E~B!#-Hni`bxPI5b_DGYODTm8D)Gi<3nxGB5^MdY*J zSB`f;JhF9ENW1k4kQqBd^_wW|b|N}IGv%vlReiJt`(lC*6AC8P^%fvjfi**!Efctd z9CmO6v(xaEGcL&nGLV8JlXrg8_e&?A%x^+Js6XLh!BUf6J2ESqPFrt|TILU=WnQ-) zGRnH-xr7f{Y&0A6^!D~f#N( zi;T`DO8@x7%P&EGFvB5~|NM9+U4ix7{#qILua~JIq1_Vyd<*z_fe}I&=kn5=;$Lq< zU4cdW{ClKo?{7n?$tU&RaQy2{a0ubmm46Qtg>=E?g;y6jDF16p2=Mixe-9H5nY^lp zuu}Z|wfdwV~=W2qV z|8GJ6Z$bZcm;UdB{_8IN-&`-|4fOLTv(C@3W$l$atIZnr^<*kM74K z?ZN)Delu?B-Etwv*Mp9>lU54CSs$%`^>Ra+{X5O}P)67bz$a^LRmWav?@m~H{76w{ z?dpC^R2R7CK+G(DedO4E?i~#kkJkG+|M{fF-ULI${WYrh9skT@Z#Cdkgy^R%Qop_j z@7y~*-evTpNd0}VVfTA~4V}(6CKOd0ei62HA!OM^Z2rcf4Ea`4*_`1Y=^i0Sq1FVg z4?1vm>n+jD65d^!YI3t|a2mrqn)A0!wUc(6zGXj{nFOWOEVy#`_#cqsy)m@k1d%CX z`*g0=-^H>P`pRcz$Z_`V4UG(bWr)`!#`>H8I6e^=h0Bqe+J-((ViGG>O=jJ-n=4i( zYVeq6?R`SyqlGv>+X-J9$Pfrv&M-|K%)L1~Twz+XSkrl~@bgnPiCmi1&GWOP`L~`w zBAb?z)vv*AX&YRpD39jD!?idh{I{8J+M|(QUm5nWx7*S6{F5!DV?NU<&z8`S>Bes#(Y(DgeMdc~;D;Bi^ zaW9VNx178On|V!!ke)EEeWP-u9^%s}M=A1I(Q25g-66quC`kodcBB0YU@W8#F<4s!qlm{qwMZK4LMaOl;NO37QJ~%bGsOS^u z{g})ntN|Du&*d|t@=Wv)n_rgR*s!B2VLeIm3xroq5tW}r-McijlA!k=@C2?f5XOmp z1Q<2Rt9Fc#FpecCWI_PIyC5cQ_C9mN$qYVe%U^SK?a+ zV^>PyP;R&oQDDzn9bi!5WPi;EPwDI0kl=;eu(3A{Uj^`*LgNlr55WsJd68UztMvP5 zDOs*qEBoe4!*WtuAq)GLg9&sZAJ5PJj8t1oDW35C&zpNrzwB?#&>6orl7CD{(=97~ z_x%;4N;3*w>0PBB4PH0}MW8GWtY=TL2agesfZVv!uR}|C71lFwx|@SkW5e-Zqo+Vc z;gdP*|HNQ*r=C3E(*K{8jcch(;f8q@HaVNtHX(yz zq!I__tiTY_Ca2=ws3$y@X^l%JdtCU6AD@J=G}MXxLPNefbHKr?9wVdXM-bvO|$5rYH zpQto9i5a0Aw(1Bmmr|sv;A=S$$?O~5W-dd1&HgQauI z61KhtIoYV`>@H3X;ednaRzOplAFlGdfJd9rQl!deyYy;YTQ0uMm-bl`0XNNWauUq$ z#)wQo^GI-Qeo8@xdwhM3`g zV{qKTdH*~S_C!5}1Q+z#g@3 z;vR#L)+j&%BPUtdzNwQ-vv zl(fobw`Q7Mpw|RS$fSQEO}2;fq#Cz!Is7S4l{-oUu>IFsV1x69d?6c`kwail$^;j) zI#Oa`W^?k<*ak&NEBLbAs9(gIpg(y1D<4`!??0E%A6!0;DPvvH(SjOm@-=io(Wo4D;2N8m4CYTYxxHve59~L6b=!@AE?Zb;7Q5-t<^gAjK${}Fg>emahScCD`7uq?_wt8x{^aMvjDSJVOo9d7{iMIT(+`n5P zZ>NlCa+`^v;8bz!6jWB?QmP5rqkM~x`7AcC1U8?Ty%$Q(STNk*T-R@8%9Jn z9ip_Z_3J_8>>ekUT|w`i@7ggThE*tqoS>6MSRJEgK8MOkybF0{TtVwFl*@48?_92v z_vNjZowkNbGHVh@cXA!yNLeHc{kEp5$#Xtzto8lfB&x5;(EDWt4*5m@|FQrHw_`y=R4(^@0veT=?IGcyN>tx;PJ2YLHgj@kyZp* z(Ci;saM*Hqz>jx|klQl#Vz1z0;dpl`o?|{<3C&`eAz(VeD3Y>kUtv;?7;h`=d~a_g-|sxd61{u0 z5mRT^$3sajfx}V3Vvz6ZlX*3;#b;$gQqZ5U-^ZIb^k{o-nt^<(Lm3i(9-=n^{W}oM z|Jy(Yrqoi1CCK=?;r{nwP_;_yRud_4;Z6~5!ik=ED)ys?q5C7M)8D9%GR`P=zd^nP2fAhk)evipp6a7uUZxa4) zfJfUYF+d3=m+K+^%?SqUA(fHcpnUHvzo&H-NDWZb_) zd!m0Cxql{Q69$%`e5c#dB?_s+F5?UO<^>@mKg8a~%Zj8TXJl@Aqm^`mM zWw23t$y_%|n3{&v$|IECC)azOZcv&@SdKL7{`o34H37LP+s@S9xt=6(@H60v9Mcjp z7@jDzVy431Dcr9nM1M?rpW^|QyQsX72&~WG5eScg7XN)_6w-C>Icb$;`Gl;7-02l* zY}`K{ecu{E$|4s%lA~((Ddq;_(c2EM{Kesq;);N+BUUAhgFW@uAF>TUdkk=+Wq@Q8 zo0l@;DKkX!5!7M0gTSW?TIlDd+g*kX@HQhBBbvhmRu20MK+(YkUDoi!`3QXxna5XX-PYXiu zS>+Yds)IO@nShuH&#LXESg{Jp-B0uj`N7oT9F=sskh-BEBHfS0NVKZDpCBn)b$Ggx z`0srRhF$1x=?nt0yZw#c&0G+y%Lk_2pQ&QIdlz97*D=GXY#;JjV|d7J-FU*ygY8dR zHhiJgCAHJGWEPIeJXjvgk}}CRgy|!4IT(tW|L!}rArIVV1#1273O?!TXMPjnXW|qu zt)?_YtwX`N;dk#7NVp9-*%Uo1@%>f!^tJh$3i_M4=q!<>rOjMH6m*g6^J+ScCe(X% zSaG%fHPO%0puJqxK2^#4@5gXZd~PpRuROh9H9}2(Vh}KxDHH&%lr=lRo{8Ci??o>& z9m;KHe~)Eja^rJNFS0PwUp(l$!Uz{ghXj^G1$gI`noXOm>RaH38n`b$C5{rU8~_qDot-)0a#%& zC{_C*Y)1B#2Z|k0WxEH0&C|w@tCuH>Y4-z}Tw#^w4vd<-FGhSV@;}G;(+!A(7j$); zDB$8O=QFCg9D?IZu&ZB;Ja(*2b$mS!Q8|=yqNGi-1aTloB`sb z$8`Iif@j}5hnqrQR0T0hSBS7>qOGAjvPZ)FG?k@iM<9~kw?UXxnneuD{?U@c&jF>* z{^k@Fs1lSB2=~^lJEzz|5j2V&$D+wKK9((v9&2+w>@?u?bZ;0n{sdH_cF0p}QUpf6 zM>&ja&a02balS(ayE0sJCJ2X{R$Ix>y?az=-=BKCcH4JVFI~iz)qn0$mdON&ny72K ztY0fk$#i87j6zznL~K=F8I;|UND;BfRih@q#v8*I^*_5qfvU5MI6qr%ZuuUqk+FZ( zw0>(KHXge8L7vFDz5u4wWJkt)HCKkn{?k?8EkfT7yi(opH&N8&JD+qrI}24g)+W#0 zq&l>vR_e|>e`|zPC$?Pw)gR%w>zQEru2KPEAB-8VNI^?p>~(~u3HyM6kIs`4tGDlu zB$GQO$3}{X9C5(0{&{f`YJCwn_+QF2>9q1Bjj2+ND@=-#nQ!5E?yu@=TVRGk&UIW- zQIhO9JGA_iD?tUYv&uj^9|?gPC|?_WID!v1<82`lew)vDZi0$zd|J{QqejiEcZG!U zmM1PXtcN18h^Xj4;m{Hk+_%5fbJx0L**yBujTBs&c>SP^FFz36hwP%-ujF!s==ul0 zBe3(~ldXc`I|Hx#^89&J5RkfCLg~_&Njl$>>!%Z)RCKz9E2c8LT`$NMTfbGiO6`Z& z%hi`@GV|*^Myl0*CZbEE^b;=l%4cg4t(kMjt-Dw`;kxGnLK_i7#`YA{RDE&)YS{w( zt!z0(ezN+lj#DE`nB`&*oDg~YBCrCx7duH}-x1C3a}CCnoC0ul0(2yd=vU{(nXY9- z3YUP$X!Q-s+K&-R5U(ru-*WuVsZK@4dHSwiL0hJk3YsJHWe#eb?cn-|Q<=ChO7aul z{`rVh2RH-5z#8d5 zESJ(v`wS)Q;NHQ;WODcmKsvkxxN0C%$i*BXd%S>CY1Lw2S(f5^_WRM+{56dQMtn+G z4PeP`T)p3RxsCJ}QNA#%k3Yis2?26SXpW_NJ{61y_89d_j0YrysYomG!0cmG6_wV zz7Iudn)AVhBTUSa=wO)H3?KShhbt$W!3v#u6dN zwLJXTSx|-DPDv56rM%y!p2idKGy5U)J?1?qhXY^JA;=|mD?@qHR|Zp!L0RJtp%=CV z$4|e}*;t4x`cCAG|8HjKlJFkOO;@Tu0FzO^ijEM4FS5LYV6C>AnWn`;|r%N1M|kLR2AAvuiDB4 zArugX#z1Pk@QRv`eb13*k(5zny$#4X`H5GC_&z^Bjbv7Fso#otSP*JrIZarqc4E=& zUM1u)=QAub%~@~Hy_<^T$KY=B7hH#Va8Z&6mZZ>-o~(>=x1;H7uBasINOC2QXy6F2 zaj?ONpq9l3qn-z>fCt(ln(EOt3dzu7&g z>Jz^)GDBc1qkP?oFpj@|J7a?eG8GU|LThrgaD94{~ zTn_cKqzr1_5($+7w*VP^exW>YO>?8(R#!>+aI$|rw#OusE2}SBvmosED?d-w!_PP7 zG!P%<4{r{1D7>&F0Mh%9ozFQbb((agr{}?2v0g3SKXxEEp4uE%Q(AnaY%0?O87YhJ zC*59m{MQQr>7n683fP7xy*)j--Qu^NX_%v}wJ#3qaVp-HK=EioEWCQZDp1e z(eIXxx_k1{>O`{R^k&(a0!=0WpI0Z#ic9$5Q4^%yUmhuX?XD|VHH&0~s9PSq6?LJ^ zT6%_&KeY~UX1M0m5WjqJmbaL=s zu^N;EKbTR>eRJ>CV#waIW!On9)LUSN`kF3>agB`{6?M$cG*A&NYHZ@tX3|}GQj&dj z9&0-~znMqDp72_$8~vp#_Sn73b8G2XqtoyMKTAXm>3Fkgo?K1eLsXS1C@{pH;!OWc^PCy)eoS{O@aQ)kKQ;M`BHICU zmKx>O*X*<+J#pdRKCv?+I`@=4BX(hY6i>MCh8q8m0o4|(Wt5QR9l|*Iu&~dx;OIr& z4BB_prnMi;sI)<63brgLla>v-J*~g35yr}2pfs3T+j?1_yBDX^ki}=uR+@`S?|)IG z=*t7ZHeOtv>jQTAx6sedi|Pl-X)SkxZrwDgVLkC`dAsn5!P){-pm!05x%%s~*l(3b zCz;m5%+in6C$J9+2tWK%aj1sln<8=}-gy?W&N=Vcv`fcp301J3U?mJY(o?@?lYNig zX0~nRZaIl`Z>}=Q_b&-A7tT`{t_ix2)fM|tKgf_QoADcN_*~26c^*bo-L3V>LBds* zsFl4)P!M1&#afJ%t8221$xmpF7x@NTh*PdkX>ik3Mh{$DYJD(BE7Vbsj;+j8qpn&| z-2Cwq*g>F_hyKy78Xl9RD4d1Vn-8GQ;|f+&^>4j5=||%QaW$0{TH-wM`oHXy6Eo~v zj$sNw&h6wmyt_ykhmYT@lx9?e-24VRL}Ohp}(-bn|#KT$S_WY3xTz|B^0qV`RQFwVzNn34Mx zIf{U4UrM@Xg}Z+-@3dKvOEQn+@pKtdTzfVs@U_jCs%G@mwY=^5?_AGhm1Hcx`49`TmB@c`H)OtQuViTeTx0E_io)epBoUxgDqp z5Qlify&cf6N)J*niu`3rUiqDWjBBc6&J1}m{@C*_Mh)(1n`ouR2Lv89R!b;l6jmPG>>25TuBS+=w^#Oe zYQodGmeG*?jcXP6om<_EWO?DveO<0=I&FnHRb!t|{eCy^{!(eMnPAL$y4vhL(1rDX z-4SKc>&&+msehs-48^Wj)GS^C)Z)5Keq)V<>UZ~h2}2I29!@`=q|7s}P7)70eM^h$ z1gOyIWAuY*+t33Vz-PZWI|7v9?)=3$otwS-w}5CE` zR|a2+X3D7(+#D=m2ATXvAu~Llr?GEb-Vx6mR1BvmtwAZ#RF{rl=JwoRdOk484h& zVSgKR_8Qy4Q(5Ry)}cNDgl27NESeLQP%Szq-q7T~V}lvWV=}L|?*c4C++dbSiE;vM zzz-0kZ=^`YV0PqBF3$cOsdj{%TzC8em)`B60^()lM(7($aKwbWt^!3TH5++)Dhl^^ za-DtYZ{<#(g_0KObaj4VPKlz=1c&3*+EV`~2SAu8VD(dz(@QlnkpAy48qk7Sgzi}}5&w8n*HUf!?0D#->_YpWF zfIiq7dIyCO76PC>tvv0mZ&zi}*buyaS#H{A1h*I11wD_1VgQ%B@hCF* zkoB-MPRQ=#x*)1*}-5VK_etR9hvsong(&^CMa%`3H$D&lL-O__%w?EA?1^P9HI9i@2p1&fy)UQADjSQ0 z>;t$-)RItBJ(j{zNdY1epqE^|)d=dR>9}Vex?GTxgKssCf0Qjl-dr$M{W>+rx~xbu zrn}zlxS624fBsGkuZpEqroC;%TiOz1{sF{O@(&rU>H4@z(VVC|?z3?Wq7HX4=#=Tq zN)o0!ch^SCo+B?Qu;cwP-4u33Jfj*L7H-W%k7pz!f+Jz}-DFhhbE?I!FH{D!dEwqy zLbs+HpL<%hc*6j75Y@)nA3j*%?I;605YtUU<|GW#0oO^H#gUh4m}ULxvr7>lm^z}M z9Np~K?k(Shs(a_WZEI+D{PE58CKp_1FxILRPA8z1ziB3yD;Nh@SnZ=h4Gjb)BsL_l zIjsFVYy1eD)V8Uzb?c1)8v#tIBMK!D#tYwmYFF5#CV)HQl;P9JGu|05r=>LS@mqmQ z$)J7l;QH%zUg}RKUs|4!q}!XymOeoub5Ayi37_)C$pz1Tv%Xsx)@iTK3%@M#Ni*3b zeXmOR{8R!ns{;lVZ3I{U6q&@z2vFU&I!&uA9s|+tZdW91y6Dk=cc}-3MEAycf5s+x z23QPFH;yeuX`pTK4FN%AA&cR6nsS}51u><|>z3hHKvOnw9|9LbPT(i8z$h4|hX8TT zn(^K<6=T5?KmKdlW!wMZIDetDal4J^Ls`nETeVPZFP)Qq1#NAhsNTDVKWFhqoTdm4 z3heoC6wLl}#BImA2AE&&7msDZlvdpDHRrMe^ULSWi#q7oeReq9t;4aT>SxbE(%yMt z?c)~&dI&8}(W5IcE)`rQ6PSH)YMX?5YR)i^HuMSYZ83J@pQHkp8_}R{;#-Un0BFPc0(oqOu=j}TfzCB)@1Wa{pgV0i(id%`*;EDyBed$T&%2bL z2R{kzXzq~<@st8i z?v-BK@n>5GyyuI~z*bZ7mZe5ZVeQajgvd@TDM_SNv4wQ?!am$yohh$MT&F4oSCR{A z;G?fyDN{?kHPH0o+e7!maj!zb>&}5Rscn=7f&Gq0?^*P!Wop ze11FVuA~Tv0d%UpW;wFwCw9IU^->rEd368)6V-=x6-IKMO%{_H2Aob%l5$h~1kVNC zBAM5G77(#G`cwj(XAfC7z`!P^7=luvi=vQ}=2&*ceLAmrBK}u_KA}5 zKSuGn=j3Xu=jtrGR**ZTh4iMCCtcc{onPUD?olhUEpW`ah^r*S zsK0NbN{lQwp)Yv%Jo$ei1j5qSn(#JMcKlVR_?O1_%~2BQXH%L-k* zWdV?sK@zrb=5L+0Sulw-?>?5H1`U%(m?l3F4>PiLV7|z{XKJp|&1qQwS;Jnb$y)hc zoZf@hQdeUv`-3cj@{8ZAqstzN^gp^bhNBk1fgZl~aDc7JogOb-ihiXgcakuqDRkkwSf&Eh$~XbrYubCLny4;f+*&1o#AB=PIVd%W{=$E;|Hd8BRvxSH0a_zND9s* zW#q%(zU?UtqU#qzV#Q^;H31IMA~v{~(Q0e->E;_}%+j&f*@SP6hgmsN=@BbqmGqAk zJ_$47qq|?LL*GOLPF3UNnT%z!O`d=$v)|UcC!14ajJ>oOA=Idscg3vMidhoAI6b%q z7+2F^mF_hSGi!nxCN&_3fvJVMynFeoY1**e^O2x?13jO?Dn#Jf{WKsG?!GlZNb|!# z#NtHZV zt0vO|!)O^+?}FIb4R&>5a%S^KTsFMt3dI~H<8m3;IslZ@a}0DgHbiR9BPsnefh8nQ zOE&N+fVPFaa8@c*Z^D6^N$}w+N!lKZ_j%V=Mb?MUQW+0rOKs%b%*Ym%Ao{0+1NOV# z_8PRr7sra>03{vdB@}IU#Kj3rF|NK%z*bMeZO%*aX6(52i5 z+*Z-p5g=*zMkzyf&5TyJ80cj7})9b-~Oap$QMDf zArlNBced-@{dz-0ai8p42Z@{9rc3C8)PeL77MpY8tXW#}aV&cUYyEF_rw@3A_Ub^d zci=4!Q|ac#Z&_{~o(%QGj;e2^s9ZRfRs~@Ob46S!+==3xPoABGi|%5(vl_#8!d%3v zt=@upO2&ueCWBS{1)@1Ec|2^og6_Khg`c{n_eaI;{kV_ggFk*+MrI`M37Ek5LXRY* z6fe#^3cc*k>g6TA39s0Mr1HW?Sa>CFj+YVrs$)f|2A^b#9WYq3z2z1@W+5afgZg_>W|_Vyu+VG~|kgU6a`$7R4q*DU~6CJ2Hj-9t&Uj+9^gl zf~KNFPTT#2gzbl)R(eB<4b|^#0xHuS!vEV7?o7TGCoCiQa~ zP1fqz?(sn$jH1HUd7fC!p~BKjB>MI6`-tB$2SS#V&1#2V(aOCK%VPh5tHh9SHK4lv2$KStMuMV#FWnoJBk4+|fy|evwFyKSVVb?cRKdxFy7= zdZ&_TuOJK>cB+4|w^DGBGylM+(`t4BNE==rdQEO)H6IC>v%R~27!$==Vs}SW5qm#> zKa$4^Ttfjw_<30EcFS%g>noCof^ckjLE)dQIj`f~ur9Z%`;FHRv+FF<1uE1ZU4Y$L z3vM4?zjyAjH?rUL;+f5cig*ZN+_=+^)|JcC01$E{D7*_}zh;DTL~xC=W7#Pe$EkUy zGfJS?KRbxA7w-bp;y9*MIcMr9c_fqtq1SSzwO_n_E50@Q88}bvibCA-l~Oxz$({aE zJUw1YR?CyT%^JF|-{3Z5^2h%_F1B{*dP{vjp@D5>_2xM|V)`o$&JSv=0xf`bnwyQX zvDNb)qIx7{b)2$S5|vAinh(EVxpY8ug#JMRh3ZoCzWrdsG1C5)twG7hV8rI|15R#N z$$E9E74{zwxM>EBiPH)S5;b63w$P}s7dB|p))Q~R1-fC-z-+@t&K ze3xwDN36&B-fBr^tIyW-ZDLkwdLX8Cua8&M-Hqtzl(;wD5h?}5>}X)MUII?>)v36zbN zA+q8U>~H~-%J+Hx-{UE{H5M@aX^wO6ZUg&UjDok5qu$NuBCk?Pkm8~RiW%OU-8X#y z)HA*C81Ebz&St-cCoOTMip^=utoJo;kI)G@Irn#gh^@Y6JGEu@RsA0m2~oW8r`j~S zbRe=zOH-r1Al(Smy3Go)jipvx&w834KZ*SovWvHUa-9oKnW^?YGP2nqPdw$V%-Sd< z{0t_2lpCfwt4JmhHr86{oX%&62VD4FKmjMdL7^`Ju+(Ade@wAA3mzUgTi=1IzA%z# zBZPPv%3^8*M~WqFB^0<-U**!GqDvHbg)vD~Nvs07r6;PDuCYs4XFFF1e zf#0xZH#WC~2wf7TCSOwX)1;V}`_&dX-Rpc!0c_C?mo`%#04$#A zArx@#v_n&`)4sIg5O+0Ot;nKDu3B3p8NeUP`*4uNS5C=C<#;ueMXW&f!juhe5I5R)fVXIPNueYoot>`rP|W zYINdP3Un*#raR6=FatDMFV#*$dF-z3nWxU;-+w4ru3PXFD8#YlIVu=P7fsCU6wmMFjd{TGgF z;Xre8ZEsL{y|a{TSfX3-RoqYTab}~JokXV(33xzQ(Nm+$se%L~dN6PSHn+JKaq2Qr z`Xnp4JpZ?4ONd(g#j$G8=2RN=L#(axOp|(oMfZ7`X4VkaOxV00cVnU|s*-Xb_i9G! zz_m`(Wh;}HT+q?_2bw~TN|i4_w+TDYp$6U^tz^jESeStXc%-pbvHLv#w5s2MFDX4O zZ=Tl$lNy&xN%oR^I`+iowEO-twr*vg^>pb&xZ{Can49R6xy=16b>QFuUTcL5nKExd zYliD4sa%)l!+3cRImLm&?S*g4Fef?D{*Y9}j}H+sBs9s-KlI`cs(x=n%rw2PwtnZU z);1Q+XDi#2!51Y!CXMu69^B~W{t@@7bb(~UKy`P~A-^eo5+J;}R#T~3;ou1(bklXJ zc*|O?_Zlc;;i0svgOqOOsami6=V4sGvMu}Lh0NSNS}E@=_2FzyulWZI^xZM?b|#tt z&i2}n6K`UMn_Qa-StB6?GlN2AhYoGIwyS54JaXT@ENBjH+^?8^5E*!Lxz4mUzC7<+ zSe|JMeADzmi6d<`?9bM8hZRV2l+O*+AnNo)MjidBzeK%<6suVeHB-}GSD367 zMcYdm8SwdUTbka%oT{9k#t$Q(ZTXavY&Z;xqU87>5<&YfX){ebykr7?6&@zJ*Vwdc z4aOSjLT+5YN>Cs7$8U@9Q-0OO!c(bz>x3kx9Ff6oDnA$(BbJ?_3p1*Gax831D*eaR zkx=I<`qC&aYQ(X|Ky_N3Bjqo=-3dCCc4|CNIFdl?1!Ylbc*l9?#-;bLZtLxNS<39} zS=hnR?!wk~P0tJs$`Rc+I-gbidvhI~dWVSAR~*T_rdYFJh^YLm-zh@_TnX&Ndp|!X zWZ8x>)E_9?AYbU@y%ySmm3y9mr4Vb|8*d9eIJ~v)M6JAyh8RLreoIgjK5G8LbHQ_VI=-lX_k2 zCaci1gUM!B&6H4VebS|rPG3~IlJbV4-c0;{bl7r&YiyQvA|%l%gJq(7TD;UfS^1&t6WH!A*KDqyKm#wW_+g_G*g zlF`vzYU%^rf~&a_K8s|f{S(Q+-9WoMkdeTasdfV3K>68dR>IgP9?;lyzqt~Lz9TT@ zP7?>?Uy-s;j&qgATBL^3ch$2$6vxBdN*y^GT6kt+^gj zY&tVJuq`F&0JRG2`p>6Mz)-n}JKgM&tSfuM6&8ZYoB}@ZMdcHRGnFUlx?Dd&uRs^@ zOcg0_1Oh92V|XGLn5hO(*!{PaKH9YJ)A_1Xx=WdE%l+32VBmh+%v z1c8eLKEtmD+>{X=rv_x<0<0q8VdpKcC%A==`maTJbU-BizQTn6(|7ZIxT>Qt*7+V# zt{QxZ{2#Orw(CT{>esly%s!db=Wz0h>V4@|P)Brk%g;>MK~TEm`jD+ea)!1^@qkQ9 ziK{+h)8MFY?}iXOmW*w}-ST|3BzaNQ4z$ocSNe~A;_=|osHTWhJ-g<2Kn_PJ6`*{$ zC@GB&m-2}kn=e$>>OD+t8kl}>Ei^2iqik2qTY3gP;a8-h>4JSRylNEjzDhSuXYvH3zmvzemh z@Q1Dq`{PB()#{%GVtuNXvZK+e>vupItHOICr>jL2$4sAPnfZXo1P&H}05Hs7qd8FB z%W31ujJKT^_J-w>$zpj0__6oD70O4|{va(o1??s-M@+ax$rt5G?X0Dz$9ARZgE+~o z)@LH!fI6dYxKtK7YE64u$lrxK&M~yN`<2=QOX}VMH7Xs~U z$Sj+fp25%F8-Wuipm$}m^K2qDL=DE#Px<8f5Baa2p*mAdLIyhdiEqmbKF-^Q+#^Vy zwYlTCqg9Ee>=dpsD0f8aRpy<2#B(G>dgq#bO(%w00?&(>^j zE!%C3RPmmLIaMvyA80h)W%!E^PYbTS0BpT-W=^);`LUgS$8Oa-X0EI~=H;j%TBU(& z6>wlD>~RxQDAKqkIQ5bHfvU!AB#n~V{fH)a60~M#oN5ZkTWJU4oAk3owDFJ71%vz< z(QPE(H8Q^ThLvf|1tDg&5)DeSh#5Dd*M!U*#44FU*sIq^wB2I-Idk6#Q4Grd`B%&n zS?FwfSO`V#SJGPO9n8_dP$Tfu=nD z6G=O;eTknyH_~O}rW;J5_-=n@CD3&oV@H+w?JYA-rHy1y@GLlvnL!iCj2|}}v4rU; zu*WG<)bYZv*guf(Ud0pc7|3So$7pxtMTf#Nuqq#ReqL+I!Z*g5+HZ zBS7mrdLKhYE&>|4f>Q4KrD7HWBcMM6Kz!dd$d(!Yxwfi+iG24lmpx{zO#nl4a#)f=E0f zM4?U6u5Bni7%x&KJG=ETj#>ont)evKiaX@yIt9&@3*RvGPF7KvLT4N9u0H0qsSBZ} zC6{8FC{Y|TsiG#gJT5->G=MJBoS-U-pWlLDm&bN~HF#S}!?@NB1v?=9;Bvv)Ze9`j z98Ta9mRB-IEmyHEsF?;jaR_pDSb-aawcef`zVy*4c3??lHLbIMIVbRBM*1G1)#lNd zE@)ZdG;sZ%Nd0j5`}2*%8LGh;E4|gnm`E@Rl&LN3h4z?fmi?e*;x)p!PJD6Dnxia> zdEYYYEj%9;7kA6qK1meT!zf0h%Pj`keG;P9BM=|Ly_T#K4!8Zu^&LV?4CJ6IrSxb8 zP{+rC#02~#z;w{+w?@tFT7^4A7F{Fbr!_xD{!N2hfEimAs`q3tn~D!}H{jQL%q-V- zFD5mFo|3$kX`&r1rT`XKmbsyj2cIa;6bKpDEUUSMV{p4?YP%%u2;(04>Bwd0;`Rt& z+3k4!!_aeVm&RjYhB9L{A&h(A+Yy8UHP+kv28hFL*mNUKrttV$zxI54@WzTvpw``kCVC915`<~69@UI_c=arz0 zG2K0O>TMNdqk!2Tx)$D3g!{Y83_Qyq*>Lytc}q$d_W@xotb>dBvm;ull4O(*fM7@T zOrDr7S*JiN!xq`0Ysg9s8I z84^u{0!7nUIgWOY3WiyLffs(x+W%lsxX7lRI6sA~rP;7JYOqFRH()nV3iNEp=D!*K z_zw9W^Q!KCbch-!RNw~Xt_Fwg6cFfIanE+8!9@~3F+pGiGgb)?PIaBZfmc)Z>0o}$oBu!m=Yy|O9CbG_Lpm+4*MDs5S0t7EXYcDk zm`EdIXjy+#VYjxUx%*qOW+`f&P5kCF5MizdbpSW{B0Dw@iKeZf;6&d0aAhit`&DSL z%qRCI*QcY{N~DsxtOB806yE#tf^{ziZX3s&n$+YMBmuP{(kGbPpff!7meZ(GBd2$| zc84wSGMT+4e`!3J{ZkK-`(ss!4 zu6W_huPg$DAJLl1;9m>eVoaGy1^&xO*h&iE8eS5q^*w$6>;|Iu$@}NGQ~un$g%9iD zG{HO;JOBcu*1EF zmOhI`9Be#dJo-)qbYvlu7u^^Mpt^)`@xi^nt8Aa6_Sh(~;tU}FhU3Y+5@l1Li{AE2 z#$@ijKjOo>)C72~Sb+Zw^|Wj*^}aeHb=q(F@p;m`IP2E=7^$*1ZC7=Z*f#Wyl&4re z@blr0F7<-0L^4$Qr758Bq3%Ky)1NyJ5{wIEks->f3fOdHfSN2N0a}#}@;PUtf|X#$ z#Oq#en*j{gBfv?~!BRw;8!V4_Z2~i?f?71=@vO^7GlTu=)0-AX6N#)gNl{Q+YYY&Q zHZlQ`pd*A4)<+#3J#RhX$?%${>Zg+b(jc%oJ{f!S82D?*{vY<mPMSkWv~k zh@l%qM5G6)0R#c1O9>H>6p&`H7@7eIK|lqhK@lV*R6x=oq&uX$`>gT4|L1wm>vLY7 z&xaRYFxSkU{o8x5wb%Mage|es7HVS|Iuvg)(~OJ!{m5d!ikfTz1N!E#53?S<*G4m?-nbeX zwnb4H@vc$+!qOM-lKmcgBY_)xcC@*Jw}=IjuLZ{P64!^EpFF$_mG{P`hyRDMH2*!u zZg&kkxVk#}Bvg%4c$f}3uCQCKj6QV+sS?@6VXiirXZ;G8n=A*IH=gN2sDG(v1S?gE zT9CBP|mz14CRnWH;|sl z*d3=hJZKDNRq@EL(grjuMS67k8I?&67{g~q8^-hle$xutY+dCuKnA@~sIMOJ7g~;6 zr&2}PS=;HOiED+>L%-(ORri>#{T{=f4KPrCi_LyLSACg)P2|i)vWpZ{`yd)4XR9Cd zQlArV5o0q==SHz4P@T`6hlbsh*sqz3-B62glcuvUTXi=uhSQSIT;tirxF~2H6Ya!a zyC`mdB8<^w?%kVUg04kHOfxXWZ_B;qLlHNgt%qKb=EgA0oE-oH>de@WG2byRN4;dRj=?}C~g#sM` z#eHY@ngGoBXazrN&26aSBa4ul?r_zY-*3<#?}hr>6?pX!*Ym8sX&`YNINP&aLBgke zJ@E?Ydo160dS^GfNmnC5#mVH#Pi)grid(R4PvMu9G5o-N9yn*9V>sWyV^34F!r8#yu8e} z^k#G1jDfngsd2Uwx_F&guB!kT6Ae{B=11ix@eqJsNkV@h^I>+PXsYstZW5a}v zM0yJp#?^XE`vPdF1=eWJAiTZDS_wT`ogy#UHvhYY6<^;+CnGHpNmQ(FVA8KlAuroT z9&HW>9_MXm+|xY#vMamIyY%vK+>8!BJ{T3Z^O}x_eQCAP)oE52*ie7uX3p^iA!!eT zO88mZsj0~}9<88I+g>$$xjvrs)SKZE-J>Lk5B#h!FyQg(IH^mXISkq&(MFjd((CR> zvJ%%{ma>q=K)^F?A<$r(X4U&FP&tO8ch;<5>vA>7x)pjE5Y^vY``|CFeLbou;4s0$ zr3Q^4$NYAO#?E%%N8K3aT^AGdJVTi?F$kX*QUBDsPWbrrEU=?Z&1$jub3_3C%sOiPbXjN4zLQ>TAZrR)pxF;dGn z2ZyILP4t(#^&$eJSk8FA86$7{p{9ul873Jl^eg8>sYcEO{}3_nT3&J&*g8eb>9a0& z_lNme>d$cd$NC+tH{P$z=3BG*89d~?sPg^Fd9(A@P%21FHwV1hD)lvf6fKS2D0=jl z{HA`H-N_~c|Gr|rrDsXwapbs>$%*w}n~M)6-R@uPKK_{$hm5(?uY>OLqvVL2drJ85 zh>ItWk0e$)G`{2;;eDnDfAOJyekd^knpZv9u8RhG@{9MI56@f<#$Ek%r|GWjsd9X- zv)u6}$KAbM^OG>+evzcW@9jB55^yW1jGFnlkSG=CssVgpbSFH!>64aYQ7^_0o4b zXg>141K*D$O8pspzg|s>rv2slVz%HPTxtiHiW`@1vNQ;J)Ox8B!xv<0vhY2VD8-Pi zM`2igDS(>5RNa=x`$Pa5suYW>4QmYh)he6cUM?35HKy~)<>p1CIPzU>A(R7EzH;Vl zT*=Al{eflGrSJ+fRzq^!d{a8W-<3o?>yX6()hznk-_J4$xra41J)z=vy1Nnj=mz?L zpS9RPX)7Ef<#K}8MeILcGUDbte!{!T`pi7~&{Cus;>Q5nCFIm*#{9-(Y<3LQAEfSh zHEnNzpY(Hmme3`JN>v+eK9tVaC7(?Al1*pGnvM=Z4{TnjVuBL=lL$kaaPDR#DXyuJ z?&gdEbF0DYkpPN8?=1PII1wtp?UVqA>MB`c0^_cJQ7vCr?lw6Nt|p>PoX!89>J?h3 z&39Gvq4=j1GqHs5Z!F}HX?B%2fl>t|exS-RUaJe4&Wk3+r8|EGU zgavrmND4IJkvxy??TlTWC=msg)x225_LjPOp9w1Tfs^>R|;pK7nS9 z&gg1m(9q}2B6%B%WYSj_x^_+HEYKck3IBd!OP3dq*85t<_>yz#|dP6S8*9AFQ20foVo*bP^Zs&1_ z7Z~ue9BQ0|XA~4=SkFEf1E_l4w?yy#rBRPcJm=^?d{!3&2IRQ7p4SyZt6UrM;lGMM z12FyF_7_8^g`GmnI$^@K=r-?p!~MG0QYTA`8T2MdW}P26%ng)@r220ey`UJ>C;oz| z0nU;F=hQPs^Dn>&kV~S1zpw|=x(E+GHo=lc-euuqwNmi2rH!`J|DE@#H zI!Gkv6U7BMl?$<)DvAi#QN>5;q-9feP~G>xz-xLgT0TLTIMw&3Q8?Y2%azdLkZ%0 z6UP=Aejr}g0G-PcM^ixVS1Y3@8O_SC1RnV{g?XNobZN7GiEgoKjNa|D#oLd_nbyt= zzuNy5=wjx?w63FGZAVvpJLhfb&VqC8*xq89Z{cRKxG1o>Qymhn0Cu|Vy^^9FAPLHb zk=!>%Gca{)EqJGw!Zt+mgn`4 zbVpOWzzop*!jm?9{{?(OtyGy1fZ!7(_v}EYqUog=&s+$iosr_mB;}9qj-rbmK z2XKoAJ0j%D881@VD{OTFs1NVg*v?JURJy^Ri}o)XB*HS=9)=ED2b(} zzn6vOedO|!651Nxit)6@G`j6L#-0#Q;*;?1$rFBwOD<>A{SkXp5AjRZ2H8zCpafLKSoh-h< zSh9CEl#&peW*>#UOoK+kE81u-4eSMRER!VmB+16gXLG2j7ll9VhjwIZFvtb;PZ!;t zi_gjSw$K!`f8QkigamY8a>lf~6B8Mu*QbA3)#GS(2r5i^)P3IxB2om!LxLtD@G&1> ze@4!ByXNU6BoaRw-kZF)RF)%3Fcp^cD`z3pL(YS8201Rs&XPBbak7pNffopz{JRc3 z{j)-+Jw{4z5Coc4^D%z_t2|jphUoKg7f`RYFrMI*NNxQwZLUsFEfVp(@)I!UvK4Lf ztwAT|FTF0>QcZ5sQEfQsKM^4~NC^aS&Lwiwe1s|=;G6IqL4{^P;|)QM!+mfjo}!P& zb+(tD<|owH#-3sUvPpT7%2}yr%}n%QcC0WWtUdHUrEOM7v37LOH^?!902-?HbiC8f zet4j&edQCTGm=1&yrRl}IH<99*8pw3{T8kaL*WkHCm5hv*R=_0z~-eqd@uxcoOndGDp|m z`<4ZmTORsAgPlGqe0+Swm+Jn|1zv45RgcwWf_f5nR(SkSm;h@~Krh@m1P2MyOjlQb zZ}xdBP`#LI0P@JdtC_S%Dgv$=AX3P}JlzjC^GKT*E*35vww4-lT4|@q z8RHG3_j-P2g%c=2Hvp{lOz~wd{gRrSR4T@3F@bx<+)eHM=;-S_xHm}94 zUnfDGjtsU%RJ7P4+!5+Tt@#M(ts=mj5gK1p!_^-?uCWdI&kNo8Ms%2w|0=N*V1gh~ z+4;SdFmMpR49~8tqK{sAP%R9sK996B@e9IG*0&s{kEX^(u_&89BgcHOz4@Ry_|*~+ z(SRB}4E)RSTQkImtG%edq}@P4kh_))V`|D|UHB_ao|OWG_4*vrcVqa`!ZeP3#aslC zLfGxjkBxoxWwMfVyme<*Sc@{7V6jlt^^!iC1qZU98oi{6w! zU{?3Fj|WPX60Pq!c{8l}CerQy3F}i_5|T&~p}$PtRA7C;Nf<{hDM9oHG@0nQ)L(pQ zj^$~u^l;F;OwL7m=&{f%x-r{H0)iSnYdUDBDTl4_r)iTrIDw0B0|wLLZI# zLUw)8+~nh_1n19ZKu1VlhFqAzq9i*Y(Oh57nz&wNEf$NB2s~I-{Xf7u_6jdiB?8_L zcux{JJDM=(-2vzSmxiSi-zabv37Vya=GD3W!|-?FdS?PPZ_8->)-VC#FT+hAeGwa5 zK0RTdDzgJpjh2dNm52@zeqLRo-qO~s{58fTQ1{ljo?;N~Av-$oS$_k$ zaHg1&TnM_To2fEtz|dL0Cum-kh>XETwlh%6x4>K<*oNHn`VabD8-3zwxwZDu;|MZ@ zWPmBvXWu2J_ij@^OhzBH6-;syWO*Awo9-L!{3)l|fd7L97_1OWl5mc+YzXZ`%@3(& z9=jcJ*tEQ0ySV#9f)AuOjG=rWv)(phSiX|`NczQV83tynd&e(-&7Y1C6@nM+OcxD8csEzGu1Ym%98blsXd{d7Y37%}B`u`(jDIOi3%AiInRsjL3DL9-9#9oVn#T~lu+h%j-nt~9Iv-h2)!3ty2xfm{u z@5h1UI7vhZ@oqHBEi`*zd}7@`fh^O=YebGi?Bd7>`em;J{0ZHd1*dqy$RFNiUjBDNq+9c#PEB!e6LJ0{SwPv*p-56H_5g6QNX*;!lb=AO z8U7EQ!`Vyb0d7^eOYww_?N=z4RR&x$`ly@5wA6HKW4?&<*QjSYNqF_hdy5-Zjg$~- z;a4QdF!{}}M^-Ip;wf%8A!!{5TT^Cp_jMx>TIi`T#Wd7V4sbx=|6LSH?w-{Clt1wi zhm7$fwqES-@>-I-|HgCbSEdGYnz;^Nv@QDWV_BWdW;L`WVSf(qFnwUyf>A7poi@2% zOifKecrUxbbJ5iCAoci@iAxOLN`~0F?s<5&4u@V_v#OghqQad|=zDm3x|{q)bc_Yn zCvr_;pc`kgo!cDZjrcRj`1h^(s?Vo#@7b|QH&Xw@z@CYe<&m%7_9&{Kra8LeP7v3# zMZXCR@kV^$WvyYL2JAn+i1TojBw8db<~)4u0A%rlKCZ631UBv|4oN5xaxktA`_5jv zdz~K?#|~Cbt~7C|2gvsFUy&rm3~)J$x~|tJzKEIx9$?zy@z)jB;ECkJk^5HXK#8aO z)pXr3*m3B{2*Vxh>SSFRlKo#-$?YgTFwo{>Ffyi!i1X|(KTf8vhC`3JibZ{{T=IOt zbaZg5_FBPp;yb%;swXETw?1=s6Ladr;=hSCG(#9Ya$(*J=w!55+*hA>iZ3xDbVu5k zLjody1fHE_CImDqnvY1!TXKGUD6xAdek9H2v3!1Xl5BiKS~89o)vStsJe6)-dQH&e zU2Xk$<4|z~8LqM1^|!tZr|i*=$LVv?v^QnOhT6ky5NecbY+?f4ps<_1-BUebAXEJA zN2upizug*M*57kEAhGwd2`u_gE6M@axIsB;cO?aDT186FPsAio*_K3HwV^xtwG96R zo+A;bq1@4CkwbsbI`At85+#TIL1vGWZ#CPHW@h;CGQWXV2*~UCJfc2PpNl1GZQQW$ zY~R4YOJyOEjtFBwsByB)7QZ#?^Ykj%ao~;4`XaPF);rcN@eQ*SA^x8=hi$qp3y+ zDoW@~^}V3=!~LMa3Wi^aykt!hBQqAWX9Z3H4fx+DQ6OoB`xzhs4A+jesJH6k_0QA0 z)1dg)xVbUiZR)p&F1jmRHCq={F}4RNDvjI%W-WBb+dn-pactn=TOB3G^}QTjK7d6# zG3|@c;bg6$iKgYkE)E3Ut;0GE(f^81ZutBO$?jb5zmJ^no{cMWrdm8JPQ_hIfyvPR zOdma?C6zZ$b6=dezIru`ez8Racx55p)q!LU91r{3?(g3>aSzCUXt+uskI@|Y5y)eM zenKensX9jFWjos6xp6gIvtJMmVpHAYaTK_!Gp(}R#osviOs<;AReI`OFz=;QlBd9M z?otbb)cVJ|y^pp(X9QU2xCc#Fc`eK>R=xJ@CZ=@J;U9}*#Q?U|XCA0f))^?WEyA~Y zfBpVNcklc#Hu&`3l=DYEsqpDlegde_sX8cOExig@IoPm+D^P)PsBNeQG}KCkSw;eU z^Sp3=*4v&{9omVw+5Ma@- z=g__iPf9fWo~Eb>3TWwy!&Tm^|J4aQcjZ1cAaX-NsDJ32tZB`$^YV>RNB(WOqelE2 zMI8fvwes)QES1*0^fZy8>=A#jKjGA(i8J;292!cV<)-=a8E4s;o}HKS`50Ocie?$l zpZmMAd8NPPrWgFTh8>DZw?207%BDr#+%A4@>z`&@aOl@_d@Msj+Ya#aipdxaYpBRw zb{f3)5{h=W9d7$-p-p3`3W$j;B#-w;B91)uO?94virfQMy?2jz+NvUBwleYO#|1;oY?t6vt|bM+3Uv#|BQE)CNBd%?rSJ1mkf zyiVuKYqK~VxR{PBAY5w}-KCxs5p&AQn(6B5T0^3tTkdkVK~`K`4_FTzpiN9(qF6HU zQrdl?R|g7J93V0o)*GKnOU*c?2!V6R*m}{}>Zp-IMCpMQ&sCfWT05|+V>8Gr(XW~l z^?~r5LOwTLyT`j)zGXbI^URj10^|Lf3Qgy2o%XG~J^p%+T?d4Hox$GsodyaSm<6pL5p{%WJj@rFx1$NrhW3Y98XnH$Q~f9K6iPBqwTD|@MwCA@pL)ij5*`gzU^S~YeR@1p@}~N0oU1qE0p!fx zx?3_&eSBC%e}C9?ZLy#0yiKe69tkVvyG??mx#oLm->rOlKHd7&hswT>k$Snjl(V=2(o6eixZqpkce`I9EiEpNWAtI_EiI(28Kcx-M zxdYv;6y5>+HIjPK5@Y7x9$?>(DxAM^KU)3kT$`{VP#8_;&{N6IdM!{z<$26k zkR-YP^>06$< zeGX+Cd>VgRN#0VBnBwf|41w?Ec@xR=!l+faxpE#YS%s4P^mxe~ zACD=tX{E_A-%n2b(qFxLbjZ%Yf3E08PyPo9$-(Pp9PjQFm^+5&KW1mKciUYVOHDRq z5n@Rp<}`;Vq%=U`=0vjU_4ho-IG%L%l7kZB!|?O3zTX8{uf;pHcJ(WAuk&h|S@5pT z7!;+2Ke*h%KseEdZf(e=77-K8fYXa0+^e;9DDodadm-31@+D&fD*fspE&Hc7cz}}c zlE{HL&H45hhGCzeX}EhrwSXwYLLQ%BarJMYpvhSWv4I+YLxlGp zxc`f0p{8bGT<2QO`;EMTn=I8!ItC4}$Zj65wCMPWpc*5YW1$KUf~O{3$)2YzfdrWK z*9I=-2HZCiQGogfskBAlv@DfRL^64=g3pC*{FOqNGliMh`zTgpGSZF$`<|;wF4J20 zPzJhyyHdRaS@4zZ&=;Y8zHb0k^)GU-N?@#A*hsWag?)#R)A?MFTofcyIf zFR;J+=;@ceILVK;RXvRAGD|rRqr$74tgkoJWq=>eyO9}B=zi4+y^X`(=Va|C1tnW{ zv(Fb=7cKjScxx8NT@rMHZ(7utUe>*p`GwKqT$W;WwEgDjlbV~Q8W$@!g!DniNv{l-2&S4t4-zrLoD@ecJS3fGdYPm5-Ex8{#HR3 zR?)IP68#$p`WJQ8Y@u}%(wsOizbzwu_(E$jT0 zN7VuT9FRX11RTCX()uP}V}qmf)#4}vtXeHZ$f5b#IGm8dCYlt8c5S&5>gd%8WftEX z8OGxH0u$yXG8)QSzX~>%WQf8O?zI8B_a~cVL|C{bnThK8VC>eztkhKb_Rnq$h~R>a zK%U`2ly(+e8Dsh=-_%=aA1c6eTeD1P?7k!Hq=|5)@kHK)i98qZjacc{E~Xr`bHYUX z4(iG9XD%uwUG*sEc`E5gx(ZdX$zN|2r@Y==*Ja8x{lJS1ISbulP@19DlF_}T>{MfP zoQy@%`d^gfgK8CCdtCJW5jxI3^P|@#Kr+Zq1`F|_D9bFb6DwH}K4oJ`C?@`1+i{}A zuQ7A#@fE{4Mw+N!@>EJPC>DEmzvh^ivA_9H2(J)mf=_XXP>|M7%w{Q@`-zH;>lCHp z?Wc%W?+|f*YRu|f!zU1PLLknTK&yx|Pm#g4uJ;u2_IDsGi^NNac2hZ8ew5)Vxq!u+ zJLBGc#gyBRU)PD4+2d4KCP7f{Qd#&8+x2bx{2woAfeYKDYEB>RG9H8@k!zeN{YHwJ zJo`{l4qD_-X{r1w4nDk#@>Yj6deVu_A=N={m{8{`~#=Lqg$l-t-^ z%3AA?rrr-m4OT06tn~7zV_W%9lF3{&$nki;NiLvVmE4KM0eeQJzAkM1D=Ef3O1o^5 zLxc>&yLw3;Ww?c8w8&TPA$~g?`VjqAWoq^eOrJ#BJaU|77n6vE+@T{Yswp!e6xzX< z_P0N`PT)w`Su6tVUhzm8-OklJN0=VJhvhU-8gH-hf6Q+)VRs%uM%Agg+eCpZwx8#Jxv|UX?Y!-a znAyROX3wjHBsA1jog>FZP;p04!Rje@HD#ctYF52YM3kQDHl?(+Eb%vRV{XcHUc~$X z3`|HAM?$Pbg>W^IbNLg%K%HSMyGgHK+7cbhvz~LR@Kz(vYezw*jYR`N=D%Di#2Rpx zT1iHC(amtih_UajaI|^t>!BR?>Z|CS6n0du9Nx5Ud{pfDaVfA|e$Wj#02Qu@aR>j&j zNh8T|!Bcg52%wKEC5el1zp@&aY#$$?r@LDLGc0xSndQZpgy z@6(M7=3}|1p^F~(pXvQr+X<0iccmD1O_a3#5Ld$+uB^Jpz{9Oc@WGJ=eY#ou8wPV~ojYZ^FmP0iAz9S8=iE>EtpqvWEg zdWa@76Tq!WLhdRqiqcr9uVLa~JwlS@YFMz5EICdZ`8LeYOAUQv^$Sx}EKh`Ii>6Fl zdGO|)}L&hW&hJcAC)8?0n->un*&}u zG;Y%)Db&;{lXY+}SC`rAT1eL~%{45xtdIOcpO3?p2a!PSj>(DBgt%UH4bW|;S%oj# zgkn11v0uDe-`%nP_q>G~)mf?xs4hGBaC3KK7McB)iazN;X2Vh zDrw3Mh}(1Jjv#xq>tc$&)OWBPC}I3)ULSA&=dFVsVSDtF5YtdGLPX^xu9rl#>&Uqi zj#SZm;iY%prV$f4=v1wKKW|i=@%q7tlive?-6_xYL@j-o_^a3?)LyaYe!yjLXg%eeO;?4zk|FOpP30 ztv?z2hmMy8dQE3+REd-fc7GE#rC|}GGpp@(o|JS3 z>n)S2`I&x(5m_2O(`y}18V>`@G|=vGR4GJ+Bf|5CV@$uG_&c2Hmic%Y@LbIttiMW7 zbfqa~Q4$N6&BkeF`fe^=hM>3YOrP5BN?77FjY257I4V_Q>p%SXPmao=3}W1=)1S=u z1}ju@_1=4(X5w92sVmGdel{Nvj-BMBE5gnQvPzL+uC1c$(;rUnu)YYOjuxqDdO=BK z^h39lU;jvoW2kZ}*0^-z==WP@357Dm0u{d;RquvP0r((2dF zI-3ZR++;a@$vAA0yWh~u4;Z% z@>Lu4#_bW?EseJ2neHDuPvUCUTM~YIBt$8Z!$CJ=l%ADTcPH2@vHDjYve<1}{pIlw zKciwtwMdL=+1yZuLusKdT$;X7(MZW$`ZKu#b9eDuF^H4NG0{a&r_!CjdLzS98J{Bk z@Y9ls^LZMoTQV!I*V|SxaQ*aE=0k0fL3f;k25Cu1v9wYydnw9Lug-Kd9Fe3a5CK*t zyo>)}cPu!+BWQyk)A+~0*5(BxQ9Z>Po)i(}C3AE%@pzZwUd85|$se~$&rmpJtal@) z)TQE`EcgRo?Qwh|nbrH+LE|R@)Q-TT{~pi)IA6p1!NFqa#MruIxjPgmpxj^5{9s68 z9RjsdsO>4bR8)r^Dd(CYRb9NT};^cS` zMiu0MT)pn(Hjfc91f@1)jOt_^XrN#EvV&2`(`R?+J}0#Q{UZBKx!Lopmp*e4a|R$* zWBkh5P}Ed6gjI9n&ab*C%DA76j*@G65n1i~Q9bzlY?G$cW8a)KU{nymdyx9vh!1$% zKo=Pr{1dsh^{LF}sC)M@uCZNA^<>$151XP}-)PjN9xro24p^nw^+vgsmZ_BJ6C)!J3Bt z>?ICn{S1!s1Sp|Z@v>@>!a_&$)94lq!i}kx3*c|BWZ$qeVTvBRj~*vys`YUPNit`~ zYBX-%!XQE@(ri5;$r!w?Lxy2_L1jWrluj<#bL%y>DJ}4VkbNi#cR~Vrn!}vSx`|xX zJo0fi4fl-ItmTdIp7%;0PZt?X)oH=f4QCZuYY}*vqfZTq^Q8nfod!pQQLWr9sW0_{ zhMd1%L?($ZrjG%EE7z}=k8n7q~MUq-TT9X7>3F@ews-V(}0S)(vFE0+h3`1omn?E+}w&c$$z}$ zxa{@5317=y>1`@=gSwEEG~;CK`s(JRb!pziz4Pn$uL$Ca>RZ?D2LDT<>8WU9ztQ(k=aRKo0e%~; z^^9yXn$oZ6ZR!u9X@%mE$39RpK{j4_jozJB{%c%691^olE4 z(?Z|(Nwj{G_+}_o<#(0u^Y43Tu^!LiFnGa435M?3!?h@HJT_ws`Db3 zkN;1uN{(qf`r+=?hwQ`@d3wY}<_vyn5k>cz5;03J+=c3~<{Cz?tfbzbw z$bYVk3-MCC^_=6&G&W(~`oxJby46d&z5J**?96{dj7u)9>8z-(OI{u$s;64J3yd>% zmU{*tZ=v;zu4Y)RTH>F)WYvi$XSmG4TJKz$t?VVZIM+gVkF^D&QymO*tP4h(;Ll)&2sRoER zC1%Tyd=#&(w3GbEXSIZm$Qo+4SH#s*-DztVP(-PC3#+ z1*w&0){khZHcaq9$5<9A&SH||EFnK*&U1$hR4O!>8LXeW-eBGH_nh?NrT1734iuH8 z-uuK2z<@#~#^&112*;TzB@BoNr^*F~m6D9-;^i&q_XGx7=?Sp@i<325jOI;~^Tcqkc2EXSTZs&-W?H=bW%;*)Q?0h@swq-G zH_8m7gnHzePn=+GR#Q^AJvT*)OPl1l@NcO6kD^_BqB@Ob^2tdvti~iL{>Ny@(R5 zcVmd|F&9%Y@xCE*1Fb`Waq57o^}P&5y4j|tCh9>tXkfi46TNlqIjtao#iIrZi~n|x zC6q*~#ZO_$hOZbSj4HdLDG#<+#@f`AJA&@R^^vS5kvi+qEi|+S*a+oZaP8F?`}Pbl zkHQ_G5tIEIU~)=(TZ;l=?|ok50Kwr#2Zx%g#*|4HQ&fMZ+0VYP+|ujL^qS<|%RGSw z--1FWmjjNSFtg~AiDJuy1|2$E&nYHq+wwW6vta0j)<9KP1Av~HH`C-Gh4l0WU&$%( z293L(xWn{@h$utzB7VM5Ocz&JrAw4H`hz3S?3p3}(#-w;P*eG}p5%&Bk|`Ez(L=k% zQu-0Ia9k18$PaN(?D1S0lsqpVP-W`3+E5G%NMBCycF0;Eeda^e9_Z>h)$|!!e!9go zF+dr>3pr~XyK*Q-S2w1TsTQK>)e5L-bs0jhn=8LaWZLEPfA_YrS>6VkC+Pq zoC6PKvevIpNNhk@>G4R8+f<8k6~ki!ikwCreE|Du;yGRPNghg~jEU-@Wt&-wp7@HZ zm++>lv!sOp+ZuOV2s;BE{3Ox;Deli{(y80q=R!SK1tbROKhUAkYpgQ7Wk>TCFQOil z6qAxRa8RT$A!Cx=OPo^pn7P!I7GgsNM?e0OivGg&`#v@&A7X1p7&i?;v&;cbxfKg6=o&%U7i-O2JuNsR1nqfkz4cn}7hm<30KX zabC(jJ0mlb_>^rJ{4w65;E zmX^3DlN+;sHKBfqex6G*+_5~2akHK4B++_>4>F9sjbz%wBwa=m^Gytt&I<8^UKx%_ zKDAG5WqjB)913fgN5QGbsl14<59#^zK*iQB5c1{=3q1a zF2qPTs$b7Oi#x#=-ZZt=f5g-1qjQ9D_1qI#R_hA33vqVzaBy?YzQ)e%nm#Pnr;jFe z-~L~1i%+k_Y$H*Z-S!vDD2^UEWv-YwtM%yRP4AgAYjt>ruHJ)LvB?CuS+H&ftfc^S;bJovj#ZX1@bO&qai{%sYXa__Kv+2{0b zBY$b^y>VjLgF_XE-8)61muhnkG%xQ}w(Dkdb|v)JhNL z*vQdais-j$LgCX2^jc`>ETqie4L);`Yj;gnFqX%H`qymf(Dvw8F*qniE0$~IGfm1K z_IG#MH$d$~AmSpA#%E6)HdCY8XE-79&ROdFO~92-b6?WtMQAo zq)z6fq)Tbw(UepBeel}ZV;X2;+`m;7qEbn!#33nZ zyBH+aUIO^##>tX}ygS};kDN9m@5S+oSd@(vMa61F=hJ=wAZ9C z#|@~i8#-U{tI0%cA-4&*_}SxSdg{XgoOt*RC@jC!F*W(;$s`pG*AjB7g*s@>x%n)p zBHGiLc~L$kiZZ28`BjYCp94?PaTkq$FRlc4R6xugs!aP6UPDQ&6y=G_I!hnzHREbw z_OFgYMxbb@Go}+v{QfhXnRYNem+fauHP%LtziIUM0OLv5axMazRlqEq;BeUC>^=;R zYpV0w=#BfqUiOf(1hZ`ac?M;mG0?b$cXI#dj;dbU?#)V$V<}K1jB-4On3$8rXV8F= zP#iG%=eFMQAGh`Y_XBLt)y^a-;6 z`9ZUQ;dt}Oh&Bz*|MeCq#J@SR582poe|gn03EbAqV`5@542sMh)}qZTNDH~SY?la;HEXO96&}{T1`zYUypIM5t8_iAfzv`~X>sY^K$&v_xS2IW$j<}_K2&0( znv@yMCY`vLAg0Z<9xD=}cHu9k3 zX;tI{Lbb#r1k4lpc0s-HRpm>N!{p{rjeMaV$1mxwvdnars$+Gcv9*EGLJ$P=Ngf}p6Rh0UfG?E&)y`b#ru<>a3t=dgdV}40CcswbeBOWSf(A|3 zml}Aru^G!LFK`$BJosqDpCCQ9IX)dGQlnj~6Tk;tg@lNU5-rf#>Ye zAZWx62vu#7q?K_?fHpq9+Mr?j??AfN^$v`QvoByk0rh4I;>iLqJ~V0r4wDuO$N|d z_HJK^OhR8`O9qiq0{mcK3tgP9un!1Hb)h6f#bM zDZ0Vtx9Vq@AAor&+)HC6w`O^}4{VFp(XUVZxlnxrJR%2IQO0{M0!0{5EwTt= zu*c_Uy*jVBjw=xmB3;(A7e+)dyUtVoxkStIxR^{jYRiHH2-6SKODTJpKD+YEwC1{blw`-YT?vsOxeQGzqI!NZT3?kpz{wwiR?UC>} zO;g6e?n|F8|B__nGbC*e6)J(rjtJiK5h_BYLoVRp(Zio72yfrOtR63zv#4Z|w>bI; z@%7>Wu;a9UjPZeKquveU<=~JRaIMW(r+F|`S*q{h4_l0gu0)ivUGUt(-S_61>I?;Q z7o2Sl1X12&WeAbPn%%z_#m%9s^sveBKoyR4?PSXiu-6)4YPyvs;hZ{J@N8uGpy5dr zpW&NXX88b9O-tn?2hj5zS6JBf|6qKfW8-~`HdHApQ(@t$4SaIUbe;H~T3a(pvGNg1 zaPD3?#d0zfZWBAXL&X-S3+dK{+%=Mw_<3|kE>RIR_#Lso#W4gQ+&^?CZGRodRIu92^Z`r@CoYg)M5T<|2W4mu^f< zK@(kU)4Ep>w&tVs6ghrJ;>+9_hwgkG+nN5-yk+hm-@_u2F|jE9>pn{r(_MGC%SV^p zO}fQ~x1v0c0a}*B`bNm)Q#LQDTknrQQ*ULTGk#jn!`{iv1d^c|xcMM|V7Jy=A2S*1 z?!eNxy)793{5!dYtnXHvTXp3|?Q-q0`H%*nc#Y&m%b!16Wpa-~O*CY1-Cl>vSONLP5|L`}h{gZ^tN;Hw z`M+1o|EKGOGyDtqJ!Jw{wBxNZg@%V09QoEj?tv~1l}Ue^G#)!Z1eQa*BGnr)ua~8C zToxc{Zu$L2G3A;}l-hrjEJ-*Odii9O2^_({mNt&4*Xh{P7p`E;y~cb|M0O=hGmOQ7B6GW3BWJ$on8TZR~Xnjy2(4y1da)Aw1sQdjR>Hnr{Pa$I5 zZFG71B@K+3I#fVb!k^IlHTCSX0gH@Bn2GNZe|Bq*_8h=QB*6wkvKwe(wic8P^YiiX z6@v+`_vRmiKY^W{otXiLdw@`)!a&97Pe32BHN=ZK&4noWBVN!~tr+y4PH}@7$aNIE zeAybtQVda2(qrz$75grXaLtY-2yTLL0_>x-bJ3)CFR6YDL6~FYDx@o zf|0UbPDr^(dzNdUKg`?QQJ&$4x0T0*<>Tb%CEYT*a`iMSA1xQo0ql`g1FAkUkkILZ z3-0D4k(!;im5(4F{JST<`jqpv0OZ$&LKCY#LV!E!25&@`dg^faU@hpkzu_E%)dDOs z)=iR!k|^GD3!`_BAbHJ`hk+PSEkKmY31a-~Z_P-3z&q&CV>TE38X%Bs5b~NJ0vECz z5b#|q$3h-re4npRU7G$I5Px2?q z?7v_UZtcp9YTyk&Iau+q_-@^)9Fwv_z+))$d7F7BgOieTS*?{pt^2GlA>*|Hns3m|Gw))M_-q2k z^wextTBO&J#ITnlph+32pO2D~9-VQ1K*J{5+WWyO&JXPr&Ak>Cc%Ue|^W(B*J?UmT z@KkZB7dfL(>`kAM7<`>kM^AlvhlW{U_i%e8&b=)~+F;X`bPxVR1PBGqx(>J>iK13r zsAhVCDR;I%+r(6BLKGj8Rtv2?0wd6XZF6#Zd9dQ6)FX)NbeNbd?w}dMbSQE32iLF^ zqQ*&s8l8W`@Q7;#%H`LmT6tuBHneNysa=#bsYMmsS-1J?pFbnQe1S{Y-J7tr;S893 zX`8C!{M@N#_gAkIUbhBt;+&?)@ZY3a&fcqr=#`UL z`l8X>G*x2_Xi^=T(=9CClQf&%ErMR3pRp2=<2Zi&d}7RrEz1)yD7<~hJOz6k@4Hl? z3c|WYL_{=E5+iE8Bo zQ9YBhot4^GavszwRcMPud){C8axN=_n!c=thW zmAKY4UhwnzCU@ zfI1Rb*im>XTA{bUO+i8c8+4AHp41_kcwn?ZmlqNAYV?Q5Fl8`*B2m~bi z#PxCarq$k}E`eXNI8WU|tXFy{*$m`er%6fogp}lK68b$6Y5DFI&?>L}Un?k`!0)qz zSM+KR6Qj8zqb^5_kbsMoRoR;racxt9ebuYN7rknx9~Ti=60c|lTnn&&m3Vf=%ht*X zGq&`-;AFWQ)8N|8ovP~LzzmE#Ua5oqp$DXup3G4`E~A*;;R?Ld?dp@L8V&*BBw%Tn zXR66>`BI`maVpnEex4qK%x{bP?Sh1(1x-0s6*^K9CdC6g`BxlxU&>3!JbbGkcK@K4 z9k5{^#BAW>^dC40G4+eWTVUh%c--@|*@qsmHjDaL9k&H`*_Qp%d&h6g%DpmdM|hL^ z!pB*PlFu4ACZF3VCHjtWiJa0~=GFTWg{RU%`d-i-3rsjmzC>w&$|rmLF^e05YFurdKB zJysr=P;}#`JuXP>Xr$1nd_{cv+}J` z=G@^3Y#p#YwW;8NNz|I&2oTY6!3ZLr5EF;qimq%zH!*c(a@lJy_dm8T;%=%#!BB1+51ql`JZZ zdqSUo_#R=xH2LY-ozWr!vDI>~r_OcQA)-@Us^elTV0xs9KZ5g|Pxq193&3kMx60@T ztv}QBCE)}|*x4jSMxhg44NQmR9FfMSfMZn;q<~du_KHd+#9$V<(Zt2^8@1&-p&=XC zidwhuStl@eAtMciH_V73FYxf!I^Y27j<#9qN+{!7LJJx;@WUIE5XKJBnlY)Yc^xQ5 ndH@}2hdhur>d-+MqW|P`w|shZhkt800}yz+`njxgN@xNAreg=+ literal 28936 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 C?&OmI diff --git a/test/image/baselines/quiver_wind.png b/test/image/baselines/quiver_wind.png index ab33273e57389216324429496246a574e1072e9b..0365bd636c611d59bbb554fa7091704fa4cffc46 100644 GIT binary patch literal 39094 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 feCwaSW zWJ`vAT*HtSv-#|c-fX9ybyw59Sv_z8;Rkw#b7oDqW+_J4S$VU`CYvf9l6tZyd53Pj zbW^8SF~NG2`{Qs{->zWk`N1YB@-+7WJ7@Kmy>3=q6animQNC>N9EX#e6<_h1A1li0 z{952yFn{+_k5ApeUWehlET^t$i{b7|kBv%0dOLH9jN8)^#f?LENKZ|Ahpi)Cpm(4E z4dw8l<>jLV&zUDlqv9qfuO#fZIXzxc1-66>dfv0&Mg`Zd|7-VDMT3}$u1j3DxW{SR z`i1Bx4FheK&cuR-$V-o%(5Y#IbG)r(zP! zUHN)S`vy*14o+SlO$!;UIQC9OED4SwgJ$&cH)i@RRSX41qp@`0+ z$%(s_aV*MKCA>;cl1`gpT{(QZ|n2xa#5b!=zN=i)KI=aVcG>HoaIfqj5lKXd#&Q7vqf2jJLi3C zRdcI{6G|PrjB$=yHNtJ_ZppnGV^JfNjDu5B-TWH{Mk|{?8uUQVnd{rNJ`qs2K6a8F z-qPbDgZWB8vzA?~w}!GA^U}*Z`0A{Tj0~hb(B2oln?oIPhh4ie`d$;vfM>EOoVXIV z*THj>`?w87R8cwco{rviZb!~7D0xTtqihaZS>0*ccpcM$4_I4#?4u#IcbW_Lk(~8t z`crqlX--m4@&4(FyOD=oKe%Y-bhV$YireGM2sQ6t-ss6{vY&V#pXB7DQWNRnRj%W# z*!gKnl;LI3b^4<7WNNGC*wX&LM4B6nH7yv5ogOoSSb>0Yxev+WwdhAb(| zlK^{fm`N^3(l);cG%#`YI4V_KD1|mRs1H4`)}GOn<>6N6=5sle?n*&n#g zc4I~1>JsW#!+Zav{bVg!4g7F{3_3Kf)LS8L`l*|LN0yeUq(h4H7^X*E3~O}qxv{W0 zF0P{mG^C4YD_xR1F7}M*ZyyyrpAT*DvK`5QQ=|{c;(dVly_H|r)hud;7_f&*C3f?6XpoL99S)u zl%0rb?jJ=`>9i%SmP;Z%PV0Z6X^a0!d*4!oX`#$&ody=JT*ngJ%bf^pm? z5rYSV0PMB;uL5HM4?14lOl-LS<}^f-hu-$NIin*i2!E$s!{%>^0qM_l!T$fO89{^` zm{ew`q#s_h%^B3E+8lq1ZqSWh6!7C}?gv2Od-Er;dRYWUIBE4ZIzMT(R$#Xk9e)*& zm-%c1we3ep0wY~uR1ysPV<8cphltuPIvk&T5>4*Hi=SEshWfikgx`h+o0Mi94bt+# zUnjpjs4TwFo#^PvOTbREsQfWkgo0z!Hq)S@QZ#`F|L{}GKZaZowcigfs%9N+eq_~Z znoWn1kKH>DlO%-x{vY{5{n;w4(S2=k+Q3z7=yqO1KHve`Umr-ikwJM7t`LO?&rN|( z0hsw*dmRH~#7qv+ho_-kWb{%qb1MzOs_f+Y0o?l|7&#AZY1QH%&~tWj8U%-`XhfjL zL4i^}Ilm8mLub8iTfb?ofoRV`e>T&Ile_s4F?=+)$`l0sQy4+9n?+oitv_o?xccB% zu~=bU_4^M*D@~f~>LTi+1sfqsB+aCW7AOm>5}s zd`!fU8MWMKE_^$m!YXgy6#N!~)77CvOUig3;w(Vemkmw=P12ihwp%aEQS+e|E4v(e zuY*6`QhMT7?A8a#w*8e}PP1dhOWtLmWvFfBg~8QpP3=HocxV|pA{ORnWj!jPATK*q zwUL|sQlRF-_p+coZw7K2A6fX8>r?;e)Pq~rD(cVm;`bQvBC-5Xk5%iTRoTzEpWKYUmP|p2?EBnL?$)7bo z^lW+%t$q!!`Q$DC#9*|xItWc^b{#n_DM>^%sUs5RuR{1_qds)?o%L!mf|T;EsqeB3 zbiyDY5UEH@=B>tLH?%sgHh&A(wV!lD+GX=a8Nd<)A`e%@nX<}iPDA*Ob zrFDEkkK1`Hm-@OJE_-7+*|;>LQ2tL*ldt8v?6aB3S(jbNahOuZtKg^BBFwKyUH433 zn0oHp=XN9`(-C%_a|$I^VwRHJ0t{6;8=^SZK!3@EVw`&;^>Qs})$YhkGuaN?&jDvB zu-siL#81m|x4DDI)Gh1Us4JP>;ObK|*Ib^BkY-v6WW`Cp58YvYH zC0Xla^-c*yC!k=9Kdke$th$8sMuH^MGG>bAyd9nz*WETMN=d~siOjik1y4|6%`IT< zoyH0~8X(Vc@@R2Wp&u<1S4`wCl|x}(vs0S+?58m0nG9tg`jTGsxSv;OD(Gx|3wgDY zM{Amco8iR1Qg|I@v~?)jHAU2@sL74cy3L`#(jpHCDOK(a>qb@B#b>oRrwnhOu ztX&s9;qvAs;DnDJ(98F<9IOrg4wYvG4wDRBs%4Cq!S(R-1FQWyiX>aU@-87Me8kaj z!o($CW@P&gz)v-=;S0w?oH5I2d+nMfa4437cWRWrgY+eqooIX6j~wFP5&2xgs{b3x z|ASRId1(zKSt*zUAdUqrRfU3Z&P2goyN)S`Zs(5{(2P=#6=v<3FF23vzi;(AI#a9l zuxI#t&p}Cm6g7_r58PAW%_<<^ht$|*KY01>6-d=w<8eV}Y5Vgw0CcH4%EJ3Qm3<+r zT*JL%frCiBaU@IGlExvBG1PIt^f81sNQT$&-wb2Mc&=UhwnlM|bbXT8Z zU2O5;#myF5amA%}1p!Ru_l@_8tf7m!>|5$gXh8H$h{+){r|iiMZqY#Gy5}oeg-z-t z1Xdhd<;%yqP0<_El&WZESaeCq_wY`&aKAofgh2=Z20@}_mx}MIHS~ND2?;_q0SwU@ zsosWA3YzaaEmIuma|K>=<%>Yi*GzzxO$bR3lvep(*m@BBS9`$$vaJ|phNQ@|glzFh z{RDzYJ!qECHc?uJm(JD(p!Wne*@>u&5Tfc^(A~&{oP}$P z(EQ?X?=G0uNng#R1NBgYZ9MA}h)v>@-Nl!>c#C_Tg2}aliP9+3qv0tvM_~fY`f#!I zI@hG|d_R+PXy9?&uhj|s;Bx-&q5tpK3BS0C#ewT~d&RxTRq&^#q;)*!=sCat0aiX# AF#rGn literal 31990 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 Date: Mon, 9 Mar 2026 12:03:01 -0700 Subject: [PATCH 215/241] Nest line options under marker.line --- src/traces/quiver/attributes.js | 64 +++---------- src/traces/quiver/defaults.js | 28 +++--- src/traces/quiver/plot.js | 6 +- src/traces/quiver/style.js | 25 +++--- test/image/mocks/quiver_anchor.json | 12 +-- test/image/mocks/quiver_arrow-styling.json | 12 +-- test/image/mocks/quiver_categorical.json | 4 +- test/image/mocks/quiver_colorscale.json | 6 +- .../image/mocks/quiver_custom-colorscale.json | 8 +- test/image/mocks/quiver_multi-trace.json | 8 +- test/image/mocks/quiver_simple.json | 4 +- test/image/mocks/quiver_sizemode.json | 12 +-- test/image/mocks/quiver_wind.json | 6 +- test/image/mocks/quiver_zero-vectors.json | 4 +- test/jasmine/tests/quiver_test.js | 4 +- test/plot-schema.json | 90 ++++++------------- 16 files changed, 107 insertions(+), 186 deletions(-) diff --git a/src/traces/quiver/attributes.js b/src/traces/quiver/attributes.js index 742f31d41ee..16a6a7b68f0 100644 --- a/src/traces/quiver/attributes.js +++ b/src/traces/quiver/attributes.js @@ -4,10 +4,9 @@ var baseAttrs = require('../../plots/attributes'); var hovertemplateAttrs = require('../../plots/template_attributes').hovertemplateAttrs; var fontAttrs = require('../../plots/font_attributes'); var axisHoverFormat = require('../../plots/cartesian/axis_format_attributes').axisHoverFormat; -var dash = require('../../components/drawing/attributes').dash; - var extendFlat = require('../../lib/extend').extendFlat; var colorScaleAttrs = require('../../components/colorscale/attributes'); +var dash = require('../../components/drawing/attributes').dash; var attrs = { x: { @@ -100,54 +99,6 @@ var attrs = { description: 'Deprecated alias for `arrowsize`-based sizing. Prefer using `arrowsize`.' }, - // Line styling for arrows - line: { - color: { - valType: 'color', - dflt: '#000', - editType: 'style', - description: 'Sets the color of the arrow lines.' - }, - width: { - valType: 'number', - min: 0, - dflt: 1, - editType: 'style', - description: 'Sets the width (in px) of the arrow lines.' - }, - dash: dash, - shape: { - valType: 'enumerated', - values: ['linear', 'spline', 'hv', 'vh', 'hvh', 'vhv'], - dflt: 'linear', - editType: 'plot', - description: 'Determines the line shape.' - }, - smoothing: { - valType: 'number', - min: 0, - max: 1.3, - dflt: 1, - editType: 'plot', - description: 'Has an effect only if `shape` is set to *spline*. Sets the amount of smoothing.' - }, - simplify: { - valType: 'boolean', - dflt: true, - editType: 'plot', - description: 'Simplifies lines by removing nearly-overlapping points.' - }, - editType: 'style' - }, - - // Alias consistent with annotations; maps to line.width - arrowwidth: { - valType: 'number', - min: 0.1, - editType: 'style', - description: 'Sets the width (in px) of the arrow line (alias of `line.width`).' - }, - // Text and labels text: { valType: 'data_array', @@ -174,9 +125,20 @@ var attrs = { description: 'Sets the text font.' }), - // Marker (for colorscale-based coloring of arrows) + // Marker: color, colorscale, and line styling for arrows marker: extendFlat( { + line: { + width: { + valType: 'number', + min: 0, + dflt: 1, + editType: 'style', + description: 'Sets the width (in px) of the arrow lines.' + }, + dash: dash, + editType: 'style' + }, editType: 'calc' }, colorScaleAttrs('marker', { diff --git a/src/traces/quiver/defaults.js b/src/traces/quiver/defaults.js index 1694160d17f..7a437f91754 100644 --- a/src/traces/quiver/defaults.js +++ b/src/traces/quiver/defaults.js @@ -38,22 +38,11 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout // Arrow styling coerce('arrowsize'); coerce('arrow_scale'); // back-compat alias - coerce('arrowwidth'); coerce('hoverdistance'); - // Line styling - use coerce for proper validation - coerce('line.color', defaultColor); - // If arrowwidth is set, use it as line.width default - var arrowwidth = traceOut.arrowwidth; - if(arrowwidth !== undefined) { - coerce('line.width', arrowwidth); - } else { - coerce('line.width'); - } - coerce('line.dash'); - coerce('line.shape'); - coerce('line.smoothing'); - coerce('line.simplify'); + // Line styling under marker.line + coerce('marker.line.width'); + coerce('marker.line.dash'); // Text coerce('text'); @@ -71,13 +60,22 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout // Ensure traceOut.marker exists before colorscaleDefaults, which captures // a reference to it via npMaybe at the start of its execution. if(!traceOut.marker) traceOut.marker = {}; - coerce('marker.color'); + coerce('marker.color', defaultColor); var withColorscale = hasColorscale(traceIn, 'marker') || (traceIn.marker || {}).coloraxis; traceOut._hasColorscale = !!withColorscale; if(withColorscale) { colorscaleDefaults(traceIn, traceOut, layout, coerce, { prefix: 'marker.', cLetter: 'c' }); } + // Provide trace.line for compat with shared code (legend, getTraceColor) + var markerLine = traceOut.marker.line || {}; + var mc = traceOut.marker.color; + traceOut.line = { + width: markerLine.width, + color: Lib.isArrayOrTypedArray(mc) ? defaultColor : mc, + dash: markerLine.dash + }; + // Selection styling coerce('selected.line.color'); coerce('selected.line.width'); diff --git a/src/traces/quiver/plot.js b/src/traces/quiver/plot.js index 3e2c13ac3aa..a204a055880 100644 --- a/src/traces/quiver/plot.js +++ b/src/traces/quiver/plot.js @@ -173,11 +173,13 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition }); // Apply styling using Plotly's standard styling system - Drawing.lineGroupStyle(lineSegments, trace.line && trace.line.width, trace.line && trace.line.color, trace.line && trace.line.dash); + var marker = trace.marker || {}; + var markerLine = marker.line || {}; + var lineColor = Lib.isArrayOrTypedArray(marker.color) ? undefined : marker.color; + Drawing.lineGroupStyle(lineSegments, markerLine.width, lineColor, markerLine.dash); // If colorscale present, color arrows by marker.color or magnitude |(u,v)| if(trace._hasColorscale) { - var marker = trace.marker || {}; var colorFunc = Colorscale.makeColorScaleFuncFromTrace(marker); lineSegments.style('stroke', function(cdi) { var markerColor = marker.color; diff --git a/src/traces/quiver/style.js b/src/traces/quiver/style.js index c65dede56a9..4bcc410bd81 100644 --- a/src/traces/quiver/style.js +++ b/src/traces/quiver/style.js @@ -1,6 +1,7 @@ 'use strict'; var d3 = require('@plotly/d3'); +var Lib = require('../../lib'); var Drawing = require('../../components/drawing'); var Color = require('../../components/color'); @@ -11,16 +12,20 @@ function style(gd) { s.each(function(d) { var trace = d[0].trace; - var line = trace.line || {}; + var marker = trace.marker || {}; + var markerLine = marker.line || {}; + var lineColor = Lib.isArrayOrTypedArray(marker.color) ? undefined : marker.color; d3.select(this).selectAll('path.js-line') - .call(Drawing.lineGroupStyle, line.width, line.color, line.dash); + .call(Drawing.lineGroupStyle, markerLine.width, lineColor, markerLine.dash); }); } function styleOnSelect(gd, cd, sel) { var trace = cd[0].trace; - var line = trace.line || {}; + var marker = trace.marker || {}; + var markerLine = marker.line || {}; + var lineColor = Lib.isArrayOrTypedArray(marker.color) ? undefined : marker.color; if(!sel) return; @@ -34,24 +39,24 @@ function styleOnSelect(gd, cd, sel) { var path = d3.select(this); if(d.selected) { - var sc = selectedLine.color || line.color; - var sw = selectedLine.width !== undefined ? selectedLine.width : line.width; - Drawing.lineGroupStyle(path, sw, sc, line.dash); + var sc = selectedLine.color || lineColor; + var sw = selectedLine.width !== undefined ? selectedLine.width : markerLine.width; + Drawing.lineGroupStyle(path, sw, sc, markerLine.dash); } else { var uc = unselectedLine.color; var uw = unselectedLine.width; if(!uc) { - uc = line.color ? Color.addOpacity(line.color, DESELECTDIM) : undefined; + uc = lineColor ? Color.addOpacity(lineColor, DESELECTDIM) : undefined; } - if(uw === undefined) uw = line.width; - Drawing.lineGroupStyle(path, uw, uc, line.dash); + if(uw === undefined) uw = markerLine.width; + Drawing.lineGroupStyle(path, uw, uc, markerLine.dash); } }); Drawing.selectedTextStyle(sel.selectAll('text'), trace); } else { sel.selectAll('path.js-line') - .call(Drawing.lineGroupStyle, line.width, line.color, line.dash); + .call(Drawing.lineGroupStyle, markerLine.width, lineColor, markerLine.dash); Drawing.textPointStyle(sel.selectAll('text'), trace, gd); } } diff --git a/test/image/mocks/quiver_anchor.json b/test/image/mocks/quiver_anchor.json index c16e5e2d10d..5c9942cebb1 100644 --- a/test/image/mocks/quiver_anchor.json +++ b/test/image/mocks/quiver_anchor.json @@ -10,9 +10,9 @@ "sizemode": "scaled", "sizeref": 0.5, "anchor": "tail", - "line": { + "marker": { "color": "red", - "width": 2 + "line": {"width": 2} }, "xaxis": "x", "yaxis": "y" @@ -27,9 +27,9 @@ "sizemode": "scaled", "sizeref": 0.5, "anchor": "tip", - "line": { + "marker": { "color": "blue", - "width": 2 + "line": {"width": 2} }, "xaxis": "x2", "yaxis": "y2" @@ -44,9 +44,9 @@ "sizemode": "scaled", "sizeref": 0.5, "anchor": "center", - "line": { + "marker": { "color": "green", - "width": 2 + "line": {"width": 2} }, "xaxis": "x3", "yaxis": "y3" diff --git a/test/image/mocks/quiver_arrow-styling.json b/test/image/mocks/quiver_arrow-styling.json index 2a74a96a884..1d7e008fdd7 100644 --- a/test/image/mocks/quiver_arrow-styling.json +++ b/test/image/mocks/quiver_arrow-styling.json @@ -11,9 +11,9 @@ "sizeref": 0.5, "arrowsize": 0.5, "anchor": "tail", - "line": { + "marker": { "color": "red", - "width": 1 + "line": {"width": 1} } }, { @@ -27,9 +27,9 @@ "sizeref": 0.5, "arrowsize": 1.0, "anchor": "tail", - "line": { + "marker": { "color": "blue", - "width": 2 + "line": {"width": 2} } }, { @@ -43,9 +43,9 @@ "sizeref": 0.5, "arrowsize": 2.0, "anchor": "tail", - "line": { + "marker": { "color": "green", - "width": 3 + "line": {"width": 3} } } ], diff --git a/test/image/mocks/quiver_categorical.json b/test/image/mocks/quiver_categorical.json index b2edadee492..5dcd3de9f23 100644 --- a/test/image/mocks/quiver_categorical.json +++ b/test/image/mocks/quiver_categorical.json @@ -9,8 +9,8 @@ "sizemode": "scaled", "sizeref": 0.5, "anchor": "tail", - "line": { - "width": 2 + "marker": { + "line": {"width": 2} } } ], diff --git a/test/image/mocks/quiver_colorscale.json b/test/image/mocks/quiver_colorscale.json index 897cb5cca51..9519c5e4196 100644 --- a/test/image/mocks/quiver_colorscale.json +++ b/test/image/mocks/quiver_colorscale.json @@ -14,10 +14,8 @@ "showscale": true, "colorbar": { "title": {"text": "Magnitude"} - } - }, - "line": { - "width": 2 + }, + "line": {"width": 2} } } ], diff --git a/test/image/mocks/quiver_custom-colorscale.json b/test/image/mocks/quiver_custom-colorscale.json index 9cf8854a094..f1cf7dc2bc1 100644 --- a/test/image/mocks/quiver_custom-colorscale.json +++ b/test/image/mocks/quiver_custom-colorscale.json @@ -17,14 +17,12 @@ "colorbar": { "title": {"text": "Custom Field"}, "x": 1.02 - } + }, + "line": {"width": 2} }, "sizemode": "scaled", "sizeref": 0.25, - "anchor": "tail", - "line": { - "width": 2 - } + "anchor": "tail" } ], "layout": { diff --git a/test/image/mocks/quiver_multi-trace.json b/test/image/mocks/quiver_multi-trace.json index f6332936b93..0b90fb70663 100644 --- a/test/image/mocks/quiver_multi-trace.json +++ b/test/image/mocks/quiver_multi-trace.json @@ -10,9 +10,9 @@ "sizemode": "scaled", "sizeref": 0.4, "anchor": "tail", - "line": { + "marker": { "color": "red", - "width": 2 + "line": {"width": 2} } }, { @@ -25,9 +25,9 @@ "sizemode": "scaled", "sizeref": 0.4, "anchor": "tail", - "line": { + "marker": { "color": "blue", - "width": 2 + "line": {"width": 2} } } ], diff --git a/test/image/mocks/quiver_simple.json b/test/image/mocks/quiver_simple.json index b7c0aa6d581..c3e72e8c85f 100644 --- a/test/image/mocks/quiver_simple.json +++ b/test/image/mocks/quiver_simple.json @@ -12,8 +12,8 @@ "sizemode": "scaled", "sizeref": 0.5, "anchor": "tail", - "line": { - "width": 2 + "marker": { + "line": {"width": 2} } } ], diff --git a/test/image/mocks/quiver_sizemode.json b/test/image/mocks/quiver_sizemode.json index 7b412afaded..654dbc8ed5c 100644 --- a/test/image/mocks/quiver_sizemode.json +++ b/test/image/mocks/quiver_sizemode.json @@ -10,9 +10,9 @@ "sizemode": "scaled", "sizeref": 0.3, "anchor": "tail", - "line": { + "marker": { "color": "red", - "width": 2 + "line": {"width": 2} }, "xaxis": "x", "yaxis": "y" @@ -27,9 +27,9 @@ "sizemode": "absolute", "sizeref": 0.3, "anchor": "tail", - "line": { + "marker": { "color": "blue", - "width": 2 + "line": {"width": 2} }, "xaxis": "x2", "yaxis": "y2" @@ -44,9 +44,9 @@ "sizemode": "raw", "sizeref": 1, "anchor": "tail", - "line": { + "marker": { "color": "green", - "width": 2 + "line": {"width": 2} }, "xaxis": "x3", "yaxis": "y3" diff --git a/test/image/mocks/quiver_wind.json b/test/image/mocks/quiver_wind.json index cea3a550e17..8d5ea5d8a08 100644 --- a/test/image/mocks/quiver_wind.json +++ b/test/image/mocks/quiver_wind.json @@ -32,10 +32,8 @@ "colorbar": { "title": {"text": "Speed"}, "x": 1.02 - } - }, - "line": { - "width": 1.5 + }, + "line": {"width": 1.5} } } ], diff --git a/test/image/mocks/quiver_zero-vectors.json b/test/image/mocks/quiver_zero-vectors.json index b7384edcb40..9c2af92d228 100644 --- a/test/image/mocks/quiver_zero-vectors.json +++ b/test/image/mocks/quiver_zero-vectors.json @@ -10,9 +10,9 @@ "sizemode": "scaled", "sizeref": 0.5, "anchor": "tail", - "line": { + "marker": { "color": "purple", - "width": 2 + "line": {"width": 2} } } ], diff --git a/test/jasmine/tests/quiver_test.js b/test/jasmine/tests/quiver_test.js index 6c829a7278e..7c45a451d77 100644 --- a/test/jasmine/tests/quiver_test.js +++ b/test/jasmine/tests/quiver_test.js @@ -250,7 +250,7 @@ describe('Test quiver interactions', function() { y: [1, 2], u: [1, 0], v: [0, 1], - line: {color: 'red'} + marker: {color: 'red'} }, { type: 'quiver', name: 'trace B', @@ -258,7 +258,7 @@ describe('Test quiver interactions', function() { y: [3, 4], u: [-1, 0], v: [0, -1], - line: {color: 'blue'} + marker: {color: 'blue'} }], { margin: {l: 0, t: 0, r: 0, b: 0}, width: 400, diff --git a/test/plot-schema.json b/test/plot-schema.json index d5fe0d3b366..4927c2428f6 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -57651,12 +57651,6 @@ "min": 0.3, "valType": "number" }, - "arrowwidth": { - "description": "Sets the width (in px) of the arrow line (alias of `line.width`).", - "editType": "style", - "min": 0.1, - "valType": "number" - }, "customdata": { "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements", "editType": "calc", @@ -58050,65 +58044,6 @@ "min": 0, "valType": "number" }, - "line": { - "color": { - "description": "Sets the color of the arrow lines.", - "dflt": "#000", - "editType": "style", - "valType": "color" - }, - "dash": { - "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", - "dflt": "solid", - "editType": "style", - "valType": "string", - "values": [ - "solid", - "dot", - "dash", - "longdash", - "dashdot", - "longdashdot" - ] - }, - "editType": "style", - "role": "object", - "shape": { - "description": "Determines the line shape.", - "dflt": "linear", - "editType": "plot", - "valType": "enumerated", - "values": [ - "linear", - "spline", - "hv", - "vh", - "hvh", - "vhv" - ] - }, - "simplify": { - "description": "Simplifies lines by removing nearly-overlapping points.", - "dflt": true, - "editType": "plot", - "valType": "boolean" - }, - "smoothing": { - "description": "Has an effect only if `shape` is set to *spline*. Sets the amount of smoothing.", - "dflt": 1, - "editType": "plot", - "max": 1.3, - "min": 0, - "valType": "number" - }, - "width": { - "description": "Sets the width (in px) of the arrow lines.", - "dflt": 1, - "editType": "style", - "min": 0, - "valType": "number" - } - }, "marker": { "autocolorscale": { "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", @@ -58784,6 +58719,31 @@ "valType": "string" }, "editType": "calc", + "line": { + "dash": { + "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).", + "dflt": "solid", + "editType": "style", + "valType": "string", + "values": [ + "solid", + "dot", + "dash", + "longdash", + "dashdot", + "longdashdot" + ] + }, + "editType": "style", + "role": "object", + "width": { + "description": "Sets the width (in px) of the arrow lines.", + "dflt": 1, + "editType": "style", + "min": 0, + "valType": "number" + } + }, "reversescale": { "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.", "dflt": false, From 37a6cd2104571fa00546816a2f13fbc437da33f6 Mon Sep 17 00:00:00 2001 From: degzhaus Date: Mon, 9 Mar 2026 12:05:32 -0700 Subject: [PATCH 216/241] Move arrowheadsize under marker --- src/traces/quiver/attributes.js | 30 +++++++--------------- src/traces/quiver/defaults.js | 3 +-- src/traces/quiver/plot.js | 7 ++--- test/image/mocks/quiver_arrow-styling.json | 6 ++--- 4 files changed, 17 insertions(+), 29 deletions(-) diff --git a/src/traces/quiver/attributes.js b/src/traces/quiver/attributes.js index 16a6a7b68f0..0c7dd04745f 100644 --- a/src/traces/quiver/attributes.js +++ b/src/traces/quiver/attributes.js @@ -7,6 +7,7 @@ var axisHoverFormat = require('../../plots/cartesian/axis_format_attributes').ax var extendFlat = require('../../lib/extend').extendFlat; var colorScaleAttrs = require('../../components/colorscale/attributes'); var dash = require('../../components/drawing/attributes').dash; +var annotationAttrs = require('../../components/annotations/attributes'); var attrs = { x: { @@ -79,26 +80,6 @@ var attrs = { uhoverformat: axisHoverFormat('u', 'noDate'), vhoverformat: axisHoverFormat('v', 'noDate'), - // Arrowhead sizing, consistent with annotations API naming - arrowsize: { - valType: 'number', - min: 0.3, - dflt: 1, - editType: 'calc', - description: [ - 'Scales the size of the arrow head relative to a base size.', - 'Higher values produce larger heads.' - ].join(' ') - }, - // Back-compat alias - arrow_scale: { - valType: 'number', - min: 0, - max: 1, - editType: 'calc', - description: 'Deprecated alias for `arrowsize`-based sizing. Prefer using `arrowsize`.' - }, - // Text and labels text: { valType: 'data_array', @@ -125,9 +106,16 @@ var attrs = { description: 'Sets the text font.' }), - // Marker: color, colorscale, and line styling for arrows + // Marker: color, colorscale, arrowhead sizing, and line styling for arrows marker: extendFlat( { + arrowsize: extendFlat({}, annotationAttrs.arrowsize, { + editType: 'calc', + description: [ + 'Sets the size of the arrow head relative to `marker.line.width`.', + 'A value of 1 (default) gives a head about 3x as wide as the line.' + ].join(' ') + }), line: { width: { valType: 'number', diff --git a/src/traces/quiver/defaults.js b/src/traces/quiver/defaults.js index 7a437f91754..43016332025 100644 --- a/src/traces/quiver/defaults.js +++ b/src/traces/quiver/defaults.js @@ -36,8 +36,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout coerce('anchor'); // Arrow styling - coerce('arrowsize'); - coerce('arrow_scale'); // back-compat alias + coerce('marker.arrowsize'); coerce('hoverdistance'); // Line styling under marker.line diff --git a/src/traces/quiver/plot.js b/src/traces/quiver/plot.js index a204a055880..8cfdc4795ac 100644 --- a/src/traces/quiver/plot.js +++ b/src/traces/quiver/plot.js @@ -102,9 +102,10 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition var pxPerY = Math.abs(ya.c2p(cdi.y + 1) - ya.c2p(cdi.y)); var scaleRatio = (pxPerX && pxPerY) ? (pxPerY / pxPerX) : 1; var baseHeadScale = 0.2; - var arrowScale = (trace.arrowsize !== undefined) - ? (baseHeadScale * trace.arrowsize) - : (trace.arrow_scale !== undefined ? trace.arrow_scale : baseHeadScale); + var markerArrowsize = (trace.marker || {}).arrowsize; + var arrowScale = (markerArrowsize !== undefined) + ? (baseHeadScale * markerArrowsize) + : baseHeadScale; // Fixed arrowhead wedge angle (radians). // Arrow direction is fully determined by u,v (see barbAng below); // this constant only controls the opening of the head. diff --git a/test/image/mocks/quiver_arrow-styling.json b/test/image/mocks/quiver_arrow-styling.json index 1d7e008fdd7..db51a45a8f3 100644 --- a/test/image/mocks/quiver_arrow-styling.json +++ b/test/image/mocks/quiver_arrow-styling.json @@ -9,10 +9,10 @@ "v": [1, 1, 1], "sizemode": "scaled", "sizeref": 0.5, - "arrowsize": 0.5, "anchor": "tail", "marker": { "color": "red", + "arrowsize": 0.5, "line": {"width": 1} } }, @@ -25,10 +25,10 @@ "v": [1, 1, 1], "sizemode": "scaled", "sizeref": 0.5, - "arrowsize": 1.0, "anchor": "tail", "marker": { "color": "blue", + "arrowsize": 1.0, "line": {"width": 2} } }, @@ -41,10 +41,10 @@ "v": [1, 1, 1], "sizemode": "scaled", "sizeref": 0.5, - "arrowsize": 2.0, "anchor": "tail", "marker": { "color": "green", + "arrowsize": 2.0, "line": {"width": 3} } } From c40a5e0eac30a134fba95db18ff03e87a7b3d720 Mon Sep 17 00:00:00 2001 From: degzhaus Date: Mon, 9 Mar 2026 12:14:00 -0700 Subject: [PATCH 217/241] Run npm run schema --- test/plot-schema.json | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/test/plot-schema.json b/test/plot-schema.json index 4927c2428f6..75647027b32 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -57637,20 +57637,6 @@ "middle" ] }, - "arrow_scale": { - "description": "Deprecated alias for `arrowsize`-based sizing. Prefer using `arrowsize`.", - "editType": "calc", - "max": 1, - "min": 0, - "valType": "number" - }, - "arrowsize": { - "description": "Scales the size of the arrow head relative to a base size. Higher values produce larger heads.", - "dflt": 1, - "editType": "calc", - "min": 0.3, - "valType": "number" - }, "customdata": { "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements", "editType": "calc", @@ -58045,6 +58031,13 @@ "valType": "number" }, "marker": { + "arrowsize": { + "description": "Sets the size of the arrow head relative to `marker.line.width`. A value of 1 (default) gives a head about 3x as wide as the line.", + "dflt": 1, + "editType": "calc", + "min": 0.3, + "valType": "number" + }, "autocolorscale": { "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", "dflt": true, From fcb5701d28221cab97391da24f891adbc257881a Mon Sep 17 00:00:00 2001 From: degzhaus Date: Mon, 9 Mar 2026 12:23:24 -0700 Subject: [PATCH 218/241] Regenerate quiver custom colorscale --- .../baselines/quiver_custom-colorscale.png | Bin 27483 -> 27324 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/test/image/baselines/quiver_custom-colorscale.png b/test/image/baselines/quiver_custom-colorscale.png index 4250a406e67ad204a73034aaac209c3f717e15a3..79108fa949d485a60c00200375d765a709398941 100644 GIT binary patch literal 27324 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 E0GXC1y8r+H literal 27483 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 Date: Mon, 9 Mar 2026 12:44:22 -0700 Subject: [PATCH 219/241] Import scatter attributes for x, y coercion --- src/traces/quiver/attributes.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/traces/quiver/attributes.js b/src/traces/quiver/attributes.js index 0c7dd04745f..d53ac5e0239 100644 --- a/src/traces/quiver/attributes.js +++ b/src/traces/quiver/attributes.js @@ -8,6 +8,7 @@ var extendFlat = require('../../lib/extend').extendFlat; var colorScaleAttrs = require('../../components/colorscale/attributes'); var dash = require('../../components/drawing/attributes').dash; var annotationAttrs = require('../../components/annotations/attributes'); +var scatterAttrs = require('../scatter/attributes'); var attrs = { x: { @@ -16,12 +17,16 @@ var attrs = { anim: true, description: 'Sets the x coordinates of the arrow locations.' }, + x0: scatterAttrs.x0, + dx: scatterAttrs.dx, y: { valType: 'data_array', editType: 'calc+clearAxisTypes', anim: true, description: 'Sets the y coordinates of the arrow locations.' }, + y0: scatterAttrs.y0, + dy: scatterAttrs.dy, u: { valType: 'data_array', editType: 'calc', From e46104b9435293d0b21d023a293afc7d9ca21052 Mon Sep 17 00:00:00 2001 From: degzhaus Date: Mon, 9 Mar 2026 12:46:06 -0700 Subject: [PATCH 220/241] Run npm run schema --- test/plot-schema.json | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/test/plot-schema.json b/test/plot-schema.json index 75647027b32..2d1e47073b0 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -57647,6 +57647,20 @@ "editType": "none", "valType": "string" }, + "dx": { + "anim": true, + "description": "Sets the x coordinate step. See `x0` for more info.", + "dflt": 1, + "editType": "calc", + "valType": "number" + }, + "dy": { + "anim": true, + "description": "Sets the y coordinate step. See `y0` for more info.", + "dflt": 1, + "editType": "calc", + "valType": "number" + }, "hoverdistance": { "description": "Maximum distance (in pixels) to look for nearby arrows on hover.", "dflt": 20, @@ -59112,6 +59126,13 @@ "editType": "calc+clearAxisTypes", "valType": "data_array" }, + "x0": { + "anim": true, + "description": "Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step.", + "dflt": 0, + "editType": "calc+clearAxisTypes", + "valType": "any" + }, "xaxis": { "description": "Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on.", "dflt": "x", @@ -59135,6 +59156,13 @@ "editType": "calc+clearAxisTypes", "valType": "data_array" }, + "y0": { + "anim": true, + "description": "Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step.", + "dflt": 0, + "editType": "calc+clearAxisTypes", + "valType": "any" + }, "yaxis": { "description": "Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on.", "dflt": "y", From 48e4e7e7c7d41eea94539d8c4e1cabf2342bc154 Mon Sep 17 00:00:00 2001 From: degzhaus Date: Mon, 6 Apr 2026 14:10:03 -0700 Subject: [PATCH 221/241] Passing tests --- src/traces/quiver/defaults.js | 7 +++++++ test/jasmine/tests/lib_test.js | 5 +++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/traces/quiver/defaults.js b/src/traces/quiver/defaults.js index 43016332025..cd4199f6ebc 100644 --- a/src/traces/quiver/defaults.js +++ b/src/traces/quiver/defaults.js @@ -11,6 +11,13 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout return Lib.coerce(traceIn, traceOut, attributes, attr, dflt); } + // Quiver requires explicit x and y inputs (no x0/dx or y0/dy fallback). + // Check presence on traceIn and let handleXYDefaults validate lengths. + if(traceIn.x === undefined || traceIn.y === undefined) { + traceOut.visible = false; + return; + } + var len = handleXYDefaults(traceIn, traceOut, layout, coerce); if(!len) { traceOut.visible = false; diff --git a/test/jasmine/tests/lib_test.js b/test/jasmine/tests/lib_test.js index fe1f6b71f0c..ff4a69f1c55 100644 --- a/test/jasmine/tests/lib_test.js +++ b/test/jasmine/tests/lib_test.js @@ -2729,8 +2729,9 @@ describe('Test lib.js:', function () { for (var i = 0; i < 15; i++) { Lib.hovertemplateString({ fallback: '', template: '%{idontexist}' }); } - // Expect 11 since the suppression warning also calls Lib.warn - expect(Lib.warn.calls.count()).toBe(11); + // Depending on prior tests, the suppression warning may already be reached once. + expect(Lib.warn.calls.count()).toBeGreaterThanOrEqual(10); + expect(Lib.warn.calls.count()).toBeLessThanOrEqual(11); }); // This test must come after the warning count since it will affect the count From a2799e2a4a938c6498a0f4e7f7a8661602d9a91f Mon Sep 17 00:00:00 2001 From: degzhaus Date: Tue, 23 Jun 2026 18:32:40 -0700 Subject: [PATCH 222/241] Adjust axis ranges automatically to include full length of arrows --- src/traces/quiver/calc.js | 88 +++++++++++++++++++------- src/traces/quiver/cross_trace_calc.js | 89 +++++++++++++++++++++++++++ src/traces/quiver/index.js | 1 + test/image/mocks/quiver_anchor.json | 30 ++++----- test/image/mocks/quiver_sizemode.json | 30 ++++----- 5 files changed, 185 insertions(+), 53 deletions(-) create mode 100644 src/traces/quiver/cross_trace_calc.js diff --git a/src/traces/quiver/calc.js b/src/traces/quiver/calc.js index c7a13bca831..6452810268a 100644 --- a/src/traces/quiver/calc.js +++ b/src/traces/quiver/calc.js @@ -67,15 +67,33 @@ module.exports = function calc(gd, trace) { // Store maxNorm for use by plot.js trace._maxNorm = normMax; - // Compute arrow endpoints for axis expansion. - // We approximate with scaleRatio=1 (exact for square plots, - // close enough for autorange padding in non-square plots). + // Compute arrow geometry for axis autorange. + // + // The v-component is drawn directly in data space, so each arrow's y-tip is + // exact and we expand the y-axis here with the tip coordinates. The + // u-component is stretched by scaleRatio = pxPerY / pxPerX in plot.js so + // that arrows keep their on-screen angle, which makes an arrow's *horizontal + // pixel extent* depend on the y-scale rather than the x-scale: + // |dx_px| = pxPerY * baseLen * |unitx| + // We therefore expand the x-axis with pixel padding (ppad) rather than + // data-space tips (whose data width would depend on the very x-range we are + // trying to compute). Since that ppad depends on the y-scale - which depends + // on the combined y-extent of every quiver trace sharing the axis - the + // x-axis expansion is finished in crossTraceCalc; here we stash the per-point + // geometry and y-bounds it needs. var sizemode = trace.sizemode || 'scaled'; var sizeref = (trace.sizeref !== undefined) ? trace.sizeref : (sizemode === 'raw' ? 1 : 0.5); var anchor = trace.anchor || 'tail'; + var isTip = anchor === 'tip'; + var isCenter = anchor === 'cm' || anchor === 'center' || anchor === 'middle'; - var allX = new Array(len * 2); - var allY = new Array(len * 2); + var baseX = new Array(len); + var tipsY = new Array(len * 2); + var geomLen = new Array(len); + var geomUx = new Array(len); + + var yMin = Infinity; + var yMax = -Infinity; for(var k = 0; k < len; k++) { var xk = xVals[k]; @@ -93,33 +111,57 @@ module.exports = function calc(gd, trace) { var unitxk = nk ? (uk / nk) : 0; var unityk = nk ? (vk / nk) : 0; - var dxk = unitxk * baseLen; var dyk = unityk * baseLen; - if(anchor === 'tip') { - allX[k * 2] = xk; - allY[k * 2] = yk; - allX[k * 2 + 1] = xk - dxk; - allY[k * 2 + 1] = yk - dyk; - } else if(anchor === 'cm' || anchor === 'center' || anchor === 'middle') { - allX[k * 2] = xk - dxk / 2; - allY[k * 2] = yk - dyk / 2; - allX[k * 2 + 1] = xk + dxk / 2; - allY[k * 2 + 1] = yk + dyk / 2; + geomLen[k] = baseLen; + geomUx[k] = unitxk; + baseX[k] = xk; + + var y0, y1; + if(isTip) { + y1 = yk; + y0 = yk - dyk; + } else if(isCenter) { + y0 = yk - dyk / 2; + y1 = yk + dyk / 2; } else { // tail (default) - allX[k * 2] = xk; - allY[k * 2] = yk; - allX[k * 2 + 1] = xk + dxk; - allY[k * 2 + 1] = yk + dyk; + y0 = yk; + y1 = yk + dyk; + } + tipsY[k * 2] = y0; + tipsY[k * 2 + 1] = y1; + + if(isNumeric(y0)) { + if(y0 < yMin) yMin = y0; + if(y0 > yMax) yMax = y0; + } + if(isNumeric(y1)) { + if(y1 < yMin) yMin = y1; + if(y1 > yMax) yMax = y1; } } - // Expand axes to include both base positions and arrow tips xa._minDtick = 0; ya._minDtick = 0; - trace._extremes[xa._id] = Axes.findExtremes(xa, allX, {padded: true}); - trace._extremes[ya._id] = Axes.findExtremes(ya, allY, {padded: true}); + // y-axis: arrow tips are exact in data space. + trace._extremes[ya._id] = Axes.findExtremes(ya, tipsY, {padded: true}); + + // x-axis: provisional bound from the base positions only; crossTraceCalc + // replaces this with a ppad-based expansion once the combined y-scale across + // all quiver traces on this axis is known. + trace._extremes[xa._id] = Axes.findExtremes(xa, baseX, {padded: true}); + + // Geometry needed to finish the x-axis expansion in crossTraceCalc. + trace._quiver = { + baseX: baseX, + geomLen: geomLen, + geomUx: geomUx, + isTip: isTip, + isCenter: isCenter, + yMin: yMin, + yMax: yMax + }; // Merge text arrays into calcdata for Drawing.textPointStyle Lib.mergeArray(trace.text, cd, 'tx'); diff --git a/src/traces/quiver/cross_trace_calc.js b/src/traces/quiver/cross_trace_calc.js new file mode 100644 index 00000000000..a4879155961 --- /dev/null +++ b/src/traces/quiver/cross_trace_calc.js @@ -0,0 +1,89 @@ +'use strict'; + +var Axes = require('../../plots/cartesian/axes'); + +/** + * Finish quiver x-axis autorange. + * + * An arrow's horizontal pixel extent is `pxPerY * baseLen * |unitx|` (see + * calc.js and plot.js), so it is governed by the y-scale, not the x-scale. The + * y-scale in turn depends on the combined y-extent of every quiver trace sharing + * the axis, which is only known here - after all per-trace calc() runs. We + * estimate pxPerY from that combined extent and expand the x-axis with pixel + * padding so the full arrows stay visible without a hard-coded range. + * + * Runs once per cartesian subplot (see Plots.doCrossTraceCalc). + */ +module.exports = function crossTraceCalc(gd, plotinfo) { + var xa = plotinfo.xaxis; + var ya = plotinfo.yaxis; + var fullData = gd._fullData; + + var traces = []; + var yMin = Infinity; + var yMax = -Infinity; + + for(var i = 0; i < fullData.length; i++) { + var trace = fullData[i]; + if( + trace.visible === true && + trace.type === 'quiver' && + trace.xaxis === xa._id && + trace.yaxis === ya._id && + trace._quiver + ) { + traces.push(trace); + var q = trace._quiver; + if(q.yMin < yMin) yMin = q.yMin; + if(q.yMax > yMax) yMax = q.yMax; + } + } + + if(!traces.length) return; + + // Estimate the final y-scale (pixels per y data unit). The y-axis only gets + // the standard 5%-per-side autorange padding, so its span ends up ~ span/0.9; + // a coincident set of points falls back to the autorange default span of 2. + // Using the quiver-only y-extent is a safe estimate: any extra (e.g. from + // other traces) can only widen the y-range, lowering pxPerY and leaving a + // little extra room on x rather than clipping. + ya.setScale(); + var yDataSpan = (yMax > yMin) ? (yMax - yMin) : 0; + var yEstSpan = yDataSpan > 0 ? (yDataSpan / 0.9) : 2; + var pxPerY = (ya._length && yEstSpan) ? (ya._length / yEstSpan) : 0; + + for(var t = 0; t < traces.length; t++) { + var tr = traces[t]; + var q2 = tr._quiver; + var baseX = q2.baseX; + var geomLen = q2.geomLen; + var geomUx = q2.geomUx; + var len = baseX.length; + + var ppadplus = new Array(len); + var ppadminus = new Array(len); + + for(var j = 0; j < len; j++) { + var xPixExt = pxPerY * geomLen[j] * Math.abs(geomUx[j]); + var plus = 0; + var minus = 0; + if(q2.isCenter) { + plus = minus = xPixExt / 2; + } else if(q2.isTip) { + if(geomUx[j] >= 0) minus = xPixExt; + else plus = xPixExt; + } else { // tail + if(geomUx[j] >= 0) plus = xPixExt; + else minus = xPixExt; + } + ppadplus[j] = plus; + ppadminus[j] = minus; + } + + tr._extremes[xa._id] = Axes.findExtremes(xa, baseX, { + padded: true, + ppadplus: ppadplus, + ppadminus: ppadminus + }); + } +}; diff --git a/src/traces/quiver/index.js b/src/traces/quiver/index.js index 42d17716358..b4183ebac0e 100644 --- a/src/traces/quiver/index.js +++ b/src/traces/quiver/index.js @@ -11,6 +11,7 @@ module.exports = { attributes: require('./attributes'), supplyDefaults: require('./defaults'), calc: require('./calc'), + crossTraceCalc: require('./cross_trace_calc'), plot: require('./plot'), style: require('./style').style, styleOnSelect: require('./style').styleOnSelect, diff --git a/test/image/mocks/quiver_anchor.json b/test/image/mocks/quiver_anchor.json index 5c9942cebb1..db647e0059a 100644 --- a/test/image/mocks/quiver_anchor.json +++ b/test/image/mocks/quiver_anchor.json @@ -3,12 +3,12 @@ { "type": "quiver", "name": "tail anchor", - "x": [1, 1, 1], - "y": [0, 0, 0], - "u": [1, 0, -1], - "v": [1, 1, 1], + "x": [0, 1, 2, 0, 1, 2, 0, 1, 2], + "y": [0, 0, 0, 1, 1, 1, 2, 2, 2], + "u": [1, 1, 1, 1, 1, 1, 1, 1, 1], + "v": [1, 1, 1, 1, 1, 1, 1, 1, 1], "sizemode": "scaled", - "sizeref": 0.5, + "sizeref": 0.4, "anchor": "tail", "marker": { "color": "red", @@ -20,12 +20,12 @@ { "type": "quiver", "name": "tip anchor", - "x": [1, 1, 1], - "y": [1, 1, 1], - "u": [1, 0, -1], - "v": [1, 1, 1], + "x": [0, 1, 2, 0, 1, 2, 0, 1, 2], + "y": [0, 0, 0, 1, 1, 1, 2, 2, 2], + "u": [1, 1, 1, 1, 1, 1, 1, 1, 1], + "v": [1, 1, 1, 1, 1, 1, 1, 1, 1], "sizemode": "scaled", - "sizeref": 0.5, + "sizeref": 0.4, "anchor": "tip", "marker": { "color": "blue", @@ -37,12 +37,12 @@ { "type": "quiver", "name": "center anchor", - "x": [1, 1, 1], - "y": [2, 2, 2], - "u": [1, 0, -1], - "v": [1, 1, 1], + "x": [0, 1, 2, 0, 1, 2, 0, 1, 2], + "y": [0, 0, 0, 1, 1, 1, 2, 2, 2], + "u": [1, 1, 1, 1, 1, 1, 1, 1, 1], + "v": [1, 1, 1, 1, 1, 1, 1, 1, 1], "sizemode": "scaled", - "sizeref": 0.5, + "sizeref": 0.4, "anchor": "center", "marker": { "color": "green", diff --git a/test/image/mocks/quiver_sizemode.json b/test/image/mocks/quiver_sizemode.json index 654dbc8ed5c..f7e1d1cb4c9 100644 --- a/test/image/mocks/quiver_sizemode.json +++ b/test/image/mocks/quiver_sizemode.json @@ -3,12 +3,12 @@ { "type": "quiver", "name": "scaled", - "x": [0, 1, 2], - "y": [0, 0, 0], - "u": [1, 2, 3], - "v": [1, 1, 1], + "x": [0, 1, 2, 0, 1, 2, 0, 1, 2], + "y": [0, 0, 0, 1, 1, 1, 2, 2, 2], + "u": [1, 2, 3, 1, 2, 3, 1, 2, 3], + "v": [1, 1, 1, 1, 1, 1, 1, 1, 1], "sizemode": "scaled", - "sizeref": 0.3, + "sizeref": 0.4, "anchor": "tail", "marker": { "color": "red", @@ -20,12 +20,12 @@ { "type": "quiver", "name": "absolute", - "x": [0, 1, 2], - "y": [1, 1, 1], - "u": [1, 2, 3], - "v": [1, 1, 1], + "x": [0, 1, 2, 0, 1, 2, 0, 1, 2], + "y": [0, 0, 0, 1, 1, 1, 2, 2, 2], + "u": [1, 2, 3, 1, 2, 3, 1, 2, 3], + "v": [1, 1, 1, 1, 1, 1, 1, 1, 1], "sizemode": "absolute", - "sizeref": 0.3, + "sizeref": 0.15, "anchor": "tail", "marker": { "color": "blue", @@ -37,12 +37,12 @@ { "type": "quiver", "name": "raw", - "x": [0, 1, 2], - "y": [2, 2, 2], - "u": [0.3, 0.6, 0.9], - "v": [0.3, 0.3, 0.3], + "x": [0, 1, 2, 0, 1, 2, 0, 1, 2], + "y": [0, 0, 0, 1, 1, 1, 2, 2, 2], + "u": [0.3, 0.6, 0.9, 0.3, 0.6, 0.9, 0.3, 0.6, 0.9], + "v": [0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3], "sizemode": "raw", - "sizeref": 1, + "sizeref": 0.6, "anchor": "tail", "marker": { "color": "green", From 334486499244ce165b2413902a3dec3dda849e00 Mon Sep 17 00:00:00 2001 From: degzhaus Date: Tue, 23 Jun 2026 18:45:56 -0700 Subject: [PATCH 223/241] Honor colorscale --- src/traces/quiver/plot.js | 21 ++------ src/traces/quiver/style.js | 66 ++++++++++++++++++++----- test/image/mocks/quiver_colorscale.json | 1 + 3 files changed, 59 insertions(+), 29 deletions(-) diff --git a/src/traces/quiver/plot.js b/src/traces/quiver/plot.js index 8cfdc4795ac..69b962bfd29 100644 --- a/src/traces/quiver/plot.js +++ b/src/traces/quiver/plot.js @@ -4,7 +4,7 @@ var d3 = require('@plotly/d3'); var Lib = require('../../lib'); var Drawing = require('../../components/drawing'); -var Colorscale = require('../../components/colorscale'); +var colorscaleStroke = require('./style').colorscaleStroke; module.exports = function plot(gd, plotinfo, cdscatter, scatterLayer, transitionOpts, makeOnCompleteCallback) { var join, onComplete; @@ -179,22 +179,9 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition var lineColor = Lib.isArrayOrTypedArray(marker.color) ? undefined : marker.color; Drawing.lineGroupStyle(lineSegments, markerLine.width, lineColor, markerLine.dash); - // If colorscale present, color arrows by marker.color or magnitude |(u,v)| - if(trace._hasColorscale) { - var colorFunc = Colorscale.makeColorScaleFuncFromTrace(marker); - lineSegments.style('stroke', function(cdi) { - var markerColor = marker.color; - var value; - if(Lib.isArrayOrTypedArray(markerColor) && markerColor.length > cdi.i && isFinite(markerColor[cdi.i])) { - value = markerColor[cdi.i]; - } else { - var uVal = (trace.u && trace.u[cdi.i]) || 0; - var vVal = (trace.v && trace.v[cdi.i]) || 0; - value = Math.sqrt(uVal * uVal + vVal * vVal); - } - return colorFunc(value); - }); - } + // If colorscale present, color arrows by marker.color or magnitude |(u,v)|. + // Shared with style.js so the static render and restyle stay in sync. + if(trace._hasColorscale) colorscaleStroke(lineSegments, trace); // Render text labels at data points var textGroup = d3.select(element).selectAll('g.text') diff --git a/src/traces/quiver/style.js b/src/traces/quiver/style.js index 4bcc410bd81..66312f4837a 100644 --- a/src/traces/quiver/style.js +++ b/src/traces/quiver/style.js @@ -5,8 +5,30 @@ var Lib = require('../../lib'); var Drawing = require('../../components/drawing'); var Color = require('../../components/color'); +var Colorscale = require('../../components/colorscale'); var DESELECTDIM = require('../../constants/interactions').DESELECTDIM; +// Stroke each arrow path according to the trace colorscale, using marker.color +// when it is an array of scalar values, otherwise falling back to the vector +// magnitude |(u, v)|. `paths` may be a multi-path selection or a single path. +function colorscaleStroke(paths, trace) { + var marker = trace.marker || {}; + var colorFunc = Colorscale.makeColorScaleFuncFromTrace(marker); + + paths.style('stroke', function(cdi) { + var markerColor = marker.color; + var value; + if(Lib.isArrayOrTypedArray(markerColor) && markerColor.length > cdi.i && isFinite(markerColor[cdi.i])) { + value = markerColor[cdi.i]; + } else { + var uVal = (trace.u && trace.u[cdi.i]) || 0; + var vVal = (trace.v && trace.v[cdi.i]) || 0; + value = Math.sqrt(uVal * uVal + vVal * vVal); + } + return colorFunc(value); + }); +} + function style(gd) { var s = d3.select(gd).selectAll('g.trace.quiver'); @@ -16,8 +38,12 @@ function style(gd) { var markerLine = marker.line || {}; var lineColor = Lib.isArrayOrTypedArray(marker.color) ? undefined : marker.color; - d3.select(this).selectAll('path.js-line') - .call(Drawing.lineGroupStyle, markerLine.width, lineColor, markerLine.dash); + var paths = d3.select(this).selectAll('path.js-line'); + paths.call(Drawing.lineGroupStyle, markerLine.width, lineColor, markerLine.dash); + + // colorscale strokes must be applied after lineGroupStyle, which would + // otherwise flatten every arrow to a single (line.color) stroke + if(trace._hasColorscale) colorscaleStroke(paths, trace); }); } @@ -26,6 +52,7 @@ function styleOnSelect(gd, cd, sel) { var marker = trace.marker || {}; var markerLine = marker.line || {}; var lineColor = Lib.isArrayOrTypedArray(marker.color) ? undefined : marker.color; + var hasColorscale = trace._hasColorscale; if(!sel) return; @@ -39,29 +66,44 @@ function styleOnSelect(gd, cd, sel) { var path = d3.select(this); if(d.selected) { - var sc = selectedLine.color || lineColor; var sw = selectedLine.width !== undefined ? selectedLine.width : markerLine.width; - Drawing.lineGroupStyle(path, sw, sc, markerLine.dash); + if(selectedLine.color) { + Drawing.lineGroupStyle(path, sw, selectedLine.color, markerLine.dash); + } else if(hasColorscale) { + Drawing.lineGroupStyle(path, sw, lineColor, markerLine.dash); + colorscaleStroke(path, trace); + path.style('stroke-opacity', 1); + } else { + Drawing.lineGroupStyle(path, sw, lineColor, markerLine.dash); + } } else { var uc = unselectedLine.color; - var uw = unselectedLine.width; - if(!uc) { - uc = lineColor ? Color.addOpacity(lineColor, DESELECTDIM) : undefined; + var uw = unselectedLine.width !== undefined ? unselectedLine.width : markerLine.width; + if(uc) { + Drawing.lineGroupStyle(path, uw, uc, markerLine.dash); + } else if(hasColorscale) { + // keep colorscale color but dim via opacity + Drawing.lineGroupStyle(path, uw, lineColor, markerLine.dash); + colorscaleStroke(path, trace); + path.style('stroke-opacity', DESELECTDIM); + } else { + var dimColor = lineColor ? Color.addOpacity(lineColor, DESELECTDIM) : undefined; + Drawing.lineGroupStyle(path, uw, dimColor, markerLine.dash); } - if(uw === undefined) uw = markerLine.width; - Drawing.lineGroupStyle(path, uw, uc, markerLine.dash); } }); Drawing.selectedTextStyle(sel.selectAll('text'), trace); } else { - sel.selectAll('path.js-line') - .call(Drawing.lineGroupStyle, markerLine.width, lineColor, markerLine.dash); + var paths = sel.selectAll('path.js-line'); + paths.call(Drawing.lineGroupStyle, markerLine.width, lineColor, markerLine.dash); + if(hasColorscale) colorscaleStroke(paths, trace); Drawing.textPointStyle(sel.selectAll('text'), trace, gd); } } module.exports = { style: style, - styleOnSelect: styleOnSelect + styleOnSelect: styleOnSelect, + colorscaleStroke: colorscaleStroke }; diff --git a/test/image/mocks/quiver_colorscale.json b/test/image/mocks/quiver_colorscale.json index 9519c5e4196..48e3278a5b9 100644 --- a/test/image/mocks/quiver_colorscale.json +++ b/test/image/mocks/quiver_colorscale.json @@ -10,6 +10,7 @@ "sizeref": 0.3, "anchor": "tail", "marker": { + "color": [1.41, 2.24, 3.16, 2.24, 2.83, 3.61, 3.16, 3.61, 4.24], "colorscale": "Viridis", "showscale": true, "colorbar": { From 94dc00d952c894c6d0761337c78f64a33cc10fe2 Mon Sep 17 00:00:00 2001 From: degzhaus Date: Tue, 23 Jun 2026 18:51:33 -0700 Subject: [PATCH 224/241] Use center, Remove redundant anchor value options --- src/traces/quiver/attributes.js | 4 ++-- src/traces/quiver/calc.js | 2 +- src/traces/quiver/plot.js | 2 +- test/plot-schema.json | 6 ++---- 4 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/traces/quiver/attributes.js b/src/traces/quiver/attributes.js index d53ac5e0239..ef9a9ffa39f 100644 --- a/src/traces/quiver/attributes.js +++ b/src/traces/quiver/attributes.js @@ -63,13 +63,13 @@ var attrs = { }, anchor: { valType: 'enumerated', - values: ['tip', 'tail', 'cm', 'center', 'middle'], + values: ['tip', 'tail', 'center'], dflt: 'tail', editType: 'calc', description: [ 'Sets the arrows\' anchor with respect to their (x,y) positions.', 'Use *tail* to place (x,y) at the base, *tip* to place (x,y) at the head,', - 'or *cm*/*center*/*middle* to center the arrow on (x,y).' + 'or *center* to center the arrow on (x,y).' ].join(' ') }, hoverdistance: { diff --git a/src/traces/quiver/calc.js b/src/traces/quiver/calc.js index 6452810268a..426b658a395 100644 --- a/src/traces/quiver/calc.js +++ b/src/traces/quiver/calc.js @@ -85,7 +85,7 @@ module.exports = function calc(gd, trace) { var sizeref = (trace.sizeref !== undefined) ? trace.sizeref : (sizemode === 'raw' ? 1 : 0.5); var anchor = trace.anchor || 'tail'; var isTip = anchor === 'tip'; - var isCenter = anchor === 'cm' || anchor === 'center' || anchor === 'middle'; + var isCenter = anchor === 'center'; var baseX = new Array(len); var tipsY = new Array(len * 2); diff --git a/src/traces/quiver/plot.js b/src/traces/quiver/plot.js index 69b962bfd29..7c33b1940d3 100644 --- a/src/traces/quiver/plot.js +++ b/src/traces/quiver/plot.js @@ -142,7 +142,7 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition y1 = cdi.y; x0 = x1 - dx; y0 = y1 - dy; - } else if(anchor === 'cm' || anchor === 'center' || anchor === 'middle') { + } else if(anchor === 'center') { x0 = cdi.x - dx / 2; y0 = cdi.y - dy / 2; x1 = cdi.x + dx / 2; diff --git a/test/plot-schema.json b/test/plot-schema.json index 2d1e47073b0..9414086744b 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -57625,16 +57625,14 @@ "animatable": true, "attributes": { "anchor": { - "description": "Sets the arrows' anchor with respect to their (x,y) positions. Use *tail* to place (x,y) at the base, *tip* to place (x,y) at the head, or *cm*/*center*/*middle* to center the arrow on (x,y).", + "description": "Sets the arrows' anchor with respect to their (x,y) positions. Use *tail* to place (x,y) at the base, *tip* to place (x,y) at the head, or *center* to center the arrow on (x,y).", "dflt": "tail", "editType": "calc", "valType": "enumerated", "values": [ "tip", "tail", - "cm", - "center", - "middle" + "center" ] }, "customdata": { From 2e214c7deb7790e7064ae31230f9235fcb0f540e Mon Sep 17 00:00:00 2001 From: degzhaus Date: Tue, 23 Jun 2026 19:00:03 -0700 Subject: [PATCH 225/241] Idiomatic extendFlat usage --- src/traces/quiver/attributes.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/traces/quiver/attributes.js b/src/traces/quiver/attributes.js index ef9a9ffa39f..77b78567fde 100644 --- a/src/traces/quiver/attributes.js +++ b/src/traces/quiver/attributes.js @@ -193,8 +193,9 @@ var attrs = { } }; -// Extend with base attributes (includes hoverinfo, etc.) -extendFlat(attrs, baseAttrs); +// Extend with base attributes (includes hoverinfo, etc.), keeping the +// quiver-specific attributes layered on top of the shared base attributes. +attrs = extendFlat({}, baseAttrs, attrs); // Add hoverinfo with proper flags for quiver // We need to create a new object to avoid mutating the shared base attributes From f3789e6332aad4d126fc3d1b25ea96c1c5ce3f2d Mon Sep 17 00:00:00 2001 From: degzhaus Date: Tue, 23 Jun 2026 19:08:15 -0700 Subject: [PATCH 226/241] Fallback to arrow color with opacity --- src/traces/quiver/style.js | 43 ++++++++++++++++---------------------- 1 file changed, 18 insertions(+), 25 deletions(-) diff --git a/src/traces/quiver/style.js b/src/traces/quiver/style.js index 66312f4837a..4082565b705 100644 --- a/src/traces/quiver/style.js +++ b/src/traces/quiver/style.js @@ -4,7 +4,6 @@ var d3 = require('@plotly/d3'); var Lib = require('../../lib'); var Drawing = require('../../components/drawing'); -var Color = require('../../components/color'); var Colorscale = require('../../components/colorscale'); var DESELECTDIM = require('../../constants/interactions').DESELECTDIM; @@ -64,32 +63,25 @@ function styleOnSelect(gd, cd, sel) { sel.selectAll('path.js-line').each(function(d) { var path = d3.select(this); + var dim = !d.selected; - if(d.selected) { - var sw = selectedLine.width !== undefined ? selectedLine.width : markerLine.width; - if(selectedLine.color) { - Drawing.lineGroupStyle(path, sw, selectedLine.color, markerLine.dash); - } else if(hasColorscale) { - Drawing.lineGroupStyle(path, sw, lineColor, markerLine.dash); - colorscaleStroke(path, trace); - path.style('stroke-opacity', 1); - } else { - Drawing.lineGroupStyle(path, sw, lineColor, markerLine.dash); - } + var explicitColor = dim ? unselectedLine.color : selectedLine.color; + var lineWidth = dim ? + (unselectedLine.width !== undefined ? unselectedLine.width : markerLine.width) : + (selectedLine.width !== undefined ? selectedLine.width : markerLine.width); + + if(explicitColor) { + Drawing.lineGroupStyle(path, lineWidth, explicitColor, markerLine.dash); + path.style('stroke-opacity', 1); } else { - var uc = unselectedLine.color; - var uw = unselectedLine.width !== undefined ? unselectedLine.width : markerLine.width; - if(uc) { - Drawing.lineGroupStyle(path, uw, uc, markerLine.dash); - } else if(hasColorscale) { - // keep colorscale color but dim via opacity - Drawing.lineGroupStyle(path, uw, lineColor, markerLine.dash); - colorscaleStroke(path, trace); - path.style('stroke-opacity', DESELECTDIM); - } else { - var dimColor = lineColor ? Color.addOpacity(lineColor, DESELECTDIM) : undefined; - Drawing.lineGroupStyle(path, uw, dimColor, markerLine.dash); - } + // Fall back to the arrow's own color (scalar marker.color, a + // marker.color array, or the colorscale). When marker.color is an + // array, lineColor is undefined and we cannot bake opacity into a + // color, so we keep each arrow's color and dim unselected arrows + // via stroke-opacity instead. + Drawing.lineGroupStyle(path, lineWidth, lineColor, markerLine.dash); + if(hasColorscale) colorscaleStroke(path, trace); + path.style('stroke-opacity', dim ? DESELECTDIM : 1); } }); @@ -98,6 +90,7 @@ function styleOnSelect(gd, cd, sel) { var paths = sel.selectAll('path.js-line'); paths.call(Drawing.lineGroupStyle, markerLine.width, lineColor, markerLine.dash); if(hasColorscale) colorscaleStroke(paths, trace); + paths.style('stroke-opacity', 1); Drawing.textPointStyle(sel.selectAll('text'), trace, gd); } } From dd71b9435c2a687e27d09126b9a3939914784231 Mon Sep 17 00:00:00 2001 From: degzhaus Date: Tue, 23 Jun 2026 19:13:52 -0700 Subject: [PATCH 227/241] Guard against infinite values --- src/traces/quiver/calc.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/traces/quiver/calc.js b/src/traces/quiver/calc.js index 426b658a395..14c9fbff149 100644 --- a/src/traces/quiver/calc.js +++ b/src/traces/quiver/calc.js @@ -178,6 +178,10 @@ module.exports = function calc(gd, trace) { // Colorscale cmin/cmax computation: prefer provided marker.color, else magnitude if(trace._hasColorscale) { var vals = hasMarkerColorArray ? [cMin, cMax] : [normMin, normMax]; + // Guard against all-invalid input (no finite values found), which would + // otherwise leave the seeds at +/-Infinity and feed them into the + // colorscale calc. Fall back to a neutral [0, 1] range. + if(!isFinite(vals[0]) || !isFinite(vals[1])) vals = [0, 1]; colorscaleCalc(gd, trace, { vals: vals, containerStr: 'marker', From eba15eb1fc19dde1ac54802a1c9f95219a710dc4 Mon Sep 17 00:00:00 2001 From: degzhaus Date: Tue, 23 Jun 2026 19:14:33 -0700 Subject: [PATCH 228/241] Remove unused imports --- test/jasmine/tests/quiver_test.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/test/jasmine/tests/quiver_test.js b/test/jasmine/tests/quiver_test.js index 7c45a451d77..9dca4693cc4 100644 --- a/test/jasmine/tests/quiver_test.js +++ b/test/jasmine/tests/quiver_test.js @@ -1,6 +1,4 @@ var Plotly = require('../../../lib/index'); -var Lib = require('../../../src/lib'); -var d3Select = require('../../strict-d3').select; var supplyAllDefaults = require('../assets/supply_defaults'); var createGraphDiv = require('../assets/create_graph_div'); From 5460a35994cbb99a4e1a1c59187cc3145ce33acc Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Wed, 24 Jun 2026 11:41:03 -0600 Subject: [PATCH 229/241] Update the stackgl bundle --- stackgl_modules/index.js | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/stackgl_modules/index.js b/stackgl_modules/index.js index 63ecc09f5be..d32e41cb3ec 100644 --- a/stackgl_modules/index.js +++ b/stackgl_modules/index.js @@ -37,7 +37,6 @@ var __webpack_unused_export__; -function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } var base64 = __webpack_require__(7507); var ieee754 = __webpack_require__(3778); var customInspectSymbol = typeof Symbol === 'function' && typeof Symbol['for'] === 'function' // eslint-disable-line dot-notation @@ -72,7 +71,7 @@ function typedArraySupport() { try { var arr = new Uint8Array(1); var proto = { - foo: function foo() { + foo: function () { return 42; } }; @@ -85,14 +84,14 @@ function typedArraySupport() { } Object.defineProperty(Buffer.prototype, 'parent', { enumerable: true, - get: function get() { + get: function () { if (!Buffer.isBuffer(this)) return undefined; return this.buffer; } }); Object.defineProperty(Buffer.prototype, 'offset', { enumerable: true, - get: function get() { + get: function () { if (!Buffer.isBuffer(this)) return undefined; return this.byteOffset; } @@ -137,7 +136,7 @@ function from(value, encodingOrOffset, length) { return fromArrayView(value); } if (value == null) { - throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + 'or Array-like Object. Received type ' + _typeof(value)); + throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + 'or Array-like Object. Received type ' + typeof value); } if (isInstance(value, ArrayBuffer) || value && isInstance(value.buffer, ArrayBuffer)) { return fromArrayBuffer(value, encodingOrOffset, length); @@ -157,7 +156,7 @@ function from(value, encodingOrOffset, length) { if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null && typeof value[Symbol.toPrimitive] === 'function') { return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length); } - throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + 'or Array-like Object. Received type ' + _typeof(value)); + throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + 'or Array-like Object. Received type ' + typeof value); } /** @@ -391,7 +390,7 @@ function byteLength(string, encoding) { return string.byteLength; } if (typeof string !== 'string') { - throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. ' + 'Received type ' + _typeof(string)); + throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. ' + 'Received type ' + typeof string); } var len = string.length; var mustMatch = arguments.length > 2 && arguments[2] === true; @@ -559,7 +558,7 @@ Buffer.prototype.compare = function compare(target, start, end, thisStart, thisE target = Buffer.from(target, target.offset, target.byteLength); } if (!Buffer.isBuffer(target)) { - throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. ' + 'Received type ' + _typeof(target)); + throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. ' + 'Received type ' + typeof target); } if (start === undefined) { start = 0; @@ -1547,18 +1546,18 @@ var hexSliceLookupTable = function () { module.exports = isMobile; module.exports.isMobile = isMobile; module.exports["default"] = isMobile; -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; -var notMobileRE = /CrOS/; -var tabletRE = /android|ipad|playbook|silk/i; +const 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; +const notMobileRE = /CrOS/; +const tabletRE = /android|ipad|playbook|silk/i; function isMobile(opts) { if (!opts) opts = {}; - var ua = opts.ua; + let ua = opts.ua; if (!ua && typeof navigator !== 'undefined') ua = navigator.userAgent; if (ua && ua.headers && typeof ua.headers['user-agent'] === 'string') { ua = ua.headers['user-agent']; } if (typeof ua !== 'string') return false; - var result = mobileRE.test(ua) && !notMobileRE.test(ua) || !!opts.tablet && tabletRE.test(ua); + let result = mobileRE.test(ua) && !notMobileRE.test(ua) || !!opts.tablet && tabletRE.test(ua); if (!result && opts.tablet && opts.featureDetect && navigator && navigator.maxTouchPoints > 1 && ua.indexOf('Macintosh') !== -1 && ua.indexOf('Safari') !== -1) { result = true; } From 813ab714bce3e06326f0a984afeb323ef5ff6ea4 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Wed, 24 Jun 2026 16:15:03 -0600 Subject: [PATCH 230/241] Update schema and types --- src/types/core/data.d.ts | 2 + src/types/generated/schema.d.ts | 209 +++++++++++++++++++++++++++++++- test/plot-schema.json | 206 +------------------------------ 3 files changed, 216 insertions(+), 201 deletions(-) diff --git a/src/types/core/data.d.ts b/src/types/core/data.d.ts index 8d393a2e74c..c2af6655232 100644 --- a/src/types/core/data.d.ts +++ b/src/types/core/data.d.ts @@ -41,6 +41,7 @@ import type { ParcoordsData, PieData, PlotType, + QuiverData, SankeyData, Scatter3dData, ScattercarpetData, @@ -101,6 +102,7 @@ export type Data = | Partial | Partial | Partial + | Partial | Partial | Partial | Partial diff --git a/src/types/generated/schema.d.ts b/src/types/generated/schema.d.ts index f4ac6ebdae6..4d762b45321 100644 --- a/src/types/generated/schema.d.ts +++ b/src/types/generated/schema.d.ts @@ -23,7 +23,7 @@ export type PatternShape = '' | '/' | '\\' | 'x' | '-' | '|' | '+' | '.'; export type TransitionEasing = 'linear' | 'quad' | 'cubic' | 'sin' | 'exp' | 'circle' | 'elastic' | 'back' | 'bounce' | 'linear-in' | 'quad-in' | 'cubic-in' | 'sin-in' | 'exp-in' | 'circle-in' | 'elastic-in' | 'back-in' | 'bounce-in' | 'linear-out' | 'quad-out' | 'cubic-out' | 'sin-out' | 'exp-out' | 'circle-out' | 'elastic-out' | 'back-out' | 'bounce-out' | 'linear-in-out' | 'quad-in-out' | 'cubic-in-out' | 'sin-in-out' | 'exp-in-out' | 'circle-in-out' | 'elastic-in-out' | 'back-in-out' | 'bounce-in-out'; -export type TraceType = 'bar' | 'barpolar' | 'box' | 'candlestick' | 'carpet' | 'choropleth' | 'choroplethmap' | 'choroplethmapbox' | 'cone' | 'contour' | 'contourcarpet' | 'densitymap' | 'densitymapbox' | 'funnel' | 'funnelarea' | 'heatmap' | 'histogram' | 'histogram2d' | 'histogram2dcontour' | 'icicle' | 'image' | 'indicator' | 'isosurface' | 'mesh3d' | 'ohlc' | 'parcats' | 'parcoords' | 'pie' | 'sankey' | 'scatter' | 'scatter3d' | 'scattercarpet' | 'scattergeo' | 'scattergl' | 'scattermap' | 'scattermapbox' | 'scatterpolar' | 'scatterpolargl' | 'scattersmith' | 'scatterternary' | 'splom' | 'streamtube' | 'sunburst' | 'surface' | 'table' | 'treemap' | 'violin' | 'volume' | 'waterfall'; +export type TraceType = 'bar' | 'barpolar' | 'box' | 'candlestick' | 'carpet' | 'choropleth' | 'choroplethmap' | 'choroplethmapbox' | 'cone' | 'contour' | 'contourcarpet' | 'densitymap' | 'densitymapbox' | 'funnel' | 'funnelarea' | 'heatmap' | 'histogram' | 'histogram2d' | 'histogram2dcontour' | 'icicle' | 'image' | 'indicator' | 'isosurface' | 'mesh3d' | 'ohlc' | 'parcats' | 'parcoords' | 'pie' | 'quiver' | 'sankey' | 'scatter' | 'scatter3d' | 'scattercarpet' | 'scattergeo' | 'scattergl' | 'scattermap' | 'scattermapbox' | 'scatterpolar' | 'scatterpolargl' | 'scattersmith' | 'scatterternary' | 'splom' | 'streamtube' | 'sunburst' | 'surface' | 'table' | 'treemap' | 'violin' | 'volume' | 'waterfall'; /** @deprecated Renamed to TraceType. */ export type PlotType = TraceType; @@ -6959,6 +6959,213 @@ export interface PieData { visible?: true | false | 'legendonly'; } +export interface QuiverData { + /** + * Sets the arrows' anchor with respect to their (x,y) positions. Use *tail* to place (x,y) at the base, *tip* to place (x,y) at the head, or *center* to center the arrow on (x,y). + * @default 'tail' + */ + anchor?: 'tip' | 'tail' | 'center'; + /** Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements */ + customdata?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the x coordinate step. See `x0` for more info. + * @default 1 + */ + dx?: number; + /** + * Sets the y coordinate step. See `y0` for more info. + * @default 1 + */ + dy?: number; + /** + * Maximum distance (in pixels) to look for nearby arrows on hover. + * @default 20 + * Minimum: -1 + */ + hoverdistance?: number; + /** + * Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. + * @default 'all' + */ + hoverinfo?: 'x' | 'y' | 'u' | 'v' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}) | ('x' | 'y' | 'u' | 'v' | 'text' | 'name' | 'all' | 'none' | 'skip' | (string & {}))[]; + hoverlabel?: HoverLabel; + /** Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example "y: %{y}" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}". https://github.com/d3/d3-format/tree/v1.4.5#d3-format for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}". https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format for details on the date formatting syntax. Variables that can't be found will be replaced with the specifier. For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing. Variables with an undefined value will be replaced with the fallback value. The variables available in `hovertemplate` are the ones emitted as event data described at this link https://plotly.com/javascript/plotlyjs-events/#event-data. Additionally, all attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `x`, `y`, `u`, `v`, `text` and `name`. Anything contained in tag `` is displayed in the secondary box, for example `%{fullData.name}`. To hide the secondary box completely, use an empty tag ``. */ + hovertemplate?: string | string[]; + /** Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type. */ + ids?: Datum[] | Datum[][] | TypedArray; + /** + * Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc. + * @default 'legend' + */ + legend?: string; + /** Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items. */ + legendgroup?: string; + legendgrouptitle?: LegendGroupTitle; + /** + * Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout. + * @default 1000 + */ + legendrank?: number; + /** + * Sets the width (in px or fraction) of the legend for this trace. + * Minimum: 0 + */ + legendwidth?: number; + marker?: { + /** + * Sets the size of the arrow head relative to `marker.line.width`. A value of 1 (default) gives a head about 3x as wide as the line. + * @default 1 + * Minimum: 0.3 + */ + arrowsize?: number; + /** + * Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed. + * @default true + */ + autocolorscale?: boolean; + /** + * Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user. + * @default true + */ + cauto?: boolean; + /** + * Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well. + * Setting this also sets: cauto = false + */ + cmax?: number; + /** Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`. */ + cmid?: number; + /** + * Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well. + * Setting this also sets: cauto = false + */ + cmin?: number; + /** Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set. */ + color?: Color | Color[]; + /** Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis. */ + coloraxis?: string; + colorbar?: ColorBar; + /** + * Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + * Setting this also sets: autocolorscale = false + */ + colorscale?: ColorScale; + line?: { + /** + * Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). + * @default 'solid' + */ + dash?: Dash; + /** + * Sets the width (in px) of the arrow lines. + * @default 1 + * Minimum: 0 + */ + width?: number; + }; + /** + * Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color. + * @default false + */ + reversescale?: boolean; + /** + * Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array. + * @default true + */ + showscale?: boolean; + }; + /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ + meta?: any; + /** Sets the trace name. The trace name appears as the legend item and on hover. */ + name?: string; + /** + * Sets the opacity of the trace. + * @default 1 + * Range: [0, 1] + */ + opacity?: number; + selected?: { + line?: _internal.ErrorY; + textfont?: Font; + }; + /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ + selectedpoints?: any; + /** + * Determines whether or not an item corresponding to this trace is shown in the legend. + * @default true + */ + showlegend?: boolean; + /** + * Determines whether `sizeref` is set as a *scaled* (unitless) scalar (normalized by the max u/v norm in the vector field), as an *absolute* value (in the same units as the vector field), or *raw* to use the raw vector lengths. + * @default 'scaled' + */ + sizemode?: 'scaled' | 'absolute' | 'raw'; + /** + * Adjusts the arrow size scaling. The arrow length is determined by the vector norm multiplied by `sizeref`, optionally normalized when `sizemode` is *scaled*. + * Minimum: 0 + */ + sizeref?: number; + /** Sets text elements associated with each (x,y) pair. */ + text?: Datum[] | Datum[][] | TypedArray; + /** Sets the text font. */ + textfont?: FontArray; + /** + * Sets the positions of the `text` elements with respects to the (x,y) coordinates. + * @default 'middle center' + */ + textposition?: 'top left' | 'top center' | 'top right' | 'middle left' | 'middle center' | 'middle right' | 'bottom left' | 'bottom center' | 'bottom right'; + type?: 'quiver'; + /** Sets the x components of the arrow vectors. */ + u?: Datum[] | Datum[][] | TypedArray; + /** Sets the hover text formatting rule for `u` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ + uhoverformat?: string; + /** Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions. */ + uid?: string; + /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ + uirevision?: any; + unselected?: { + line?: _internal.ErrorY; + textfont?: Font; + }; + /** Sets the y components of the arrow vectors. */ + v?: Datum[] | Datum[][] | TypedArray; + /** Sets the hover text formatting rule for `v` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format. */ + vhoverformat?: string; + /** + * Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible). + * @default true + */ + visible?: true | false | 'legendonly'; + /** Sets the x coordinates of the arrow locations. */ + x?: Datum[] | Datum[][] | TypedArray; + /** + * Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step. + * @default 0 + */ + x0?: any; + /** + * Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on. + * @default 'x' + */ + xaxis?: string; + /** Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`. */ + xhoverformat?: string; + /** Sets the y coordinates of the arrow locations. */ + y?: Datum[] | Datum[][] | TypedArray; + /** + * Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step. + * @default 0 + */ + y0?: any; + /** + * Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on. + * @default 'y' + */ + yaxis?: string; + /** Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`. */ + yhoverformat?: string; +} + export interface SankeyData { /** * If value is `snap` (the default), the node arrangement is assisted by automatic snapping of elements to preserve space between nodes specified via `nodepad`. If value is `perpendicular`, the nodes can only move along a line perpendicular to the flow. If value is `freeform`, the nodes can freely move on the plane. If value is `fixed`, the nodes are stationary. diff --git a/test/plot-schema.json b/test/plot-schema.json index 88eea6c5a64..e104dd578c6 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -52471,11 +52471,6 @@ "editType": "calc", "valType": "data_array" }, - "customdatasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `customdata`.", - "editType": "none", - "valType": "string" - }, "dx": { "anim": true, "description": "Sets the x coordinate step. See `x0` for more info.", @@ -52517,11 +52512,6 @@ ], "valType": "flaglist" }, - "hoverinfosrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.", - "editType": "none", - "valType": "string" - }, "hoverlabel": { "align": { "arrayOk": true, @@ -52535,33 +52525,18 @@ "auto" ] }, - "alignsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `align`.", - "editType": "none", - "valType": "string" - }, "bgcolor": { "arrayOk": true, "description": "Sets the background color of the hover labels for this trace", "editType": "none", "valType": "color" }, - "bgcolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", - "editType": "none", - "valType": "string" - }, "bordercolor": { "arrayOk": true, "description": "Sets the border color of the hover labels for this trace.", "editType": "none", "valType": "color" }, - "bordercolorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.", - "editType": "none", - "valType": "string" - }, "editType": "none", "font": { "color": { @@ -52569,11 +52544,6 @@ "editType": "none", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the font used in hover labels.", "editType": "none", "family": { @@ -52584,11 +52554,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -52604,11 +52569,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -52617,22 +52577,12 @@ "editType": "none", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "none", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -52644,11 +52594,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -52662,11 +52607,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -52682,11 +52622,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -52699,11 +52634,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "namelength": { @@ -52714,11 +52644,6 @@ "min": -1, "valType": "integer" }, - "namelengthsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `namelength`.", - "editType": "none", - "valType": "string" - }, "role": "object", "showarrow": { "description": "Sets whether or not to show the hover label arrow/triangle pointing to the data point.", @@ -52734,22 +52659,12 @@ "editType": "none", "valType": "string" }, - "hovertemplatesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.", - "editType": "none", - "valType": "string" - }, "ids": { "anim": true, "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.", "editType": "calc", "valType": "data_array" }, - "idssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ids`.", - "editType": "none", - "valType": "string" - }, "legend": { "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.", "dflt": "legend", @@ -53345,21 +53260,11 @@ "editType": "colorbars", "valType": "data_array" }, - "ticktextsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.", - "editType": "none", - "valType": "string" - }, "tickvals": { "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.", "editType": "colorbars", "valType": "data_array" }, - "tickvalssrc": { - "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.", - "editType": "none", - "valType": "string" - }, "tickwidth": { "description": "Sets the tick width (in px).", "dflt": 1, @@ -53460,7 +53365,7 @@ }, "role": "object", "side": { - "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and defaults to *right* when `orientation` if *h*.", + "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` is *v* and defaults to *right* when `orientation` is *h*.", "editType": "colorbars", "valType": "enumerated", "values": [ @@ -53541,7 +53446,7 @@ } }, "colorscale": { - "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", + "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsla, hwb, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.", "dflt": null, "editType": "calc", "impliedEdits": { @@ -53549,11 +53454,6 @@ }, "valType": "colorscale" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "editType": "calc", "line": { "dash": { @@ -53600,11 +53500,6 @@ "editType": "plot", "valType": "any" }, - "metasrc": { - "description": "Sets the source reference on Chart Studio Cloud for `meta`.", - "editType": "none", - "valType": "string" - }, "name": { "description": "Sets the trace name. The trace name appears as the legend item and on hover.", "editType": "style", @@ -53674,25 +53569,6 @@ "min": 0, "valType": "number" }, - "stream": { - "editType": "calc", - "maxpoints": { - "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.", - "dflt": 500, - "editType": "calc", - "max": 10000, - "min": 0, - "valType": "number" - }, - "role": "object", - "token": { - "description": "The stream id number links a data trace on a plot with a stream. See https://chart-studio.plotly.com/settings for more details.", - "editType": "calc", - "noBlank": true, - "strict": true, - "valType": "string" - } - }, "text": { "anim": true, "description": "Sets text elements associated with each (x,y) pair.", @@ -53705,11 +53581,6 @@ "editType": "style", "valType": "color" }, - "colorsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `color`.", - "editType": "none", - "valType": "string" - }, "description": "Sets the text font.", "editType": "calc", "family": { @@ -53720,11 +53591,6 @@ "strict": true, "valType": "string" }, - "familysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `family`.", - "editType": "none", - "valType": "string" - }, "lineposition": { "arrayOk": true, "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.", @@ -53740,11 +53606,6 @@ ], "valType": "flaglist" }, - "linepositionsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.", - "editType": "none", - "valType": "string" - }, "role": "object", "shadow": { "arrayOk": true, @@ -53753,22 +53614,12 @@ "editType": "calc", "valType": "string" }, - "shadowsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `shadow`.", - "editType": "none", - "valType": "string" - }, "size": { "arrayOk": true, "editType": "calc", "min": 1, "valType": "number" }, - "sizesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `size`.", - "editType": "none", - "valType": "string" - }, "style": { "arrayOk": true, "description": "Sets whether a font should be styled with a normal or italic face from its family.", @@ -53780,11 +53631,6 @@ "italic" ] }, - "stylesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `style`.", - "editType": "none", - "valType": "string" - }, "textcase": { "arrayOk": true, "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.", @@ -53798,11 +53644,6 @@ "lower" ] }, - "textcasesrc": { - "description": "Sets the source reference on Chart Studio Cloud for `textcase`.", - "editType": "none", - "valType": "string" - }, "variant": { "arrayOk": true, "description": "Sets the variant of the font.", @@ -53818,11 +53659,6 @@ "unicase" ] }, - "variantsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `variant`.", - "editType": "none", - "valType": "string" - }, "weight": { "arrayOk": true, "description": "Sets the weight (or boldness) of the font.", @@ -53835,11 +53671,6 @@ "max": 1000, "min": 1, "valType": "integer" - }, - "weightsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `weight`.", - "editType": "none", - "valType": "string" } }, "textposition": { @@ -53859,11 +53690,6 @@ "bottom right" ] }, - "textsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `text`.", - "editType": "none", - "valType": "string" - }, "type": "quiver", "u": { "anim": true, @@ -53872,7 +53698,7 @@ "valType": "data_array" }, "uhoverformat": { - "description": "Sets the hover text formatting rulefor `u` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", + "description": "Sets the hover text formatting rule for `u` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", "dflt": "", "editType": "none", "valType": "string" @@ -53916,11 +53742,6 @@ "role": "object" } }, - "usrc": { - "description": "Sets the source reference on Chart Studio Cloud for `u`.", - "editType": "none", - "valType": "string" - }, "v": { "anim": true, "description": "Sets the y components of the arrow vectors.", @@ -53928,7 +53749,7 @@ "valType": "data_array" }, "vhoverformat": { - "description": "Sets the hover text formatting rulefor `v` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", + "description": "Sets the hover text formatting rule for `v` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By default the values are formatted using generic number format.", "dflt": "", "editType": "none", "valType": "string" @@ -53944,11 +53765,6 @@ "legendonly" ] }, - "vsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `v`.", - "editType": "none", - "valType": "string" - }, "x": { "anim": true, "description": "Sets the x coordinates of the arrow locations.", @@ -53969,16 +53785,11 @@ "valType": "subplotid" }, "xhoverformat": { - "description": "Sets the hover text formatting rulefor `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `x` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" }, - "xsrc": { - "description": "Sets the source reference on Chart Studio Cloud for `x`.", - "editType": "none", - "valType": "string" - }, "y": { "anim": true, "description": "Sets the y coordinates of the arrow locations.", @@ -53999,15 +53810,10 @@ "valType": "subplotid" }, "yhoverformat": { - "description": "Sets the hover text formatting rulefor `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", + "description": "Sets the hover text formatting rule for `y` using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: https://github.com/d3/d3-format/tree/v1.4.5#d3-format. And for dates see: https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.", "dflt": "", "editType": "none", "valType": "string" - }, - "ysrc": { - "description": "Sets the source reference on Chart Studio Cloud for `y`.", - "editType": "none", - "valType": "string" } }, "categories": [ From 0a76daf89a9aa5e703fe494422e9aed2240fc452 Mon Sep 17 00:00:00 2001 From: degzhaus Date: Wed, 24 Jun 2026 15:48:03 -0700 Subject: [PATCH 231/241] Regenerate image baselines --- test/image/baselines/quiver_anchor.png | Bin 37535 -> 32284 bytes test/image/baselines/quiver_arrow-styling.png | Bin 21258 -> 23713 bytes test/image/baselines/quiver_colorscale.png | Bin 23974 -> 24184 bytes .../baselines/quiver_custom-colorscale.png | Bin 27324 -> 25904 bytes test/image/baselines/quiver_multi-trace.png | Bin 30245 -> 31363 bytes test/image/baselines/quiver_sizemode.png | Bin 40498 -> 31804 bytes test/image/baselines/quiver_wind.png | Bin 39094 -> 40592 bytes test/image/baselines/quiver_zero-vectors.png | Bin 18879 -> 23976 bytes 8 files changed, 0 insertions(+), 0 deletions(-) diff --git a/test/image/baselines/quiver_anchor.png b/test/image/baselines/quiver_anchor.png index 3bec0ad57aa62d3298b1d32fe192086df255a077..d559c4d98b409f19d7855f2c9e5459f188e31df0 100644 GIT binary patch literal 32284 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 UtX4XD1n@t#OWI0h*z14&KZJDrY5)KL diff --git a/test/image/baselines/quiver_arrow-styling.png b/test/image/baselines/quiver_arrow-styling.png index f25f952899e553e79ea6e06a9dc4adb41e2ae2cc..6792ad18054abffe6fddd4490cbf5efa70c0b3af 100644 GIT binary patch literal 23713 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 literal 21258 zcmeHvc{tSX-!E-QLMoL|2}vmWjv_{*l7yt}ONtQ&m3sTRd9q77XWvQX&yUvLeJb|)MabC~LgR;rwr-NYdFXPE|6)(R{?ohP zO@uCgywHK$EGh4v_H2Y*HRdl*|H8Wccs=vy%@7Ox<^=j+yqp@k665`Qum zOvms(*>hpd8bRW^y`@5bDi!fn_fLrj`1vCo?ub#=LA3#~2v^xZB|ZT!YA5fZ*6^y$ zhr^5hDe;^hA1-CjDH#81`Je?9fxnyc_vrjR+5TQT|ISu0g!vK184a7HbEfH&6}?^( z0onF4;dLv+Y9mVphb>Dr23M*zDIuRX-CN1mRCJZyZWQd=rJEc@=Fw{{@vOsF*IND+pV~m z@OD+hHG=lLr4W*9Ma%SQ{8mF3BUCq-RPPr88KeF$WgIBbGgZr)_8(0TK&Iz&`@=6A zR>&hH4Wj?Gt^v=b5#BOd2=5H1>q3G$5k@u-Nw41Ow~C`)P_37Ck0R;6?YX$pAQ#^)pJI2FUNaY0SoZzgf++X5Xho-mtxH>Ww?{D%HTWTN zVYXSVHzRo3ErYBUwq(R=&*V5)Pgmtn;oEd6T5NI{JEb*Uo4j4c#(Ay4<}xMo>~7k( zEX!l94iis;3zyhT?n)aMHBm^&=nrL0`O|RGJ@>@rEEfB{s;7{eeK+p1CtczA`WVUH zT(hiFza2-fKf?T!8h9h+UGvSt-tY39CwqZVm)=_Z%!vv~fAs(VTm{Lq(S?V#CT=f{idIB11H z?s3}lyXs5vvT$lq)p*|dP|k8No#-m%_0~yYrCGJQrIyR4lT{ctbJZkMt+D;RAa?5Z z+RY7{w=XaE+XwU~+2;ftFD`95=s#00iRJd2rfYS^X-~gJQB^9s_u1w^jV~*?_5~@h zAHLLRI$1fIfxj=Ih!hZ>8*L-JzboJ>aQI`C$VA97ZuJH*;nx470pE+ZF26KH&W*+x z_I}ThP$(cV8SSQR8K-D39D=9HQ;5?DW&&zhDN?mwqwPeyF32AFm+l(fh3;$kwc+E9 z1`WEmxHIu#b_9|~D}9zT9Z=^%b_~P#KQ}urMPdcyq}@8FK=UN@!}4d=N({(^Ef1HI z9Xxb&bSPX||8A$$K01-M&}j0tlcGE{v8vwd(B%)-)E z+C)HT@*piMz9K=+Ks7+`R$;hLVidd)F=@73Rj;b9yanXOkxNKC6jdG7Ve#DLeHm(e!Iqqv(wX zhxhv4-1x6sN}%jiD6@LNB@315MVz-_eU#-qN;fICq=kyG!J=(BLkRtuI&gc0TNDs6 zP0sgdbu1=vhaEZc+SngCB#d-O#}q3$z6UcqK@0uyBa6`%GNM5-_6s$9=bbT!h8D4^V;jI`Cv!cTwD!%XSD9!MX~_=NH$aD>ieUIc`}T6b*Z7j|iOaw8TrTAit)i#*Pn!vOKj1BP1qc zHK`5L54l5K?iC5FzU>|u;By^}A5g55gpW@=>Z z@8QUW!c0u_bkKqfRuh?Fy!$V+^Mp!&m+e)qLzK59$@5lMvZ7+$Hzx;r{nL)_vUM3t zC%WZOgY(h@xIxX|YW(^NVgA3YjtqY8O){gY-e^N|K8V6OM}0eS3#36&dB5%JahkP` z8m>$ra}O0XD=_9{j}0KH8tr!Do$WpO1)jo+YUj`Ga@kTfI!IYOY2ipYp*>~oQ<9^; zmvQOwRUK_ZK3vRL%4u5Y#(?iriKXUmF~%DHPn|UCw9Hp)EWUhM)G3zIm^U zc$KWPG;#jBc3$cpk~%R_?YAWCRl+g zm)-NsUn!2HtSPrpYeJPw5Wm@3kR)}xtL4yX33MUo zg)i8zz4JAbao1(-7u~2$zlxVEqnA(KHgyR~JlG>htTTU`5$pP+@=`o!g|9`l>|o9> z^IF4_21J`S--3}j#^tB$#TDD-i)mhO2R8(R2zohE5Wy<>`?MCNXsT*ESu9-UVDChK@q}f8XZ0sW)|Tvk!2FPk?dl&B(qTKJRNY(d&boEQ15I5u=Bg7Xr`UaYm9fWjQ?6>I6w=ry1(`TRG;=#n6 zKJU8zN!;eQVUt#PGfYTlop68V#Sz4OPNIF_V5C1dUXfRQ-dAp+ndg|aej1UZx0`6IBo4eZOjNIAd8l^elGtOYL`BoDFFDH-#jbaXPqg)sudOW3 zP{x8Kk@LUGLlxego}6Wlrd2y*X4i^3rg&o}Y@0_W*xK;G-()srqE?!_;LSyn?R;YG z(POXt+4E%AUhSJhr{>mfan-o`>E7hKccNETemH+kJH9h(X>PRl$NRhZy9rJoqt+XL z4>*qS7W%v_d2t<%yqueu2`jc!W~z)Ejc^jmh~9nGzH)j4R1;xhmqGeL=HW|Wa}JIl zey=SQAC0&2zh*bCsbs;u>}Nxpm*FEnu9UqO1glL$M~41>kDMFng@X$G3c>E=_xwy3`Tq{j*oR>58 zXzVjM;If=VNCdN-?(1 zHhD;5+Yp4am|sXMJ%sp%U{`aa5#8DRhkQEm>U}S}-Ean*Z?h6Bx$GcV(rX8tsFDl_~Ul?c=#NI9#fcRnBEE^m-r1S*qdpF~$d$s#vKHYR}L@fBztV z3+VMEp!!2zhR(HWx?)x)>mfBsKWdY8#n*obZ*HI)ytHmbP>+7-Uh@Re2HKkGK-Za9 z^x^hcro@}NNbxVjlp-^jW;wMP@{UF$wbPw)?@B@QlyC;3Q1j|WT+5nnBwjrQ1iOCI zYi()AH6)%6oFC2Ui{32#%-%poH{`8!;E!+$9kZ2KzumTAk8fSYB)NaI6`K;vkUV7d zsIgyuAeV$m4Q+g9@Fl;fDz88AXDp=-$e=+8CUy;mXxA0$&Kcmc2k^}sLRCV6Bu1HC z2>|k*xxYkOCgwMmx^n)`K-dp5oqhX>jyCK#P# zui&Xn8UC*n7ZZOX@q8kJHXqXQx)`;bSn0Uob*4<5&5a;oL*DP8`u@CF75l9dn$@<=8KOKr*F>+kKxKK@%^L31J4CVk$l03PU5Fg5Z zMs!s4zC^1%pOPoLd+~i_{32UDoLf}a8-5Y2PT&( zH3aLqo`tFmwfIPAH<$++OGWyP4?+~h^&3QXJ?R&x3+xO%Oqz@!VdZzEIm$Ec6O8Q^ zO4J=s!y_kh$oa*Imc{5Wb!OH0aMI0nxw~;;ejLjbR$8DV*vVYmGh3REu9>8p8p<=w zQsQi;S=$a~&KJ-BdRK#L3b}u9vCE(mAfJ+YMP9fqRhck`rec^}9w*n_5sOuv^V-3G zFw$XX`Q@;#x-PG$iks@bPGoB3o^RXDKHqv5Hd93X?!OVo+GrU#BFz`<=>T)7JJtF9 zwzZWJkW-Sc6olDCiYI^+c4Q9hI5MfM10TIB z@=m&_AgbB_G2WUbi58k&AG7CUQI20d7hi%P!C~H2EemMtfA(30#1Y|Diz?R~GDA2n; z^p~WGq#(^WK5ZRDvE`21j7~W{ZbPppD_|NGKi-y;h$z;?dR3o#)s&$-FQG@9$GaQ4 zzn)0TuMB1m%TOqJi*!j;c5 znN5sOMK!)!H=A_!J@k^{_eanYP*sClF4MgqG_!(-{B-yuRFOs7(U(R#=Q)_EQ2gaW z?-YqFk6`U`lH7;ivBfg{%Y^wLSb6RHf~hy3L^=@h$aWD;rG36LCIbL}qVkm?k!Blp z4$hUrOO(|#Uy-st(Ab}fyxtm?XsLlWsJjnFWH2{>Um}ZF9b213%2KB3;>7bjEir{4#6&M z{LHZ*cSXNua53LbOHv@XCAxGmOP_ro$vK=jz~wM08qKaPPn|MZeWRscaGaGC)*-T4d%XlSU#aE9Xwe= zNhBR?3*thU13*KrE$HnCTNwjqWTMXTR@t)eI3AIvI1fL7(cwpI=Q=7BwbaL;aA=FO*72 z!QQ{V8OWyVtYHAat!xzrTpCVMV;(aL+cdt@H7%iaL|_BJY8D7#ECS^Kz%=|zJS!*) z!BgY;#b3{iODL*hWb^)-C%27`5jUIaE;%o(%r;%SNJLKeRZ_A{Au0HL4+q5n!o`40 z=%Q2b@>mZ3?jz9BTajcWk@C^&k?{027GjTc%=zU548;LtpEwBClh9>l(E))Bw zYNDtQ4>x2JG~JKsyc)udF>rpt0}mHEu$%B%0i}j@%{7J*h z;gOk5Ofwe1j#AQH-U1zCO4)JgfzEt~d1?y=V?SM+0i@}Se&2Ru%JAJn0<~we4&wqO zAAH&{RwoVc-EXQm!nu*FyCdDn(61elcjO&X{bNau*_=K3rj^w{?3$o6v4XEIV=^aC z84+;A!Zb9!@ATXE8>F0beqtOlvrRL-z|1z7E~j0G!*g>Tq7^d&KYRsBjIIH#Ry9-_ zlXTgl@g?0=as^!-KSH+kCQeR<%Q|0D7?5ONA~sV+H#|5Bpq^b*Vp{6n#`i$*;kq#l z1e8yuueVph<3AYm$Qi_y4Xli4QewRU>g!;PlMP)Q^zX8EExeJ}Q;Y-13%nv#!xedl zA&$?y#q^lzG%s`X#t@gPvq`D_5hG@O|}{S1t9tc9?2Dna!f2%O4Pu@=JVs3FQF zVfJ)2y+XO@?FS1-%>1N@Uz_V>cL`==zYF@ip`r^po83`0aDV`Yr56B%rAcoA)-wfU zD*`yIHLK4|2?*$ZFV5J<4ymOgm;+0>y#`~U%T(5)@vWrl4h)+;jfVgJ?J=&q^jARL zfw7`B*Fn+MdOb>eKGb+7H?Rx~N-mUB+t)ZrTu>2xTFsqyb-kjTeP_xM+nopJl znb?7qY>{0@4^$(k1Mp$=;DKh7_ZsDKdKZf8Jis3ZcfA zqB&F#Z%(YUCGeD#d zg;dFl%*TAz~!RnV->KL;yM8EFDt;u_mwrLlDc*Dz$oZCEOk? zgNp0l_DN~^=1K?sN?3?g3&F)5w>yFx$|IP(~U}emdha)~7GkI+RvX~TD<0qrxD^3ds-q9|JFL$S2YaMucuzf_fw-3ln z@gnwq*L@Q@2>0|((+t#(^{iaUS2yksxzj4k8srjkrDKG|as}DB)p5XpuX(OI2F%bs zbYLRr0Vl^bpkfHMO(D2VW{xG%y7OY{qU|2^O{$C;!b8G@Y_&`(LDDa9Ow||8S36B0 zCm27K(eM@KkB~XP3|SV;O^(+?c8nisM$O(Ki)VVd73_o{eMXOVJEJ7=oYo##ikl)bsTETdy+|LYFX*!e^ zs#2S_7gjXDSTy7U_cI%A8=O?G-~9Zo&N^xc-ME(>UEP~itm7^aGR;@*OE&6lzxOIi z2m;O)=CQS2-k9GOvy`K^kZPMA?yLd^w_=S2d86d+RM!kQDb$;AH5;uny;GQsJu@}K@XdaL!ssbXS%#*A`|LrHU(Po?odC^{Hh!Vu$!KjqBF)Ky5y z)a_+e8wTwL)}u%gG^|C6{u#}R|6$2G;Fp6-J!eOtr- zr(c`GAA|Mfx9)hrbYFpc(-S4XOH9W*B21pst?X|D*<$A+gkVaR4k`&WSfzn(Gj?;8IX zwj}>Ocz+Mx|3%`$-_z~?e7f1IF@W{>oe7-ns|}Pi&!4fH(;A;9imJb^xc+z-PMMH9 z^YD$Z>f7hIcj9RM?)@5jeT7D%p6y{oy*Xl@B2IJ14FE039~kK&vV!ZE-9G1yaczL1 z0qaF+^g2aLKcni1q1y#}EBGR)urgz{9XQR{N9%q0!;7{re~1+JY&X^{{}~Ub#+{gL zc!tQ-39g9UsqtBtyVRyhG}^<+7O(K+7bJRK$2uHFc<u-n*g(xWV zWJlR&@k0v|H{2Gjp8_5Rp>C%%V%^H*{ZTyN3Pg`6U!4Jpw8N*)tLYGPQFD*4ERO#6 zXIuq<*&_q^O)8@k8j(MqRB!ToE1uK$=a^^cMoi0v$Ea2{Y}TUfu?05sQtd$iMi3{T zuz=3)1eEktk)7)MYnt~k4y#i(3ED?#^$Fsl6OQOhZqcJ*1lf?y$}42feBxuYC;=#X zJ>Fp~TPeVa5s`wmY=*DgkUDj;lj_rDOk~kNiL2 zEB(Ff|EFc|cb7B}(vG5CIMThnY+?fr&MKh%9#pw4@30OGRgV2*NQJ6U7w$hD%2`5c zxISyey25V0*x{8p)pW?WZNzp!9SeuIqQuaN+M4))^+0iqt1Lj&jUU9jwYS*q*2RpQ zBXxJ3cRQF*GS%svteMkoK}JirOjjzta&8er+XR(Vq(d5DU$cU*nsi1JTlxunxHRiTtfqb%l=Awd!WcL>3}tK61d zY_|B#Kux+Z2L?XKFmxBFdOfAwUsDTo&`>};uv0A7jqH^g)M$Gd^z-sKU=|$AA+vf4 z0SY;GU8i1ZySXHKp8tkv{GxHRzr8--L1dX&(*WG!9hjf?p+Ce2A1&)3b0tsiU55cJ z2`jG5JiKWAIGAp)i#_g>OdWkR^dyfIEX&6_d09SdtIw767-NvfoS_+wXgXMR=yROC z)~PstjPU;IN1JkE(7%fS%TQyETmj*Ow z?c4=?%aaHPwwdCyX?#&@aa&E-oDk@=mqfTy{cE(r9N9CHpXfiD^i!?of6t zj%mSSzBqFPfjWxoywh_j!h!f2(^xaB4IiH1n#{1?2Y*RzQexUr7Vq`1znE|q7=*Kr zA&MPFfw5h{(&gAY_xHAYW3I0SaQuc`wu(9+jmZ1JV`(`(!1i+9Ey96Px4bKrmAVby zInC61GRE*aD91Pl!!-73%%G@&`YYM`)kV-;H_O@2uu(6rv0h5=bVwYMOk!*cJ}1Wj z#q|Elg4ekfZ2~20A&UK;5pOwe)U3Zh;9H#wK*H$s2PDW!dt2_zlb?XAk#Vb7ey&OI z%_hhsVGIfbrdhmos6{jA`_T5O7ye+!_1}m9AB~G&$r~V39s86XLOBrf)z=i*8A;N6 zJUs!*&8p@vdYF>iv+J0!_dTHQ3)=qF*k(^-gAaQQ!a{AxbxK7j(bNM~Bw!MB{VB(2 zGPZPiYj_0Av!DRHW$EjXmNzp2Vj~fHo?w%&3D{~)3sRTNdQ4C*CCxdjM$3Cy{SrrK zwAANbC)Yz8%F2t4#9o)_>XT-X)G2i)>cK%@XVuWPuk7nUY@mSB3sS<;_w?uY0Kj5| zhu$g|TNC{&!3t1)(Y1Z6F|A?cV@QmGuQSI9c3J{}B~z?@Mjj$yV0Oj%sl7T2(lvjv z*bnflVZ72~QbJI_cfi&MkVWbD3qk4B;vFGo0Qa$M$vyx_4H;|@wz@t$}BB11{(TeQ^M+Oo|-$xD5{ej z)c50oPY{|I_-6G9<2_q=B}GD5VabJUprBZnEC}d5BsFr72cz{ve+u+?fwZ6TZUj*5 zPs(9eUWQX3dvDbie*pVwrWk93%3zzLDr2Cn5q~`ed^&fs!U$x&gzAw8tqy@5!tnq$ zf6#{ng-^Ty%L}BE|G0l?Y!XQmOu501oa6KN0&;M(m*#QI}|q*Ep3u(cqI zm;@1zKl9fc0!sPVWfRc+Ohci;!jM#y>Us%UicYt#SsaS-Z&J$XhDZ^tNxW&gPob3s z_>_A1b43d<1v*o=e-cqEvjG#x>0yi2EkGWOyDh0|cU{sU5C>VVbeWZH<)>&Gu2iJ< z^!0@iEE4PO<=>`*)Q|2eQGZev3$RR6II*h~rEvbRPxxWKWbg-k`P(y?+xPE&shVx5 zp-*3nB>VSX*bn7>6wtz~Z2>iV5^$m402)rd8;)M`rLp41;BIFJfnb;W!fbG$;&m3R z;Z0Wt#91bwwbFk2m_*N{ry%u@s_^BV$)hXQr zE3MB_8Op_zB|;M4TakbVf%DASv1T5~-Sdx|OlArXFaYUnee#tNGKty!(_mo~Zd#%} zy(nuNJmov^6d{#ycIH=Oe$P4OLgy5_S+9K_ebV_9;In10yX2W?9ea!RkK3Y;sn=z< z9_9%Xx7{5PqAeLoBN%f#-=GdcoE}xPzPw1n=)sl-R`y%kY;LsPPN6*vy*xlZR(^jm z!l92OhQ5h+YK5kRK&c+^IuJ_U#~6x=BE?`uJRrPY=h1q=u|D@^D^61LC`f>^!t*BP z+o*pb?56n}f_4pc{}U~HpYM?yJ@OFe^qT&^Ql8yX_CsQ&2ylB4=-JEQJ9Ja&AF?Uz zUzxyvXZ&xZ=)b$-@2&u{*53={-}KnOyW&56S3n@2gy{*V(KMepB480iE;qeGifLB> zz&O3}q(eZz-v}J|akV%|9l07|4;*1c*2j^gJ}9IL;fxMzcC5o`M#QF8J=7y_gid6b z(}#6fEx){28J!-;Q6>2IdjU`2j-@=g24ZmohHeXB2SsNGh(aXE3Kbyci+HvRpP?Dc zIrH1=J@<&@EdGq|t(SDHLA{*1Bdh6^)|v?)=(4&NJN)8*4SG~&0OGi^RDx_k-_7Q$ zy166sq=0Qxpnrxg>S7kuNmZI9_aZ<=uLZ+UnY5Y>^vnJw}Df-!Hv``?7qjBZk zZM3Trs^7+=@N&1`wfgT0q;fGM)#nUId88 z;@{(@IA><>d z(ZH%(gl2<-Fa1h{xqeLpeVZ5)1X7fH6jgqX+O+e#_Z3|P6C}Q+yg}CQ1f$@=E0#qv6(iqfb`m$cDy|lQ1^SDpS)X27KN|;?rWbd-*<*qPgx2s7W$Vg zI}!9#n*@mx9TOAxNfSRi?jMYx3XL<)#{wNr@jvX>dGhY(R6f2fmC(Ha|CO9a|5Jgn zwq!x}a7t^Gh(x<*kv({sBD8kd;g4GlRsJ*B=s*jgx>e9?kyzB#iW|76UOrRj)EFK` zN3h4fp;~s}ZN1$72fwXX+m`8}uKvFgkbnpX98r)uI#)|u3Ce{e;8gO8a$@cwMV5Pg zA*Jr9s8P+je{%SGwRO474GCYmPZ@=KFT^-L1so3~*5cBcfAF;deC;~pXPD7Tz>TsM+7i#eaK2;-y zvv^PE{p+KM0Z&c5TIjcySGxX_-zP=}7NaO(E76oLTg9gjt=%FxCGqmX7m|L(wYwF$WRp>=x=7Qk%f)Y zx2;xFF92C~DB_%)@2EvWB{$%Q9v+~&*n7sKn zpNtMglI%y|i{TU`_WsznB3pO;(MJ0x6LeOKNz7GXh^c)8|6IJx_7PMsJiQ~9{ zgqB2r2}suEe=kA+9g7+196@zaH$6wQSD1SVp$7EavU~*qPO|j3An1rxMLCA*lOXlg z%*=b{S7S~MMp9p?n<8lT2j}*$rg>R50r)|Zbjir=XvyZ9-w68ER7nQ_6|AV9tG0o_ zynzFtwss>RKBc*aw3^+8o_PbP3h@Zg1lQn`d+U@or@B(M&SHliRW9}?`Ue5jKnAzH z&fypUH(Z1yO=t}v*04wj=$p}&i}3(f2I|HK;VxUxfr!dq8v)`}YX^%20ETGIPqRGW zMW0mGT5uQ?ro7*A2gqYvDZo9UZcOwS2TCd;e|>o*1o3G!A^<$aOf}vMT4VcrbHlzK zpnwt*y=0rG-va!j^^>+L05mkPajQt5k{cO-$2`}OTo7H?=m!XGH3KLu2pjsOErUM@ zkUse-69;{RkxIjW^R$K&n%Fpin2aLzPx62?X$V}Zx;PCGpCEe*@J(*0DMB6KL0$-` zuz(M@pfB(Vph$AMNF)!PISZg8{jqb4T^qP%QNZtmO~FWD5$xp2HV{?lX32w*ZyN zE_DJ#H;CHT129*r?_*DBD73H@pk6}f~d$p2pQCjM_a`1H2nAaB||cybLs|X1K9@HK6d`C~w~J>SF`2HfnMQFF^eX ztgiFA+8Fd8L8T-cw5K=OxE<8avpH(LBoDEJz*yUMcQAu$3Moe+%(4q*7062{0wvUW z9R(%KF#ZT7Y>V2!tIpB=V4WJi-U|RPLzoEY0HabI#OVW^NGI^0HDdJ%<2{e^#&sW* z##j-0wkoVXqkyOZ)|zz(wCYVh7XZxFCkW;T%5BEuoOs#!fy`sft$T`8LD$7On?oq8 zK`G9S7h4HxHFQcBl>#w1OHj8!UA2=%VtEKC4MGmnKF>}q1GJKU9mWO=E#RosGhW-x z%%Rv%52oCqzfWMFfvlw4qP9W9=wPrtX1hu$E5O#)d1Ul~JO(7u z{8ZYhF%N;;?kyrJ#ipQoQC8~aK>#b#DrHldwXWdC06fI#g(P|4dRn0jsOc8gE=gJ= z4z`cLxVMt`jU|4mAnTl*vk?Jbtr z^ss?08xNIU;BoUIxKSM^D(f`@SM|$Ah*>ExW`4FRm>l(at+DOSJ9Qj5laXK_x4xTF zv$5nz!Mb%lr$COkG2re5&t=A#fBiPgL-{o$&pcWTrh!}CVQzr)tY&t6%QF`#uj)db z+Gf=R>(`zd;egoJ8~Sy3uz$4le_q4?Co)R{q+;YB12f`tx%v9(bi|l_`b*?ZqFuP5?-= z|HcmBx0GX^DGQsbs=k}4Gm{CZ0*ay^==Dx_^t6FdV|SjeJ9MRh#!blg(0blbG2OYE zURw>x)r046)mbUjoI+mT7T%|p>~>i$Swi6vt6qIjUVZJlCa_176UG2-(*uaYCjJll z>9?5XzX7cwsSv0Vel5fhA%v)0V(V>^OYX;5z$%1kH~0amjqRrJ ze#rgckZkr>3E=goISB~t1V{F`CG0wBPp^A^;bd-BTob2t9lziqQy>v6+=Do`&=nrz z9j{?%#`S7&F~=03)|6S}k@vf9!`R|)$Fi}IGDiRo-feNmM|MOwJnA1V`67b{rh@mY z%4i)9^1n=}TXE?H-X0rEqY5^xTRmq=16O9gObx}TRRDU@o(Y<_3AD5zC*oZm1$%9T zdph>LxiN_71@xpTp!E~v;!kYBN%~p>&C+)ARfnb@jX7AVUVX$+?JuE4ek%PmoBtM?8lQ}gN1P5 zXw;s89)CUgB-lj@+=ns+5%bNm&iFZ}U$5E+)=(dD2wYWB-ip<1`wHiVNFBRz<)-D6 zzwYWq3m!&DhC`Zpt9O;w%qNKyzqAuUrImVT;&v;6Cj1iDqXk81%~cItKm)G~3dHJ} zD6R{2wYXCxcHkJ02{+Oj6*J3@`;0h~zhP#JcR~(}Q_nn#O7`kU-RrsoTNS?cvL{U8 z?6P#wp@2WIsrPyo@Y&Tf5Zn*Rj(29UKY-f(XcC#BLg-VkZf1i^fbihD9ow=EWv{{U zS{(hjXasB=8g*WwvyF;!KGObL^5^()!guEqqB3D2(2W|JiriJDI>JLQ{{)c9;vX&e zaUE{27vA0t{6Lcbk~tChhW$$s{;f!`f6pU6{)h~{vjzM9Ts9XE4hp$X6Mrt1TL<>J zb%?9m_VR9j<2Aq``p-pmfE=YLwk2PXH?JGOZZju1qxB~veo%7wBdgQAd*bwDKrsgQ z$bT{t0wRx4#HWJ@-hFekpqLYgn$5h7&H{Hz(>?nw#CeP75!fw9#fSX+>?&0xp-65WIgmf>%S{kOfNr$>{H5(?4{BHf)1EnU(LisaDU ze0u=TIp4kaAAkD#zH9HjdOd6H@s*Jh#koOpS9_ltrTqOaipgu*2Ps3{Ur zB?f$76Jy>zYQz!wIq*rvfrb&=O9)@q^O3BQ5>3*x558|9Nm!HP^G`L_w%jYT(yHbY z4d*ged8%g=1Wptb1$O%9jeIDj2iQ6IwXmoVS0LwqNMRa#u|V-)S1_Ot=wLp0pUSRa zFig&fuHmB};lZdrK%m)Jw{K{?s{MGy?EEtYX#_%%&-qKhB?)XoDs2w#eA9~$z*nkt zuv+6d(!5va6cTwLWE}SZ73Et5aYE;hu6S@^|cf-vS=()SB#2uUL-IG6$F#y^%^JONa)FtL<#QfEGb z2Z);(qp&L;k8a@Q2Xke{5?pRiK@mtp(e3u?E5!42G2(rS2Anj0_{#m_pD?Oj2*-m0 zf$LKLSb+B_^a`8uSCZR2o@l-W5lv%5p53F;{`r1=f#;H}kUZF2r`0zlta7|W95kOi z=)oB?q1`(FG@}A=a;_=d>_3}j07uS&&CpytP>@IHifREWC(n|6F5kgp1FY=07O?u@ z@;DgKdcgjVC~?%~8$qwY8#k^`{Cv`f)(SMA*qH!RM!lK-(O~gt*$zh#Mtw_s`0t~; z;3GMa;4QQYUg#4SK9x4NPBQ+vgux$)nt)9fb!`9C4G?}+`$rN@|9layd!ICGtzAB_ z`}}*NpbEY)vifrV08bo)=QB(k9FXbPTdn^Py#>}Ke!UFT?^2y!2Lj&n>2^jvxS$OC z2tFbFU~hFF$nIPdJlYr6o;XMJbBzt>yUD`J64zv)10o$;i`|`mR2tHtn zupZUIIcH&l7=u)JO5h`P(JyWfFZZhl6z(fI36J-Mx`7R(dxOo8ERhjh?(Pl{$7ttz zA@P59n*m-(dAl5V&NR6=0kPvz{NFWJ2a zEGorjTqBm_KjuyV^ov$o`QIB>cRz_FU@QN+f8ELB@+0g!z}(+GGn=hJ=6h+DFsf^S z$o*S)G%lPV)hJ{;R{@Zre?|U}?7Q!Pm7ftm$iRb3!7~Cfg-szvmk!JW3#iY7r&zXi z{}ntrc*VBqL;OF%zk+UJFi_7o82v}^ibPb}imq4-7ZPHFn7*P42b)p8O&TY1sg{p{ zLM8F?Y~%cgQ!-Y7?$1_ks!K*a(m)_ej_?g||HE5hK;xcO0o%n3viOOVvcQc9JK8Rg zUVhUk2OL1V&i6jxST7uuM?O$?oz`CF%QuqY2t?TEHwUXf7xDpm_!&4F5_ui+e>9Y+ zAbfP%!rFKXkjqDp!~xlF8{>ug{w^yfTK+PD!N0=rKi&VQwM6n5mFHR)WDMTO z^hpR2y=2l;Xc9?&J(tqxWgNqR(gU$)VzFI67td?&D~290N5GZM*x{T1g!)(w2>ChT zi~st(UMip~4UcWU{L>X#u#Rwr23f#=bY%$;Ne{$35jNaG%;GZU6vj1Hb(3KVM zVzl92_-IS2e7)8?+(*krnXnX||Y*wn?Bvh$!bM-tmU?t|>>R{7f z==mn6q%@@Me4oLfEB1-N$)fa@r0iiZYFnV87|P(|J(A_dge1{n<%Ag=+t~C=Ts;*0d31qA}z)SZ=9kc zEuO2pe?z3(26NPAi~FQPFmK*#nT^n5j!?Jub(w!L^;N$;d{*nM{w7OHQ8&K{ihxe) zE{-G5_Y||^zjOj$OH77FpNkvz+a4_qWUZjKUwV#|Th09KmzNG>$Sr^M+0a@LHmyW@%a zd?SXwBHDjHe|RA%1pxGJ7<2RxOdhufd*v-0Xhr zV_w*f>%K3@y_EiaS-+Z?&EV6#qxF>Q-t5>&fvykl$#&o7+S%!v_1=WTSfc$_Cnu*9 z_GY-6`PVwn>tp$)?|wa~*c8(>3hX^@$W+YI+x*+QDSfsr&1%?128ac$2>#Amtwb@C z4i?uqOgg5y?Em&j(*Mn`!%L_A@f(R;jKj%}yZ(Xqo*9ad$F`IP7pqZHd#6;9b*BV1 zdqQqvHgtXGxR}WimT2UGWuDkL+rLD& z`1+j_q_}=V7e`A>+~W9uxz_BKewyR*aa>sW@j3 zH6(qTXCX0ZI+b*rgQS1^prDz8A%@eUR7VuW9RBep(Wv(Gw~bhflgO&$27zNwmql@{ zHqIPsX~TK;{6)v*nzK{u(}Q_`Z!RQb)YLOCIu7dMHzCwmKT3b|RWw7h6OABns+Yuc z9z&c=VPhQ~19KWNn-l!0dm9Jyyf3LXA*Vd8*;UG{lyNkLs663`oRJv=`Mr)i6Bbi@ z!VN9*(tP@c$;D|T`BL1ocU@JBe{3|7?iNm0%*Qh{_~1rlq(?J*4o!(DjU=Rt#|<&>8-i6eYG_RQ%UcRl7XlkyeUN-B>& zQ@+WmVVjDR;)v6i>HfZH7f*%fh>=&-lFLbA+lO+Ae(iHMr0sfF=@uE6%oKQIju1-5kG{BW49?x;s6zB*WdJSf) zJOsvT>qhC?TkY!16w5R^RNus#r<2HZ%QZe?B6shD5#`MYtMU@24AwzFn)>jI0o>s%XC6*%xl*WXVl`T}2di}6TUpVhjB5%fT zNdfOuC8B0!=#RyLiYzCRBEqlV>jkNtE$n(2i~B+Q<{>I?ET)IFiZ^|aZIMwCPh#78 z)DxFq+4ipwg;UFaxGv-d*Pkw-h*&FC5|(`@qs6hoqkFW5-I11K$G2t+%`N zj$bOZrR_ehj>R*+{*KJ!`Hf-AlHXOOgn7*aa$CNJKT-DaDqUr$%*~!Q&)tPz4U>4e z34#MzN_iq`zhde@7%>*0*Xd1uWBvOhk(i{Uq?;D9Z1MDHjR@zRlSPPm0;h$ho3nVr zyM;ct#b%}j(I@ZY>6{!l9cqr^_;&XZsL`lH20NtDHzl-wI>0w)=k5i;>Z;vai?KUdy)zn_y*nvu7B_C#$H0gHuh zpJq8`8ICX~oV5BUi&vRjha!20>vCr>JkoFOkInlh;3^G8%h-L3Dj603K|vrn^dg$( zaH`0lGx(+Fwb>U=Cp$y!lAIHvd8iY(Q(&;BTwfST>^5ssZq?qT^NP=hB~j{y=O>MJ zNNi0*iBdj?e^`LGZB-Z5;=InH#9%X}yQ%v_*`YNcFc!uAEuwgh%3pHAfZpI%FL_9l%O7jaF-^-=-9JxsqrUw%{^1%wcl~6X5gCZe zZ@67_%PBCt%iC_T_vfMo_GpvtA*|M~u9mNq=g7k{jbeZC{&qO?0~yBknl+ZtFtzY@ z3Ua6Rg_Guc7RlbQM$Dy#Fc!^j(ngd>c`tQeyKT3?*^iS(`y7k0Qc3fg6Z<0-1*Z|I zp%hnY?Vr=+`Bde+UOg%SamXshPsP5Gfr14y7V;cNA!~ttWv16*7L8@?B3cN`f#ds&oePKEV+*cur?arht0`xb+KYTj zon?1c2aU_5YBP7Smgn|saF}r^YF!zszP+_+gvPs^J##cc-B_HgPCM?ym>0@+u)Xe) ziixEpIhLQ|0y4n^IN?+ur>M){mF4+s8)Kf=JlBS?7EA z9aWu_{TU-2Jz3^cQokp$NcwFhO|sUwO6MKZamK>tboDoKA8&liCo=Di){9)dTkxI9 zW(plgUs3U55ahC=&IXF5%UQ8p%489U0g>9LTBpNHN@iOR%X#0C|Je;1Jmue*{C*(r zX-H;iu1d_cR*wC*LD4%ZtNgQu(2;np-$Lzvs#aii9FDR&1^a!M=2x|vB5W^|}iGyYgyf+MlwTrq0LTt&%h1y5P@LD>_JBN*zy) z)Rz?-NW`_c^xoGCkd)t0)v$BTA+{b&Y4LnQ6hBx086YLtm7ujBwI8!qEKaNBt#P&$oZw6G!a%*N zQoPn$WHFZ-$$Q_0_iDuTiHcsi_Yfze^{*T?h1aKh6ZNO5mmp8DmFk|7IqusZ%q{F# z52o)}+vnb@IyJKCnBF&H#8$>9+o7S%{j;eJZT`s2!3^x=&?Cvo$kKAHJHo~&f5ThZ zAC>~OKh`X)VT#0;UaJtB)~{=NjB?p>&zcu64K+17J!8szF}@lz!!a0Goc&N+*fQDE z-FZFq>X%R2YYTTEKOr^FdpgcW`6j^s%y|Gs9{hHX8v{oP#mqJ#rc~Y*NtNR7oe{u& z#3S&KxG1-aQP_^a&u__WI9Exxu{lF|raadf zLuVLkS=MQEMcj-SgfDpOzbpP8QYKBfH^IB}=qg0_(>uyCGkw zsc`BC()+&+_vo_h9VA6yGRO{%6!gC&ihYWab>(|Tnqh)#>Gr}e!O=1c7T{cen2r<* zmzqzE_OIq>=2`52K5-rya@RkT9tpk9si=eQa{oS+CW7ySP zOk?AOpaA5&7|YG24#mUzu;`@#8Oof@1()@r*-ONepu?I3G!l}#X)ZLVosnZKE|+%r*z z$!b-rtVu&rq2`04a{hf=k2nSKHHHcbpGjD06D6L$TAGzmI zICYj2?CU9QHJF-J{j-9coDtbbI&bqyZfb9#!sl2wL0v|xys{Lqsk zPQ**@xOB$G5f>Oi&PNf#jO_Ny$vQo@E`df|Wi#N<;^#fsW&Jj&VX@a~rM|=WWhE4v z%@zM@-*wP(2PCI5JPxajp!9q53&X_NxN$b=bCqdesd3{LZvN9I$zX&($9^}Q(PyduN}-w^pMf%00(G!c=Vmq@ zuXC+EeRCqYcFdxNNt*v4nNhu51|;&df5^ruel21wQNHaCjmJ5xfKC48ryDiflIbQA!e=DK?&6+jFXeuQ!cz7n7L$UWqc|Q-nC#1c z4f7?|Tkm@31T951RXqTyTwbi(;UX~bDcW7j(#lL6{QS(e?z#(n980TquTx*(Xv`z^ zR=r}2-4wK}mrbqGHX~cTLQdohnM&moE4%+S{lYDBk4ZIDYpyGf;b^5S0bNqF+>v5_@v_!B)$?@2AHuVbo$>KEb)d z&Hq`ML$ua!z;eJL-0)KE7=oS^y*a=m^vVblpCT(7Kc%q}fWYsFhS^;9yw7{B2I83(mHvOYod+VKhLavk{9}qmy^;=}yqra+ea%bC-jWZ9u-uI~({onK zJq~(iL??eIx;__(AnZq9`oAtl63|R`PQfs2Y8UkP7M)Kb^b+o1XeiG`yuUD#qm zzuMD8U^nC(%|+&{SsiP&($wzR=PcXmq6 z_F`6KH#zU*2MaXCQbV{gZU7&a1#3!<`$IZlB2jLv#QuHOsj4&rZoy{(38&A$kX4X2 z#*}()7Ms6!Jdc)P=7*H&sYkXyCZzKXxzj{y=|!KE;bLB3#a4IMCEvG2ihJ0(eU7SN z^~X_BjsBV4{dbAE4D8ja*m}V5e;S0KSy{!G=^dv%N3T}eu0gSFopMy^T{>aUSoZ=i z{|;|?EXf5~`a}!{U4u;Ebdc)z?I#Sci7%?4{p;PEmP=TV)L~~DwaXoftMLpr89jr@ z;7S~wcs(-HJp%K}sy^LoCJwJmFEC}QIS6szS%5bkTb5q?F`p8x#NuJ%s%4eMD65a; z3MU3biQw9HqtUs!Q`G}DE(e4~MfEy=XT@Yw(ite3zzXr2ZKd+YBz5h zWU?Q7X+*s4(0(&ejis#keZKZWZxuvp_kNz1YV#{ZMKQ+x%FHu#kIAo&M{;IWPj0S6 zwZ*FH1-`2FTkh$31_YdV2-&70hEzvMwgJ!7I#H{s>a@F6uyowJ^Ab5b<~k*QO_QPf z17bjoOVj(JyPytr!BI94d!qX)T$7?BoR)WXsX9FBu+o3UP2KX<5*-G^BjspeDu&vJ zfRi$=7*ok{0p5?$j7z#iX#w$0J=9oT@Co$e*y~Y2soj4;0O}T<%^7n1u$j zf?{TWRH0w2x)AQ20|cQgXXSaX1_3jL+77mHvMH0~(ktFzQ?4hvY#0=<@1t^eqeP3HLsXqLlbG|RJCmTA5nnBX?!+^kU|q{`K5))kk|1gOYfxU85_y7r zZU#)$Z@3Dv3c9j9P%d%M7>fj<_ArPhc*B!)TynVWBg4>`Yt7p84{7~KFQ7Dss_RfRM`o??vnj7$3ks*FudTa?_K(GZvzU~|87%vU1vrOc*DJhP zjOZ8NGwHOSn)eiGCn2-{*ZzBdW8dKUlRlwO#***pZ<*j|Sunqdww#U8ZIW-7%&QPu zX!;7j%ppo6B$n?)cMeOX?(W7=Yk)M!u*y+uDk zWROqK)U`oRRZD&T@(mC(_n%8R{)vf7k!T7%sKnL~wv$#jC9)xVa^UpGm+tRoJ4?jZ zhoWr<^9d{fj@D|W7+LB~5l6QrgxgakV+u)iH(%HKwZeW$Uc?ktmgx~(oRU5DsHY%! zE5~E2amX1i*(0^I918e!M;TVuD(z5ue;R#R-A`RA021`Kl`bJvNz*aKmh;z%NWgt+ z|9ebrEPPJe@A9=mmDox0lg4!pFBJC*go&Ufa>AAEd+5ebFM4S)aU}1;i%Ij_Bh${H zaOlm`64>CCzIN+A)pbgjd>4RC0%+Jhz$a zNHS`>$?_w=)pg_|wTixiQ>I!Q!UI-##-rmRP{;$M*6_ zQC;qLk2MS`JT8EppAL7x}# zrzL>egrWNu@z{zS!L1WEg!YRuQH4$Ubdu4JZr)=Ida?FH9wZQB3(E=s-dm<=G@qzM zR|R_e>%TXTx4Jn8)%Au_c(idy*kAMJEk5bc?zhd{+#R!s006lnbJa4d%8&O}`M#HZ z@|K(XZuU)?xk>tcj3kKwq0?#bZdJ2D4s3s^U~&?G@2yVQl)S&2aT_GFzXp`FnB-F> zzN!=%_*N5}S1zU=OFEKrn%|A^-)+@*E-sOE*$NSMM-tt1SR1IU4Qco+RFM^rKtRL)gK$5pRBv+&A#=VJH;$o8_DNxNU zXY)0s#%M3Co)G^?;IUoMw!pw%vSQrn_Sy`e+uL+~7IB@=#_=g|G@2WS0qrX|N68V_ zcB~WJZV&cn$gd=196Bmh&ik`eKPIW%KG>XXpY0WA3G0)3A!!b@7TpqDNkCRIG2g_< zB78Uiz+~)H`W>I7cHyd-LcUSswB%h}7RFI-8yN-O3CGNoc}F>U`5DuI;?820cp`Us ztL<5T!}>78dWFwSY;L97odIy#nOSp}y;$=-(x|$_I$SqxfuSYPjtQw+trXub%Kac8 z``j!#fS9cbzB5C%S}{-IoEIMc@o0qn?YazsCqMj$KMzwz1QaBXuFlI5T5coZhlza= zc{Qh%?7Jo@m2sFD&_7RLdHAmj5f)NioYdlLb#0NXGyXV=J9aoq@fD1Z?UDW~b9i&< z=sJjlb=Qfq5w!jo4mWO9stCmEEDsm#ZgFiZiR^IV?p))WXu23Bf^B2+62uo$)9V_9 zyTnx#rqI1a<|fB$OdYONV_W}nz|Ql5GU{ga1p{kMcMLxn44iQXjj*jD=e&wJl3%!_ z19ncG`|01mw5_)2dR&n{&##i`r;pw;pGD>CF<(DK+vM+|@5ZtjZut51G@Vu#4mLd) z_FN$fq2HjW6NMyV=+j1yGFB|k!HTf+OHmV&R^=7<=1L}rxve%%;%$c zuCo)2APi?*d4Pu{gU%5Z@Ab$KdNDAu(droyXXAcfW%E>=m7QO|2!K?0nFtHjJ;`+X z(*;bHJ$xLUu(`x1r(YUw!To%Egjk8^N?gmh+CXKg+;pP`v za=tSL&I`9yifk7nWVtW9yy>3nXnXFpW{U3*z8wmxlbe8CSrOlvm9m+x*=v9Fk< zw^O``3xsCdetBVdF>~<1!*uu=wK&Vso6=DA#d)zkyEi*vQv(g%tq&0}A?k^YelmPNqa-Z_asj6ulbd3}MsHudV8RpzYfu@$4^4iI<@w$X)NT0_V(I3U$; zUQ~l*a3RaYnz}uddhoxy`7ftAbwmZjk(dZf*< zTCWPd!%*u>jey<2bRkH!=Bzxb$e)d=T#MPk+>v;LWEzuCSGR40W`sgY8@5)hXn%nyPg1a z+v5QSJ=PCcl&dHGR$6~Du61B3&vF-B=BgX_T0TDd zCAapox7UkNjfE-BG>}tC%~`tEIEyMTk7%0sT*QwsP2GBZv<>K$#B#T7Qu->BkNgo~ zs~hvn=dPxgY8v(C-ndN)n*vFuSi5!&I$!@dwv#TaocZfI1kTaVO?#0g5E4H9EhZ>u zsgnOxozR=sXY6OG+OLp+{yH!Rb~zy^B#YqxsZm>|)9l5_bW>0veWyIDByUGI#DUm-K+ z)n`2k@-um_kWpMnV;z&X^^}b}9?GVoGgQ=!eb$lWDr=IGQWn?7wBfBIOD{^0c;xP?XI zoG)E`P&-SFI>29^%qO^4k2_4ceqIg>P=sdd1w1som@9*AL1@{H-f!BZu*+7CYmR=i zLk+ez`V#1$9v@gY;BdBtNb^6*`>`puXzrU%kbmb{Kr9qeK$tiK4vLQjV>AY%?lPr-(5Ew-DoV! z5EGwJ6rV`czi($&w4o2?S~hzGaYsh7zM39= zKOW6j!&2d*y_dro+9P)x0Whjp_W{!y;7@Ji6*l@Hf0bMz zLG3`ZBX1=fv{#R>_lf@fs5Di`rW{kc`sq#gA}wSGV!~+=+)m-D+~qc{RA_y|Q}ufX zS0EofNFqG_Su(FpGEb9QUaLy;bp7;Uq1BMn*v{&T^C!d8qOebV??)-M8n-%&64}|5 zg?F@FWlHU;j6|dNm-;h8kY~oj`8u0}Y8D&?N<1dz9`h zmJTeU-5Txi_gBq8P2h`C6S|P<_j2l$TEE?_%hPWx|0*bRDW5?mt?n!iD>3u@Rb5o* zt9a+CKz|rv`wYPHIEt!%*q*9$C~DJ);5_t%6m7^?jVk-rwlId-jI{V*fUTwK<(>1J zxH&}N#nY)ilI{?X>uwLU=CL7G_`|AdE@#u2o`GQ}PLH-u{mTQePfVj~M_01+o7$@U zH2X_5I4ib$e0#s2Pza;GD?HnRKQIt^BTkxGY(toi(z!u|Wao0(w>;ujmQRxk>ysAH z@V-s1S}y)J9(~}@8rR*t(lk+uap~%<&X8pJ=H1dR!9IwoZ+PvpeqKxClz{nZ7o+v| zW_<*I<)uO zRs86ZUKnvAG1wLs%;3tjGhV`8*FGpYlDaag*}CaTc?<)v;-f&m-NH4{nZPlQ$qvVURg<%AuGY7c>sN{quU!TeyaZxHqmPzho`Jw=@XG8@!&?RC z$_;A>>ryu=kG5|!y5p7AN8|zhhXs^xC%B0yBtj;7RkAYjG+1s9c6`-1W#+aHtYcmL zMA<$)nUGieOOVUUVzi@ECd!D5G~d+dZ8%fIaIRT&L+VZpf^g$&Lcw&P{qB-~Gg-&7 zVq>%4D&fuJ<8JrD2uy6HpUnM9Oo>JC8t1j&$Jt?%CU#wj_P_O>d8I}0U#qUf$eXXE zQ`%T7L;E$rU@yf8PE1+r_|!@3uH|vMJK8k4@UW2BI7(CQOSrp*RBTG$Y;3NGLMWHt z54n{N96Puf8Rpzxb1X&Z<-)O)JL-}yrkv~c!ESZnyxWB3}ESwMe) z(Xi^fm9GgKxOfma-XU7Jr|DYPp-DcN5UBrYUFKH_!~-OBlw+^T=@Gw;^e}A)m-g0} zf}XfXX}b&NgK>?`6=}@}M3k)5#6@tAAJ}iI*T!&3OE`bTR6^~hmi3mp%3=)q4nd>5 zvqfo|gU6Y}Pt-Y}6T#(UNxfbap@|n)(Q9dkTE`!^nT3Qse?{1%l9ljd*J88h zMa|P9c*&g(Rq`=9kG&t!c(YMabfifNiVcdg8WNpsQSF>5pB&$|)dObP)fklevlyK| z&=$7cUUT0MEG#OO@^+b{(%Gd?@)RobgR-kjI?lOw;%ejLC~3V|UQb#9gF(TFF4aW= zo2`dzCMCwGsTA?5+|3+mO;f|1q+^e7RcxjpSL2BvNoP}vKd32A?~lp~h%BL%AL;c< ztuG84D`FBet^r~qbBaSA?yME@Dy9S>#Td%?sKAh%IopYtK3nb0wi;LzaPQ7^yBtsErEL}^6hRL>pGr}$CGYe z8V5$V!DEfc_7C_Jw3P->{>cN6@zcZ4o3%?(2P#=_L?yzyR~(Z@qJ!50-l)u-!L`I) zGxa0w_(a6sk-m_Gz;)?qP`A0JuT(6i#w3GADUI5=5~l-CZI@;oUY~Q`xPQ-E1x$0t zU892$aq*5o!+J%9=1*?E6=JjP@|29Bt$CUc8Oj)m;z|w;&Tg(`4}f8nG@ll4a_N^H zXGJ4&9c)+iC>k=wGXcx>Z=HdWC6mmYQ{lx-6XX)P9$@j3=M_M^@@K%e*dr2Vul8didRWkxJhUbZvF z`zk(HkD4#Nl|iwpQj)&owZ_Fx>mTm;5|A~l!rLZZHWIl>4U}t`x<^xI-vnb~5zdMJw!6C?cwiHR7u9vM76G(Cq9h1y_x6 z3r@-ZLb;#3uEYUiJ(%nYQNo6~ynK-rw<2+sD)}E`{uXbX+|NaIzTGofvF}q*1#Mp= za>p)GboNap455V^DfdP(;E1bU+v)8c*uA^>+&&XjxC(DezkusH=<2&C8?hGide%3O zO=(WW>WO4F?ykkeuE9~rhtJULySG@=&Tmiz*?Ukia=`t3)j#LpzEVK}4;VZLLSD3J zg3WoU|Jnz^@?7YRIW2=TOStCqZ5z~tMMS7OC}2;oO>YBOu^wWJgCPo`6^lZ-&`OL1 z>h<)pXX`NZS8|K^fn7hLaFM!b;*vvX#eEGMLWc_<*uB{UMe@W)Wzv3v8+j9h0jb*^by4>U z!vw#oJPLWCBY%xe)&6r%jA1H!VA4^EW0l!sByQ*R?Cna+xyu?;ycWtB=UDjrO?NiL zj!yzT`JpNrzlFY6@s<%br1n^bB(+0AQFi#ox5;`6T60hx|MwzKqB7O;(}8zKwEcv8 z4>Uj@r?M%gNSKNa21*elf*!oT*Vz29(P$GIucNPq00}?35eW;c*=zG+ zJn5|MK{<6iQVn;M0&_Iq#2mh#Vyz5iEVlj@}&fT5CLq4zGz7YS!19_TyRD$_3NdFcS3CdcUIP}bWvhJ{V>z1 zgJ2#m>8y2`pp&95O{G7QCR9rw<41m}q4c9EGp=aSEIGw~(EsU2XuX&c z(RO^Wr4Qyq(a5z5(#fulVk8aRjZvg*kotTB` zo=pmlQYxL!pyZaM+uCS}csPp|vnaWpf~RY#*%<9jBIe?VJKZnVc%#@1r954esy`qI zckq+k(cVP}x*!sO`9X%zh21mUiAOcs>?0*lCYvhr(x{6~JHUb;(#2YSV7Fhi=uekr zb==g8;&UzyAmx;z0K?mkb5VxTCd}4jpdu%|!{c?{W<#i9#8tHU&=RE6%W*avEiu}P z7y}gBx(<_wy%K#bijbt0B{B@InR0iYIf27+N-dPYMZ z3T@9oy%b)hF~+C@;)q|(1c&CcFtt-bAplnE2G|K<)_qGN@WxFG25#XRc@Y+&vlz_sTAt@I?^T;soB}t z?H+)Us1=%eP)d&s&TQgkAqa^S4$pND0ZWET4F6icJKm$I8a}zc`qo)@Uch9K(OLIs z;n(-A1S<~EkElYSQEUdK+~V$?IfoN2pZ^81^`~n+?A6pMu#~NcpIlJIQ}j^YZtvcI zYoWbIqZZyDXTjP0H8`)rW`4BY^J9XAT{~0RFcS2fXmy(c3c5KEi<0Z0i-E_q!&b2D zeV-36|1G<+?FH=R0mqKapYf%$Pi^BJk`r6fe1lvWqZ!bGW-H(d&;_EU4Q|+Z(N7zp z<|-4y-Eu?KiB&ZMqyBtEg#D?T??1N_xd++?IlNPi49Ks@xB6nHF zm>ga`qScC3-q2!^XH(^Z)m-8=e5Q>mj zmnzhVy>JVDN-)-mDM(sa&mYU7;D`Hry^glmZiq8~X#<+JLy<>B4H zX#df@e||&ou{a{`Exk7L(uk$LV4yb>AFd7Y)BZ||hd)7R_%C2C1QQHH@;)AkVm#`e zi5%7+@_+r7lM_2+ffDn#UohSY}ql)^po$_a*{9rC-7Tr4=DKczNeChdj zwQ9}07#BVK=u1G?27qZkKxfRp7^QN zT0fU-k6?+IL^`*B!he`78VIWSig|QL?h&}#h4ZBV+`$6(Dx^JkvM;XjQc*x&rn4eB zbh4TNW=T?5XqT6~s#j&i(>cXq#CHJteQo?l%OL`;-CL$TsznBpZW`-CEaa1JM=QH> zfAk|XX#I&;Za+vIUF{`VAV*E@kC~Kao#u0mFlO0N%3hljLj#7i^Ma^gwu&057$Xa5 zNsdQp6Lqr(M{_>gyDMXH)q5JdEMLq91_oNeU81LU`)qdT&Zo_MmvYQfHw%%!p<#L> zuTv7`^UUt;JMo5t@A%Y~RJ$ka-|Q(FUxk;MPmqlF=L&>YIjl`ilNW%CC}K5kC&@~A zn!E8ipqV+^?pvu_Wxvumdq*UO`G}~wl>JtJe?J#_8W&Ibvd#U}^Jl!>1e0mz?(t5V z$C5t>A`ZmAf_W)}TzVN}gw4PSSE)QfvsBf>R`t;;1Gw5`Uj5``?7QakapyJU7Ao2) zY0n(QqQqK*uq!xIXg2cU+VdGHTAY6$Gb9%DgN_T zZp_a<-^_9Sm-uYbVLAQ>n?L){^Us0gonu_SZJDjPO??na!(r}%>)#l!T#@o{KhOtMzxijZ46A_n)EKU(gNM)wwA9CS44Rh z3=I|;z0Gwm?)*|MK>(U;K-eJ>Hu-keupz{oxz7sum$Ge_N+(J;dE-S1n=;R^Q`Fk1 zNnY5&)_i+T*`)DWQSZ)S0S>OfasC1lu39q}Z6YLKsxTxO$D{a#XX&v<=Vhal7wXdL zojER`U@50CXWDaLgOJIL&x;I9iyBm>ktNz0zLjrUoKV=+o_#GKUPSO;x| zE(e>9Zl#YfvNo&?nJ%J|FMiMZ-s1w*&diSG1=bg+r2QYySq7O46b2JGkPcW$WEOI950@ zM8v6%p4A59+OPP!Tt!~xCry7egSvX>G9p+X~x40QrCjWO+C zMooXS{wEJa4++^vJ=J;jo7vYG7X z|42Ek+2D1e&!E5C1{LeP7~|>+?Qlds?!e85B806n6cVtM!-D6yE~BYztv8*GOU+YL zBjh8AiqYH%a>=a>^fxY!LOhyRndNz~pjNH@*+_PTr0D={C` zK+&LRKF0^BR3Y17vb6p#2#1rPg+`@-Y3Hn5#Gn3R#JoPnj57rnnjLzZH|?@j4m$1z z_rxVW^#bEyB~4`=aW2}ln;MKWlg77N%(#;;Cj3V|ZS7Jm9wdIFFaN615R$go=EbZ* zsfzsSmTUwjWhK9NR-6aoWO*3qs!Q?d8f2R;&hzhO7K52mGP#<*a==`!rP%WyI)EKQ zj{_DO6`zLC=nSpY^){2mKEq%LN<{x8zyk(YGv2%J2n$UMqNxt`16nns3{-K)pczFW zo5o1x36}QOwcJKw61)Bcujn*%~3HA;@jy{S|2N^yBNuop)e(^u>RNN2%B`NSMWIyR@T-X^sw*Xcb0S zwYpzhO>|fq9U5=#7FLE2$APi<{~14r*m?2N+pThzHMs7pfpU3^pSD zZXv_WZR^CiU#uqJG=j;yF^GY|Z}U4Bf)rAxdf^#{ENkrLnRuxE z@s`BarRfPKu1E6drbJ+RK2^*p%*Qoy20mi!lTG#c|7Q^NOg-rEp=WbWVN?BSXM-g*jzA5#jrix-0&KM-5Q(JePASy1rZu}uY(ZYkDgJBi5GoJD4^`b^J094 z`rupypuO)a*mq1fGM;)4yk*rq2g(qzW9WycDJhY#loT9A0|R=k?wsx+j?fbO7i`KK z&LKTB@3DHo1StqipRgjQ^$b%blrxo$>Q#igs_7@RuVv9MlU z@7wW-J&N$N^+PD)8{EE(--MVF>4j`cFNs|i-bLCO?}pJpNv_6xK4`i6f8z)}>G=gv651-B@$B z9*OFa^03RSE_fFpTKLART{Aip&yg2ZrHBu~N<_ljz}B4W`k+GAK5VXb^BCaxmuOH1 zdu`qO^ea_{21~9PI1qKse>+E>F)2-F6+!$fFhMRQf<(7^;T~&FXGfPxzj;b$@W{;( zj{MY9MkvKxvgO;2xwz6MoX;{_KcX_5PHl{NZyEa=a+luPWJBS28e@8cjNsRB0Y4u+ z>7wmnRQN8m&yS01(;FsZX=+ZR61~!f!dhNSxC~@^^ul?EdsN}G;!>)H?oE7m-PP`FlR>*pX ztXB87M3in;46L}NCX*_+SiTEJ6f~b?U5wbC%!LBZ+L+-|w5=@cQpPdTBa=E$^;a+N5jy;wIe6UFV$^QtVS=$~*GA^E7nUR*omV zCRO}84sQOJm5OAym<_UawBwB2KL+*9*J7|SXWz+S;=Yf@gf9`5APmO((C+!k6?q5Gj@y=UE=I z*^=p6FHY}}0FFMP*9L-jA3ZhI?k_TBW|BTv=1rx z+KeJeJ<~rxsCwf;H!wU#Cx-c=6=l@8%}80c?4J`bd2<*cp=e0vD zIourX&%Eu1Yg5J2Q`Bv8>QqHUgmu~Ph3LJhUK!9pR}h3`7wY*nWLUeUESKR`($?&o zkd(`mvlOw?m*f?5-X%4JOIA;`>^q$i00u5sr2HVDHX2x-9L*^&(Q|=9lchU**Dq+$6WDl&o4Rw$EsC(aAEn1 zlK4$Er3QtEc?fB%UD3Oaq8}6vT9xlU0hyf$C}Ao4KSbipp-he%PdgK4NW?vx%}~O;yw?)mK*O=IOzT_HN8ylpT5^l#pp` zd8r$?GS;)A3e)2_i^Tg_dAmDVC%L6G6+3OnQQUm5*4ICbD_`IJL)|9kzE6px=3HBT^1)9kDY5?zF1Gi7z;%8aIvPfTzGA;}|dh`}^aC=5wt@??dfpO|Q=|sgizU zJqtz5tNL0@m#6!$Ys=58_B-K7R`8CP;$~LcJ#8}4zv4FW+}ZlHM^JK2B@Z%!XApN~ zN$-1}@2X(Gk%{1A&HM_)bpf31ab)$YRelY zUXVJPwR_gn{{#eALE{t6gGLw279M-q#W0#6haH&+d-Z3(5CFsSwnwP*0PS6w7S4RA zayBh8j21Psg32fN!RDBAkl|chzoR~5l89Vgoa7PVx$p7C2#+Qn`Qi@s<-u=jS2MAD z9IKrY)TW=51Fo<>B%kXd8oN0&9H3kvUqR#g+*&blg01Q zX1^)c{;Ioy_gC=^1;q;1(<{Cbo1<9Q@4`Iw7TgcjH!~t{8$5Ht`0<|im;+;Cb#LR7 z(7HAy>aox;Ux5hlw+_tvxrbETHiIu^ zp8;bF+rC#tSUWS3W0h{!u&~^SH%y;7grfdGUK8~rQmm&N5 z3&Lp&C3NY5zHELhllStTP$H&mt-o{@{Q_f{{`dfT=J@acHf*D*hu*5MMbTB+OfaG4 z*{6pF!z`j~t)}S3uNFZL?>jJmxh;}aHHe!d!D5Y#k^P6b&9UC)rd~haxenN6G=$0w zow7;vOb4J#zQ9+6j|E+iV*r@?kjPwz!3rtdB!&Nz^iNQ--x>pLKu-9@k*RN&YRqv=;}`HVBtG{n z%ENKlt8mF@bx;scRi+$yx4?@_(S-Q;Eb|y9J|gV;_7grFoV_@xd8Y3yTbD^$0!L0z zh{7No0qyrWn}X@BN;%K?rH&&Dj%;wv^dH>L_%t9G1-QhhG&1N`ERgr4 z1Zur@sCxd&LIB>&EI(yQfBpILh{bIB}fyjt=tIT4CiH%zF2WGt z3(k)YFn6reBm9EkIVxWO7syp463O7jP7*Du(;#4I zdTSX8Foh8-#0;pmapk(ANYiMN0!d0xgvk=I;5r+J26ox0`hmUk$P zxD|OFN!whb!jrfcf?AAl39)Lb7CybLg*#Tnz>ac_R zNz5eyNMisXi^mMuWCYNGuKX8Cqwkv9v2JJnyUcq5U&6}gSgz#+NQb3GKi+uRX$<340uCIm9$Ni^<%_n>3)9g?szkgOcnJ(B5M2WOB zx2^B?Oe%3WLrK>9T~)Tpk#nE!!>||1&@lmGk%<{UP?r+OErgv7-qg~-cMNl0n9i?N zC9h<;MNRCAUF^)yQnIA@YVh??678Vja|80TRhz^q36D9;TnwdXn_@D<3Kp{v3zdf} ziKb-CyXd_@EwF08(DZB9BWE`}vb5iVcYq|^M^C#-$8csfJ=gx4O3jwWZ9>(!O}e#> zExIC-%9!^jm!tkc!j5s*iMuDPuC0};vq{{Y|Il9jYu|z57ZE9JIKcg{RzFdk zJ|n?B_M69Os4JwupPRRo9QEwW^&h&O830HA7Qe(dn>Z|<9YasY1P?!xIKCr7n>@8= z^yg&BHz1F#D5jJYMVItSk7wXQ*XC*uO>R2>RsR1)@ZVokd#bN5eV!7({kiDZrz&;M z#m-iCMopmHP&}-ut}2%TxBtZZ3l^xdFkX_{AFT3u0O87x zr%_zDTkR@8@gJWsQx>KQ8j#Zjf^B35pnA8yxXSX~J4*oAlTq?tw%0UN9iV~#k}HZo zvIB&q2#gFlJ@4l^cN$IRfJgJ(c?VZ2r5I`e(tu1Kll9X#%sxR<(k1F~bN~ zewOuTm+h<2pzgr5eO<_>5>-)A`}39P_!!O%?b_+C|7`#_-`0&)p+S`}wox__<_BS%Va!6# zsZmlZR8nxADm>J$QK@m;S7zpc%Xoi&o>;LBJ_hLnc%4}^5`ol-p+Vi>S0riqP9w1J z&u(H2bZ7froMKxU8vrnqE`pNDkYgLVr<$6?p+PYKxb?5ILGg4utYGDu1RC0=1Obul zL874p6sk3csr(;8G;cV>g!M5GinIuVP7GZ<0s(zS+?-6_zS(ffY`s#8z6U$=_Fi0c z17_oo5(UFADF*j86qx&mc#Vnxz^b0~_xK$KtJSWL-X|=dW@_MfnpKBpg#r^^Q*yu5 zVUmPkvsVw;*5DuQWd&oEi-_TsWtgVW^Wcld-0OBkzMgRZ+ literal 23974 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

    krl(07ofo31K|+D!Sxt! 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 L-v0Ex*bDy$7IGOo diff --git a/test/image/baselines/quiver_custom-colorscale.png b/test/image/baselines/quiver_custom-colorscale.png index 79108fa949d485a60c00200375d765a709398941..1f4cc400bdb79f96b8b0e70da22ab560a1cbeecc 100644 GIT binary patch literal 25904 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 literal 27324 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 E0GXC1y8r+H diff --git a/test/image/baselines/quiver_multi-trace.png b/test/image/baselines/quiver_multi-trace.png index a94291799eb054d9a9dc1cf37217d9066243545a..13ce4d6aa012e7e51a8d410ed525fc24f3f334db 100644 GIT binary patch literal 31363 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 KK7vb`1pXhCmiUYS literal 30245 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 YJ5jf2z&#O^f8Anq*7Qu~pH~9^0}I4#kN^Mx diff --git a/test/image/baselines/quiver_sizemode.png b/test/image/baselines/quiver_sizemode.png index 8e81cf3ebf535e4e85f090b01a4cd416c8a1c9bc..bff61d48ceac127687924a61c04452303805e008 100644 GIT binary patch literal 31804 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 literal 40498 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 diff --git a/test/image/baselines/quiver_wind.png b/test/image/baselines/quiver_wind.png index 0365bd636c611d59bbb554fa7091704fa4cffc46..ced4ea566bde656900e293378c0c6ad9bcdbd6d4 100644 GIT binary patch literal 40592 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 feCwaSW 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 AF#rGn diff --git a/test/image/baselines/quiver_zero-vectors.png b/test/image/baselines/quiver_zero-vectors.png index 9b306e629e0b6b48d584731a966110b81c46a0a8..fddb563d1eb76fa451d3285ce41ac4d6eee5ea6b 100644 GIT binary patch literal 23976 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 Date: Wed, 24 Jun 2026 15:53:20 -0700 Subject: [PATCH 232/241] Add quiver mock to svgMockList --- test/jasmine/assets/mock_lists.js | 1 + 1 file changed, 1 insertion(+) diff --git a/test/jasmine/assets/mock_lists.js b/test/jasmine/assets/mock_lists.js index bf93191c0c3..ade9429a6e5 100644 --- a/test/jasmine/assets/mock_lists.js +++ b/test/jasmine/assets/mock_lists.js @@ -28,6 +28,7 @@ var svgMockList = [ ['layout-colorway', require('../../image/mocks/layout-colorway.json')], ['multicategory', require('../../image/mocks/multicategory.json')], ['polar_categories', require('../../image/mocks/polar_categories.json')], + ['quiver_simple', require('../../image/mocks/quiver_simple.json')], ['polar_direction', require('../../image/mocks/polar_direction.json')], ['polar_wind-rose', require('../../image/mocks/polar_wind-rose.json')], ['range_selector_style', require('../../image/mocks/range_selector_style.json')], From 601ca45eaec824f3c89c4d8af4c53c602fed6239 Mon Sep 17 00:00:00 2001 From: degzhaus Date: Wed, 24 Jun 2026 15:58:06 -0700 Subject: [PATCH 233/241] Add draftlog/7710_add.md for quiver trace type --- draftlogs/7710_add.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 draftlogs/7710_add.md diff --git a/draftlogs/7710_add.md b/draftlogs/7710_add.md new file mode 100644 index 00000000000..2beb5db0a18 --- /dev/null +++ b/draftlogs/7710_add.md @@ -0,0 +1 @@ +- Add `quiver` trace type to visualize vector fields using arrows [[#7710](https://github.com/plotly/plotly.js/pull/7710)] From 1f1898e9992b5c7398efa2b72d4f0e63190f11f1 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Thu, 25 Jun 2026 09:34:43 -0600 Subject: [PATCH 234/241] refactor: Generate data type union instead of hand writing --- src/types/core/api.d.ts | 3 +- src/types/core/data.d.ts | 124 ------------------------- src/types/core/events.d.ts | 2 +- src/types/core/graph-div.internal.d.ts | 3 +- src/types/core/layout.d.ts | 3 +- src/types/generated/schema.d.ts | 59 ++++++++++++ src/types/index.d.ts | 1 - tasks/generate_schema_types.mjs | 20 ++++ 8 files changed, 83 insertions(+), 132 deletions(-) delete mode 100644 src/types/core/data.d.ts diff --git a/src/types/core/api.d.ts b/src/types/core/api.d.ts index 32f041fe658..aa2f4bf38b0 100644 --- a/src/types/core/api.d.ts +++ b/src/types/core/api.d.ts @@ -2,9 +2,8 @@ * Public API function types for Plotly.js */ -import type { AnimationOpts, Frame, Layout } from '../generated/schema'; +import type { AnimationOpts, Data, Frame, Layout } from '../generated/schema'; import type { Config, DownloadImgopts, ToImgopts } from './config'; -import type { Data } from './data'; import type { PlotlyHTMLElement } from './events'; import type { Icon, Template } from './layout'; diff --git a/src/types/core/data.d.ts b/src/types/core/data.d.ts deleted file mode 100644 index 8d393a2e74c..00000000000 --- a/src/types/core/data.d.ts +++ /dev/null @@ -1,124 +0,0 @@ -/** - * Data/Trace types - * - * The `Data` union covers every trace type from the schema. Use the trace's - * `type` field as the discriminator to narrow to a specific trace shape: - * - * if (trace.type === 'bar') { trace.marker?.cornerradius } - * if (trace.type === 'pie') { trace.marker?.colors } - * - * Per-trace interfaces (BarData, PieData, IndicatorData, etc.) are generated - * directly from the schema and re-exported from `generated/schema`. - */ - -import type { - BarData, - BarpolarData, - BoxData, - CandlestickData, - CarpetData, - ChoroplethData, - ChoroplethmapboxData, - ChoroplethmapData, - ConeData, - ContourcarpetData, - ContourData, - DensitymapboxData, - DensitymapData, - FunnelareaData, - FunnelData, - HeatmapData, - Histogram2dcontourData, - Histogram2dData, - HistogramData, - IcicleData, - ImageData, - IndicatorData, - IsosurfaceData, - Mesh3dData, - OhlcData, - ParcatsData, - ParcoordsData, - PieData, - PlotType, - SankeyData, - Scatter3dData, - ScattercarpetData, - ScatterData, - ScattergeoData, - ScatterglData, - ScattermapboxData, - ScattermapData, - ScatterpolarData, - ScatterpolarglData, - ScattersmithData, - ScatterternaryData, - SplomData, - StreamtubeData, - SunburstData, - SurfaceData, - TableData, - TraceType, - TreemapData, - ViolinData, - VolumeData, - WaterfallData -} from '../generated/schema'; - -export type { PlotType, TraceType }; - -/** - * Union of every trace shape. All fields are optional via `Partial<…>` — - * narrow with the `type` discriminator before accessing trace-specific - * attributes. - */ -export type Data = - | Partial - | Partial - | Partial - | Partial - | Partial - | Partial - | Partial - | Partial - | Partial - | Partial - | Partial - | Partial - | Partial - | Partial - | Partial - | Partial - | Partial - | Partial - | Partial - | Partial - | Partial - | Partial - | Partial - | Partial - | Partial - | Partial - | Partial - | Partial - | Partial - | Partial - | Partial - | Partial - | Partial - | Partial - | Partial - | Partial - | Partial - | Partial - | Partial - | Partial - | Partial - | Partial - | Partial - | Partial - | Partial - | Partial - | Partial - | Partial - | Partial; diff --git a/src/types/core/events.d.ts b/src/types/core/events.d.ts index c4b14d9eebf..9355d47f2e5 100644 --- a/src/types/core/events.d.ts +++ b/src/types/core/events.d.ts @@ -8,6 +8,7 @@ import type { AnimationFrameOpts, Annotation, + Data, Frame, Layout, LayoutAxis, @@ -16,7 +17,6 @@ import type { } from '../generated/schema'; import type { Datum } from '../lib/common'; import type { Config } from './config'; -import type { Data } from './data'; // --------------------------------------------------------------------------- // Point / datum types in events diff --git a/src/types/core/graph-div.internal.d.ts b/src/types/core/graph-div.internal.d.ts index a87362a38cb..4c621c8bad7 100644 --- a/src/types/core/graph-div.internal.d.ts +++ b/src/types/core/graph-div.internal.d.ts @@ -6,9 +6,8 @@ * Commonly referred to as `gd` in the codebase. */ -import type { Layout } from '../generated/schema'; +import type { Data, Layout } from '../generated/schema'; import type { Config } from './config'; -import type { Data } from './data'; import type { CalcData, FullData } from './data.internal'; import type { FullLayout } from './layout.internal'; diff --git a/src/types/core/layout.d.ts b/src/types/core/layout.d.ts index f7f01c76096..bc25d3354ae 100644 --- a/src/types/core/layout.d.ts +++ b/src/types/core/layout.d.ts @@ -8,8 +8,7 @@ * literal utilities, and deprecated aliases. */ -import type { Layout } from '../generated/schema'; -import type { Data, TraceType } from './data'; +import type { Data, Layout, TraceType } from '../generated/schema'; import type { PlotlyHTMLElement } from './events'; // --------------------------------------------------------------------------- diff --git a/src/types/generated/schema.d.ts b/src/types/generated/schema.d.ts index f4ac6ebdae6..4e44269f5e6 100644 --- a/src/types/generated/schema.d.ts +++ b/src/types/generated/schema.d.ts @@ -12091,6 +12091,65 @@ export interface WaterfallData { zorder?: number; } +/** + * Union of every trace shape. All fields are optional via `Partial<…>` — + * narrow with the `type` discriminator before accessing trace-specific + * attributes: + * + * if (trace.type === 'bar') { trace.marker?.cornerradius } + * if (trace.type === 'pie') { trace.marker?.colors } + */ +export type Data = + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial + | Partial; + // --------------------------------------------------------------------------- // Layout component interfaces // --------------------------------------------------------------------------- diff --git a/src/types/index.d.ts b/src/types/index.d.ts index 8233cd051b7..258c0897fa3 100644 --- a/src/types/index.d.ts +++ b/src/types/index.d.ts @@ -11,7 +11,6 @@ export * from './lib/common'; // Core types (public) export * from './core/api'; export * from './core/config'; -export * from './core/data'; export * from './core/events'; export * from './core/layout'; diff --git a/tasks/generate_schema_types.mjs b/tasks/generate_schema_types.mjs index 87fa258d3a2..e43a05b8e62 100644 --- a/tasks/generate_schema_types.mjs +++ b/tasks/generate_schema_types.mjs @@ -1156,6 +1156,25 @@ export function generateSchemaTypes(schema, outputPath) { chunks.push(''); } + // Discriminated union of every trace shape. All fields are optional via + // `Partial<…>` — narrow with the `type` discriminator before accessing + // trace-specific attributes. + chunks.push('/**'); + chunks.push(' * Union of every trace shape. All fields are optional via `Partial<…>` —'); + chunks.push(' * narrow with the `type` discriminator before accessing trace-specific'); + chunks.push(' * attributes:'); + chunks.push(' *'); + chunks.push(' * if (trace.type === \'bar\') { trace.marker?.cornerradius }'); + chunks.push(' * if (trace.type === \'pie\') { trace.marker?.colors }'); + chunks.push(' */'); + chunks.push('export type Data ='); + traceNames.forEach((traceName, i) => { + const interfaceName = traceNameToInterfaceName(traceName); + const sep = i === traceNames.length - 1 ? ';' : ''; + chunks.push(` | Partial<${interfaceName}>${sep}`); + }); + chunks.push(''); + // Emit layout-specific interfaces (subplots + array items) chunks.push('// ---------------------------------------------------------------------------'); chunks.push('// Layout component interfaces'); @@ -1263,6 +1282,7 @@ export function generateSchemaTypes(schema, outputPath) { if (!INTERNAL_INTERFACES.has(name)) exportedNames.add(name); } for (const traceName of traceNames) exportedNames.add(traceNameToInterfaceName(traceName)); + exportedNames.add('Data'); for (const name of subplotGroups.keys()) exportedNames.add(name); for (const name of arrayItems.keys()) exportedNames.add(name); exportedNames.add('Layout'); From f11b667b7f7f4b827f3cc8c80a013cea27eabaf7 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Thu, 25 Jun 2026 10:43:14 -0600 Subject: [PATCH 235/241] Update docs --- src/types/ARCHITECTURE.md | 9 ++++++--- src/types/GENERATOR.md | 8 +++++++- src/types/README.md | 1 + 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/types/ARCHITECTURE.md b/src/types/ARCHITECTURE.md index 1522d8aefb9..06d6064a0ee 100644 --- a/src/types/ARCHITECTURE.md +++ b/src/types/ARCHITECTURE.md @@ -51,7 +51,9 @@ The split: FontArray, ColorBar, HoverLabel, Domain, Pattern, TickFormatStops, LegendGroupTitle). - **Per-trace data interfaces** for all trace types (BarData, ScatterData, - IndicatorData, etc.). + IndicatorData, etc.), plus the **`Data` discriminated union** over all + of them (`Partial | Partial | …`) — narrowed via + the `type` field. - **Layout component interfaces** (LayoutAxis, Legend, Scene, Annotation, Shape, Slider, UpdateMenu, etc.) and the Layout interface itself. @@ -85,7 +87,7 @@ This split is reflected in the types: | User-facing | Internal | Where defined | |---|---|---| | `Layout` | `FullLayout` | `Layout` in `generated/schema.d.ts`; `FullLayout` in `core/layout.internal.d.ts` | -| `Data` (union over `type`) | `FullData` | `Data` in `core/data.d.ts` (union of schema `*Data` interfaces); `FullData = Data & FullDataInternals` in `core/data.internal.d.ts` | +| `Data` (union over `type`) | `FullData` | `Data` in `generated/schema.d.ts` (union of schema `*Data` interfaces); `FullData = Data & FullDataInternals` in `core/data.internal.d.ts` | | (n/a) | `GraphDiv` (the `gd` param) | `core/graph-div.internal.d.ts` — DOM element with `_fullLayout`, `_fullData`, `calcdata`, etc. | `FullData` is the discriminated union of schema trace types intersected with @@ -106,7 +108,6 @@ src/types/ ├── core/ # hand-written types for the core API │ ├── api.d.ts # public API function signatures (newPlot, etc.) │ ├── config.d.ts # Config, ToImgopts (Edits re-exported from generated) -│ ├── data.d.ts # Data union (over all schema `*Data` interfaces) │ ├── data.internal.d.ts # CalcData, FullData │ ├── events.d.ts # PlotMouseEvent, PlotlyHTMLElement, etc. │ ├── graph-div.internal.d.ts # GraphDiv, GraphContext @@ -173,6 +174,8 @@ src/types/generated/schema.d.ts │ // Trace interfaces │ export interface ScatterData { marker?: _internal.Marker; ... } │ export interface BarData { ... } + │ // Discriminated union over all traces + │ export type Data = Partial | Partial | ...; │ // Layout │ export interface LayoutAxis { autorangeoptions?: _internal.AutoRangeOptions; ... } │ export interface Layout { ... } diff --git a/src/types/GENERATOR.md b/src/types/GENERATOR.md index 018d11020b5..d5b2f188242 100644 --- a/src/types/GENERATOR.md +++ b/src/types/GENERATOR.md @@ -8,6 +8,7 @@ types into `src/types/generated/schema.d.ts`: TransitionEasing, TraceType — plus a deprecated `PlotType` alias) - Shared sub-interfaces (Font, ColorBar, HoverLabel, etc.) - Data interfaces for each trace type (BarData, ScatterData, IndicatorData, etc.) + and the `Data` discriminated union over all of them - Layout component interfaces (LayoutAxis, Legend, Scene, Annotation, etc.) and the Layout interface itself - Animation / frame / edits interfaces (AnimationOpts, Frame, Edits) @@ -90,7 +91,11 @@ so the automatic extractor skips them, but they need to be named for ### Phase 3: Trace interfaces Each trace gets an interface (`ScatterData`, `BarData`, etc.) whose -properties reference shared types where fingerprints match. +properties reference shared types where fingerprints match. After all +trace interfaces are emitted, the generator also emits the discriminated +union `Data = Partial | Partial | …` covering every +trace — narrowed via the `type` field. Adding or removing a trace in the +schema flows through automatically. ### Phase 4: Layout types @@ -191,6 +196,7 @@ src/types/generated/schema.d.ts │ AutoRangeOptions, │ Lighting, ErrorY) ├── Trace interfaces (ScatterData, BarData, ... — 49 traces) +├── Data union (`Partial<*Data>` over every trace, discriminated by `type`) ├── Layout component interfaces (LayoutAxis, Legend, Scene, Annotation, etc.) ├── Layout interface └── Animation / frames / config (AnimationOpts, Frame, Edits, ConfigBase) diff --git a/src/types/README.md b/src/types/README.md index 0c6a3293ba9..b11bd508fcb 100644 --- a/src/types/README.md +++ b/src/types/README.md @@ -48,6 +48,7 @@ The following are **auto-generated from `plot-schema.json`** by - Common enum aliases (Calendar, Dash, AxisType, PatternShape, XRef, YRef, TransitionEasing, TraceType — and a deprecated `PlotType` alias) - Data interfaces for each trace type (BarData, ScatterData, IndicatorData, etc.) + and the `Data` discriminated union over all of them - Layout component interfaces (LayoutAxis, Legend, Scene, Annotation, Shape, Slider, UpdateMenu, etc.) and the Layout interface itself - Shared sub-interfaces (Font, ColorBar, HoverLabel, LegendGroupTitle, etc.) From d92fd9b2a4c13dcbaa66ea60f4a39da70c885f2d Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Thu, 25 Jun 2026 11:22:01 -0600 Subject: [PATCH 236/241] Update types --- src/types/generated/schema.d.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/types/generated/schema.d.ts b/src/types/generated/schema.d.ts index 1a89a0570ba..76b63c68513 100644 --- a/src/types/generated/schema.d.ts +++ b/src/types/generated/schema.d.ts @@ -12335,6 +12335,7 @@ export type Data = | Partial | Partial | Partial + | Partial | Partial | Partial | Partial From 8f2e3c64fe9bb9c83c0351d2bccf76e050a5c146 Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Mon, 29 Jun 2026 18:34:06 -0400 Subject: [PATCH 237/241] ensure selection buttons are shown in modebar for quiver trace --- src/components/modebar/manage.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/modebar/manage.js b/src/components/modebar/manage.js index 56713ca22db..86bda354d1c 100644 --- a/src/components/modebar/manage.js +++ b/src/components/modebar/manage.js @@ -289,7 +289,7 @@ function isSelectable(fullData) { if(!trace._module || !trace._module.selectPoints) continue; - if(Registry.traceIs(trace, 'scatter-like')) { + if(Registry.traceIs(trace, 'scatter-like') && trace.type !== 'quiver') { if(scatterSubTypes.hasMarkers(trace) || scatterSubTypes.hasText(trace)) { selectable = true; } From 8245afd080b74c5033fed8305465fd9c7e9bcd91 Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Mon, 29 Jun 2026 18:34:32 -0400 Subject: [PATCH 238/241] fix selection styling logic for quiver trace --- src/traces/quiver/calc.js | 3 +++ src/traces/quiver/plot.js | 2 ++ src/traces/quiver/style.js | 17 +++++------------ 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/src/traces/quiver/calc.js b/src/traces/quiver/calc.js index 14c9fbff149..3e720fe0da2 100644 --- a/src/traces/quiver/calc.js +++ b/src/traces/quiver/calc.js @@ -5,6 +5,7 @@ var Axes = require('../../plots/cartesian/axes'); var isNumeric = require('fast-isnumeric'); var BADNUM = require('../../constants/numerical').BADNUM; var colorscaleCalc = require('../../components/colorscale/calc'); +var calcSelection = require('../scatter/calc_selection'); /** * Main calculation function for quiver trace @@ -189,5 +190,7 @@ module.exports = function calc(gd, trace) { }); } + calcSelection(cd, trace); + return cd; }; diff --git a/src/traces/quiver/plot.js b/src/traces/quiver/plot.js index 7c33b1940d3..b342761a0af 100644 --- a/src/traces/quiver/plot.js +++ b/src/traces/quiver/plot.js @@ -61,6 +61,8 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition var xa = plotinfo.xaxis; var ya = plotinfo.yaxis; + cdscatter[0][plotinfo.isRangePlot ? 'nodeRangePlot3' : 'node3'] = d3.select(element); + // Create line group for arrows var lines = d3.select(element).selectAll('g.lines') .data([cdscatter]); diff --git a/src/traces/quiver/style.js b/src/traces/quiver/style.js index 4082565b705..b3c2b8965c2 100644 --- a/src/traces/quiver/style.js +++ b/src/traces/quiver/style.js @@ -30,23 +30,16 @@ function colorscaleStroke(paths, trace) { function style(gd) { var s = d3.select(gd).selectAll('g.trace.quiver'); - s.each(function(d) { - var trace = d[0].trace; - var marker = trace.marker || {}; - var markerLine = marker.line || {}; - var lineColor = Lib.isArrayOrTypedArray(marker.color) ? undefined : marker.color; - - var paths = d3.select(this).selectAll('path.js-line'); - paths.call(Drawing.lineGroupStyle, markerLine.width, lineColor, markerLine.dash); - - // colorscale strokes must be applied after lineGroupStyle, which would - // otherwise flatten every arrow to a single (line.color) stroke - if(trace._hasColorscale) colorscaleStroke(paths, trace); + styleArrows(gd, d, d3.select(this)); }); } function styleOnSelect(gd, cd, sel) { + styleArrows(gd, cd, sel); +} + +function styleArrows(gd, cd, sel) { var trace = cd[0].trace; var marker = trace.marker || {}; var markerLine = marker.line || {}; From 131c00cd346ddfbff27ff730b03dfc1dc728dbb2 Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Mon, 29 Jun 2026 18:47:48 -0400 Subject: [PATCH 239/241] update selected and unselected attrs to mirror normal styling attrs --- src/traces/quiver/attributes.js | 36 ++++++++++++++++------------- src/traces/quiver/defaults.js | 8 +++---- src/traces/quiver/style.js | 14 ++++++------ src/types/generated/schema.d.ts | 21 ++++++++--------- test/plot-schema.json | 40 ++++++++++++++++++++------------- 5 files changed, 66 insertions(+), 53 deletions(-) diff --git a/src/traces/quiver/attributes.js b/src/traces/quiver/attributes.js index 77b78567fde..b163793051e 100644 --- a/src/traces/quiver/attributes.js +++ b/src/traces/quiver/attributes.js @@ -139,20 +139,21 @@ var attrs = { editTypeOverride: 'calc' }) ), - - // Selection and styling selected: { - line: { + marker: { color: { valType: 'color', editType: 'style', - description: 'Sets the line color of selected points.' + description: 'Sets the marker color of selected points.' }, - width: { - valType: 'number', - min: 0, - editType: 'style', - description: 'Sets the line width of selected points.' + line: { + width: { + valType: 'number', + min: 0, + editType: 'style', + description: 'Sets the line width of selected points.' + }, + editType: 'style' }, editType: 'style' }, @@ -167,17 +168,20 @@ var attrs = { editType: 'style' }, unselected: { - line: { + marker: { color: { valType: 'color', editType: 'style', - description: 'Sets the line color of unselected points.' + description: 'Sets the marker color of unselected points, applied only when a selection exists.' }, - width: { - valType: 'number', - min: 0, - editType: 'style', - description: 'Sets the line width of unselected points.' + line: { + width: { + valType: 'number', + min: 0, + editType: 'style', + description: 'Sets the line width of unselected points, applied only when a selection exists.' + }, + editType: 'style' }, editType: 'style' }, diff --git a/src/traces/quiver/defaults.js b/src/traces/quiver/defaults.js index cd4199f6ebc..179b906a07d 100644 --- a/src/traces/quiver/defaults.js +++ b/src/traces/quiver/defaults.js @@ -83,11 +83,11 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout }; // Selection styling - coerce('selected.line.color'); - coerce('selected.line.width'); + coerce('selected.marker.color'); + coerce('selected.marker.line.width'); coerce('selected.textfont.color'); - coerce('unselected.line.color'); - coerce('unselected.line.width'); + coerce('unselected.marker.color'); + coerce('unselected.marker.line.width'); coerce('unselected.textfont.color'); }; diff --git a/src/traces/quiver/style.js b/src/traces/quiver/style.js index b3c2b8965c2..05e9843f097 100644 --- a/src/traces/quiver/style.js +++ b/src/traces/quiver/style.js @@ -49,19 +49,19 @@ function styleArrows(gd, cd, sel) { if(!sel) return; if(trace.selectedpoints) { - var selectedAttrs = trace.selected || {}; - var unselectedAttrs = trace.unselected || {}; - var selectedLine = selectedAttrs.line || {}; - var unselectedLine = unselectedAttrs.line || {}; + var selectedMarker = (trace.selected || {}).marker || {}; + var unselectedMarker = (trace.unselected || {}).marker || {}; + var selectedMarkerLine = selectedMarker.line || {}; + var unselectedMarkerLine = unselectedMarker.line || {}; sel.selectAll('path.js-line').each(function(d) { var path = d3.select(this); var dim = !d.selected; - var explicitColor = dim ? unselectedLine.color : selectedLine.color; + var explicitColor = dim ? unselectedMarker.color : selectedMarker.color; var lineWidth = dim ? - (unselectedLine.width !== undefined ? unselectedLine.width : markerLine.width) : - (selectedLine.width !== undefined ? selectedLine.width : markerLine.width); + (unselectedMarkerLine.width !== undefined ? unselectedMarkerLine.width : markerLine.width) : + (selectedMarkerLine.width !== undefined ? selectedMarkerLine.width : markerLine.width); if(explicitColor) { Drawing.lineGroupStyle(path, lineWidth, explicitColor, markerLine.dash); diff --git a/src/types/generated/schema.d.ts b/src/types/generated/schema.d.ts index 76b63c68513..f5899ed7064 100644 --- a/src/types/generated/schema.d.ts +++ b/src/types/generated/schema.d.ts @@ -1627,14 +1627,7 @@ export interface CandlestickData { * Minimum: 0 */ legendwidth?: number; - line?: { - /** - * Sets the width (in px) of line bounding the box(es). Note that this style setting can also be set per direction via `increasing.line.width` and `decreasing.line.width`. - * @default 2 - * Minimum: 0 - */ - width?: number; - }; + line?: _internal.ErrorY; /** Sets the low values. */ low?: Datum[] | Datum[][] | TypedArray; /** Assigns extra meta information associated with this trace that can be used in various text attributes. Attributes such as trace `name`, graph, axis and colorbar `title.text`, annotation `text` `rangeselector`, `updatemenues` and `sliders` `label` text all support `meta`. To access the trace `meta` values in an attribute in the same trace, simply use `%{meta[i]}` where `i` is the index or key of the `meta` item in question. To access trace `meta` in layout attributes, use `%{data[n[.meta[i]}` where `i` is the index or key of the `meta` and `n` is the trace index. */ @@ -7085,7 +7078,11 @@ export interface QuiverData { */ opacity?: number; selected?: { - line?: _internal.ErrorY; + marker?: { + /** Sets the marker color of selected points. */ + color?: Color; + line?: _internal.ErrorY; + }; textfont?: Font; }; /** Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect. */ @@ -7124,7 +7121,11 @@ export interface QuiverData { /** Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves. */ uirevision?: any; unselected?: { - line?: _internal.ErrorY; + marker?: { + /** Sets the marker color of unselected points, applied only when a selection exists. */ + color?: Color; + line?: _internal.ErrorY; + }; textfont?: Font; }; /** Sets the y components of the arrow vectors. */ diff --git a/test/plot-schema.json b/test/plot-schema.json index e104dd578c6..5a0491c1cc9 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -53515,20 +53515,24 @@ }, "selected": { "editType": "style", - "line": { + "marker": { "color": { - "description": "Sets the line color of selected points.", + "description": "Sets the marker color of selected points.", "editType": "style", "valType": "color" }, "editType": "style", - "role": "object", - "width": { - "description": "Sets the line width of selected points.", + "line": { "editType": "style", - "min": 0, - "valType": "number" - } + "role": "object", + "width": { + "description": "Sets the line width of selected points.", + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "role": "object" }, "role": "object", "textfont": { @@ -53716,20 +53720,24 @@ }, "unselected": { "editType": "style", - "line": { + "marker": { "color": { - "description": "Sets the line color of unselected points.", + "description": "Sets the marker color of unselected points, applied only when a selection exists.", "editType": "style", "valType": "color" }, "editType": "style", - "role": "object", - "width": { - "description": "Sets the line width of unselected points.", + "line": { "editType": "style", - "min": 0, - "valType": "number" - } + "role": "object", + "width": { + "description": "Sets the line width of unselected points, applied only when a selection exists.", + "editType": "style", + "min": 0, + "valType": "number" + } + }, + "role": "object" }, "role": "object", "textfont": { From e51e23ed99feb650a1e6b231bfab8521720b0ad7 Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Tue, 30 Jun 2026 12:26:49 -0400 Subject: [PATCH 240/241] ensure arrowhead size remains constant in pixel coordinates, and cap arrowhead length at 0.7 of arrow body length --- src/traces/quiver/plot.js | 98 +++++++++++++++++++++------------------ 1 file changed, 52 insertions(+), 46 deletions(-) diff --git a/src/traces/quiver/plot.js b/src/traces/quiver/plot.js index b342761a0af..b6465f4e3b0 100644 --- a/src/traces/quiver/plot.js +++ b/src/traces/quiver/plot.js @@ -6,6 +6,15 @@ var Lib = require('../../lib'); var Drawing = require('../../components/drawing'); var colorscaleStroke = require('./style').colorscaleStroke; +// Length (px) of each arrowhead arm per unit of marker.line.width at +// arrowsize = 1. With the head's half-angle of PI/12, this yields an opening +// roughly 3x the line width, matching the `marker.arrowsize` spec +var HEAD_LEN_PER_WIDTH = 5.8; + +// Max arrowhead length as a fraction of the body length, so the head stays +// slightly shorter than the body for very short arrows +var MAX_HEAD_FRAC = 0.7; + module.exports = function plot(gd, plotinfo, cdscatter, scatterLayer, transitionOpts, makeOnCompleteCallback) { var join, onComplete; @@ -90,7 +99,7 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition // Update line segments lineSegments.each(function(cdi) { - var path = d3.select(this); + const path = d3.select(this); // Skip invalid points if(cdi.x === undefined || cdi.y === undefined) { @@ -100,25 +109,22 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition // Compute arrow in data space // Derive pixel-per-data scaling from axes at this point - var pxPerX = Math.abs(xa.c2p(cdi.x + 1) - xa.c2p(cdi.x)); - var pxPerY = Math.abs(ya.c2p(cdi.y + 1) - ya.c2p(cdi.y)); - var scaleRatio = (pxPerX && pxPerY) ? (pxPerY / pxPerX) : 1; - var baseHeadScale = 0.2; - var markerArrowsize = (trace.marker || {}).arrowsize; - var arrowScale = (markerArrowsize !== undefined) - ? (baseHeadScale * markerArrowsize) - : baseHeadScale; - // Fixed arrowhead wedge angle (radians). - // Arrow direction is fully determined by u,v (see barbAng below); - // this constant only controls the opening of the head. - var headAngle = Math.PI / 12; - - var u = (trace.u && trace.u[cdi.i]) || 0; - var v = (trace.v && trace.v[cdi.i]) || 0; - - var norm = Math.sqrt(u * u + v * v); - var unitx = norm ? (u / norm) : 0; - var unity = norm ? (v / norm) : 0; + const pxPerX = Math.abs(xa.c2p(cdi.x + 1) - xa.c2p(cdi.x)); + const pxPerY = Math.abs(ya.c2p(cdi.y + 1) - ya.c2p(cdi.y)); + const scaleRatio = (pxPerX && pxPerY) ? (pxPerY / pxPerX) : 1; + const markerArrowsize = (trace.marker || {}).arrowsize; + const arrowSizeVal = (markerArrowsize !== undefined) ? markerArrowsize : 1; + // Fixed arrowhead wedge angle (radians). Arrow direction is fully + // determined by u,v (see angPx below); this constant only controls the + // relative angle of the point of the arrowhead + const headAngle = Math.PI / 12; + + const u = (trace.u && trace.u[cdi.i]) || 0; + const v = (trace.v && trace.v[cdi.i]) || 0; + + const norm = Math.sqrt(u * u + v * v); + const unitx = norm ? (u / norm) : 0; + const unity = norm ? (v / norm) : 0; var baseLen; if(sizemode === 'scaled') { var n = maxNorm ? (norm / maxNorm) : 0; @@ -127,16 +133,10 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition baseLen = norm * sizeref; } - var dxBase = unitx * baseLen; - var dyBase = unity * baseLen; - var dx = dxBase * scaleRatio; - var dy = dyBase; - var barbLen = Math.sqrt((dx * dx) / scaleRatio + dy * dy); - var arrowLen = barbLen * arrowScale; - var barbAng = Math.atan2(dy, dx / scaleRatio); - - var ang1 = barbAng + headAngle; - var ang2 = barbAng - headAngle; + const dxBase = unitx * baseLen; + const dyBase = unity * baseLen; + const dx = dxBase * scaleRatio; + const dy = dyBase; var x0, y0, x1, y1; if(anchor === 'tip') { @@ -156,22 +156,28 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition y1 = y0 + dy; } - var xh1 = x1 - arrowLen * Math.cos(ang1) * scaleRatio; - var yh1 = y1 - arrowLen * Math.sin(ang1); - var xh2 = x1 - arrowLen * Math.cos(ang2) * scaleRatio; - var yh2 = y1 - arrowLen * Math.sin(ang2); - - // Convert to pixels - var p0x = xa.c2p(x0); - var p0y = ya.c2p(y0); - var p1x = xa.c2p(x1); - var p1y = ya.c2p(y1); - var ph1x = xa.c2p(xh1); - var ph1y = ya.c2p(yh1); - var ph2x = xa.c2p(xh2); - var ph2y = ya.c2p(yh2); - - var pathData = 'M' + p0x + ',' + p0y + 'L' + p1x + ',' + p1y + 'L' + ph1x + ',' + ph1y + 'L' + p1x + ',' + p1y + 'L' + ph2x + ',' + ph2y; + // Arrow body endpoints (px) + const p0x = xa.c2p(x0); + const p0y = ya.c2p(y0); + const p1x = xa.c2p(x1); + const p1y = ya.c2p(y1); + + // Arrowhead is sized in pixels (relative to the line width) + // so it remains the same regardless of zoom, rather than scaling with the data space + // Set max head size so the head stays slightly shorter than the arrow body + // (e.g. for very short arrows when zoomed out). No head for zero-length arrows. + const lineWidth = trace.marker.line.width; + const bodyLenPx = Math.sqrt((p1x - p0x) * (p1x - p0x) + (p1y - p0y) * (p1y - p0y)); + const maxHeadPx = MAX_HEAD_FRAC * bodyLenPx; + const headLenPx = Math.min(HEAD_LEN_PER_WIDTH * arrowSizeVal * lineWidth, maxHeadPx); + const angPx = Math.atan2(p1y - p0y, p1x - p0x); + + const ph1x = p1x - headLenPx * Math.cos(angPx - headAngle); + const ph1y = p1y - headLenPx * Math.sin(angPx - headAngle); + const ph2x = p1x - headLenPx * Math.cos(angPx + headAngle); + const ph2y = p1y - headLenPx * Math.sin(angPx + headAngle); + + const pathData = 'M' + p0x + ',' + p0y + 'L' + p1x + ',' + p1y + 'L' + ph1x + ',' + ph1y + 'L' + p1x + ',' + p1y + 'L' + ph2x + ',' + ph2y; path.attr('d', pathData); }); From f256c6327e35ae9807ca88d33fbd0355b78eceb4 Mon Sep 17 00:00:00 2001 From: Emily KL <4672118+emilykl@users.noreply.github.com> Date: Tue, 30 Jun 2026 16:17:48 -0400 Subject: [PATCH 241/241] enable x0/dx and y0/dx attributes for quiver --- src/traces/quiver/defaults.js | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/traces/quiver/defaults.js b/src/traces/quiver/defaults.js index 179b906a07d..b1869dc78a4 100644 --- a/src/traces/quiver/defaults.js +++ b/src/traces/quiver/defaults.js @@ -11,13 +11,6 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout return Lib.coerce(traceIn, traceOut, attributes, attr, dflt); } - // Quiver requires explicit x and y inputs (no x0/dx or y0/dy fallback). - // Check presence on traceIn and let handleXYDefaults validate lengths. - if(traceIn.x === undefined || traceIn.y === undefined) { - traceOut.visible = false; - return; - } - var len = handleXYDefaults(traceIn, traceOut, layout, coerce); if(!len) { traceOut.visible = false;

    @YZmjsThbd{^T{JJDq)1 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 literal 74033 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

  • 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�DHFP}Rz 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 literal 79971 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 Pf}y3Rr}|RaI`aPkz`!^Q diff --git a/test/image/baselines/splom_large.png b/test/image/baselines/splom_large.png index 2596809d59eb46a935f93a3003431594f50517b2..a24c4d1223eaaa7c01ab278ee3511689233f79b5 100644 GIT binary patch literal 602367 zcmaHT1yoht^ERb`lz@tK2}mQ|A<`w?CEa=H20G9tyGyz+ja(WeF8N(-eSiON zt?OEcb9T&r=9!tj=gjf_YiSXb2RIL)prBC1L|@54LEW3b`-gBJa)+HoQXdNHA(YrF z0R<=Moh10gM?$k*z{OWX*spqhNJvy4c6vSU8nz}6O58%uPUc7kKPr!X{KBX+@gAIj z?ZanA&qz74i<1pqtFp6QvRtz$_R5a~k53N*;6%Ot^COx*4Q^-Rem{bY6m|)xBKTtngm+MA z^RO^tEWcZXA;XM|{ik0T4`j$>9*ZcG=uv{7^ZybAa^XEs(Sj2Wg%}2fcuv#;>quA< z8~Mj-h$0Y1p8VUdhX#h*dbr>;m8JHj*U67X{W&N!Mvps80rB0S><9-f3($T7e~r;| z52gV2?&{-;0j7ZOk4L|n@$X^kpopa^U@UpN=9)Vw#s49w7o0c~ z^kmXscftj|;P-l$#S8CHdPoSpLGrhd-zC2jRd?ua%pq1 zacw;NHkK$Ybo76^+)W43R#}}t1SZf%`r&Ua{bWQgX-oKT+7NL<6V!-owyXR=sRtFN zBK)tV{Af$G3m5LOlzfUa3iTJDKZ%ursRR9MG7@fUBl=(3=>fnL5dN`{pQvW|L8v6} zGgJ7mPwc-u_JXrbfie^Q2FhzSh%Or|Dwwzb;29@Ow{n93!Fa&t-PZ?>ch_CJ}C{CQC;4qIxjrBC0^AU3}LyWtu+^yG(sMHNSbpc#`~Whj*d_w@gQ=etwN z2)pAvLW0m=y7Wqdy8cJfS|JFLYbTNmP!QpSyj*@;?9T;5?))&2hYXPE;gKUj|1|O; z;>Z7M)G+rum+WpK90*a-sFc_G|3r0-7kV-bZUy3!&)8F6ApKtZcO%P)fa?EqjXjcg z+8l8Bq110ced%iqssVgD1H;t zmW%I^;+LU+zgT02K5pU3HtXs83(ubljfFe^6(fmi?-sAoH2%wEmV%+=|3^3eNlb`G z9w66;`OAiXI=bIcD~x~TZb)`P(_gNR$a@VV)!{$=ybJEoEHKU*UIwg_>Eu4eT#*3cd?MJifa4Szw^F-sPm^w^{%-i2%Y)B_l99~Ff=j$TIC&> zL}!TlW+=`}$%V8c_5bxtqXJ$Azj@_F4Ox4Anl9WAC?U>#R^nelzAZu;CYQrn#t21~ z^?#ynics?C2L#X8?@;RFg36cqF;eDRs6V6FFD>`pd0KtUkirzof9&}CpMONd2av@# zK4NCf{~jH`DdsaGL-c#!?D;Jp>d^j)oH!vwoiR z;V;6}x&Af5kBd}=JFk>$Y^XGv1f}=yQ;3|u!WKVFE-{22 zeZ2>W`6d28vfkXqEkgSLY<;{3i1?}h?8g{#N6sQKszZU*YTE?V1kQ(2XwersX;lX|l`p0?GJN6DFOmxiOtb@SH2|fFFAcJ&`-y zZsb7)aSURKGQSk^mEdndA?<6$z5c~b^o}CgADH_gLGs-*e#F1{ z^FyK^C&NeR5Qb8knkz;91oXRNh!UX$pNX!`HT}#5{2|Y?htDA6!;3}K-C;z;4m19L zI@5MMQi!SGnY~u}wV(N^cpqYZ+CP`;apy_tU;I#}C?B-ipHu$2zB?tB+?^8JgwuQf z?En3Gi>zhzH_7<#jEa*Av8PC*Ndt9zOys`!xs2Xp=E#KN#1kYw{deX1H6-+FSfo03 z2!bI_2`XWPwqMHE4g~$#CH$$6UZQFusPAd5d*dmuqg)f@x`m<1PNjNQTg;IsuvwjE zKH2&>ER%(T%i0ry&vm8$k;QECT%3^BrrG0q?Q*|4H2T>{jT0#09rXKXEc$Kp-p#kW zWd{8jq48`D8NqCWdkggj3w3})!?Q^GMMjs?oh`BED1;M!RVDVx2`fU#qx_c6QL|1x z>9%?Ox4tz^CzI+hSlM*iGgn7nGv}k9TKJclr};JLpq_d}rCKasZ3wD9AG6{u;QQk1 zaV#Ve+60Y7E0tz*I8>_De@}wpB!1DX&dKSrka`w#-KnzIO0)Hza|1|3+v_-fQ9Qr~ z%IIyQ*7dB>Rxlf(if?UZcmLxPpX2aJabGavapdC=fRNhS`=}uTw1lOdG8K!?sQz%wn?WW z@;3BUmljAojJW?bUx>K0_p)B|4lQ=~$FV`Smn0CzQ=k_SPDuXmoz<^Q zllT1HerVoO8(4|UW%%)GzkcheBa~@MGc;-$HsOXvY=ki1t*cu^rxi4KbdJWf zhCad8lvGB;OU7$gIA1eJbL26#&|Je6KrHSx$EB9*&9j zaYSi0!uT{ZWxtXzl9CnU)E9+4B)N%Kd@}09p&opK6INLR8coECof`@qD!wI8c&>Jt z?JU}GqU0Y-zBKS3(4Y+UU=t*eci$h*+>UttawDgMpgJYbh_7<9b2f=1+8~5%yLyLV zzuSiJ>rl?yIK5aAiRi*PoHEZ5zh>@@H;i1~!xZ$G6?}WGHrnQ)=|C>%0=~>^g5F@I zsy%@PP{ey%NN9VLpV6CzLnsx_#~VjOj~b^(AdY|gwYbcEZm6Z8c5AiQHc;xemp&+5 zYRP$ks9+ z+wz_j=9n8)EbY_U9tG+Ruy86~`ed;92p&>^pgnY(z%`4XwYBtgMb?X%Wb z$4k>GWSLwi*T8`=uI5BaW6yct)uyLs-I)pEZk62^zJM>8axS53!cx`n>obYCh3D(s z)}bkymh1DCB2;+^$gY{u#X#~gj|3~M&RyWAub#{fvMM)^O<#C8&WAH#!^Vj$MI3te zo@&;&Be&zW>H2uV!io$;OyE`rn7He$xy`&)&T7l3#Z-}NGI?cipd{!Q=2L^<#_dol zsfpoXd~`WK;UiFNzV znL`(T*AHLE#b3eDuqR-<^E%hIcyNX2?<4IPkd1lnE02+kd%pPSI)U(97EZ;rx=LCk0EmrKd?B-&KqX&Y^&aL#)7x=Ph*ecuCU#%jk z#7}KPW~^qk?cL6m=p4^AiU^iC^DBF7%0WR!?9OoWlUEwa?bo9NhQeDjSm$JT+Aa&( z46GJY`yW@SiO=k63wZ)HCiCVgFzWs5if1$`ZPa&yRAb+KG_;s3Tvk=7Y>{-}QUQjO z*?qQ*@ddceGBb#B6!f?kE7*D_wojl{m_oYaR|BX<+L%=0<_MUuQWMWx|Ej(g6 zMHZt^TxHMIcq%Nd_#i6>!(7VGYG*f%oeD(%j-)E zKe2li*ux{WKxL3=3Vzw^pW=(7@SdSuv9T}Q=%9riCP>)pQgi-{Gu{5Idx#l10CS{} zOC_a5`fWCiCUG^7arbpzG~GkW99l>^4T?kkgUU>HtNSl>`={Y;Sqo$j99HmmdD9XdIpq>Q^f-s)PJ=PN2%Cyw5bfD*t`ya(dPv&X} z-`5&deQ;dvd90l;hwZ!?E-jZizli(752&!r2=ew(osm1(yhtA8@L()RN;2a;eH3uN zCcCEu)MX%D#mKppI(sx+gdzx#?rb7bPzmR`9x^7?w7C9yC3qHrRL?4In_HVnV1_nH zR3MatJxN|5tMrty&Kd?S-?gY+ef$C9FlhQU9an?c^F#@P9gEWLN|0Y8{iHSZKz#xoH*%fK6vjQq_)E5xB8$oZA>>L$IcVXlwCGqRh`cC<{qrcX0aOE_xb z8B==}e7cjPtx8wFj1YHrfXKM{Y0=gp+a0!Y1L{QoQY7KV^I&&@A51PkBh`2s1HR>I z-N8-Km{9~N&?OA4NG@RIB+S>Mow4>`?bWqsIwy%|aVy{INX*{O3%*R$u1)oQ6qN=$ zrckjh3lbQLban0Jo`?}y@CdRu3Fop3#s6eEPO)HDpj!RH5f9TrC-Onn79A`bDIVXJ z<=ca!Br}f@*AEAyWlWKSL6+=Us>Y4t6HP>q3pG@EYTV97={6Q&FOx4P+Hd*$Xbr>< zMqtd)C)Eq2RMN$ZHS5e9pU)NKgmQt^;3asb0e%q9L(5{xyIxr?^LdiXyZG^0a&=F+ zVEXmGvCj@$&zTkm6Z1H;>yx*r2+`O^6&=d@2iNPI4Z06kqZCX>OL^Yd4H*j0n7dX) z_fEJ7<=Zi?)R2SI)#5KSP4e=awH_vO&T$yjUoRJaym$z{*PXciSu1*|c}Gv0q}AVf ziGW7N6p{%1l`i;xaUkrK`}#+l(J?eCbPmLni2vOm;7ywU(kUEtc;_jY8&{ zS>7YAi6pRKh(P`jm=ApVLOYp|QGL>UF`37oqIJ}Q%b~YkFQz9@aI@!vmMi@A%Zxt4 zEV_v738!njt&5%>ycjnY=UndVF`BqWTRj{zHJ8A}5GW``$pd+em&Fujc(P$vN`fRk&(sp%RtnI`>>yoS%l>ZYvn#Z zgPWH4S)*97!jnfOU-k!&f@Uv0IdAA^+TEo!XsZ-=)k{4)d7oU))I`?kU+7*?EvD3z z^eWg;Z4T-)wAA6x0&RU0kULP5THzu1a*qX#)kvTW$){XO6}ft*A%ktQn4QeuJ<5SC z3}PA&5SR{1{JLXZd6-BRgN#SI*~~gCVo4q>q%%`jIGPT8Si2dRd-TPTDWe^huQ#VQ zU(cYw*U8+Yo{v-I;+k9g=4{tKqVxQoS-9F%x%Q1FovT?QcW#&2es%yNYls*vgJ9(9 z;>uSn;hu^8kQj=I_6j`$LMp;g^+e*yC{!kLdM%11f(tPMCHHIZ;_Ti}x0kAh#iF;q zXy&o?++WMNPur1ePsaGxYO?)%vn;qIMAFwpY1yoR235GTXuD41@}veG^BtRVMnLw` zTdOjI?jpQT(Q^|mizu!&+2gQEJ6k2y{p&cM947C-x)}O#b2$~&Qgkokxqej`pTVI( zqN@G~-;`n&A{5lC5IM+*@hr9M%w4ZQgI%Y>8F=goN=ChuC6n$euH0|j&*zh`+Lsa+ zDwEtglaE2#V@rPRdW*}O_?#lY(!9H9zw#!?QX^f@zOPn1ns?8KEi@~&1QwgI@XGa~XMAg^=R6VPYjuUKWs>C|uy z`-k^sUds%%zf#3)88bB(-noyKP$}1xP&Po9#s>{kjGRCrF=>ft(t@(gqkV(@Ach=G zrC_>*_B?(MipudzuX0!DsYaG2L8O4>&_5Ji*Auv7xZPZ%FE=iA|9fG<& zm#;oJX%$WnU5`<9UDnDP&ic#IamBjsgU=40R=T z$@4+hic79X#ObX(aZP<%s6@46R9alwcBp0JSvH%47oBuQq07!lx5R2yv{=KlY7SuP zskIzdtyI;Lb)To@S&tJVib0)cim=8hWOUdG=K)c2Eauq6m%5%2AYMT2?+s`7Ve$<` z3V>Q3;hv|2SO+v~WiQZ@ zX`2VN)+Ns7qdwAP8=WgB&}fyb5-0||b)vqlTyDjGIP@CcRoV&j3HgmumVEYOtrC~= zb(H#|MHSmGgin^4yeL+S^8>8+Lsg$~O>i$UxynV{7NR;P-P@6cnGPyGa@H86cl6{H z(!y(ceP2q0g#MOO+1^><$&E1a!O2?YMt29m?rVJIl09Fze1_g3Yc+n;d0SfvlihQ{3X~muK(cH0v)a z)w5yk{Iz+sM%A|m1cAfR-lSOZ+9qd-YI?V7@<(2?fyoNlt?J?D9~i&t4W!4)Tu&ct zhM)L^GOv0~%QP9AWY_P^Y!r&$QkbUA;9KFH&O14`#(Adq!`|PSD`D#(I6UrM4k(ny z*J`V?NyClMvL_C>qGuMVX0p_%y4>!{k)tg?sL;SKv}JnBX*xM{UKpQhK9{-@$QjQm7#G)OONx zu?Tf+^MO`_pjyWksP<#Z-o5w&TS(?BZ{x^vXGqgE!}4~Sgl`yQK_s^?iZ-(BZ7b_- z0_kQyQ}X~uL#uBnr-R!8MeCT*zLKlNOqwN`MVoYRzR7wVRY!t`6DRLMHTYk*p{sx;e0R?&{qUCQCXu>hK|Z8Kzq*xO8$-|b<)=+YFla|3`&w6kGvYOoKKtto38t&r0;GIxI&`5FHn-Lc@&jRdVv5e)Rfqupx!L` zF!^Luv{gB>F?U1ej<%nh8>jt4*Uvl*W5EFF^9PZ*eDP~!>I2M{u2t9DU#41OA24wX zs8((ksbmqg^|>ha3HR*XxaH{pPs3+%--J4yO_i_ZrWlE29FvX&V^+VwmMETcGZ_w$ zNl*T|W90)cHy!hdP?M3tuK5Q2_(JUZY&Ouw$C>cBxlwxSh_KYt!s7FG_1;Jy=3~%l z;|REuklI=-4wu8IGVyZusk8eUN$Xj!cJ8F%RZ2)Cc37LwgJYCjEn-_4-|Bho3qVog zX&VAI)9wBvwaECil4KptR^O%a`;rd_FyBW8UFR|Jq0-xgzGIok-elQv@Ra-X+*aCg z?7fU=dXW=4svYvA{s2=<6Nl0PAiiXb*2*Lrk{0-gceb++`ZS;c&2|7QauC$jX|ZVD zC=+Eo6aFON1nnAkoA{3HDipFr8+8t7SI^Kqc%%-LE^TCPsn}J}Y!`$%?6-&??z}g1 z0kz1nz%>yts(*;KqIq8mK7Hzs_c=RBDx7=2a$gET!&wyobvD2e;J4LyFd{r!X)?&5 zngwqURJ>TvXoh)#d&{sk3zPsYVCgHq-F0I zT{ldFrNnt~HzXMMhCnr49`q4Nk%9us4z~Q>y@P@i$%mC;&(3RQQu2472w+;2r~%5@ zwKrYv7FVhdRChG4NeRV|&9a2)q2*vw^)VnjZ(W@pwZ^^$wM-fC%IB7H$YR}e5qZhL zNowKUoV*$0xCmJ+)YqO{b_nE*TANKz=ubrq>~!YGTB8tq6H6y^wW^b=!&Ly9&Z*OI zQAt;s;qG1~_Tzc67}UDVwa8f6A5#c4)FmZg%& zOBTvIGbN7Y+g*#O@M8|DbYN|TZB>tC^t{oJAfl5U=}Z5%14->FEqtn19-7gX!|%Ro zCD|p~E7(2n%9y%3wXXvoDRwJsH+&)(D6(~9q<`lgv=Bmc?GzSttF1rv9_*=izd_1L zv^~$ZP2glFEA9rqIYm#)_vYBDa)U6{d1kGs*id)})`xDc2+hi6w*6pL2uZ{4^9f&d z(xZ)f!oel88n-DfUnWV73f7fdX5GftI?Upk>Ebs)&_L)VYr(Q~?G(eF3}{b-K-}`F z>%Po5*|WfP=gYHuWd~N**|CR!`17weH29gc1ZVhc?%W({vr7oc=;*A_8-vs#2+aZe zjvK9Vy$BcuL&vOW}42cV*2KZSgSZ-e#SKQl?g5-_H+bnr1hHQ(i^^~9jBv2m?Yf~!B4EA*qQ z3B!oZ@qp3gPC|)vh^-PO6;FFZpJu5rjp28uv9Pq=Xk8A}j2{`rcUXz0!Kx z89N5c!CJ2D1h-ZA^_4Ri*G_3lCZz|d_sP(>J_v1)O^&%S$wu;FVu^V8tPHOdBfSr& z&6K6r9uW|pcZqE9RK<#O(5Bz|g!*jK9Mv;+h1q!B-=Zv_*q^=hl^>gV;M$kO^h4Ip zk%W*)`ib+~Q{ciNN2>5!lBr@s@yDkjAZz1Mp6hJv*#y&+03;qt5` zt8TeLb5E*-TEIfebef(EoB8`2mUr74lc3lScI*NbVDcw2I<+U~(TsaT$)JXuz^hL~ z!9(WFXdRS}mfOjd(ku7avt_pxJWD4nwik_bQdlvD>vqQntxfML>M9%LmDC;&itHXr zOQod8_a^&XMb5}V(l-LNz0V&K4)Ro(Nad~{y#NpzWRYzx)0zrJx>~pAp_e(qT~55a zy14hnL~$4>Qh6B7uWlf(g@H=1BlB9iyUcm_gRWIam%0)@AR;~AV=VshsvLTt`&=u&@t3H|@wpVOb420?Q zoPf=XPpRcipW8exg;)j`pS?RwC}`3xuD47o?Z(>JyjQj{4Y`0$9jc*DH{^;${W z2l8qF*Lm*BC1pTGxp;g9uswd_!-%^}{eAQ@4GaZ3b)xkTU(dEI#x>|TzS=2BTyw5e z?Ku^4YT>l=q%t)cq5{a@V|T@t15-K%bR?`@g4(rqx-ELQ6yX?vIVK`t5>LIu3fu7< zm1hBY0jgV0wDEz6;yY?~zwt^5Fpnv>`Mvm=f`1$o| z2SrsbMI-7suxDn>AicQ}v^|_MC4HcTx+8KPg~Zj8P}2VL>`lt4u1g7j@_dy?EKN^~ z_X%}>|7JBBe)!VTekBqYxkiUnH#7RBKPs9+5pS7ln@dC?6l-(lMsXcz8NQD(C_FAp zQXrZ8Ce)WWD^Orbu99xa0+CwPJD#Fp=yM}#0X16UtXc~$7|lvnK5-T1$Q&@73x?g! zFz_@wY1s_748FHIbiq3Zdi-In(+(|~ywZo~pt^6MD<9}#BNUqD6AD%X2zmBJ9|i(C zn}#AC@jmEqPiK+mf8Z@{r5IMesOtJ(hCP7lV}@O6A=5mg@A>dQ|bxD#glyfyK0KE^mqvCvgk798|eI=3(Cq3Tw^d zzS*s63(IU@Cf>%4u@9e(>JxqhEL4@+8Z&4{a5llxx%D~J*?cX*19wm4prW5?A@l_9 z?6?FI{-9>KoAbSOGZQMR>xjR-@=4FtrQNhNR>B>_JeR!T*VZCrqR)Vy+GDjnD4Vi^ECF zqY0LUalsDhqi#>vIIH&TG00lEWO%Y$luJ9fL{<%Tx?sDJW|syfIE|!$hoig!xd}^FL4N_<3HzbUR zd#AhE`w)ZP9WmYeHYF58+BG{?B>SglOaP_U7QV=4Cx@hS3?%mKSXo zUJNpI)aeYixcC6pqmJkL!#o|)3)loAyfiF@D@UsqI@kJ7@!7};5 z6SG%Cd|VWHoaa~AY3OH5=~f&XTD--DI=pRDBi?%cv70l<^WCc+1nwATXDWn+1Nh?_ zs55hUgl>g<9AT&_{^cvqgO)Ivr!DRq195VNYAjm|_0EhZb> z-f_oNN%=5JgrIZfV5X+|;i%jZ6(*pIg&F~Miz@p4Ej4E<#hB*c2Lm{?M+a!*V}vQ>tMTtoHr(Qpm0IWH`Wn$r8$@zFRC3KNhi$e@q|W3H5vi`w(z7aUJ^6e9 z_qHV}k23Q^-_F)J>{XY#%A7s%bv+A zC*slbX*j$c4SR(KyQl|=!=Bi@b|{ag$EH%hCRvfDSlzsO4-<+U;RN2MXLW-3dMJsj z)66A9&}GdRm_OI(T5S$&T2SW5<9sn@HCKhwTY>7JcDg%TDX|0D$QPJ#pGb8)$>$!I zM-oI#-%|ekLUsGd$d>o3>~yx>JG)7EcN0i$PT~XaEl zeyEF7D67wL#A2RA0k>8+VqZXDCjC37X6{v5Oh_e8!Br07tk&j3qfEPcpV}Dvp{pL) z&B*Qtq-cFXQA60FC-Ckgl#c!YJfg8EMD?XaP9Nm-9ikHsz$YzBzyYUpA}9K3AFc`Q zW_6LVOr+j=C?Hr#SyRhefS{ul?b06AMhT}sv_v_8+gfW(eJiZHY&hJxwkrXxpcT*H z3p>9*udh@8CmMF@o%IiQq#N z7Mxf1z6tRNt=qy|v3L2XM1dw3{ekx#FFdM4y)0YZ`8OUucua+`s8O9h*Wg^PQ1BF7 znvBC@D%$9Bl3_ZLx8c}SZTz|I>H^zU>*715@!+2Rx0Dp}Zs=PL_fu~<*CnlH4|mln zb5(@<$)II3L(q6GW_Ydh!NUGztJ_SOLFb-_@-o1mcx+;V&NEko!}(QhAuGpK81Yc@ z6KCREt<36vbbq`<2aY2_RQG5+kDiA{z19$de?rpj50*0!2+1dFKkQB~q z0cG5g+aG>8iSGubYmKD`FI{C+gD|K=r)+$Vmfvh4kt{M?9R^iPR>bK>ezhA%vnaNE z7pRCD>ngT6?#pd0?OecclscfYm3XM)IRc+#YoyW*&8Qhya&IV?w1=S&RW3yy3$(5T zU%c9pi>X`O@Nv@CWBbGDD-NX_l__Ju#QHs~H37V<5}7;eD7`{(1wc%Lr7;TCndXuv zF2<|@+=4S8>kkq33)8!5ygr}uHmxH6Wh*-SArq}WFDYxSQ8g1}K`Sg!P~CQ7)RZ#| zawDBlom0F2M}ljeyj3XdmBbV8c}gV4AjVZ}QV;W%*p}&$b%ASpRCnPR-e{WSCd)0q z;F5_4m$i`MGw0>kM)*iQH0sEtO&$rN3nP3wDF(h%W+WEgN3X3QFfQEpTiz+t2V>^S zbF+TpOWU=_BN9xp0kH&~U%ZnKonqMWP0|{ph(`qoF93$5*hcF*?@@-{akljz&Kf@L z-S_=sx1>{z3rG)4;n%uSE$1>i-Wa?`*dNPi@Imz>WZNWr3iR}BP1t95>sIb5P$_K- zN?^B1bM8zj)$8sH!e+|Qtam^d{qY$EKQ~O(xC;ZvK<6wjta`%$r@o6G%v$g$x~lctIA(XYzxKdS8Y z@u6{kmBm6nm(09q!PiEzJ04`~$I^Bq4&}S40rTv7Y2?b0fsgv>?*S)54y4!?o>?`X zL{qx%ly+x8LdCWv0~qqVuG!Ug}mZGJaD;Ox%aNVZET$L3Q{^a z!TXrnZZb9n-T&r%({_u?Iw%pmg5YfPB{8Ukl7Q5@*x$8EqtUS(7{PP2U_aBDQ07!8 zrb18zRbI|g|*|VQzUn)#KOA%=5jygsx?-~Ho|3u%Waa%+xND;G>~z6Wq_@4Uww5wST@jL zG_CRo+(Bkr$4R65^=zXCMPxCc+cG9@E-#i-8=F;`&duF^{v!4T0PaS~m8+uJ-O8~@ zty$hk03^XFQb=JH6ie?(qeV>^s!igqMM$si`0Ta>8Xm{}en^Cd)|?zL{xFJNYgek2 z@Y11=@z{H{ym=tp44CjVrA#i~>>%i|?N)-``sNn3{=gN>QL|NcK78$rz z%!S9vJ8y~Y)*hUsQeuI!iUmzGR48no_%NXtq^O9LCTC@R?GV3v^O2Z2*-B4A`|&-} zRG&oiP?TrW3)UBz*og_pjX42SV}l$nLGj=8*M*ndIw(B$TZ7`DhcngbPwE-hvI&~x}Duv70Tub8}@Gc5YIKK%XAR<~=!Jr4ZX`KLC2vKXKf#vKIr=POyRj_XhYh}o) z1)Hl9_rQe;k7RZK)%iy(&K>91_xsBF#S8g-sc(jI?yYc}Cl{PLK*~0Ibn;i(EM`Yf z812CR4EM~&c~5tNn*qJy=;v-n4^%5(B$^c!TJ$bOBPa361kO9Uvp9<}e&|z80?Md9 zk*%&4zI{yGZ|^hR#TeQB!cet)K66k;X+?o!3W8>nrBf4WR@0N<4dfCdqbbQ>=L--N@eV*U9;6mBZuhX($sKgZEY*&%(mlm zUb7jNeN35aOi19CwagtFb}d_azwa>PYuK*P6yxu46Oq`6{&|WGcQe0nck{NmsDA^* zJIt3f8siJUhdsV=?ok|Zc}srVcw$D$=I-3V-Oy-BHlz9Jxi5`$F=aNMhPElY6VW^* zTcGXFbJLD&0yuND9r0{tJN>2G!Y70twJU6q@O>9SC1q;L zuCv`m_LuvV7TY2{ZxA7+IK;}$Tv|B5(_p;gj@Mw8U|<5D-pu{2<5^>a{wdooB+`Lm z-S-BbuMZ87jx!dTCP>DU9>L2?yr-k@gOu6F6BR-D5YfMgM;$zoyyj=*-`i7rg_HHF zHhCfU)0)W!LBa7*06FCKewreQxouXH+%nXz5s0Vbf{yo0krV33a9 zcMPh9AM~?X$$ZfLTx-bQ2v2T`vhTcPZ?Q0kNalcrIM_8cA2iukkYq zp-dD&9V6k`w~9~J{d_ivln|H1xSwc}d0M{Nl*1%KXqdaCQ8{H7zjx-=*B4s#GU3y1 z$S$976PWa9Oj=1zi|Ovm6UaV9$zq<)sF_<1Qeb1Irtje%#EAwat%Zm?Cz7DSkUQfIM2<<7J?>9YkTk76=Q+Jn*^2RS3=({h99n2}JYjlL)h%hwjTSvzALduO?4`>-|Nm%5Um6F;awFHKf4Gvl1ZG^)qR3s;c| zG1FAu9Yf}*5MyyZPIK^qUm2xhsA@kQ;y$P2EHFxZ(?n#nyY)!mg@a4oTlZn2gb`!BjWp4Ori@ zL;dIvf>!Eeyk`qumRc)XRgblq`I-&k^Yye# zBVu;URwRKtpRRTo=f;!jVc;ykkWH9VWT0@%moF#?c{?Oc$%K721#uUx4c#5?Y^MmZ zu)YjBp*W51T1Y@WzUyO2NDYEw>Eh2> zZdLEZKH28LGlIF;?(ZKwM}Ad!DhkpdD!`*rLc7&AgOpJo9(|n&5S3ZN=Z~1KAi*a?{Yh~rF(Pzhtv(k?PjTz7&NvXxx39U0| z_*RQgnR6A1)s6}R+voEx*-z=OczG<;Z^~UUu^o+M##)P|9tqVLbkm(2IBCB6U^RB2 zbie7$A#*l$Hh88?uNpZXkE3~Z3~sAfgmBoUgq-}DHQG2+w zkTujj#H~VQw)k8;BdpVmwSRtMIbhp0vJJ8gR`LWVAVA|iakKCIWV`!=b?cDwVoq&JsK?L2$y7ExTga`IDIA@s{k}eo;c3dioUkc zk-8O@mWibQW=RX>%)G|2{_0)U%GE6?yZNooKpRcI;``cD*RlW^uIKhLS#z-Kqlp=F z@)TuRQ4b&IDwYO0|J-El9>(o;Qw%pZRn-r?zHAYJ6gIC1w(+?~NnQfZrs_Bt2ym;E zOo@hgSiAP~g6G_Z&kiF~a-A92^g_Bcf;n*Q92=@Yv*J@(hajV-wY!f{kFZ^-T6gt? zgzn`ggz;d<>%H$YJvZ#rtt^sR+r;IVgdv--Y4Fm(kbU6p@FcV3!dn>|m#|R|j~Jx) zJUGQm{gx$Yd|2C(jl}?|=KB3)+gq>;FGmBMQ2WP>8l6qT_K{Hf>ciL!af2YWcB0TA zlOT2!O68}{XbNkLY@MpFo~xVSQxHR$9Mvq?MNw0UMhNv%PcqoLOFwXslF*Wfq#Nu_ zoC{jus${UUxiY1Wf2GSj(Q7_tyv|6+3vd?;6mFa%t1KQu>hGSyKnj66!AXtxKw)cyCb8;=Hh=~xqhi&CK7+M2U(-3EuUrUA z>9gIREpT3`j(^0v`vMzP z8K_1bNy*TB1Oqgyk%_=5YjV{yu{FU0y2Q2;dfRcbM0VfWlq{tebrZbqzLM_6oEtyR zekPWCm^2GZzxRydx$DyHelL8VXUGDdSZ1aYE$@>R3XxY|eT zOz+N#1zhpWLC?6`{7=l~2SAcVyN2=2hqV_yhCch@or0CaHxr6DQv-#?Lx<9&U`p-g zoOF$u^jy5z3jf53(obHF*UVS9aP16h*Zp-pWC1MEkdm-|Ax+%g`j`r~W*JWKqq2Ix zm|@=6blZ!s4u%_tb{mRK+b!iXHFO=6seB8%uY7I1!3f6~8x-619;+;v+wUu@RxT|i zj$M4<&GvIkL%{II4>w2$Bo50An#M8N3pHV#H+BTqVwC`r@V8>{WFAW)Hgc=Q%Nqn0 z6`>L1)uvAG{n2ZMSE&UL(q1|B?V#zR`EdZ_BW`9aw4Jx+eaoBQbh3zc#VZxW$G{;h z-Qc)F4*;B6e0g9tTHqA?4FG$kc7Q8?Mb5X-6_00;Ev7D8)Q%j0Lq4ohpAfNC6dd9@ zV9$_Ei^)L;@IbS383239h99hcD5u{r(Xs7hS`j3SgKR_*xHm=u1A0@k3U-fKRKq})DBbj-cC#WCwLO#bJBGmH8S!y-7 z&RZYV6OE2it76c$MD;zO-SCCn(0NE2-HR|G9W{Ko0ldJ*t zN=jdvbV^PbZ7D4hnHzTbi(5v>n`&UDgq*3qZ+3B5wgS*y{A8gr!7(!4#go~xbOs)> z&k%9g8yfJuUm&{LRWD;I@|7PJb?Bv~lnMvGo>EQN8W@ zu!@38jEWLcf+9#NNJ^-HNOzZjfaK5}A~8sVbcb~3NK1Ejcg@f-!xa2CzxRF5`Of*y zTC4?Y4YN1wdE&mW=L)8=X);`sz+1jhgGilI9)#ZvxlxLbuz<_7t_Q|gM9k|=i(%;e zx^$IKbbVQS+J;mO-69<$Ck%rX zcm$%bgHePVYre)4z8Kj})80`9qNrHd5jPVHdCnt^Mqzmy^tb3)0@_RGdfkhuud}}l z%?|jjL=SomHt#vjgg3i)&acb)#8{Y^Ohh~BY<}Z0%L-R05;*Gv<@QM$%WV6a=DuAS z*reL%=?+X<$Fn|(i2u|F^rVSAw>*C|U0exY=_n)D=)$#LkP}g`D-<=oL<=F(X8c~3{Gcp$HOVnOne6)X zHOkQ1@fdErF{NtZb2h>&=}6rU~57r1&@C6{hR-+S+0EuTn7b z`;y4y_RYp#EFyu?uy$oIR%23SiAMVBHJqin*a zuZxetGkERZ-J(vtbO^G){4;*E{7Ta(;iOp45#M((-CM@pO;d}T;35(9_Sg~hn@I9e zywy@Ow~8Fe0tX*HoW_{%=m(x+5Y&0uX|LCmeVG~0r+>eOFWxx6iI_b#N^94I_Dg49HFI7O74aUz+iY(?`m2w{6s&q2 zi;|Ve!1S^5-6HrN3c&JG5SbiJ6x+gYYMo$`lPE#4D`yw{A1ol~Ek0SONGs$ppadfbR5uQ zV?HG&3VI{=_~U|npGR{$BiY%&xaX4(YkEKT)OeSmMU$Be>_4oI82&Gp{G zGy@s9M{_*%6UW`yU7?9`hQ`|A8I+IAFcWf$PQ#y_Ced-Ro*Vmxyp~arHnZLSnq!Y> zIn}A6(*-oR74WX^orlx1=M@CaBrUDACwcJT=Hqk_)4i>MEf>${SDwbjyI_yyh#xgf ziOwa;prsV_wAI|fV-wk#rEriBpV(`kzkkeOkyrrIHmt=NMqnA*&B}hvKy}tn)O4t7 zbIoWRif&A$o=%|sc%H%^PBH3fw{V3ff-gsW+CEHcU||Z*=*t$E!S}y;LD-luFG2(- z#jly+F9z#OK3wB#^!D8ZKG9uJFLsTlcOPsMl0r}7NIti&_uIwjh@X?q9m8pti-CTl6Xraf{k-2A6H7Y zDT5!5P)(=j*68DbMdH9tU;MHcI44#yv4^41ZMno2qr_W4Px3meu@<8m7U}i`5JJmy zcsUdovs|*oEl*_1FZ&udnJT!|^CUz2>tKrb)`hH%TKmC*cG4ya#9GfTV(yX**&boX z${aQT{kzb7`A6#wyKyd$%_T8s>Slur^taPzr6x_%%DK<%-S?cn&FeR>Ft z$zL^y^AK0&&|Zp^&@D$&cmX8bELejx_o4cQzc1ZPrYq zssBr@a#3G=j}YnI{dS2Omc7-KlZ4l73Csn^^<417 zh2?PSX%vGmlB#2=Y7=pn@LrjXF=!WKC-vfjr!Ktyp^0HrSAEzy6`X(S^vdfUJA$Wo@u7Mas9}EsVNbcQNJ0_^5dx^O4*IdDb zajJVPw*(v9Y7O=RuagzkI7bvO*NO){FR@!ti0zK0vv~ zGt<(1bZB%W-3EYyt9%Tv{4WE&w+llbnlnCd%ZgEVurE6L1`eSGnm1j5NGGpG;kT@n zDZt9-<{n~kw$MZ6p1>~2tDI>X1mx_$75`0VaWU<=R%?(CJ0BQT_>Ye-q38% zytCGW%c2OYmq1^7Vq0(BUihP8b)rP4%x>pEHa@((RH2d2G;@d6C~c(vcj<09Pojy@ zo)HmH9t$KakHjS$J_y9vD{stnUtMU@jc7C?dc-0N}_I=%F`H2GU9@0_<^ z8P4pTAQ;zFHp|I<&VL}33#@##ULe*Yiki}E$fs$%nd;Moy_|Kfp)#$sgJH$NG^Kcs z$;v@krq~D^(_3>H*O(fWu35RYD|_&+U<=Ht0Hv!unBUu7J0^d!(F+hBgVB*ls6f%W z(mrd14ZG|XFfP|^_G(&Y3~s;{{?soxocONQmSRR}zG?%_Z!Dpp^uDx-?qq#x_O3`+ z5!|ITm@-NkXy%dMJ%B@U`*~|=z9!vB$ZGO5m#a5@Q zT2ij*_Be)5!Kxld$Qox9h1keW18nJdN6TWF1D5eO@7G>{#2&AtI>C8F+yd%2o>&$wlI0mpGc9a|tZlXxFql$+u-Dz{ zQxEPzh|e4D->+_V9bGiIA1o5$4sW;O**3g#`)1paF=G%}wru=F62ftzy67N=IB0K4 zpt!vH71?9G#6=V@5+*BUYjfTz1FE7G5-G(9Hqv8XAQlVhR=zOC&GvpVq;Llmu7iLM?_h@`P|I;1RD!SbS*3@)n ze*9I9jx^r!5;nL+{oOmVCy)33$r%qHQPV<5g~a@nbe&w3aiw+u19yYrj#Kx%i)>D( zk8MUs&B|`NnN+S9k3q%HQgRwHJxqpvJ{{~Qx}L>RoO-G_S5^r}Do<@^`g%pg0(N%9 zG@Ju+?|J$y`eO}ZCG+;yrWP#i*smWHdm@3#(wTPIo1^LR5;~YvpFT87Bj!Jx%u*{g z&bHt}hZ_%|2KOa&7X`F418Yi`C0LW~3Z6fxQ_d;fD}J?`6R#gF=mhI|ci8yc3w;(v zK<7C!i4d;h?Fn`lHp$n1=BU8kP$2clZ%OR~nWV1mj&~;Cj}i+K)7fEg}SnqiHH6TZq0NKOyaL5J=AE4 zg^bb%Q=$)^{%6&IVtm|U97I-j#mm{o>lq;4Uti$UK0h>Y(1Jel+W#=_mN&NaJddT z!u-kQCmQrO%5<-L1`+F43jXg3I+t0PrY3vWIxbrnVOC;~6-RjXo(@fQmQ7uBq!Vsw z?p8CcPcSvv=l7UwgYuz+L?qg8B*(Jbhi+2!sVY0uK8?Y?dYQDAKuZroaO~^~Pgu4(LCIlS^u6e!z)Plg>v&Wcuw2Tc(=O;rm8Y1R2bj+3Q zBog!Eo7g5W43kW@e~sfkj@Q5AW4iMy4%Klh2~2^~#brM}ov*@*=28(jQ-(Qz{jz>SKv-CQN(ubZ!)ArkSh$ze-1_3Fh-;- zb*U`5k~ZNmw@`q=MfqO3+=UD;)2eX{56k0TjcMojW<AHF0zK+9YLNM6&EZSbzrS z4u!h2Af5|J(o=OI8~2EBN;X^h>jlubDGsIOAZ~( zDC)QT$<8?Zwl@}hWO{0L1!Ez1v3wy}Q_QZJzZ9V)3HNB+zkeK2rB6eKQ{hCMdE=(3 zCv|B>_MZtfI|-i_c`m``wT@PX%4p5pfjvK)l_Zwc<1J4&Yw2C8z*X5o;)V)WGpmj6 z{+jz-;z3a4lFGh!n&4OA{Yd;D5v&HzuB79Fo+hBB2_dy!1uGSWG~v9|S$xyq>%+jY z^F7`X=i^krGq}I7+}kVvMl!?Ek*m@qDBCIuM$aU2>8ag-zoi4YQU{rZ3zvtdOlD?Y zpU<}9yQfD5(M$GSyFb9zZm2nXZ2!0U4u-r~;$KaTT*ArQ+ewp!%$kQs&Rn$q8BJ*-Mb=N* zUcGu0dfnUCw$xbUd`8S!#AY{SDKusx;M@65HwmmR3Tu7x3CfXao*4^XW4`uQ$3mE; zoYc(>^b;qRtUfd-mHeUT3KaFQ(&~Y#24;S^4EBMbNOz2E5N{i zP)mL7fEhcjWh+iUpK|l<8{<% z`t=bC8Z)q}cT`Dqk90-S5}g?UUJz1JS;@UVa)jUHTR^_b##hj6zA`~R*-8Sy(T0MGm*>8An#*;q2tAIdvuk{y)6p<9g*7Ql9QNdbJY{`b}_-Sa~c8eEN-+U6h*V_*Y`Sb8GnZ(2AUvM{CX<22!JM??!q57w~56*Kr~qG9Gbc% zoEq&`b*EpQ_-ryxUeT)I4o3)#kfPUGS7 zL-#%EjJ(@~0;(m2JgbC?x73Oon1qzLkOn8PrcAfm5bbx71iMXjA#z&|Tc0jl5<6AQ zAhY0U2p3z!o_!+!n-pK+jWLcH%P+$ZbGsQ!rr!?Q)O|XjIZJ5d-EgZz;Us?_rF-eY zji&2%+ZFc6AlT&6yURs0+a(Q?BK5n2)8eph&AaBdt`D~JvzNUH_Ba%gwpVV4hE-|# zoG{|Lq0Ga8uJUZF-|02XCmwO+;mMD*I3@Mpg*1qGt0pa?!CtfkKNM{*u|a3-;0E;r zF-$?z(fOfJ@l!~+eXGGg1Y5Y!{%<0UuUbglO^Gd zrNOe@viYzX`VHB~)YjDxDJ5Rzxqr1z-yT41mrY==)C4&2nI}ELv4eeaB z!aJu4x(kl*jZB^et;i>7qM}(sdUT_^foxOW-^gLcv1*ps^N_DNOv(Q$QXap_VOxb}GDv$n;FQP_9raOp+??!#gfB!FxLQob2UZogCc z^-rxDARD>{YcG#>((nk@o^+wV& zAgcQej@Kh{=8Lr$`qJ4TsC(8=GDU~D7B#Cem&OkphCcWeCrRpW50fjIN9fh7it9BA zPT-wOsiU#bWitLU^cyCgE4`Yc>_ANr!=7%#R8${X^_y>kRte8q*r(2ngpV!aryafB z+$Z6(1Z2#tFMtOJ(07M{Tl3Ni`Ut^qo&m?kRPCT!hB;KMV>o*vLj5Uq+J~6U$GPvX?e)DG$&u*+m6;?ROQvIefjlA?owwRc-G+EQfvJ zq%V>_{E>Aly_mR_iLsn-Re$s*6sCHyMK$*I+$dSeqiN6wCEa1FljVJ85>uzquyqJL zpFhxw|(|yn@9Dp#ARG2^rdreht--pQ0|m~*Jxl-R4gU(k!CFt$78 zKfMvzVkkp+tuv%G?57vq7%}Tzfe_in5ov4$P}e`GUD*D&&`?B=E&aFEM@^2#*Q(IF zpfy!@?obSurXl0R>2EL)QK3bdW_{8w3v$YYZ6)$9ZP)4EAM?MsM) zB`M;Z6aZo+OPkO56?h?imh8parBY9 zD+Lpdg#Ve40uhxGXrh}HqDU8(IXwnl2lnQn``z_M@`CFIS4;_qB?ub;kQH+BT<>wO zv9@IV**LdHWw)DSuO4f1OIZEmj;KZnQ^npf)nR;|0Z!c=C>tu4i23jy~@ol?CG9svP zhtAeiB#)ME^_zoFqeHPq^4~|YHM{e*PRh*py7TF#JQNzO-46sy6RWK?c~n0Y^Nbv( zJgO<>eaA+&@^t$ywnCRHFM!q?I$0hM;4MTTrwU}fzM<;A6Q7Y`l^-*n7*GEO9iiNcSo~KdwwG@ zYQG4EEa^t(Ih7J*M?YLh%J!kRhEBF?kwugN~FrWq`>W z8-RPTbqkohPb_7sF&7UULIXbE_h1aFI{w?F&vG!SXm;(%e#F!t&=pt`?qRqkKl~po zfOV+l9|;$cJ-_X8g)zixsZk)tzV*i)WvIXnvL>Wl^MMn z+!!fF-WHdf-}i%B}3`09(xrXjQwH>))+F;{saU}?ILX_@S>AX_RevK_AgOA z)Lg1vacJW{bJg&GnlZMIyFQ42A3iE}eRWCDLrHX)Sqgm%513;ul7Mn4yX%OAhwR71 z?pM3c-BiY`P!)wm9q{7vr!aBVRG)kUgX>K;#ux1>M+eKM?f*-S#{{&3YxJNoBbzqQ z2sfYHq${64m$v4fwS^7bK9hxlk339js~zfH;`L~BuCd0mk1gaL*xcj(@iK2#;W;7` zEyLYWV{ns`kH^`AisKPfEA^g}-RRdIJaYCh4iY!TTn>`TafL$;2fDe2G}-!X&0Xg? zC5A#0O&{kpm$aZ0Nhd*)NFIw9Yds;CH@9Oj#FELF^;F}gxf^j`3grxHSS(6iNXUk; zX>Rjps{E&_29_Di0*pW*@2u%`lYHY%yRiF?!27vuNKjuy^Ns6;#eN05@j-jz-fUhU zWFRCYZn!ROW_qfeSE9+O6!<`r*@0r6BV@B1>+i;*F33u29@P!h?rph0PKTmg03&Tv z8M8r_|FHmB}TuPi`vg z+Sq6(#q_FC(Wh)pU46psbN9_k;IpD;YxEzz`YWQX4LyHhg+;TyBkTT#c*dEcS`wTD z*Q*fzCmx}8yU}4Y=XCD=939EkX|{5Dl|-<$eS^C>A+&KU8@r| zU9*+@4W@4aYt$5mcjzbj1?0S&J{} zGYbSaD0*K{_7A(`yZ6F~b!eO@>~+b$odfYFczK2t_Soa@{)`WP12G|F?9sDTW-<^G zixWOZwCJ5XZqa2YFymK)FK)TEH(60%z2N)>dl17OfC_xP;rm(fse=XxElb<|XZG(` zL!;MM8$}{Yst@+Y?t6_`lKmB>lzY$9@!e&k`mN5CHH_bF$Wg1MFs;mKs0 zOr7J&kbmXq(l?}RIpZYn<3ij=!{&Hlu|oEc7NMc+%b85vDt5CEH(@d{(=*(^@1YC; zwF9`RfySpsgT3v!!q3J-g&SNE5GzLWhQ8rK{5#2@t3;UR;b;y-&$B!)iQeNN|f7S)KDvmCp(T(g%2 zb?OWrYc^N0^JdP21pWQFPhkGc((+g9{Ab+1@<$kGHhRb(v4FnX_EDiFp7umCy-=my z@u${!LWE-|{`DNFXvn3hBbhik6;`nM{lmlL?MKM!hK!77r9$3&!Ev<(Fi_?pHX`nI z#&s&m=h2^W5G+7iXGb+o5aaN09WryS;}n7P6r#}`bnUO#Sk_nkKxCq#0RaKt(S+z= zL)Ub^*PN|x?6=KV8*`D-rShqQx3(Frv&^w4p->^<9WXjTQ*&uWu{1xa>{olO;x7A_ z(0k}LQ58sg^;zi-mF(Hr$#O+7Id95$`kB`>@p-LgH6guj-yY{1+ zClUQ?@TN5pAhA&7YB^P8*nAqe+E6BQ9AS7t*V3sqh!N+cE;&Q6p0v)I*j&0|{0ut` z_*&pUOd1R+?4SV`7p+ORwx7!^ND;SxmP-A7!IV}(3Z{F-F^24Xy>_V6Oc=r~R+!N7 zP93Y>|9Z_V?LJwrzCkN%T7|Et;{lNUb1?L>G@*z^H8St8NkcyND1BPZw%ne7MxFeW z95NH>Wf~}bx$>Rr#6wy<_i!1;xzRh~WmsXO8_RbV;zJnBWp_mT2!EsXw-R7RU@+Gg z^J*P4erK~U_S9>}_wWE|q8ZbXm+GA42%ln?4*rt8Rsd!od!eo0SX{-JPF~Az+oCZ@ z1%$FBcfAgc_CZjWMN^;vwL2FrAj+mlYR~SE=L9eL2godnd1JmQDMgjJy-cecSe$Em z(@pD9{CA(25m{!CcC2koaeNMfo~&tsGWx+722jed^Cz-#!_#1qZ}_*+en7xXq+m&s z>$YYISJ>+%#CZOF($4mIu-<4IGgI*j^UW5g^ZDr!@|CQFj4DsEcwtK6BaV$JimTqD~LFV(QcFU%!0Ki{1Fi zS7LZ^2v^rCe^{$+C^{|9kEXQzXO-M?(JTK$`3Y-nxO-&Z34C(bqmt-3k5lEIIAA%U zWym=V)HURb^>52T&agEuiMTzti9)kRfdkvcM_Vf z__cG~%^%1`7X$GF7hdaVh=J>ez|R-M=Pa%j_Li|#-mCxVg|Ni8tw;=e9)d{;{|_4r zuTr7N^}@!?<-AzX$xqnRvqK>J=qm=X-#oz}e1ht&ww~vmt#imrXRCBOH8t4HX1rX5 z(0v{IEj1c_`zg7C7wMa4qbF-7slc*RzWB#38(?Y^bDFQqRhbRb0u~!GjkCg=A<$57 z9NKLR%=l4QF%C!`I-i$()BR5v(sTB$m#owsP8~rHZ;|_#Y6=32PtGtqE#Sbiu!idc zDihq680{a|lT6tbl=J=^BLK;qC$n3)pArAb|M@61)Fu2}n@zK8oTTEc`+BJ2hF*EY z?{oB!7L}?C0bK*&Wg;Q)Z;zD-ub*3lmMSt@p{!Q^AyI5>Pftm=3SJw=+!$j}h)3@#g`}Wx z*Sr3b0xhex(E4;=@?FV|fGS6chOT!Uj|!;J5Dm;;Ez=m8vv37gQ)R^{hmb);&8gBV z%xte?Ub2`Ar%$@8Wh@3l zaB#00QEu4IU=PwDFf+J9BoD+NrGH@IR}`T3FA70j2VimE>GT1RChBnVkO9JL3!cZ1 zuRZ`!Q<>(A>lCaC+%wLN5ff5Ek_q~5H7n5`kigk&hp(&4;nF_l88yLn&vy3>*)eY> zCRtwZzMwcV$bNqud&vI`zLM>Wzbm@YId}-RSo$uiMPhuzI+hJLLItLDWe&gsd?DY; z=vZ1Rj(^}FLz|PNC7F5whpoFQ@zpBpgy<(9gvBplb0O(jSG(>E zuQ!!YJisgG95yW?17<*BYhS_cn8ogI!k~Ji1d-h#Hmt-}|JaZ)6T?L$WYw3N>_~g+ti^y8Jhg(u(ll^W(9I`8GJJD?y?+GH{3vgx`^(Z zp_P@0%{3bGa?YjtO#L3ZeqJ+A2J6*{C+wj>*p+rt#+ot^cBKyhDdqu9x&4=;*a*?}lGY=4>)&CJ|7F7QuOI%2g<}WSKj`P*JN3rXHoh`Sc5E*{+|qH` zi(d3VyZ~C(O7MK0jPpK+7uyH{R}*1Igw1^2J3c|}80|e};)%`x-T*k-1Ju!&x?DKX=^^msvPB^67Y51xXWKKio1 z;-&W}Kd`7n!zTg989?&@^K?(3o&8lRePz#p^K!j0G=Dy8;4KGUG1vAMTb)@4Hqc7~ z|4a5gsb`8TpoJFH7S--}UPOxLN$*&Tj}JiJY)0i?+a#V0`&_CV)NRvhHM!SV&S^e$ z({YhbCI9q!_+4}CR-Yc1t!#l%V`%3ql{F?@%?A>%3vzR}X_v8$TJQ#nzKXlEI%fWj zB?@0)>t|-=Rq8Turq>eXA(EbCPc^2r5+qQxx#Hn7Gf!Z1rQM7*mJl2W(%K>w9eRt| zxpeVnU8JLA`$b+BlE_3wx^Qy*)x5CFh)`{KT%VGYP@Mo75jNiYJh}gJ`rZ2P#3a&@ zmrUnZa_Ys)af6dmGYA(+_L!GYZ|fn-Yu5Xxp)jA}$nrPl%8`RaT>}QsQ)#iiR-(li zJn!WAm%+1oY$P{0JRFJz_};dxQwf~cEpGtvV^s~xyzmM-@vFa=@7ygKT10^MRw2!L;t;ckCOtIq@;lC=rVFNZa*tjz zmn2jXUvGuNCCkk8m*JmHW($3lLhA@Fwav?lhF*sDIlGHJwJ~(s;bg*vdQt%oqF+je zYoP5c$aYGRVs zae#pt9zIcIGPrrRkwdFe+#9{iB*_x>N+q{vrPXh9RFW<>-oRVSVj`cO|9iye9VJDZ zk;ktZzQ{43bB=5D{DNh$0qLCCcNgA%t7p@LGJYM;ULK5WEgby#LwTcatLYw>M`xE} z*fNEHfe3B<0x>wh{H@!O=~8D|M4Xe3a{}4QjnxCNX@7MNe9$%*i?ZoczD{4GcOWa7 zWz%Tl7I{4M1Y~n0O3}cqnkrDl+wVjte?MSXO4v8vJC$`ATfwG!L>DsMCr1~*#G6?D ztz_YHmd>c@I|Q%m+OXp>iEp1_1eM<+SqxF>yQPfAv%xo&Mq<5U*_dXm%BLZ%*j9D3 zTyq@3a2y~2r{%ISI-a?EuX4uE>lwmN{R!Z5&vJ!wOnNd<$J)j5k79;8kZVgI)X86_ zszGLPI;_70Qy*$6zt?$%0$c#wi76mW7d{h9VC_f9wJUF*tN~s9lLy4tk`5(ra|eUs zVvhO#Ng}m|w^esPe6BJBjB0+gZ-mV|C&jJ&+Ww=E4z>72xkVS%-JDJ@W>!j+Nx^dn zu0w_lcxXjph7?IR8}lY;{(z`>W!=wVjMj72QAs?O(#y?W5=espKAQ#Ru%|rHeX*=E z`ub^!B2i1_N~dRb*tTfA3vowoaQW@>ARq(}nK4=FwzgJ-_)>6W?C{P@tG8>suo`z` zDSC6v2|Y%fg$a&3%!{LD`1;W+@723h=amsXvj%QG-hk~=7Pl4SSz#%fHBE1Q6@@Q- z22tt1%fYsO70e#hM5#)ZbI(eDvK zzyI?2#vFDMi#eXg+kjvVTv`dfY+PldN9ClDJ^B8NIFEZ#N~c#G_a0;L2p717JV_-`H=ce?(}^}!^z~Rid7OC!Mh}j%kFUYL_w#*M&y!*{Z^t` zu)jU}^zjrkT~y|Wn$KE5fR(a*hLvG+?LZb*nNL@IUzic(LoE*YyF*?;e>kzmkE-X} zY*uQ!)%&B|(9S(Ih*vrf1YXLlyUJ<+aHCF@k&^!(?Ev6PS=3KdSq<__v~nu%XuEOT zU!>SUOXp6ucp7d{<596b-rWq!9w*J$VYE*z*2zf`v5S*h1fsvZjN{Ze+jOB7aNeos zk2lIQl)?bVi}^gkLpVdmi)Wuv`kuqIqhWRqprrT0l{~CkU-kQW@(T@QkR`2k-4-Q* zNvAcYHLTjBlny0|zgt9Cnz@aWm|u%YFWy_rl}rBZiHerGcUfaO{pkifGxKZEj3{b@ zv<}F_%mJJYmGk6NgMdz`gtP(PVCc8k-~pxHjl4qUQdyWrexB?&(*@Dy^$sA>O)p4&t<#uC#M)+ zwRx3~SAx64Y1XDqS;0aYE$3lsU4z0@5Vg`IAm*lJYEq01uyGqM_pg0l%@xU}-Ke9> zb^7FBiA55c@5}J<;5(3O_6Nrbf$f`;Z+tsc`~(2opN(By|3GyHshktZMbTezEUO>_ z4)~NJZ?OTLArsnC$i%gxT{@c;j|({H9eK+1KvU3h`qzZ6R)OqA>-2t8lK6yDJULfU zMB8Df^>woM2vG*k>zDetlW4u$(SUz&&wul-GE< z2N|Dz6hl;dF}m6HW!M>q4srJ_C?zUe7muH21$!)I{SXq!w$@V>*hrdSW6GmZt(=-2 z$E2!cO-`0hpZF1;JR|byVZMF@e*c01g>1b~p0W4U?1{}B0Lr#p{5rY)=aDb9MLHS; zJdy<;`2YAu>ft@{UpQbNJI$2t9)VZ@3kVT1!&kp)*JntYqC(5QXR0Bze!ISWJ4ik4 z2?UtivTEFCA#Nnbi_+_jAAQ~i4xM?o+n`6GA3q5S1v$j|y^v2#KMG622=1w|(J+r& zhiaNXYRVdJSX|EV7K8{L$As|S!ML8xb(f`Me;#xK6<}j1=>+lmEf1M@e0#$C`><-! zrTPybGy(b^)?4@5cW&>z3iHqmy1vG{3Tdd&oH<3GGbuB*n9vJ%-Ruf)x^xy@iyAs8 z7BPxv94~|G#Gcgl8_E^U%EeBdv-CxUv34yOcU4aI^V`9`)5~jdwRv~-UDcG{tZG{T z6yxq|#%}=LfXX!$LPPS!Xz$`z9bW6BnnQouvk#$9E`Du}Am8xrq5oy9SdWJUj1?0g z>113)#nQ1XTCF2aYaKsN4uJFJ<>gDnJeaWAY}c27_HL&R?M6*QM9gJ?n;Vz>Zgszb zO+&gB;7(C@l(2OI-t#AJnHrdBr2D!Tk+@#KYan*6qjFe3gYxl;^0 z+?;-z6**1}k;$&-`Bj+qOO_evQ)nqTvs^X(;01$>-jmIqeLEmQP7PoaoV#? zcR~uCI@+~|2R*l81g9*2VkxqFBqO>uDybAcL{DPAcTmQDr}7W1^<-;ivl*bUDXBHL zT;8qAG$R}zB1c#M(oy(UV)7Fb;$~q}8BbMhpb;2vcT0ZM%6us!7i(_}stUhS_c{uw zB8fRAvCb;VlaH8`%qyNTMbsggieoA_S^sQZn@9fLb=>{>O(iBX#G$V-oHPcsJ&+EB z@!pvmiZ~EUnuu++plPT6$%|U4{L>^)_w(nXFV{Bo|`Xk=-J+~1vQ8`2Q;jF=U_ zoqB?3*INCmtAxn!OqR3p%f+%kVO8gXudA!S#jh9oaxb@@e}Zxop2E?jw-pN&2KBj} z(Ls8~&1!h&4|DY~{nLfQMFq|^c~#g^E9lrvna%DSkfBH$?d{WFu>=6&$MC{1{rc$w zh|>ymN}Usa@8mCiI&fORj!8iY@{}?8S)ZO?#}+Wv%n$Fq8$A&?pJ_+%PTGBE6BS)% zYwv@&Z<0SwIt6Xf4@jz~%s)9L?XwT*7I}dAut)d?DeU2_Q@2ZTX!-E0jf4N9NszB$ zjgrZxe!;5sKV|gws=?l5fU|LDLj~#uY}JRoxz&>Fea3!<2N+A{4A=O;R-7 z_NLb-y%sZy>I*#T$@+N67p7@)58%ab|FfWc6zv<`9ku&DARzDP=EN0BSU%m^8SU0< zX^_2-2Hbc`glxwyw;Ds6E;5Q5JeER?Q(E09newUj8du7k92bN$os@ZM+7=%$9ZRJ73GWhmkC2g7T~qH zv*$4E&k3nK&bWc6?|>7W-L89cl+ImaG^+pf-dxiNLzzRtuNc21)`vodylZ z;45CnTt93=1iEg)avg%iwDW*3HuV{JGhnS-OLc@XFnSz!t{Sgt($ERl%(ihnChZ9k zwRGO<(CAsA%hR4(hktbhmqt(vD2Iz)x)$g))T$OJOO!UANMCzF$Fe(iihpyVLQquZ zN;B21BEUI|c%uCoKV=3EzjxDPPrQnHJ7MK_A#q`rYDB#c323fd-C`EbQL3o5c!A2z z#h;ZM1DxS9s z1seL#hMbM27+%PLce#jsP~tdEx72CCz)>cmJFpM%kyN({cl2=#!d86s>!Y_{Ydzm| zcZzg7R~r2NG4Z4I;(&jWC~%Q6szCZcrAN+lD`fhO&PC?)zeHPWXYH{-Y}3ww8hw)u zaN$3lb-l5^g@?FTg9jJ#+E+*d%AWf{%%6}qJ9XqSA!?J z_U&hN)^mP7UEkppGb`cUL~s$eKY#*f1#M$~odJiku>r9<{p+GbCxcnavmfi!7awPo z(Jt5PC)hN|%?JgfEBYUuzth4BdK@CR1kMYMYFYvf6A-~@yDhswOEnhD+RpPrI%jKT zIYm0Nr_gd`PH?C$^L7(&*Pa6iP&~`;T_x|$)O52gCl0?R;(0-2ox;uD7FfZz|BPqZ zcnMsH?(z}26sxs7lZm0*sZ24X*t&Z7{a=!#HNVET7otKXmB<494ke;Z#l*_fxu|k|}WDQGP0e9>-AIc4S+i5p=W#vkUv6LBtwYx;jtDax>9B`47pXk=f2yUY111|?e6CkhY z3_(9o<|{pSOrN$hOIcC`{=rcMK9mMi1bzWXO2Df4(~zQ24hj4Gn`5XEGsT=pCHS_` zW-jP$;HrL{gK$MzNuZKZ-XARRCKdvd{W*4fbbt0BiolBka2sLls1r~Ut=RgwM^M4p zvEcGC*_{RA9}CZ&kERMVaiK9i$=@ZDeH} zD%nqn6VzEeA#%>{dHWwMAiYXEToGftSAcGQBOh0~OtvQAy{f&t1TL?$F%JDJYB(ym zj|NlV2TuvMzy2s_NYK@rrM{iu-V{o@FSSP+!yS6W#a@R)k3h$B zIsu%9brO_z>E@gehH$j;RuUauQ+4bpGo)zl|3LXoMM?CiL140C&~3tv(~u%Cm`k_c zsdN+=b%HTduZaZqBhf!DAx*AIAH11|21#UqG@<@jW>IzR7Zq3tG@sqHq0r;~o-lje zfd%l&NGFg=iU_I$*4Q1b8oqjLljsHvbQy_vfclVBCEF zy6rHh{F(A`wyErWHy&1P%Rk|NgBddvI_SQ{4N=qrmkv$>DQzcaRncUuVeC|Bx`5f}uqZZoHG*{^KgwAs}F`E^YWcLk0NL|a(faL&~ zo`16o&-3v(coW{8+bkPX*4r%_q=O;05}nI0kvBd?aL`p;?$0XtVURFhbH1WI-i*_h zfEH`6vTc%puhU>X>Iv6}PJ8QYEswVam1a}@A;Fi%Fxg;3g{*8Np!29^;LYyVL63m` zQ%09;&(o)2&uSKfQ-DtT zhi0JzZQ>;(F{c>#Z?&`3Qd@8~ooZ%8#k?8+l`Uh@eyqP*X7#3O2r= z(YxJ>p1yqb`bVs3Dc$5P%tsMfx(lC5vt9Z}P7;V;d zcaz?z)4Fu~SAQk4EAxXL}YttQ%@Ab+yj zqAPK@#E0T=b33L)J&!DN0N7bB-&A~rv}~S#oJtD={JnL!svhEcvr#)I?CJs7oy_pI zdGxSPVH~GAwH~|LLTRv=>x-zyEYwRu_MP~AKZ;TSp(rGlfo{DNsa>nriuW=M5R~5y zN?PY56=S$R7|&yKZ40_VNS?x&70a#eUwM#(KRXlhawz_UxUm_lr!kCWgXaQGCnQq=K}xwu zP4Te#&Z_RH`EDaxLFP+}T$1Znf)U+d{1;(L*<_1bS%C)!ApJc7;xuP!ce5FXy5!Qb z8LK{6YvM_1f)4E&e&SKXVX@LZF`7V|d8EJPIYTe8*fOlTTDJ|Zyc|(2yJ{67Ncg&1 z?l?~_q23HO_oYYnK74C<9I|2Q1mI;q=w8MWHBcBNP+iTo;=cx-rQ$LRSSd_3VOSryHWpG{p2Lo+DY}Z*fk*M7PUE;pPR}i+wT}4G7xmnp;;xjAshvdnV8)?{!_A zwPr~j67T!joo2}UM>!0~_&Rr=LMHI60T9>s_II6YL5=V4brg$XFWb}U-d_K>*(Icf z=_nIRUw_8>YZ_0{>Lx}__C9vg+oXxd8c*$&_lDA(0c@7rhl|W+hr0pXdj^<+<=;Nr z4d)}9%lC*7*NRiq?;KwIYEjJ zGQ{2(TpgUAE(pZx(d?CZG7J#Z?xxEhM~j?>NYpuIh*`snEACfIh`)k6#&uv z+X+RYc+d3`$V^p@W*BtNe9f2(gN~<~)vdh#_9y#S<2M=V{?B^hwwV)k8v1Dk`t^p_ zpa8X)ev$aGN~I0F;BOo95!<@SSGlxiR?*<;HXp zw6PfYTl;dWA7^*l&+a=!+~>2Fv9qe-8JMkKGVM%2JO2d_$MmvBUT)!I7vX9l94Dut zke}n3tRViatj)T%Au=k8*HK~rdT?vD+Gi^m3rhDxW`b1AI9m>0t8KPf41w`k@7u) zZ`|ud_`1e-<40&OFHS?dyB=q^gl#GQxfGGEXu4gtXt2|HaO>Mob2anNb4(gAM!Z8%6_J zqi@!$*`O+rB_+?+4;-mp%={io1bJ%BpEC~@hVLXIJQ|G)dO_MVY-RkK=9U}c!A*r! zX%g9EX8`BwN1X=Bkz_qv>^iGIRUdnq+70rro6Qo!biq^U}gMXKl(tTBa?WLHPi zTBXS#8MU(2E4psz0dd!8HGxI#yXw3y%A@>7nzZ@LpLRxhb>(->n6D7I1VpHnU+nbo zW;SkFE3ygjIcvF1kQ}9GsLQ@nRS#ck@q;Xzro5FH6pxSl`a)Uul%jZt*tJCG2(_<< zltp6axsjHb*;&zE>Sj&2hew7}@N>A@bi1czc;~d@PCF;fjMAy17i`97cWbGFJNjIC zCc#ohnQG8}Y}Xq}XPB*i`Gcjw^6qAa;Xps+9?(>$iwCs&>91E_0X@M59;Vl6^w)X$+)+?k z%UE3RDcAY6oJ(*wn(*gdTN+gbGncE%oC9-&GjbRh1~2tqkQvV6bl6O}RE-|TQoCoEEqPn^2$1KV~I>+*Bsn8TP?BI9Gke6?WfPPG@$p!A! z!(?WKp_1oJ5ARqYED-yjokC6i5kE|@?rH-8i*|j^$`KLt+%+m#l5+7e?H59Ch|lcz zpbOuI@R$S);*wokK{&N_1@F+KeI&PmS{}E4!m94%v1TFnp!AJ)b<>@vnV0%}b!!3H zr;mo3=^MQvxqzEGPE65o&ZDQ#h0V%{2CPgnMb8o<^9y_1xiDp%Z8ZPIv*ZyU_gTPE z>KM!EIqRBj9vUSARr=hVarLkG8p?aKo)n}HO@RAPyv2dYM;hl&GyOTIuQ+--c1?0V0zSpLNILw=aoD1`NL zx?}Sh@Ajl{5boJ}zoBZGB^%f4Z#(;QnRL1`2iqU$lBemZ%%|XN?ODoK^-B3R^fEaY zWB2!M+H;>&68*f5bzmL()#CGZ7%jihf}myC4JvYlUkhyjz;{_dPiEV4L7v!G^|YZ; zrwr>|TBf`vpLb^*!N?nikwxAKw?iDu-vIjFKWMbahr5Q|MZn6;d$SQ`2Qc^gE}+^> z`rXm@6eLh7+Vu76 znfR)u;IY-LfF2#|NQbDWw=`U&YaR6}owZNmPZznW5pW`y>c{;qFJu?XKX?^?rOn^s zqw#K(iaizSHWl|as*Cai=nX<6D$81w+D-x6WCy86l)UoJLXO(aD9CQ_grUNS7jWw; zV!cN1dVSWh-1*hRen@mZVz6G1zrE1_ukFiHL$wi98B524Qs1(xxmfMyYgG|?nDyI- z)$8etjf4t}FGTl3J5s;HQU^?w8qyaEE`M;o1bS{6G6fIHAciX|M8h<)tdK)nyYaS* z%%{484I0N*mwouils}S{U|2875pU2*%03%65wC;c+;%3#Rmmq#6Hl271j5F>apOe# zF}9)4Xm#b{3a%IJ=)Vx$-OE4Cl9oR># zXca9%m_8+3nW>Z<=Yg0G+E^1rNx5>+6BK(soBy9`&N-#5N-F>}B@U3sdk2_WEQlMO z_h-ib0cQcEEK(Na(bxZjUo3)+jUFgxclf=D0;+r86WJ{@jfVb?*H~-c0PZMqe2eKq z)pGY6yR(DKfN!s#aW4PApVp790{`s?ll%I-p=DC9mfD@7y9wjH-X2O+{+c<%;c@F= zI$NH#;IbZSw-!j%{|sXZ#${p*+x-3SOO|`VN&g=qNZ)9@D+z0JD*eLR*)8WjZVtp@ zd|%aWaI&Pfa3xIySTzvmCD-R7fW$<$^k#x_a#^~tvO7@pU|Xn?%-^4-z;-@--_V%& z8o)haJMF*iMgM8*FRHs)1j3azU6eZ z#4t+2C`kApEdX$pv!J`KKu%3o`SSVhV}0^PCjvPqabXU_TEzWV<}BwudveK5_bwMM zL&h=w1!0H=V-8(G&I5^kH?1U>Fv8o=3Yl*hU>Vm4-RQ)ye{qn2K5}G%Vy&d*^V}N6 z*f{10oMB0|%(m;xzr@w8;3OZ$0U;6yw#*iG^+$!4ECLVsi<=Nf`ch5=5ZO4SQwYw zOECx2WC6?)U|nB{KtczXpo1E-MY)fiV^LjM0j5`amTh<4?C)~S9D5leB|KBz8f^62 z*AGH_m3#IR7})_6T$&z{!^IpXo{b)h;Y22$lj?Cu7ZY3?V_D&!5IS7W+Ql|P75y0b zF~g{F(GB-h1dU=)1a?gT*Db??*2Mfonw8CSjd5QjsWHfz=|7) zM7P_h7$Ebh7>IbqyiqoghGnO5V3+AbcthH=Qn7p3sAoeSs$Ao7=hU_V1B$w;QG|dG z4M0L@O;8Z+`kB-FJ8=6m7d4*DSZs!F2bDieb0pgp@+!HScmm+4!peH{LKjWqUS=+B z-t~`5w_d-MKa0Q|IdL6j@3N{~-roH$6nzO$W9A_|MWFr_ha!mILMASJfHl zfx9PvmY1eaLa^LEtRN6QKjzc6=W1+YX3e-4ri!X=iE_zJtJt=KVLOZrKeYyV|pgUz1}JvlT@R7(_ekBRa}Y!d=cnE6E$;LfI&-Fa<-d2 zkifWPQ-ALEf$EamJAsd|lH>uI{@1iQ6zPGwhq2=RA1<7V>AhCkh&6Ghe`qN-xP>vY z5zp8rm&F3gH9$P$UtU-Wr8^}pfu3JFl)ibGW<1*!*KEwL$`N+$EwEoPkVU;)0T^4i zx(dt}^Ntz7I!mpv4WW;K_9J-G67CBpIh3OX>W*U{ z{Tl$oal+2Yie!j0(H`L0U*%2YNh-hE6~h(q{^7h5Rua)BAX62wx@WLE8F)W(4A=y) z9Zcvn0n16Ns_tG;2dLq$R!>yb81J-#yR&AXL~%7LM!g8~X*ugYLNm2Ew(v)m1hdR< zGS9D?2dD6~Xs*l-o@#{z%5DkHxC7g{bQ^{Pu~qrRwhTa#jWkplNfWTiH=n-8#tvMz zJ3Twg(x|g*?ibqBo61NxGtZpha%)<-GPf@*&*r&mse*b<)F23A^JA(AN z_D{JjyzJ+}owJAP^40{;uY`ZMyGuIk(F`w-=^q%OUm3jHYR^jK8IQx_sCY7)lSX416>z>P0;j@UsB^I7q$hH^1Eh8y#F9gMyK`eu;anyM=_ znWjn3g&L%`p|)O9{}kq7C=!04JB><51LT8o*|w#>_a%bC&w8~>6s z=MSER%oRc6UjQ6U1)Y0`)CKn6YdL8RN~zO-FXR77)V9T>1~vzZ1xhguN6qTM63frE z8Lco_Gd;q4CWW;GAm9v6H~O+kWF3lI9zm|hZAhD$Q8Mq`Q|^EyDD&xXE~WI}Z!O@5jk6JfICZN!(ZcZ1^MiS1VwV;8k6$$Bt1UODl(n%N z5j~$Ct|WmZJZV?jC;D5rihE{{--XNN6fs>!imG%R7EvkK6dD!%$6ldHRqh#RNo7B( z_h+z6xAv84boXTJ(HK;kxEkpG80^KBEYk|es*@G4TS?k|hsn2iK&@^ZrzM^vgwF9I zM6(W;D#W`7pXMEojU!^WnWxkdGh(Ya`J}(j^5D(I>Y(lMHn;L-at~LOVK^MTg<+k+h2=f zw8L4un=zfH&&ay1Ajuqz~$t!WBflmlM-xA$CBLbshGqYFdX*Zt()}HfnoBu)1Mc#PF z=MQ&p6vlbRCCj46plXvaB;7qwQfxgE1sqx^p8`Ec|L~Q1Mll~=4P;q|4PDZH>U#8V zNn%VQxm5*9Ab`{4I0`88SpDe#9ye|qJUu{$aZirh$gTzw;FEehs#`YLKIDTjQ)LWj zHX2nBrcEcYXcN-d91F*ei5b`03L6!(Z*K-qaXW743vaZ;XJA!d&ksp&WOX?ra;q<& zHMzzol>VUohT>g7$e6d>r(tI(9eJTVhSZ$ke z6H0B0xWqFSpXqY|y-bxs)cl7i&>4|Oeoz6i+f9|DWO_4D1(-L4bSs7@V-%Gq}dX zj)}56X=~)u-ey*sefz1v^+jc66D*7)fB6Rzt88AK+5WxGR{nfTJmb8j^`x{)rIHrm zJFV@{a9NzAvP5zW<)O~kDG#3Lw-2(es94Xj5@T*rz0Z?3hE@~h^Jke80{ zZT86%J5z97#Rt_1Vo~gg`d?!i>A)TMU3Oe2*SYKK;P_pHY9`!$KDf&p*re-OI#jCy zvVf7ix)_2v-W?ILW^qb)ZYmoO>$JGKJinT+Kt%WJ*}Y}`)lyQRmL!PoA~JkC>;2LOOgXeP;uXxOcMarf~q z-?`h3eJ{LaI^k?}uVrXEn5=8E)Vh^hm5`O`8Q}95zK6s;eOL8d(~-nmmXj-e9RuIb zomIDPmj9BCKK3iGLwDk^68FAbsc}Vnozqa|&0__MXM*MBS>+~;u*aRTC-Rm_f#Bfc zNCDRZ!28r&>`wlm@df98!*Fi!8D%hN;*U%hq|tmyDiBuU*1EzAn_aaV!BsE};N~s5 zx<~FKX!@K!Xz?zUF|O$YINoeFyn}T>8^5@K!zw(NlD$80p?65T={vgH1};$hKx_Mm z;aQFWrl5^X)j8NA(i8A1pJcdpE7-hn==uu1@Dv!Z@4)%XfwK5`6&wOlKlSQ}dY2L? z8l~+AfYe)m36h(YTTG zD}YF3N@Kptl_@o_G)OF&CFHVtM@ucvyvLroj{EX#g#uGVAlKiphySL4i_*r#X%I`; z&=RL|6@WEWkvzz5v?Vbz@z)2Hzte^6H=0jDLY#!}blp>K$MJ3qjn?e*Dy+{zpxVOu zzX{qEEJKFY{w2!a*qLu z&{D~9iKt5M@uc6xafN@RknVD8CPV$CuTkxJ9Qka((ohlgG4+`f4AttNmfqheI_{it zx|EL}<0rvs;n`-#*XdO#y#F>ccg26%G1z+5)FL%O0;=mn$dh{=^U+TB5_aA4(*DJC z&oki5AQAV-}*Q;OAvrMGC;@-lB1Cno9? zK(UeUDi%{~pPq#v*D1qa|El170000jSw`UlBA!#Hztt*s6)!pbUWLUoB~~B2hPBta zt`rCeucq?3RCqwvz0PjhDuA``9l%VVZa@>xrIZA zFaHam)I1at^8`M*<2~jj{r0qug^JUEYtSr1qt>R> z{)rp%O{w6=y_BP?{Hy*TYHFXC2$Nbb4~#fqTe9!8l_4GoDZL$JKwd0JM)c;r0+6dOa!1Iu!+vEau3>P18pB^>y^QtHBZ*+H= z6RO;WMLezwh@ZIMr43S!9=YYr{^&e%oVTyKGv7@E~j+X}fA|VWuyO zlNlE#oB2VY#8je~t1gR_>sDRFzI;cdH3&Y(}=uD2K&BP8b%uEhN^<(xlYM#_;80Zc?^ri|b zySBH!g^veG#xcggBfRPbbVCcRIC@obfrs-b^DrRABmsucVYUC4@&jh#{B#^qm`~~J zoNAmveY>UnQTrH~$P~8tCEVr&I&F6P> znlCL~Zv8bCX*~pJYmfJHShBb77p-Z4nBQJb{7nCGmpk~ZS_t>p7s~Rc*{_QRm3IG9 zc5~Wd4)Z6bE@+Oukk+_znM%s(22(mq1|MCO!(swzTVaHb%EBqO;+a$Z4zOM1p%-ea z7VnR-zR%9_ZS8*(Y5izDlWraNN2Bk`at7bD17}`Z@suH;#FuyKDEU_W+C8MB`;7aD zAmwWesw>YvF8{WGy$p|#DlNCZCx>OQ`<@207)+Ns5t-+)zTvYc=?pAj;HnzBAbo3q zv%x*COsD-3&^XBpcb1CwBx;P<443kIJzl*Nn_nke0*ZpEf7Fild_T4DN}Cgev?i-t zHm$y~ujd1){PKEHZ<|gK1&@uJy;a_k7;t77Z#>NPk^T+B;md4>U|tLHUC9Ra&QCTu z^H(xZ!s{Ldn}PZm#4EGQMr2{DIKu*MXW7ezx&u8WByGBEw>ks=gT1%UeLtob-zNA}Ea#73QC$x->=8t6S%=GrzgI88(TMLSb ze`NMoC+2f08va~b0#c|~@ba&y7OT6e0N6TN1g>nh#W0J-%xBnCL0qNjgqYcMA&mzR zq6VBS+Nvagvp@*M<8rp#&AD&l2ecDjoN&ITqVa5G*bbl%ZN@zjk|ove<0_-vO$E3! zYvg^6)PWC{)cwnHpk4DPT1xj*H(G6O#)7lN-a8?hlU1FY3Qxxv+`G!SXR%yBdtNon zM2jMAuI6V*((BSX+kR#~cO!ql)4d__erYqbCLqGV^=O=N&Dqobm_ITle#cetTG~B= z5Q1bn8p>X**teW`)4M&z=d{(vypwNbw+>_~asZj2^I_I7HuF>%01|wkRsz_<@-lDU zi;J{V{~EqijFhjrjF@+;`I9r%ky}#CMQ^^{LOq4{G5<=)k>b44`aQUoAd(dEh30au z0+*{kc`xmSm8N=gOMMg0g-6BtSfJyn`!avdDB1v*?KtHF7*>bOV zHV2PZtma8>trkqe*W@TxX!)7g?QqxZ=uOKa>~iPwI`#gafh81U4D~^h(AHR#wmEhw zn9~laTgT%{7iDn!^G?76^X0-Ngirm(&HLlmvS7iQBfe}y8^cwtHxKY`G8&jpUq0=1 z&Xmj_^@%NlD+xEfiI!Z73sfogltVQ*D$ph1Ug;-wsv-}I*s%X{{F$Rvqdj$C?&zA) z=Wu5HDg276_UL}2zxcEtk!WLU{W31HhKQj_P5iJbBPK=KHi3D$VJLCfzok!SzRuP$ z!RD&Wt_P*)<<*QpE?)$Y3t!ehebE3??Cnh||6NxCjB{jPFgLPaN4m<4Mj_ z?etO06JvwZ!Jos$22}pt7>9LM#1)3r=dgHbGsVeH5LVK(70FGDFuw1*BgX!?V&dd# ze`bUD9O~r=Wu|>RC!1RmN4XtC;V4~2lu5|?WeY8ZkgPeXafUud)^jT^%U_M?)#$FPD= zlHJ(W_1YdkS-4WcyDbvk`6Ge5qsRL)cWOdsa`#zh^UqoQ`7una%Z!{^mI!RlD=Iw= z)#K5p!&n$^@4S^0J@S#apbji9_av6>TkIj*lJ(tJZ@Gya^R%-HxiE-etKIVj9tV3d zUmV$c|HwLC@DW34*`#82vNEI*q zg)&OTz;_pG65q26n0=Mt?k15px#&4lwG8VNh!#{7JJGkY&Un7vq`OPL-%+eNYTC~1 z+%{{7~O=I(k4s_j;PjNSIW(YjZj1&31<+A7OkuX@prMN*JPU zj2}vGgk0WrKA`;Eu3s$r&Q@1z-se$XA?4@u>1}lNKXO|Djdt@!sP#2q?ILKif4IFk z?WZg01>^|=Ok-Ri<41M>PzAfV+&J7}u98OTG4-`Tjz(lq&3Fe8GzwV#lYZj&j{JmS zRui^I^km$%MXB}n5;XLA(ed;bagb2vOfnD{Y0D};R}f*0fu z)*`wKgl~y>oP1|7>6peTmecMOqfu&z7*n*Dgt`~THE*5rj`EG;Kqlotb2`*TGa)xh z#wyNocI|PBy>vpN!G2q&%%8!vy!d1iYC14%slGXcI@ceuhaPiOd`PdI2UaM6q#2sT z_=A2W4s%`1cYL$PaJ$H%T|OjI-#kE_@5gxBC0(Y&NzopY&&N3!D=)PWC;9Ec?axV< zhE40@Oy&)p2*XG}?w%PFh0>hMdXizP)w4dk{sLUk*br_` zn_3IRs8y>$)2HB74kv<{d2->!&DDH~ZjdeT<${poM4D z4?Krz8j0l8ig5=-iYnm`gqJG&^ZvWZzI^15YaRF5g`ykB;MvT8uB?Akl1#V<8jMrW zkG*VLRMiFui*4}$2gOVWT}5rL)NgLo5TM75FqvB)_LXteoQpKn$6$_dnzroI-Q1_g zZV?83`B1drvbJCmDjvreo(QgFyY(I>8_q+8LCQ%xs9BP~tQmFG9qjej&ZFbn7cSWP zI#_G;xzh|DJiY=-B-@;0F~$dONCj?icg@hyCK-QCBa#-UI$Te3!bsfV0ZyUCwGSA9 z&!H)os)TA#`7@t-<)X-Meg8YYFQ`~sW3znw;i|x=7*E%J}a!t zf|(k!#&_%IfDfI~4JT z8G&d@&TEF6+EhVO`&~g5DxkE|Z>ZHpv+$SpiRjVvj)_Q}&f{5{*Sv*lQ0d`tDU6s}DZ;pHzr zViF9OT0Z1=q_r=hg2*p1PT*{votGj*3-^ zSH1n`@Asm(eaH;m344MNs!4KKv?zv@87O|^f7Zskh}dKsn&tHN482U%<|tA09{=%2 z^QI>^t`MC| zeCKiADo7jfA{w>hqg^{A3i(EIivY&_(YXL=S5On8Jpl=e5;6Oc@j{VKTMRl-iyC$c$Y?mg@twQB*oe(&l`Sg*gDW<{^N)3 za_OFRB*{g z_m+l;C%Wa-Vd+B3TTEW+=z;>0gdyPM7KfhH5;TMuHhhH78X{HD6I9q@sby4_>w+Xi@P(V)wew zYAGuolq&vW=Sq0pkVSK|4Lx#tgW-0tt&qDY6RZNXF?;&^z1E%54hrEM$i0exL_7q3 zBQcvZPnj7*V()Ja!mU&?)LL_OtBW*+a3J)p@IzVe)_n(1~V$ z6H4SuUR)7>vl+opgjAVLr6=(?-$wUr8vt$Ns{?19z>a$dsA{M2d))4n8V=yJ*DUme zeCYUoZf<5q8(0b#=ewqI7c=D28J$D zD|%D*ECE$6iH^8YF6-Z|!4#`K;Y8pXd)qr#CT<^6=~eiSxk&Mn$_T-TcqeVAxu|bL zhE>AqOVRO8x*G>ETKjf=rM%?*;#?;WvUoG-XAnQHMM7EK)?ZeNd1>!ot8dr?@ugge z3OZDRg)DOTm2jgv^nwB(fEzCT;8lqQhtZ0HVUk7wXG#S}?1e=<`c-@>TNM0RGsLb9 z0j@=JlyzuqP7gA%KZ%e8=VZbaS~6XO^dBuCyYFJ0b$eZ8f_3e|Z{X@Q-_%aCDPMSE z<5V{)PvJe8oKYc(s2C*9^<3O5jybfPRk~tfxt0Gz?Npz%_V#Uh%h}0*ty9S;u1=g* zrf?ISG%CLgtF%2EBdNf6_3v>UJk)Y9JYm1VBbM!|guh-CK@zL=xj|sE(!a0zuWSGJZ@qp53Dr&b|If?&-IZV-kBxs10h^hK4-y8D zg7=gJ#7KRSkd#FD`w9(Dkg54PJ(>OS=KgFX4`>$^t1P;oMo^7zIDwPb@@BXlm#TF2 z#2H$2@UlCTjWyyB2|c(APfAVLyP6nVca_hGf(GsLIYDM?!^1?<?bMOjl!lDy>Go zlnjN(H>wnyYz|XYI^5}Uf7qP(LA*zGHgjKRt8GNzz++M0Bf;Z01h0z|;%e3wD_p5- z4LkG<(0V`?&gc7KeRtZ=i$QxXui#&M6@TAcglHCS`~kdtnl~jrdiaS zef+$@54_I#03Z{ZTrpE5lZk^E8H(>-3q%P}N4%ZfS4Y%`4fbm->Y4b^EAKB}=JZj>m*shGC z6e4k!nW6KyqOsgg>%49UJr&dfYWTG;)z_c=7*ef#9@FbUOhCKS)-U?RhmIx zdKN867bO!F%%iyJ)|l(cce+41&T{YQJh8S4VlAxVD?zgFO_lBPrS#n{V?_@Z&!$>n z)lA#55N3Hm|K!>7qj_`kRvWd3ttECcxnlvTJygh@p?f}{W$dV3v*gdwFv4!@V$!mO ztp|%ei?net8`bow?D)ho(}t=eHt+FGW$0}bHsNn7gGUy3_>p{bU%pbCJ+fPqQ&5W< z$%it|;$(-EGBAk;pM6wH=vBo@LKK0f>?7afz&q|%bZ}jIa1BxV)sxmh#V)=WM&lh+ zO|7Eg_=;a{C>BBWe0(S78wf2e*lnk$E1IS;>x=UQ{H;sB-zZ{__e*^qD;@{PE7|ju z<+awqcWkR;DY2ug`x+_eE^9z^>-e^QCqsaCEyZys^%_AkQ(nOr;x3~Dey4A0KW;nC znz~(`mbQG(FZPMb%)+QZ;cE3!VvMses=Y(&Z3Q97Vt^N)^P42uwO}hC{QT|%iGG4M zjz!K1ozq<_gPtKK~#6aRMacwKYp}>MUgU=?;_I zLyDe<7wY3{9pD`yowt-8Oq4K8~yI0=oUT)0`J zCBEqFDtEoqQ922wl%);)LbfJtTFiaPK*kLA(mB19&)}_*m{8-&V5yHk<36BsGTGkrWvNT zIiycA9W5)_{mH7epP24Wzsp87rCUR3?yhR;UWIX}u_ipG`ch36cqYUQz&I#8Ftqhs z5PnUNkCY$7(gQ6AY1&Trl8yMUsYaj%^HSHaN+bXf>Gt zp={?TJtPzLj(aBiGi8wB>5E~lH+hyxufdf}i=%B!CCtBxYwtqDChMzPN|u^dE8D+b zaI6vUEEeJ?O_cj-H(i}uNhyBBY9x_IGh{SThyt+{ZRMN@d;FEZp+?Qtt}ACSoq2d~ zs@7tsia%PRD=(wj4)f-jA=IMb>rxg?h!z3u|H5f@XZ^HPfA~|t(Z(K4e;Pwof~DI@ zN>V1(f7nz*q6w3@Lc67&4`t##Td`8uTZG>^)jKg}A?nX_9F1w{7*4m#xhC)&t#BrI z)td+}j@0JMATD~f&5|Cw4na@C_)J<$et*{XSIL1P*IDheSgPIGrFOez^(HqX?ctU7 zMDn}NR+j0IQ$g+cr)sid?kX+O`X>LNmO3}Z<<;clmRLWR-b$S5Uec=V<0GWi!8T|> zg)7nXEasx6nK6I>9Nav1C-WR0Z?+Wx4KCMgDxX!S6%HThWX@Amt1=VibGw{8iJ?_Y z2O>Df{N4;V`zJ!;1w9v_K1+?UM82gyjR)b$qDg9ZBzn8pxdPFDA>TY7wPisEyH4lJ zXMe}edq%P=)PE``(+FX>gUzXKZ!a0oTkE7@P|vH>o;$H^A$@8_eC||KkFk~ttMzZw zPlp0IrqpZg?QWoTTGk^N|9S7t5bXDW+5}Jv{;udNyi)oz-*=bTq#a$sh#!p3=OHf% z`gQTdC7UdHuzS0VH;Iz5f?@S%2y{vax^CR^O=Q(4*%39Iee;W2uBcP-bM^Y<(`EW} zRr;PZ&Xr6M`f##z!8jymILm*Q_hKB|(&XO9Snh`TzIsX|a&I zzCQa6&`Q$d0Ql zk$x(TC$Qg|ho(rhlr_oey$GvrS20BkRPqpCQpqACUNhH?IbfMg7G8SO9wh1>%1Lm- zzGl_AyyL7}^b^JT;2&=q71Vqxf72dsoPfjXe6#4CWGwv{2CS&R==g8;SPao_L^t~B zDQ#R8c`#F>q7A_!g3d(+{jm+>1V+<76bJDVF$d?P?r2OyYXQ8AB31s-L!Jhd)xd_A zQn_Nken7&roI<9I@?#?gA1s@?&IR7h>FMdtOqqVz zuD7%pSNFZ{^mJ+z{Q1T?l?;S5hudC@Lz(09Rl#<+E5VLmc+P~YwM_c9r@F`;2I28d z6f`c;{GmhFd!xg%{M0s>eXJ;DDARuV+8^Lg!XL~vEGtv(6kW^VAd|QGUyAWD3ns|7 zP>6@g!6$MwLmGn^0Y0ea>7fBWv+nPdCNbh1*K_5`)#wqFrb6@;129}zI96uTBmxg` z_`^8Ls8F`faBE2rHpX~NB)$a`7cG@b?ym3eTfCTw31{D|ez{)8BO@n38qcf6?|I-< ze>DGfo*0ikF4lUErYdwISUKnMy=zkDm{D%LOxU8`AcM@Q)XCM82- z3u$H4SZ)~J3EpLC7>Mb(d|7f|=X=}C7Fhg&IaF*=&6q0=f18!ZQIN`uNKFQzNe*}9 zjLyREfO&+@Puzc9Z;7rt*5@*cx9Wud&*WZNczVVZT{Jse?w$ayP)t=5)& zPE>PP(=HjR69tllJZAV0VJW!d$sUh)obpQ4 z?0`KpdyHhv2{`ln^Xo@%R)^zl&I}z1IQYH_RWCU5DI@7_o?$E@;GRL7H`Mur@sCvE z6B?uAsQb{y?R$Z|_imc%1IF#k+gIH$ETZ814H{EpR+~E0F!TytJ}Kb%w1cmO3K6Pl zY>u91uH@w8Vv47dA$&VY^|6psE)UI6hj*s zaMXGl^MTN)_2e6ZKXX_Ib|cWkF!~~#_n2Bd8R6R7pEpeSKi^m4@`&wY#)5*567!wA z8y?e#X8K#>A^7^UyG;if@M~}I7dj+{X~&49|7ZbLa`BL#zJec23ReVLiY}r&k)m37 zDq2Tml^O|C{{GEh{=DkS1I^6*_{`)i<6zR42h=P2%%0-)LrEF5~l{rb=B; z_J?v8j)%P-#UD?xGzxxjPMaChbqsAT`(ap<7|4_uo3IbqJHxAVJ0pg_s~@TjFc!}` zB=Y6T(kJ8HW*C(hdy0m}QI|e~)l2cD_ld?!mZ!UHZrTx435R zME=6-@Czi5(R|3dAs9|ZiRv85X30iF-kI9&Nnhm*Q-M(L3t}8f!-_&OZi!P*U~k8S z)58$V*3pb^4(q}Timoziwn=e~$Qu#LdJc>uK_H_`a1O-_X~h?*Qt}FdjECzb_G&b4 z{u5nIdmHqas~>n9bdOh?ggUrh+Xn!Eqlv{4$%ECBu4p0YyL}B|wm4W_`phXgVmPat zYerb)s$q8fWOqYt;a*5SNnEh?F)x{6Zm>;L;^M%Xa+VRkV{J zQtd6&bA|*GFX4nTt(8ztrnB6M@7hlemsTL_ejK&3J-nf1kZWQqf44cQQs zkT<~1mCC-_VIfaiWOYYhp3lOCrBXO-a&}e+*kbOHZ;9>)vq9p3IT8Hc^~*3^sp=N$ z3MZe1Jqu$L>Sg5gg9@Y1>8oh|?dzL;MbvVz(E0X}pEo}tPu=apL z)Q;Y=hPI~}_fC8NpKmtaoj%>I+)3$&>VZ}Xc9Ww1#!e)By0+c6dY=oVy|>d8g_0^M z25ukEQO@6lAkI)CMEC8!EJ8c_gzoWHzl$!R9M9oy6)W4G<$u$r_{l1OYFNtYHAD(X zX>@n}Ql{7S8g$Zy3#;2s&X}uOzY~wFTzDZd?;yvTB2&KLCptg7Jo>b~u{E&}iX`<* ztYpTxokqmLRi}ThiSjr2ELS`JB`%p569aLEDD~fFE0WF43}rhhcg?G;M9%32v80q@(l z;S2dxeB6;^TY(`G^l8d75Q#sfdd!!o!Xgd@7Xx{Aj$XZEy-lfx{hrgBE~zt}23e)@ zB7!CiJ1B#eOZRu((PM>KIJo+)VvtxK^URUnviVQhY614~+{PB9(nFmG%rcdfQklTo z@!0AhA#uh<%{idb?*^ngx&f_%CUcdh4$q=r9k7&te9XgJ@w`6~CkpSlRMz&0(E`Cf zwPWP&e!CEN6?7$SB$gYG`A7KsZ*lH_|JT|wLjTuIZ_dkSX|6=2jGXUozk=0fMG!zP z4j`8pY1j|3fv|uR+22@t)$|-sATMqPpImO7vi}ZlddZv*;7*7zwdf{7%kKXej0~UD$>wkHjV#$ zj~kGmKp^dOU*N2dB}2C0x&rJQ0bR3Fe#*g2v!Rj4TfWm#bNluu7hjib1}LUqu1Dd1 z+d<$L=YR&KYQf|+O`TY5(M^04lYsQYF`;#g%B6g`*gu~g{FQob$^T;OEu-Ry+HGAV zKnTHuI|K{v-axPrf+V<0St3ms*1N( zt$OD(=i+lKsZghSIbaM8=yr^|xrLi0FBPZ8xB4*q3AM0($#>*3qy2(JR zonm6;PMUN)A8REvLxUck|JTE^H7uWBjUlSoI74l>%}Xu((3qXE*g1;M1hUrCHdh#9 z?PHz$-NOgdV5Q@M#;6itn1wrOtkd(<<9h_W~CL|0;Qjv1JkVzc*Nef2P%GK zUto)0&egl*r!>vp4!q|3pcLyjMyPMbrLud#p}i113n?!(!Ss(tm8NQS8qcey8^hu< zCF?6mTV;3smAs9Ib^(pfTKl8Zq^W$q1WiL*4vD! z*kZHXA6Lml&<%OALPe%pc$ZC|f6o>K-%!4DG4PteDh^j5FZ8AoO>4YskEeimXR6TR z+7Wt+UhsX5w{~+9DZ~bQi+WaSIDDSK%3X)}XtHn-Z_4~lxTY6x+1H(gwx@^DYx8~I za@IVl^fIy~E)249DWCHkqlFJmwO)u1+q-wGeI6$}(RPAy? zv^2i?npQv|>0%O`*5RHSn_zOO-;`}Lzb!N&H6eKQcY&pNs{he*@~L1fuYlE(=yyQN zseCaGet*xaP==ntGbfM0MA9V37cd!GA-xEQPTuFqx~WyBi?D{WN!3=fL>TQ(XtHW= ztf0PJB+gQep=IH#!+8bjQl`&*#dw`txoF&>+9xo446*3M%ufM($HTuEL7#NFh7RP!q-um%jgR_S(_-m9GbE#+S9Am@a`!ekh+% zS3x#6Di#s0LBPQ_d)mM|o9B>5tdeiHK=p`I$L6zB?8Lqvku5QSM6d-Qn ziE-S{v!*^jzj{R7{#5TR&!(WBCZH={mba^X;d9VIw_%*!WJyCieo}UbN(zG4{r>cx75Tcj!6#x+w zxlk4Up#5Thxh?x(v?$$~e2uTow2=@^Ur~VTfka!V>R!_OZ{boap4q(fS=0D*7wQba zof#RJ-Ghc@>HD3RplNZxQT&;3estE{{DZK~3P3w$o=V+<3_SlJE@1(apL;$vkmeG9=yWldz`?y1JE}%5kTytkreRBoMyh^rh&+dWIxNLK`_G42T>Z|uwWRaR}eAZwAVx(pp zU=E9Dr3=v`e*|J`7vazrm8i=Kyr<8kG#F<4-k#0>qc?|m&jZ$tEa zv~>R>na7>rA-pz605A&Hjjn7v?^l%TJdE6X(NJ&$iA38&9){0`_QR;AwhqU^@3cX7 zcgAWP9V4Pg2VZCVPRL{VU7ieF6YqUQ%cjAo?RqyIHHpH`8MPObX#%j`MrOr?9l0|J zlt8FdSBj$Y9u-A?4#eG6WJRse9=$T%e7uDO6%?ZETXsEooHC#OlU9B$cJ2bxUiMqt z=O(dS-}0{?HA1=2^mNf8D7X51gbH5?oaW_YT%drd=T5i$$)}N7KJ{pbOBSX!0fgh{ z8FeMA%JBO^O!Lz|7UDM�#&3w8#KLk1Md3KG!zgN1c9Z$n^jvZSLwn_ZS8LF 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

  • EyPhy)NM*2Q7}M5%W{(ATLm|+FFJ;hj#mrTT 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 literal 89668 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 Y{@Yv17Nv-D;4cs|5{lxLqA%b4AALC}R{#J2 diff --git a/test/image/baselines/legend_scroll_beyond_plotarea.png b/test/image/baselines/legend_scroll_beyond_plotarea.png index 677421dd0ffcf2a6d7dbfd0b4a3b115dfa2b12eb..51ecafd947b1cce2a4be2d2c0d9c3e84b7c31281 100644 GIT binary patch literal 51419 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Π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 KHUF}O|NjHf%et`u literal 28470 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

    q2JxnG1C2?H3`R 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 F{|}8KR#X50 literal 62335 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 OX!6p^QY8{50sjN|$Lsz8 diff --git a/test/image/baselines/histogram2d_bingroup-coloraxis.png b/test/image/baselines/histogram2d_bingroup-coloraxis.png index 2a9198a289a855f4bf18fa8342d53a5c2c930d4a..5e24604b58d85ef1fa8fc56ccdf8343b323ef9ab 100644 GIT binary patch literal 60433 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 literal 60422 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 A?f?J) diff --git a/test/image/baselines/histogram2d_legend.png b/test/image/baselines/histogram2d_legend.png index 90f94fa3e4b2b5121e18a58c99ea20983968f81c..e4a21fd639446d697d61f6d30c1c8889f65539e9 100644 GIT binary patch delta 82539 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 delta 82517 zcmZ^~WmuGL*eyKc;7~(INSBmI2n;DLN=S%+g3=ArARRZ2gtT-?sz?aZHFOQ#-QC@= z2cPHJ?|#4I_JBWgKVVB0fZE1UYk2r0mJ2GGrYr`}!#nVAPf?!Q%CO6}WI)yxhL#TOI!( zS8%&6J*hmcyPT;Zla00b!gIN{RdTBBmS(@J1y6K3nL_;sep2~1;_K`sos@JNXn|l^ z#?aRZ5H!q-kf{SB37Jwt+%e;y%AX(9pEljTly*b!5#A=Mx2Kce*Ibgb)A>+`HiK-F zqVdGlm9yP4=T7IqKPQ?Th?CFr6t9H`gs5Q0nwwyih$^C(sf#veam;9 zPlv1|&F=gAW?V+AEfc)e2@kL?E`0|O7}ouEiO*bU#lT)t$fM5I(PIbKa+8i{s&6rh1&?-W|swhXY9(8KDZvYB==f z-={MW<{-)zb{6UrP9u`!EV70^qW|w;0-a=^?=3~Rd*gkAKNGFrhyd_}GqduvdHUEb zJ@cp!yuGvXqE}d$Wjp2g+!ZXVqL=Fa9567aIp3Q(xKK;4&ZVKbnNllqY%-=zV$P=w z+R{us7jzt*ICdUI7YnlQ5vB?kw#O+7FC{A6_#}d7v19lWdzzr2<|72}AWyUfT~VfL zBBBj6I;8$|I7ShEOvJ*TOXJdL$jZC>F1TYc{QcIq#42_QKZVPde!O<4Om*8I+)L8fJ$k;xUp~8S z-Y}|g7?WE~+n5!dHZn0hy$Kxc#R~1V(A2DC3wRD=rRxD!J55O=$X<9pcqMK$CM{&o z&{yI7T(c@U_d$YUrLLR{kGlJkqk`J>kvGeiM5Q0OQv~?NocJ&_NQ3x49|%7f4~sYx z@(Y4aFWnZNbUDGZir)S^D~}CLnc;lSxN0K@iaFMq*)Kg^cx9n_U-GT##;;u*X+=5WPlw5&9-u~spc7|?r4fc20?;WTy+)_U+y6efu zJXx;j`j!|NtPbWR7x^z1{>Cbx3y^-kX9%c2`=0C`ow)f&eFC|nuD~q3oW<4hbCIui z!Yh}QoUfTh?YHKDRP~cldn1M)c3QF@BuU2xP;PHj{VcrrV|6h*PK+WiT*v=%#Jbg_ z&XIWL`rGUIrnGCUI@jS+=Ur*Bz}uUx+qu@s9YiK7N(#?YW?K`Z)$D=k4l#+m@%;@h zj)p@LCa|Tm+$#Gol*NL4p6zDwX2eGec$a@DnEDgIChH;J?%ZMDDve7Tg!!NG?|eYH z40{2#!>C7e^A}94@li9N;%1fKDxR0W_ceK4kfP%-HbxO6&HG=k$~#GG`dRi`k5%L= z2@G8-A2I>5b#+?GH=$*G$(|&yz3P;d?(xZXe$LCU{kJ z(M&*Z_!ZDBYc4bJ%nau|iknFz{)Hn!(RxiZqW6KtmreYS1d>$HGIy#(oZmlVEf6tZ zZQiGf)31{&evcpBGB0qJL7iCM2)Z!!w^9HYP-<%EpGFd}I>h}qz)%%LO$GXsq< z#_A75#2+5%&9(B+A28}hD^hF|(KiblK9Y~RL>;{2S`)jAu`TQH)a?&49_-<_8*C)k zKi>c5$+IK&*dE5^&EzN4aXN&S6U2GTjT()gEY2!@^JAlJo>Q|fnu)xOddwuZDJutj zjIa4wE!x-Z;F3b#>bLekcC|4j{ronE3^GBbSRyA%88>OMm{=6VS34I_^-!*|5%KQ$ zQ5H4*R?@}KCUS=7(FJy4FEA<`IU0YaW_)8BX484r+g(~zv)9hGP8l7WCf7OIT3>eK z-K@+p_VI8q(J$Cs*6}OLTOd`45}m>u`B3}oW*x6KdFYlSWVCohTTzp=ikWD(t(M-0}zl~7)_zT|{QFNc7 zrt`2Cj#0mqhP{8bCZ~?_@`uXyr*dI(akk@)sx~rRy)OYzkpgR8Dt;=lmguzJ$R1m> zbE5~bXcp(1i7mWKjs;(%ExM!c_r4rauG#2BU#QIKm?DxZYYoa4wqE%4`G1OlI49>c zSzm!omHi&RHsGT2^NW+`cUMhQ%S_fnQSFf7#m-;G{=ODAP045$&r!$o`cPot>h-f%4pU6e zX6HV_+4{K~8IDhUQ#6(V<+s#o8N~BRwmu0DQ{{r!HJDlsg(!m|yu!VNsaae(=0Dc;hj2fn#=^odYP? zGAC@g~|k}TpeH4TdU7+Ed2cCB1#W( zG@LoGMlJH`8Y&!=!}MiU&luR2N4AK1!_}I)TuPHwBif&~*=sl}9Br2u9v=vd*$J&r zJcFGdGip+E*S~sY#RbP2p6m8Jw7{cqHQN!EvJ)2NF^ z{RH|a;c4M?MNt0vB7beL?7{g5IpsqxtIU*zw^qfB-3yp1+6s2R-o(vbMve@YNA~=9 z^Reag0Z*ZA{?zOJYeC0UNZG;u+Jyu2uUBuEk24SmsXmXynJ#loQX1)4owtum-teGf z;{l<$!iM==sSV#yYLyuH zD9#&N9UF%g)?s(3o)~=)E#f&HqfuQKbclGD^!M4e1@bHwsJafUU&K6p8nh6#^erCU znx&l5DPEF(WDU;f`rk4BLJfof>JVVgu&qh2{}@Cb4*lbsY#eu`q+P)Gz4Ulc>Yb+u2U=aEWtduRdS4C&supmNEj?+= zQt|w1JiI#iT}W!Y*OEP>+umM+ORTqWbY0*_gp6Ye>iO=sBjjTBe0UbeZOjqJtuAE3 zJ6B2bn0a<)n8AXkrt+rZQEutZiNpqfA0L?JE#Uh%V{q|M77%W($yLb5rg29iDIyGID#C83uY z1Ll|ppWEJg)?&mx&Sh(~BMVoSNopaqejD&}yfU-Gn1_c+fmG#V zu-XrX=NtasuCz7(yI7!d6b%j^`lgqDzM?|$7L#du%tzs{>&xTpB@hT7B>O@__4)UL zTy@^b7tASqqb%$#Zz!2hBTJ_WM@t?4bXarj@dC%}Dq{Tef@OuyopNn(p3$n*7`1xG zFgo+f+3&pdZ0oLbtA(08W{vh{1diVy7IuDO3;5rMfar-=w?I0=r>^yN7p8yk6%Y_5 z%?H`fE9@5wjB#c;mlizklMl%C#K_7s7Z89U=p)YpaCrbq3B&P4#pueUGAd-FX# zc>YZAeiOixA5ixE`XnwWI)TTQ^HBqWNS{`b@jvqm2&0hZLBzi3xfIWAJ5&BtvAm=5 za*b5Atv0(hm0EHPHoE1KxoEJ0i>0SXjx|Nci+$sY1IBKB-d{Juo4t9W?~aB%Xu zv`;9MH>d2hdw`&xOpYHx(Y@vbSdagE%wssdBPVA!Sznkd)$ zvu6a9YB2dS#geOzBKQ1@U`9YF`VeeOIulrEFgj z5sUp)vWO{0lwqA2w50Sat+3x2M^IE-jhQ`TBP8@^4nN2AkeYrbj{=PIzr+8f6}tDJ zf6S9hZbn z3kn?1)(5Q~6^a!bk|*!p7ds!(JFh24$3am_dS4W!3=1tBd|(?pS#I4HqI0!Czo1D| z07Sb_PR<0R-5llOjm|F!G$2IDDh@hX_jjD?-O^kl_x9j6EyQYbsct(iXLyv-Flf#L zi0u!RyYI_s9i{7e^uO*+OB(+W6(Zd1b;vIyWS;+1vi@G|pBwG%QA^*QX}wci)9Ii7 zk7{}-ccXY%A^>S#M*q({gZ|zXJ*a4pC%^kn-a1_AmiKHQ{$QkCZ<&M#n+vLv?1wqk zK*E8mMZ96V--?_zeK6t6@!nRAnS)qgZRUppM=g!@d8nZbAL(uG>8x|5EDfEd_17qvQXjn{FZ;|9(5qE%bBO-(TxiapI4X z{nHjWdGA={M|Y~QiITHJv0M8o=fyA5L&sD>tL`rzP%;ZGlU6K6$>mH5Qn4@-O;NGv z{1E7ELW)zOiIRRdh-)(h(*hKuxMKfbW3Jp?yt^LU8FzcV3((xI-d@pY+O`m%m55!! zEv72^o64u`ux~C3Z^&6YpwQmmM775eN{CYix^R)d7-IrN? zk~(umk6F@gCr0ZY&fc7qiHZSDW=Wd5bD~q?DA+VpmOK z0?hTdm-XR7yEP>O`Ej*dMrXUXH`Z(P3OW}9aSNTSh0Sg=htyZ|G&gk3O{=1(m5-b@ zNAi1qh~9g9b-lu0&!X?TBuAseW~FnOI67x(?MC6aH8yYCeHjOwlU%K*-LT9YKXsY z$OryKg||(qF*r&5)~$Dcd3idibJe1go|}vQaliKQL#DW(3c_1!;BxYM^}A=-n)zu- z+BFhb=@{*uqOhv?rmm^EX|m^i1Jv~O5?}us>D?E*$Q1Lr((mW|>-+fUcRuj1BMrP% zjpfh^u0Kzz_ZAJgS&Dw$N>YE;vJm5WF_`w8Vh6Y^2YmS$J2y8s4=eb(w6wJ9=3RE( zWrDlnvx2&dkD9>sah)u1T0Q&aHE=PgUhT+!)L3mk$}zhJ)bD!iHtk;Z?4DJr z==Gf=Q-nqZ`?0IErw(yuds2jc+bzFZ`|#(%)hTf6giI5o8F-Q*dfxFmqr9BNz`&rc z-}xXqEwtBt1zu;X`sSO0l;@WP3477A20ZYDp^c6Qz}pxJCw7Oo>{X>8^ub4oluOuL-|&NI>?GM^=?=zdoDn|SGAsC)!A*5YS+5_!$jyUWxCF1JeF%+S&} zP1y?EoGlXjXb&k0ZS!1RjMh8qG^wOrsInjvd9iz4M@sfGX|CI^5B6$zJ@B47H(>XT zj0B9Am@N8Wb08c>wE~G*-`!QO{e`R#`TFMv%gbhg!*wf(sKf4P4@9T>jf}igeL^g}@g}@6mR$o)vSzbqsP=RwgbZ#x7jF<|D;%)ig{WLj-JE5; z@a(&7I=EHw5ZiETM_%1dy!JeZ_Id2_^o7C+pdM7!G&(TgbJ!#Fn&XJV`FcP+$-Fy! z_hoMOIw#7+v^Pg3iYJ1r$&l+%=Vp3pI+BCqlILL~g7Il2I;d>Fjw>(&O8~WQhFIu3tRHnq9&5AvX8lZ(r%}5cpz=^2dvtVQBCjKoKrK7Jd}J* z13mKi_Gk`Op2S3tzTrvCh6BsDxy!p^(_fO-ZoiWbp6Uv6$lqL_&g!_=ZxW^+iLl+p zOkeY(Fs22?l1?3pYZ_~7Ym%)D9nsGwf)|y0x`1}gGQ0Kuf~u3b12bQ}MxKM@KdJcY zE)~Dlkq7Q;9wjMHmyJ$`@Yl@awC|cOC$f=RfCOA!__qwe;O9XUM%CRCL?_WDf z9jvY$x-7`JFWnek9CSTBZR1Hj`I9Ti|C!H{tdHKc%08#s?#YA$dX{`ZU7?-MEpv5M zl^w})y!bhQ;!-a|9!fYpKladmIIkPB`!b4Cfx2&r~B)xJ>HZ;c7LTA=ZZUQGq3L&Oe4Lk)o0&!u|!-O z^rklA`J$`->^_SO4^5_ma>+eEf>zqBmS|F+4+oksq z({!HqcOc2*|Gw$=qW-=bT_L~VD&~clVE^sBu=FlXKb6e%wR4Ys>f-Hd;1DnK^KMIW z_KGX_PGYZVSfa>T8p#uxW4OB5(<8a8yROlVN3h1DPs_ne8lU(V+|+a6UB3VExo_n| zT2Gcq*Kra+Onx2|p8!0Mr3Uv?fjziYs0XQ{)oK=q`*JJXk1}cesR!E)Zm)W8HJx%_ z^u}!d23gu1QR82aU@Fy*-`3xr-Y&%LS%QhtfG?F zVWt5Hm%JSGQ`|w?&3angJ1g)z2nt-37g~XR?mcKgL^g;Ut!G1lji z(5XcGCY03qMf_-Mh&*f3%>qC=X$}@LHu$rU%X1N%X_xYBdoU{oAeHy_2LtsY!+k9f zQ9%P6N{G?(YDVhDqJ3=rhTo;{<*nfB$0Q)V(CL9oy{O~`s^wXdVuA8is&1uv@qm9A z;ctj%y=#sV!fCB&{)@wKSs?D~f?1m_`hSHIc?dLdOPuNe?BMn;(A`G3WUku@LH4|5 zhm+if6M+k0#CcJ>efym76^t-wM#79&M88LoB0t`PXsXMk`whl~;LtZ!=oR6q9iPs1 z)mHCyq;8+Ry0vo8cH%GC*=;F=qW7s$9crdEIUp;(`|+8+T1q5ChPFk6(xc+ZkWu2@ z0x}4?CNl{uI&R@u-AWGf&(-&`ioq6|{wV=Y*_A+Kaa6*WQc~{$O4t5>0zaNq;29p_ z{r3KIhc9_pD0tb_jPScug^mrr?`U@_|6`=waEh=)FnKlN2D+OzlUX7X8rR3tl>Vjy@Om=n)2f znORFq%iW))T5I5i)Q$-VH=j%C#o6uCLGJv4T$2MS$)e0c0D=xR>oQ4vlwt%2!gB9d z?n#AL$bb0W_T~?pzi7#r8Iee(85^Q89^)xNYc!%jGWg+m zh3K(kf3`kySd9H9qCPzmpoSEKk`(s|WY|mc z4$9?TO^vKQ6Wxso^-_@K@M4WVk$~P8pC?DcX0jMK;~CAugs@0~Vkyb<1Jj2BT;sUs z5sdAzvTv}6g(Muwf4nx#H4Xh6LTC^?AMZ}zctVwbddvvyEOjW58z)D^3Wqa6G`*}c zUr+b57HAIhXiP$n8Om2q3$tL!_v^@tCsTn@Mu9j>}b6w+2K?sBl@qV)TqWk##Q+_cXY z&Kl-hoUo`%pQ;aqL(s86iMnue$e->bl?rH-M@n`N$4LM}NHu+<$ z$Fy4MUMiEr_3j}k^nqWqdh&OCmyRp{F+slIO{gmwzdtuuubiUQh(QE4fRGPB0}+p* zLQE<|LW(VS+|Yn8U;C$fQ(mADUFELQ?-$Y z`cp+s2A<5B*H+sCjYvmfgB@X{nI&D%eWI8>;^&>nkIvp;mw7#7rFlImq(3Buc~7zP z6dI46e$U8ALnxKoghTYVo6x6n|By!{IhE_aLLj6N(ohDp^h$Li z63F_mc9V{+2}#Y$D+avr7OiHZ#r77rYQ(|aQtEQR!T=9y#RbN+M%IP~QvE|`ZRTKm zM#~81me4!)%?E4tr+y5nlUPP*CnX9dJeRG0Pmvz43IF2dUX(zFgz5ISAgAOZpmPoo z3}h*r10v;v;mt3yK?O(tIL-YoF(%Z{U^Zk5fwhn3`38m-7)h}Bl29Sx@OvP_F?K?6 ze{?FxOpsQ7zH^I@!CwB170fv9+8gW!JDvlL;O@4tzK8vakMr{ZKL&brympVarB25l z(`9DaSaG%}&`inNLXzB{^yvjANZnH=g40XsOb_U;KqFZCoCeX07@OMMZE&&|_R9ZN zF2fX|M+0`BwBKvK{p%<^OvpHHsrsa@KYQkk0<$p~{pg1Z#-X>1ea z1wkyCH%J~(2Y3zP(sN3r*v_v=e^QYC?*GJiYGo{G9ts03G(aVo7A>$~%3URF5yVu`Aj8Js2PKJ{fCyaw2%c#Usz%`i zW2FaRdSpgpXn;1$_ij|50$SzuckI)fcDSO!`Fh6j-#J|zN8L4B>?f1znVUiR215kn zvXqLx_kw*D_=ve@L#0-#$yc$noypN1UEjY}B)`wd`sLssHh}@fWrVoC7mV3#`S1^z zFo0GV89Ch}FLmsso}1&s-8#~Zr8tOim;4y&GKBuzK~w@bSGAc>R~#4Q-mt!?vzWPu z%)4~fLLfDD?_iCwQa_0P#iTqG^bsDNfkVss3JELL^O7%_GF_pt4+Vpik-Tu>G^giv zW3|5V-WH*4n+-s z2uX2$wg;#z9Srn#PfOIXoi~xnAyteG7iD;yV8-C1uaYcboDg|``p_F>VD&K_=Oc@h z7cyc(m^+jP?`Yxv)LfF0Y^5EI*CndM9KF)@GfnCMk?Qitx4|A`;dy~c;4HYIm?{Ni z9waRcMzit8Xkew%cTb$PNAF$r?xX-mIK~87vEwM3LinUe@G%bQ*iu(|ye)0aJ+JrU z{G?;<5oJ-lSG_xM)I2 zK}?CuWt#McJRtHdC@~=q_v~A8ww7Rl5WMH98xX1%BwJT+%q8gTr-89Nua}3FIcqAX z8*bg~B#t$8W(%pQT-IlCzR%UWkU7z@PR|Zwv`W@$n+nAP4|z$dSRoeGP(s8@;k)v8 z2X{QU5ph14_K)y^f9hk=EX>BFQ(Mt#6g^{T%Lvk9Oq!mM5s^_u_~PS~M9HYd`&alf z?DrKl#f1ILFRE?#r#Pyx3}0b>O1KBl1aX3_26cNapNBDvCFn-Zi|TM8IwmZ>j z)e-{u<%&A?C8VOD{NCiuu*al#)<%VN5gzo+t~fjt<1Q8TbZKz~m&r_v(eow#j1BTK zpz5LuQe4l~%gfa`sjL}=IA1uTa0TUvcoK%D?U(?!pHLulzs3c7p4J}rt|Y;Li3S9e zCdl?f4g0d8suu0B7;)`<@QQ9V9C)VeHwE96GB6LPr>9Rh8$4^n(pOKxgjq_dW!eor z!D~n$u(ro>79H```-|j;O$6VNus75Lj>|LOX~&4xA@MOFN)Fwkz&)Mt-}Rh1U9!He zwuXWShks#n{0wZ%-1O80VCVkURJ}s`?fGsAfM-PQ( z$ybtMkG-Kn3d`P!KRBbo;=w0`tH_pZU$-LrPiUX0;@*@s#JU5DPb|pO)1IaK6@M8* zVlWY=Lihq4JfE7aWBAdSl#(#h303p9_Pn8PDVD}N z)?^bQ=75vaB7IWX9KVML>92QO)!FwCO?nWBvBx`OaIdGRtL_NPTpt{tRS^$*RLm(-z*E5e&y+(FDL(D_$HufMSF&Fw#fn>C!1!q> zGN%{UbgoDJX95mi02o&!GxMxN{ArwGFqj%}!dJ7J^`^MI{9TnvRbQ=7mRjokfO?Xb z#H1(1mlq}0*=ily%xCyJPxzdVbyq)}o%&7a=B&sG(i}r(aZjQ$n+4CfECB{mjr-Ky z_I0{?iVqBBFj69iSp*nTSPqTjFG+}(C4kcV9YGec`*y8*&ho+Ld+dI!L?R&|k)DTbejv{bQR5L9SC(K6PeD4_%T5E<_sE%eMr z5_n4cxXB1RLc%(o?s6z$*(`I{BXC zd$)Y>@2vH(5@32XFzwUn0_8&j5~>m}{}%aPZ&@=CB1qf0h&B?Zp*btAtbD$hF~pXB zRQBa(2|65Oqsch1?hh4jTcxCPFJ7vYv93qv+kLb{NWa01dxXo%671vDG7+GvE%9+^ zlJC%l)g?fSmm2cxfpIToy2Yr_=ZF7PCmS!6@L}iW_wt`ne~@<-yP401RO|TWH*(#H zmJh*I1BmY8n9O4Pz(kHY$ezN?d4=hY@Sk#3-K$&_kz4^Cmq~E`jR3=?6Hfk%*(I&; zH=sBU?a#~G+b~x2f^JhaI||yhN5I%GO1YEl5R&=U8PQ)mQX`wFwdBlq#hQA1^Glsuhn!wn|%pjHA?v$ zRy63f^NF_n3l!BWU|R{K%HDcMU(8G3rp6V1FWUoZB`e%|y%3KSB~wUgeSZ{8Lz6)4 zFTt?5p0se9qZ6RrFOdwg1^Ydyi_YcfPe;)h!8`skBHluer?%_i3NHG&>Ps=D`gqcR zb_}G6Ab6V{2g^%(BHEN}e;Z(CnzzMZB9XMiE6@2Hs^VqsoKj2B7ffYYh3w@On<4Cs}k)b`{gsP_h6#&$<4wvh~V}+f+H*mQA(S-%3JMSl~(% zZ8_Zqt+sCO?rj|(ViaL_5g}T}zzofnxD)|_MGl5&;Ty^Kt6=b*6v)_jBu`&}L=GO$ z7@fuh(i9@Lz20C$>^#DSP4n;^WL0oT*fhP;4sio! zrf?f|k*Jnd3^wZ{f#F!0%Y2KT5V|&S*_}?pA}b<;ZRm;$)%5EIau#txtg5{~s0;}F zBI;3CDO#mgTK&I;!PgKa9;3@n_4DNeqbXyP_JGY+J-!e&SK z!i)29D)eFt87+s+%_}1}1x=#txx6Wujvt)}wqF^huH=U2kfrbNc||FPe*g=%D(SJt zE)MjOvwc7S431YP1B_=QCsari6ByCo@ED@CrGW0*87lXzmfrd}S)7D^aX~JcrCTdK z=~VC<2Jyp@+iVONxMvYc2~k8cq|$-kGymd7)WRzzM5PY2zPZ^ndwV^*SX$`8&QZ1Y zNO+N~*G4DqI&riHdNfE~O$Q^Q%0ynEbSg+?viSuF7EG+-Lth^RS$Z@ZQ`?Wyl@z@$C-^`IHo8WoN zo(`OPdDJaSbEf3!`vBm)-f1pY!_8*fVRG;H>#4vvd2!yJ|Cskp&rg7U`6ztna7i)7 zjHyQ!srDK~_k&*R4*z_6))y%1=Tx&urT$z0{>{PD z+kw$Hkv7M}YKvOCt|T`bg*RAtgV_43uKKxcYd~n`_U6<8xIEeZJAkb0tiHL}+)q8N zLErT}t=?aM4Un6U797Vz$8S+H>|i|4J>PhKYi+LAzcaP?W^cIIgm)6+`|B{WNA+I_ z)xdsfjt5omuCprYZ%=q8d%8}6Suhgpq{_IuRj=0{sE+28i-Ir=&ka7$YbZ1h9Dsw4T#r3V`*O#tj zvZOpgOk>>l^?b7X$B1+vxp}{uBpGp7ZdX^}vd@Lh!yHJx~ghekwIZns&h*44i5M8#de5s0SumuXN zKEcgsc_Q$8JgFzaycPU0=M%y!kyLq%^77^Dr;2I3*sK$i(}B8-h98&&ir`i}EW}+F zfS1>^m!u#TrjkLv3gf!>#&JCIECIas#u87Took_xs4>$fDv@5t?+5XS4`J zMoQ6A^{qA(e-EEmD85NC3#A=Oa&ZPyIehUV3w*|Dk0v+84m;KVSB-YwgRPa$HS~It z8mBrh1Xb*}Qe4Z3p>{!R4my~D>J+@-)sq6P>b>JaV47xF`S%_PuutMi@?w9w+Ub&t zXr4gCuGDgp&tFqDrlJA$YQcSadip;fud8RTImojgig4%u?x(Y;ITy3tqMvm))JDAV z9I36Pj~6O0t#~y)J$*bI_i_(|`{*`re4W~Zl>gU8OshF7t)=_2QVCoEz$JEjip}e> zG3-*ZDo$bY*jo>dtJKBg;V905<2bRxfwMchHSuLUpIt!jUErl|R6?a??59Sr;(+ID zPsHDl^I&B1MT0TmttyI`nd@91;kfRlT=3*_8&S`ZXZ_mPS)k!X+#m))C6-M=RN4IZU4<`#qEZXbX)CGjd5$4 zC2)_{dR~JRKZsNdr19o z_(~7N&kQ6m0Hz>T5eHSqMq2oKE8u=fvn#2u@nG5&-E#{P{agb1(=DKCs$9|~{yvGT zfTR17q<=tj^yiLP+TIQxNeA=c1!xP$dv{n}sU^Cl0d=)_;-Al8ax@82#_<&nU#05! zm+eljj!j6AV~~7NN47rD%LW|- zXLNVY>1%=8tHb?V;38LBoD#K!Kv;l!KS_)XHS%ZQsooXs?biy;*C?;@*l!`ZOzJz% zaRgsqU$5=##0pv(on(~Qj4DlKfs zvu5tRZNXg4%1$icN0Zm?OOLU7dv4O9Nb7(f<6wO0k75*ShxNzb>d)uD2Smm9>q!^r zUFB9L^z0>_+ZWVk`wW`!$BoBT8ibrHrUwa)wcYrpgET3-NGSQkh2uQ<1O zFgeij)OzoAUDYu^$>Ivd)7DkddR#RRp&faup2Ci-wvpC9Z1S;k!+*j<9`sS4c}G6j zqNHkAr%KtQDiRMj!+(Lpd&nv9T&)x`v4;?k?kKoq>v2wEA*0=*Y3 z117zx{tiuUzby?(T~r>AR~ogiu8_CFoaUHLa?dHZ0MU$p_xt3V5iuO%uCA_ok>T!W zD5!9|9j@rHAEMKYS~Iz#w|9`3y;|YV-gsf_aW7WX_!PCubo89z_1&h{9 zi7P&1xpsVizYDc>5uH2F^4cXB`1uYjPiP=DDV%(=bV?nY_r;gbWNtC7h9)=d*z(th zYn+bR844Vw3D6!^^Qt+=*au$ZGcd8W-3Aro-mV&=mn=I> zqk7C1GUQ&ryT0vEQ2F2V%>nR->8REfYmJhMDIs5oBUvt3~OD(h&cF8Ct zPxoX7;|t&X%Knjv&iTGpQK!b4uCBy@nahzH`;}#1CW;;-{rP)b-&`L8;O?G zxS2DSDeFse1@b0^J~S73$@j{STmKcgBoTMkI+9gQNl8&J1)f}QL*Tx_QH*l2lsP!cJh4@zGaG4wu1O8DR#D?Zpn`j!M$psAvS7+T7aqy!|dAbLQ2AB**1cC#Hx99ch)bj+@i_kJCGkfyiB=F z${T8bPzsRqtd+1z; zRndKc^1Hds2`qH72+L+3fqUa_AYA}V%?2_P(^O(3?7cK|HLJoXqI3p1=gMxtpH!a+ zyxFAzV?02M$}!6U(~8TM0praVJu{;9i?$n6@0}lDhw*CJ_X%bai~0|)ly)~~k~ruM z|8jJXb9#Zq`1v}W_sut{Yrp$i!l$0VYnfoko`Y8+UzWN;69^;A^C(%c!rmt0W%8>> zjkFl0QeSKz$PXNhM`ykGcjb2uL>5nQza5-v|L?TYfeh#iD`hbLRAV1M_X{X70Wl*j znkc7Bb;FD_3`e2yW*}1~P@iSYO+VLFfYXDXq}gR#IMa{S31(2bb&eM@sFb>V;*ZHw z?WSs~JYy%jM7#Vxp0Q}4^~yzE#O+~S360Zp0a-2d!a3rli=ohwaK#jeiKn)DrnYD`@C3Pt#5lU7wW!_%y51e*c=f zKw>r&GGxbIUAaV-;~y&c<@w`(WS0iSH$AVXjDg1A)c;xYHtP_td&ABFXp7GeQB2^o zYMP1zhl@2m;}a*Y1xB&v5G0QbBtjO<#exo+Y8IklotUtZpOhB|lRyU7_y?tuwJ^Em zF5EQA=8@<2HXlbRdroQP3yGfatP!X>_3JWj{qjF7GTNo(!`U(V40d3Y&q!z|1S67B z2;0Ea0(QDh_GvaW-4*x-UhcS$?sy^Z^|)t z?1v_$7?I?!yNO5x;s`Z7W*t22T>SZ0gB4JR{-I+Z`EHLjQ`KdNX^iGIOrE0fV@OB+a(fC*oX#lnO~QzU(a=!p7fjy&G$n?)xbr-v(D= zD@n2sLLcKKh&uIHOreGW`SeYG82UarvRJFGK7VYBRze|=I|NG~>@6_f)QOTQ0>9n} zIHP0>fKnE=bg4K>Id*-N^wGzdGCoqu1`e~{fu9^Uhzd(NiBXEPD2k^D-pfXKfIEMCLk)(`Z0Gr>F+ofv z*bGcJ@Lqv;B0I<;K(1@fOi;yM44P<$v@g%vmLq5x9#8T+IHV^&+8ns7Wj0qM_Dw zKKX6RHi#F^WMWC(M9hMW!f8z6 z2;M+HNN++tNNppW2zbOBFePK_YyL>;O`+L`jTl!=>WBu@O3R=Ah*@W3gGW8cMS+i6saXN(8dHw_5NITpZcycfPxTG@wh@JEgVBby znwV{LQzscMnKaD;&`)++E=1gHM|>*rVGjul0Kp>GAc4d4kC9k760w|ed|86MrA%*9 z%iJFn%+_Hy85qczlShw}abW8_&7FAsTBa-AFZFUX@$p1mN z3|OVmOvA7W@fJG4)!z>#Gd2HFfyWnZWF^j2^FY^0Z1j`ij3B31wk4d)Ns1N8hI#|n z7+u2QdjeN_s#(ld9-n1X$va929Q}u&FQ3p-{DZ>wtQ^bOKR+QQhDow;>6bDrr%_+! zY?fQ|KR`>}SC-EU*juKdQ(T}J;P4@`ZK6SBtj4L`L(don;>>)P+xG@t_X^!qN&R9e zOc9xGKPWC%LneI@-2cP@I<{#GmXD0;qa0;!Y-5CSW|Mx7zI(I&PQ-YEyScwO_t$Zh zRIoFtp}>jbJ|ibFv#>4x?P=eV2_ecr$C~D>2;OJ|uagc+iReyXt`5v?wYA-1P`%O* zjnLDT6AW<0xoGv)0+Y2C zuc}XcCbA|%?|QeJk0%|?$ybY6Q&-BTCTCDCIK6iTd88;pAzhgcdU096c z4@S67(=Tw0T&0^Se%A++^pb(#KkpT>ER5xKorH007-1iw*;5VGG^~@8{qKHwVF-vj zlcQDz?rq8XenIIUkNtM$AN-nye^#kl5lD}?2k>@J1wS7`8(*d+rfF5hq$8$7(j%42z7hy?Q!_%Ildk(cg4*OCQ*xjz13}m+oJc)^Hc=v)1)^b zHGQ{z1nq4puCxHnI8{m?v|L7|W+f}$9ZLvdn5_h+wA$HhqhCP=kY&zzq~n>U zOXF0q2f7&Z3~5nVjs2zwU!BIQq!pc?hA|c8mYxOc89#yS6$-WPC8QoJ}d7824+P6;PyUk@al#s95Srv)~gy zq^-Yc5e4BmYeLQ=3}RB_PydImw~CAMd!xPy8KhODq`SMjB&54RascTDiJL}g=>};< zx`xi7TP24W8bMMT;T`q&f8Nh?@SMTvzW3~XUF%xwyP5Pa_5IM%9S0JTfApuK+GB=a zzW}vxnsq#TZQOCcv)kSkx z98u?S#MM&QZ{tCU^H1t zIAtlhV70aY665%f@J!Ti!Fa=7OR{8$Dpy%Hve%@@2WfEpFeOZkj<$LHO-uY)YOhL$ z#gZLC7ulEf+Ip5&`=rW`#A_{l(%fIE6c?#3b<4i=rq4NrU{WFXn)~5Wk)n{JX17#G zyGHaWr*T3RTHveVV%YLM$l;%GCcL5Yfev|&kh!_~@ zpKw^M_fMnAz}4H8s1}c%byUhLr2E~3`^UiVIUvr$S&snL;=#B*o{dgGaRfZvx}A*+ zZXmv5iA* ztZN98iJN&D>SI@cv|#w97bZDMcWy_Zkk^W%4}S*tkl8#zsW5oT6o(hTTNF<>AYhKz zthOKms_^!?@<~A63~@n4fa=F8Mbt;k-J@zo@AoO@-!HZK?~z&*f$X}kCff)LYeYG) z-#h|0=^X#CO5a#CZF4gQB*o;(9IJ$gosJsB4{^~Ey8#K9+%pPpiv*pFikrwj_BbQv z`{c?)tIgDim?Lrz(17i3Cs4=@nxCFch;$tH{ii|_Pa?g3F%T9a_6@uL265d?4Rs?V zUAOH_Tamk61<4nu%W$rK)x1NyF9x-t6#q{hx7MMm1psjZ*Q3j3i0~gFr&+AAa|<*O zN8Nw%Yw^^=!h3#)S#yLceCRM=V}W|VseWIqrn43s7so7ShQ0W?m(*!)95isaDEf}y ziF{2$aFl9@W6)f~XIe^MsbFW6(RDIUT&Qtj84n5JE;Rp2)y;1%FPmG}E3i7rcW=>60QL#Q^8O| z!l8p(g$v8Au}r2H+VjcA#6vSUpeDzm=K_c1y;_8(6l1eqTe4~DODX2TBUi_1Rm&%tMaM6YfO4!b0-5@6Xx_+N4+Exs{YZ4+oxL zL7!Vaan!=4TT(%CIvQrLr5)jpNW#wx2XBaVZUi%!ohe7JLTv~d%J zEhqbZ)hFM5$lM#%G4bQ#5+|8b9{AOM3iSza?`)oKZc#=7@E*Z2Mhh;qQWX9?ZEnxEY>2i_b#hGS}+q%)Un1I79ghb&|r? z;X{nm5GR2vgyf1N2BX7vL;c~G`pKW^Lk8kU9A4&$kdQYJfwt#2H#cHsU0syR%gfHJ z7q0z}a}@px?^>f$v^Nq?{Uw9D2zQBdF#QC%ElU0lzhTk%%1Tt){yjsJ ztVHp1U9REELLXn^n589RbBhmB&8f1qpHLW+7AEtId;ImA);lV|Yk`B~{S`!wYwd=S zUB-C?x`q_C#m=v&SKp27fQTJ=q_fFqY(0VTo(eS)LWD+j0zJ<@$z@-1UG1hAm`{Dl zZPw&Ij;*&CE-L@K)?g$M=p$W03am?Ap)C}p{F5Htr>NJOkY$haKdGdp6>2({ zIuwbO?EA@PnReRzvr$n*$?pp^%RuE|$1hlP5EIRhb|OzqFn}s5G$~h~{_s19p3aRe z^V*I_sAhEiDX(%gsR>H|mUZ;}0@n7rkD9@I?d^#H(~jR)yMd%9_$vgQ3*7x}Y_Z02 zEugF^bNOsihtY_8!?W$Rh|#n)vK7;XZc+Kyi%sOKM+AzgFAAyg3!^7|(crR0Fc(YjA0w9~a3W_-WN$t^II z(BO?`H0f*G&p%f_CkEuACzx`m{fNP-(j2DWB0bB-co#!7*PxA?{<#KO?CGCOk)%k8 zC~-$e2O?q`w3dEZgDe8@h{RsASE75yo<7T(mlTN|-p@o+%V^duGnuDm%x^cVcX;)x}!Qi^}yVO+oGaP{B1$I?ST6CzuN~&Rx zsJ!iIJPdI^Kx0}7;TUXcpz9yklK!nHXCH%L_m@Zg{0Y8nLBEP)j=Ke`WXxRca%DUf z!lCj(Uw~p(t{_#?m?Wi$9jRBs134zAcQExAW2qVRtGmW%uH2T-24l?)k(ef_e(-X? z!TjugKeus&| za1u=1^1OSV_|kVfK|O?YWidhrs~&8l0gwzG+-nlz-Qm1V<5sh=$KVvD_fNn~Oe5Up z6AO}inOm;oowe{%U*a2_MaEOukZzn*aP~;C(Z2G1$gQOvaaoUiP2A4g?K|PCpH}Jc zJ!L}6iCDe6);1!_7J#;Dr3uyN9It?hrVgh`Gc3syjn}|6m#YGGhjX_VQOow=1KX2* zIhmCZTe~N(S6WbCFEru{)=(LahSDulf0FWG-86~_iB6R7aNSnf<*r=K?0S6GGP`qm zFhJf;s|C-+9ryTHIam`-Q)p0)k}x{w*OVA#vZ?PI0DY$mbBX<0&7`oH__`vq=kyL! zku|XBi8d~Bh@!CbGfNoumJs$QO@MWCy#Oh)T&R>IyH`yzE>DT`pURoc-A$>T96|fn zde$vF8GHynSa&I1MeqaG5Q*5vKhqu5K(ZrQ;FqjtIEMH7jqe;9JNr1E*4W3Myd=yp z=kdcGmt$Lda+!nJS|a%{)n-_S0aZ=9k7fYQ;tFHNQ4L<+Rs^5`CzK~#;!G7NOZ%zj z5jU1DP;Mv#*|&)j7+B;|_Gz5#H$2-}pCO1j8QIWZ?-$NR$QzIKoe{Ub<3e=4*QNQ{ zlo=DyuEWzF8sWry@=n;}_*Vqh@r;e~NyGJ7ZSZ^~yaQ6_FWA}cfbLAZ+jsMUy8Jj% z$4DrDMkRld8^Ges2C(H@rn}q=(3b_$#(9|}Ih7jJT6ryF8Bc`f&WU%3pwW(;JiaE) znVjQ={l&abIc>UX*tb}57oO##wmg@mC@M00Hkw@i!3Z}bl1`g>=!1l4+^%*;h)|=s zxe~WVrj{)}BR-;O{hEaQn;kDO`uoz#g+RbnALT%*K47*-8RbuxSX=$ucXFO7-rk;_ zgPs$FX--3HJWmj1p_bDVXRXATh#gO#EgYec-SdS}C!b5Vvdu}FGa^GFEEnW&@y#(R zL;a<);?L?Udxt2aBr;ywA>23KkXhDbfiZemY`lmUtKfQt?PRYu5oh-q;%Ez%JDZ+e z41In63xLb+3;g|gXRk;ckdZ_RY%Mw}C*W7r7X*UTvilkdCkA8EIRNgo75&d%aRb)sRf9`^WSWx1}0NL$2M&i0dB>SHJ2dt|A!=d(pU2 zK>gvF*^p4dyYRnCwNz$^(t_}hpO9|ErSvz4(8-)1(9>DVJ=Py|U%s4herIQx$4W^? zE}3H0ppYKWge(R~losJ69Aw4Va*BegMNbSCJ?^I2mIBkX_a>u?k$W zAO!?L=W3MDSe|U3Iu8xADSAe2ejiP@7(Y-u*q%Gq7Hz&>#aNIK=oOpL+Q)2Sc~nMRS*grIArO?T@_q;BrFNJ4e8aapE%e~5pNP;adZ>Lz0q z|8`0ULK>H8`qV9^2;@5Z_@<&!arjHftyL-`*t_%xIKd6o3?4sYC6Ur=)78V#=H(-) z6p{pB{8ZL#Xkb6rM1{tpZj`=Ews0L9X%Ys56F;gp3ycluv-4Vn;^=YH!C(TsUvj>O z400SGt^mRfG}bh88wGR$?4M8~%K7MO=jHg1^pVrU_2X1eV8<*Q^()O=ub=d%p=r(dTnTA7eh!PY7zYkJIKT=nTVn4eGAw`BzeF=V7(k^#%8#M_v<+cK9a>VL@opm^5I%1 z0C1(4qidCBOBC}**EYzeGEY0} zxh-U7aM2E#a*A$-f<&D_c0z$Ohwf|OB_8DE-iaDm`eDX&wD$IR?^i<3Ueg%!DRb)O|2c*e%D7omO!6nz@-cUhR`wvB~KCI);>b*nUjnv%1}Is5)gT z$gnx%F?F>9RT>|mo;sW%UGfvpAxoik&od*vk!a_?Ip)JX7`|u#{<)`!2ZPNL211bk zR@DeA;0w@alhVF{hjM}m4Ozx45w{m)+SP>-q$(YF;cX9(_~W;JVOX-mxPJsv`OTMI zCDMM&JQ_i_{82~WkgP}Gm9Nw!IC&(QzV+8t0roIs*D-dsIn#RWaFP36e~(qu!Z zrjfi$fnmU_9ZQ^`cx}qB3y~fMQesxaH0|bF&)D9$^trsfJvoWXb|a7Z;3XSYZfCXH z%gggr>42 zz6^=;k&Sg=R@f(*OQOpktk4iDOQMuKQ*F((3*rTGh+_jZv!@HH&M-nCnVKZ{$S)4$ zk_uwq2fK_}PjcxyL@6bBTfa+OkRCeByq5M47aHt>CY zI$2nRj$1Eh6ZqY+M(%3*5La=4TBO zvmnS7Oeo8EExP~?>cyF1x&<@cIvWopTjB_8;@jFjLwW&bK zwf`!FTd0&xR~-#Av5+Fj@+}t^J28_>e?1nVPKdW{9goK69)LhcG1-zI92Z)p zTl9>PT;0b5rV#ffTo~_A8%<8px-446_RvM)$M3GaIcj1qdzP^$^AGibZA2V?)P*^) zpgRO8+5ONlz+%w*&)m`IY0^YrAOVGm!XTGDM#Azpy)V+wi1v(fWtE#UKTvsZ3D%yO zaIwFaw&z0PD=r8@e7St@QaibSprZ%k@`Klak@bJJ8U&$7H`Z;&nzX@^_BC-%;yFs; z^g!IF!(iWc5~oVVAc!tH)+d=FWm3U}BHdg~fu*?3=CRz)h;6oyIr)l)w%)}7|hT@ zcD5z_*adFc+Z}rRSU4s!B#AiJOg{{==S1Q7U*6CfN$&4K^L{Wrzmy4wM$LM3HHHqd zWkg{SarQSZFGFgp@uK%Wux_=ETUG5IbdRQS_AP#tzAG<_5{~q|!;BsD&h{H-NLxzH zGBv?J!&<`T&*tOacF?h#gT?|#ZR@>TTG_)?YU66CRMS*SIKc%==0(ziBxKT*_EHUh zuX4l`@ZN4QzhUS9M4*Ksf$;q`-oP^I{$Eh(;>5;TcW@NLCSBNdJ$LnjGXVD+vxNJ&4%cb&wAwY zC)Z;!OEYtgiYJCsE0H_Z2BEWQgaP*ZdY-pdCSqoNZh4({)M;J~@cN}Di@Ev7(NUo>uirq`=SE^)uTmb( z@x`?lDfAC7&~6|&=zy;e^-oWZ_*du=ww-@fR~KA)*o~I-#c%A1rhBgy*euB|1vz_- z8&qn;=-QuOh_E|FpV$0#qnMt~LK})8+lNtRK zs42EZJy<*w#CyiKs~g=UFb)Qd1}3Wx^D%ZeOnbw1=3>*mI_-T-UtK%%CiqCIWCvcS zUgEeVO&Eo)OmGFI#hr#CXw#tu>2g?F*=PbG1agTDu!hncTeo>zd z{f>@2+XeFE_HH4s2}hHrP2#)qHuPrfU($mo8TlT2cb*b9V@?!hn#R2vYr$t)QK%Tn zi10$RHkIJlm(=+EQeou5WZeX+-rc#5DoFpFYBii7mRlvE=O+gLK;=cbApw#rzPXjK zmTS^3QdFEyB8)g7CgrY$jiOb-KrCg)4;H0^Ue3idI4bZJ>>5_t9DH>vwL8}<_V!O6 zG@9(@AR;^VOIpPDE5y4}X_HIjFP8n^fvhSrp8* zh&F-KezF*G&5+MM$42b_MTU)&Moiy>$;_Oox-pb*@E919J9C9H4_-6A4t(<)3~RH+ zi*+NQsmiQwyc^#c*4vEj-P`@a_U?>4Q=SqWJ&UIt0y?ihs4cJfQZK8}1$ zIx1ZvgFVHB41a9rjx_ruHckbL%~}T_0@DrT>A4s@rfaYRQsI;%(mSz<^=>yPGewaA zJc2l!2&xz<={AgVcX6WZCW)0;(c~zL*CjA=(ozz-$sN<`+Ov)Zao@*<%~Xq$6TF^0 ztFziG3Yp9mB%)k_kYq(u^VJ9Lo zlQ{0lr4j8g~%j zL)z!mg3;%n4fY`a}3&IYa^LHM!>?I_1-@}%KGT?`NHSwzc_&-9w& znKbD)Hm$B#Ho<`SY6DAJxH->SZ7+X@Cd6KVcYx{bR$+!Adm6NnTn{mm z-eWR_lJ^1=+`+}41izcZRKj}CUyw{ZCPuESZBZlnFK31ix}yDz@j~Ojx*EZ#56f=4 zQK-47b*mPAla~Fdg}rjVbe;MvM&~k6QA2iGv&vw5+)i#Xv8l`NXOC79-*=)!&W{^F zw5(AQsMeh`u~&m{DFDo(polh;r;8ko^f{dS%>dF9Jybe>$3C^Q@xt z^4+4JjkLZ*u~^o@@U}tIo`C0}S%l&%Yi;YBm9$8{8Kk*7EaU>RP9=gTIJ{vl<;tWE z8PeI#uT0q{?Z3e`%i_8|7Se(y z=l}c>xo#wCPm$p8C1czY*y<;MxJ*)*v{|K7)+gm!%@E|&n^yr}juZr)2GZcvlP4Y{ zr(dSTc6tS#LrD5#GWk@u3z8hdPPNGFN-dIl8LGB0ulV z_>LiK^BO9@;L<=)c4ehorTxJo6;nq@g$)$=S=Ue}g$b~*73Fx{fl|pPAmQ`CaPWeJ zqY~=ZuM4P{G+1)$O}rUo%&5C8KJ9v{1Y8@fA)gf z`i=WBeLEVpb^$vcRVyCo9s8(EDzRVcS`<$$m#MLU7`QbWTEB$p^_@UJ|fkwK;%EK}QGKmLX>KD+1 zO#FI0iL07BDnhRF6J;5x2XB{NB5~HzCynXcI1?Q)-={Mp!tJ!D871wc?yzSj^)~21 zfT53I_|6c`%l*7XesoR|3*mboAHksS%UF_JTZanwTQLQA`vRIXE{U#Lvt8!`?;=2i_t7&d6dS z{Nuj+bGbCuO~ z7SuV}J-$3Y>RImi4XH1qY`*-p9?}s;%)rf}*q&(qw6KkuQ^bb;Gr?NSz5uI5FtjMX zWL?&1M!23}(y$S`2ozv-ruY0zSIB1WY+lY(C=gNbzuf@;icRktLRO*YYMTiqFQQ%G z2%=1{qx8R}XQOI5ApiWj+|6v;mSrm~2hGIFHl1r2Sq2z9qzC{u^aAb=&wYQ{@I}DaYgK^kidLNPxs5c$-4jw@$^E>=etCkzcNkMg8c)c_`Zli?j_N+u3z^v22 zc$-&Q5efk_fuwUCWwWmYMWda>{eGU;JRgLJAh&HjXoY}GuneD5#G9nE!wLP)CEg*Pcs|P!+Z_~EBY0ZLJxYGoaAk`*H2*6hXO>a z-*~$7vS<7ZvaN_vz@YjhS8bjcAD^cuhkJAv&udnI`(UJjU%)TcigYbp2FWvQOM)9^996~|NX1+Hp?eLuBV`HFw zqt;ptJ!t%zvek<{=&l?00G^uwtzSAB`I>;Z5}7(XgRp$5r^ughzVyTuyHJ{FTW{EK zv-06|hAqc=cBU3*@_NW)nT@s4BmA@dldb-kCVs8n_PnN|>9(DeMOrTYdG6Rqhz3IO zS}H7;JM7-Apwjt8lF(y1IkM@{5CF0L=K;`_mHk69?H`xfMS93k_96Dwy%?>9S_xVQ zEEs$kuC(O$oqpq)7*zu%r&MI5Qbee0^v;zO&yYb9u}~QEy3IC3J~+*J9m0r`B46@Qfq; z)Wpc}i=x4p4pS%Sw;?&ND}x88s26?E59v=J^D-m2X_F<0v z65e@_Y{x$Sy+zk^g6(A<(Dvq2*Zbcis>UB`?p}CRMV4`zhF_!+nlw6zdRBr#6~Q!4 zRK*zb*^(eQ8f(>cLtP0utp^Fe*3$ z>LPeb_ymQEx9lFLq^Pv0LIq1Dq;BU;!jIj}9`o5%4WUdJNpXKQARoEyfR@T zTaq*}i1n1>=)<5Ve0p$f5dFvyy<_JkWNSz5_Yj(g+iZKw)n?>)dmj%bR58t=nN_ig zBnMqNC=d1KPs~}A2~1{Z9gUBGg5h+h;%VSx10hU;1EbFW9zWo-2$sytDnS09+VBk2 zAgPaBw?aubzs8~r^$DylOn`CG`O2~417B1AMYj)lv~R41He%f_L_ z)`r@@6$It0g(Hc^-KfO|k};U09hp1M_zP{uD$@XpvAOb}DlC~o%)$>y zep%8?o^qj=FvP}VGrxCqUNm)MqFPjKb5RSF>a_4uCpATOr$ZVWi%9b!)>t9l$=(Ym z9b;NFP*!Ong9$J-vpq3WM5Ar*rgWK)e7N~8ZkN9hsxSG2PHgXrK4VV!>&|D_#PV{* zUVg*w$6rn3qoYwx|5Sk3y1dvH*m=rd2yH`p#RwRpw>&6oAy_V(+_wq}Cnf%ZmQa|Q zNzf^#NlOrx^Y|)42;JiLB4;<*xMutkd|JIQ(nfEH&889SJs7LkZugz%uCR@$`SMaW zU3Lmt4o$xVtqnIlZVDNJI83jfLVgJ#ZZXQc@5{T64p2(5Lme^j7PrPz_`Yl3>*si| zU!r*yz5WXFZu=L`cWd{RS9g_{8yjrq_djozPCE0KLpWh|xRf_r%UAhJa~ox(%@((7 zW_Ixu!>8+E`;rOxoKW5UrnM?W-0$w!Ms45`S7*J2!?G~*sxPOwx=GWM z!O6ov5vW*h)bP|TVOBy}p!_t_beYMQE6m;8aIL?t^M9>yddW00;>2rShJNB7b&4dw zw|;IDOoTk>)nHYhem#w>2N)X&wI31r6gtUct^B(Bdc2z&BUFt76-z*qk@I<8?tuti zk&*S{AntbUF2hlpjUdM#OJQjBi^rSal}}C;@?$06j?f;bVNG;bQ26thc^|$J^Zw4g zYnLB#RJk0QaDPK_XE};1wKMbCO1Ge}xX{YFuArWr)4v~sm?7lB1Gtn2!fuAoY&W!h zeth_%c_nP$dHP8`PZFJovW=Ls#TK=x?lJpBK6jBxjW06zgGBwfO{B#i~=Yx*gUWWX}T5Dm6o+$&6lxwqO88517{x{6yun$)Q)7mQ&><;=J@N( zmqUmIUotzhx$9r zx6ev#7!xnd<)B`*!)4u=MKR06ezmTWG{3{1y{Z%N!P1d330TBzzdtEk&vb}~7U{9~ zViIET+BQj{$pxibso9dozvd&_q439!NlrdqvL(k8&pS6;p}vOSR1#OkpAZvlUQ6ij zNC_u+OxT{BPA?tG-j3Q#{3rMjvMLxTst!>+Cr!8K><w-@LR4jQ!3a)WR<1z{v#az5aX3SQIGd7h3%s1Z{!q3ZsicZ9f z+P1{gVDFtz>UbIV5mqX|%cMZ+u)&&zQ51Vj(-}C)aOe0H*W~S@l8NUj=B|sK?}wgh zxtW|%oDK@N&#n_lT@rK4%>)lYzn$i1y3mR8>QK7++Fq!OxnZOM?y~uq=wXNEItImd zW^ZNRq7iiU^$>g2v1UkCkS9o5V63>`lVtRXs^zy_2i-ZI;qJ~G$u7>7>%7yg@pNXa z656qbL7W7g7rw`&=ev;!)G2O|R%bsHdUo>u zJR2D`9Kk?L8Y(LS@``)Ol8JxQ@g;_18uGq*RRzi0nc{p)$a(h%CBFtYUwbDK8MH~J z$w;ST1d3Q2*zK>Moz`&Fw&q#Q9$%n?sSR=F^ z-`NP}v=&y8#oAhU+%9tpy=JXwN-D$DGuV=-z_rF=1n?#~i$43iYyDVSp%YiRY!eoh zu?*3obwd3$3j-|Hqvbj+kXP`S^6J`D$ZuLq>|t!9*3MhBK!!G^EUuk;5Az~6_E>EY z9PmT`($Z`P`wo8X;Cf;|Xlba=sP$3fRf~z03H+lBo&Sbk1T?C8&kxjbEj9`89XYq( z)RsxT1}gD>pHjf~eFSD&Mdamn2K=(ByC@6WE9RV_h=VZXJ{Yclq)lz10XH8><$7qh z!Q%Gc#x`m6BPA0IYdHNAD~yRZjmE29dQ70tB?VarBN%m2GGk+=#A_%5i{WqyC+qRp zc)BwzIY`Yv%Pr!a4Ho=0WOP&o22?j-7J;njk?Lf15u2sE3QZ%7^{0Ky++|%CYG)#J zwx5KwjJ8nTMup>>hQmp?y9qbhLF+%A5O7>~na}LC;u$&g=6+&6d4|tMRYDXLnq<5Z zjNn=wTXwN<`S2_)V>mix^gQy8t#5oP7!=nr1khHS56_{OWJzf;LW7N zv||IYcp~D=pqU@^z6(Wa2wm>>c)8IS!ZDf4O+LvomhLK!X!J)4Tdu}(_fOtgwYuJq zSRIEL&)(d6tIT~7o=K@Uv;%S_fcP%qWvc;x`q;)vyB-I1F~ZmW=A_>7*fH|m!6q4? ziYayrF008$AjNmo_`DXxa}2?QTWEj#T_oV((f^(mM3|1SSlUs0R~wG@g|2fW!P!Ci z#*P;iLQR!8H+)}Sm^~strLLBNy$YiY`!u?=7$}=Pz}95N9YoJ`Rj@t zM7PXzo3gf1*@f*3pz|ghn-7dPAoaRtcV@a{udyz03Lf~kq|Qb#7~Lzq|V&Mo14DS{mv zR|+9vRz6MA9d%odU%u}_+wxnh&Da!E&Ss_zMh3i4o^zbe(lO#i{0%#p^MF{A(f)ak z5Dri~V!Mrjs??duaSJE8!;1xnpz#s7$sA1skE@(N=`8Lcb>cbpWP8@LmEtFvJvc`P zvwDs*Rt95wS<#Q@$lhr0avhqMhU+S^AAZ099cq1N_6sE;_tsDr<}g-!zKDB|P1FTFIT_r**M&moPo+pvPr(tAh6@o+gT z;o-nJU_1SCy_CIe%}1vFn5(>d7?5+2u)Gdvzo=#0&^Pvh6B&EUWUSA$u;nbr&qMQf``GVJl#TBKi3?ChfHlZbajlV-!5F_t#@7jE?;HSt{`)$A%${%I;u z@u0}5k6T4}o(y~E*;;Q8rquMZ&JfV90bHm%&N^6vig`f=UTPE(CGf2k>!c@tHR3GZ zIF>Q5=20)5dAz5gHx7UcR~B4Oh-0H$Iqv88?R`IHi>x>LiOT85E4|N7|4zHYc`Y{y z&lErps=GiQ+jksPrUZD*Jnr`(2QYls73NXbfzJ^J_3p@eoIiUv)QqBICXFHlO|Kq{ zoi}XFLq+M2S`G>C0)7h=%apF~m$s1)JMZMi?c}+UUBt)1NdX_H&=UtE{5;njbhAiz@8NOZSat>l%fqtTTN?PXwG!_5U;jb(XKr7EfomfbZxqo ztdBRDRpsroQ1TwC=zh zhEkh9uk2Dwt3!W=4gD+A5b9WQ9x$q*_$+nZKJTM%Kg}ELvFl* z@^F@aCdJ#n;2^f2>SmjNMJ+C7)Tb~()EFb9+75f<-k+kk;jAjpj2C7jB_)AknAW=uVy&@t?^tpzZFA4VfqZ^&Q#vryq9ET5YA5h(vX;UtuT&Gx0i+||)>ot|-Neh&I( zqL+mCuE_V&RaOMv>qnraG^DSw+i#d_Fu3}THRt$1lT##m&ebrJtCR-1k(n!}q(rLS z^2)eLmR~x>I1b;v0d|OzHtg9~V}Q%W@O)!`XhLL5DTP%JDZ|*MX6UG1jfqLwQ7} zKvNkiTL>W{>g~n<3b-osfp4RGd;EURn!j{#k$Kg}m=|AthC6n% z0^Fw*^%l}`iv1P}IL}j^hgv!Y*^-+1Y`?#{`E6X2?BlF;(&JTsXZyt?&~#Q7CvDrm0y*wh)0TJ8i9mDFs6QA5&gsK+2}hy#KFOj!+1p z!QQJl!m3m@V{0yLjg3ce7ocKGFxAaNIauWtH@7gt2ll}9u}$JRNd)zLMFh%lEXyzA z*=2Fm%-4EZFJCLIgL!5Y*Lpmiv>NNj8&q7)(cc-qFb5Bp-S;fALwxip&CW8kxhkAM zZee=_V}jp3O-X-UeNzbXCfYup=(DjUPiV<)_lMVFp7EENRlUANk^qkTmTIDX#LO?^SBcUoz2T{b!qWd(fU zv^6C@c%5$hpkf(%@=4D;u`0|YeerE;Sa0Le^70^AUcD=n*YDbpac!hAdzx1)RIloG z{cEPFb<%$wI-sKm7bR`7Jj?5lLVJ#i@hIZ~wvlGR8k217fAg+~J0TM;j4^LWg5Wo01t?DS;y}L8Zv3ZtoFpz~32fxz7HN8xWx(S}3z-bv|95 zTR+ql(dNlkk~IPFtivQDp^i|xR&i+`6MaBM3zKc%E{fuMfmaMOfA)zw731ScDE|A@ zHp@f7g^)L2mF8nnJx-@haS;d#UiojzH>1r}vigH6Chl1jEhr72X2Bh4E{PBOs-njw ztFWk5ky~G}?JH5r}X@43eUNZD99Vnd9{wT6BL6w*BL)sA#^{+ zs}Hwcak^eRZ?>8oddx!5!AVC{@c@N({DF*;lm(&u z2VH@H{1I_xe;h(4DH@$DV$p_Se%fvcA)e^VWmojPe#`ZoRF)@5Twny$S=F;?`2L1{ zzu+>e{qTL6MaT-1niv5~YO9z|aP?|CZkI_HIj0|N7_#<_;5aT&8R`{rro;8^@U2db zmHCs^HXGEH%Z_ZHU?N8atc_KC5&L6~ih|1-1mUkdBdwz)AL zY6j7_-oG{i^;gI4$hpKjxAymmpXEtnC4JRr>sCexKleMOUh`iHLo)J}=|?{i=lKk< zz@V1)JLVU8Pqv<1I_zXs1DkIGwlBOk!yKM<-E9&~Dg3&qD+f-<@YNQH+sub$IAxq| zo}!>iVaF=x)&C+kY4aC+`-`FkJ4~8!BFDp?K zcJpQg4);_OET+%d=Ew%}(WSw~s6)h@up+SexJ;9U>bsVTo|I1^Zr;Hcgw8{f7Zv^| zi-S3_^d6$ru(5LHw_EGm3u9B`ao6a+L>A*S*S@C^NvU#J7Ob<8^x?9t3!WRr(Vj^9 zFcD93EE9IuvK=WwfRrQa@8KhP1cpU$J_G>lgkyXCr1^fhdBDnx9KYUYo}Nvpsk16Z zJnUU)jMZYG^cpI^YcyMP{|B>x&8TK8<;h^mieAfp%E9#;k=gbICtoPOS`Xgg0!qgq z)YH_=TBkrpQFs!bn|K6kBf0d!>)sd{e(4~7ltOSdhA<=ZsQAcKt+rx0oS%O|q6645 zHg@WL7X=!Kd@kMCd9U7<*1-S7g&dZ=r6@75ExB+x6yvI_PVMUZuGFhyuK&y4-&#va zW?f`H|3BSdXozFJS>7iU>-3<}oG?}Q(?ka-{h?jC$0J{xkAg+ja~^jXpD6k1t7(4F zX6i#{E(Bs@b*HO=!5SVuX4O*qR4h}kmSh6zt&UFzmH>-vuUtbH8am?JH@K{>ggG4f zBXwOuw5J7%bf3r}PIukWa^_~Ir8v$zFuU0>%~nc@DVK9i=B|-9$BpVkDx#!rG`XDQ z6h^oGVuIv!aOPXb>Y5+X)6^*)Z~`2`O%vjLfBmrW?E`oz-YZlD!?M|H{Dmts4bjOz+ME{Fx54{tA@;${`od)7Bf0q`8Iti-%_S;5%wVmfT? zJ+qW96kK_5A60X-*3^v2+~LUi9zV$O`kl+_0}|(I!G7Sjo3fj~59P0?qxR%hvClnz zKIC^?A_2)8B31J0liN8pZ9~GSkEEZC32S3N3$tTcO0#~I#BM0JHK)_!t=yFDz%R>go97hh;@?l`aH>-3^%u)g;ZBSTJM2R#6>{b8K0GPtpHX(9P~Cpf5dtdd#5%T2;; zb66qvwV;)lnaf^xRi4@D#%v)nKhvCgRUhx|(o|K#8?*on6_iKqb0z$#khT_Klut-% zR@lfmkk`mgh98t7cmg6i{w$^;wlAY4)l>WGzpEK+YtBYYT%s|@{4Nl$|Iik|@Q$`P z{K%pC!;Tpr6LV^QH6gK#_)AeyimVE8$@!!fT?! z#xn49FWBe;Yv}@BLOy;~G)iOz)CPUwaO0L05 zyYq$OCYk)aoq-yMdIHjJ_{+E`Pa5*DnwPi}*@9?uxdQmBzMlL|&7Qsd)EGaILVmJ` zuwJR;qRP%M_mqa*V$u#CLzM^DT7F=$aT03 zAy_Xl-D=-HdDtVr&3HCXG{LS*go*CPAxHZd^D@tj*-<^8# zHS5b@7+g8Xy9Jx1C`Izj0$=ny3@~zxuW$b5jKvx|Oh&Nl7mEvf+Au&aSC?!h_;B98 zLnwU?anGU1rQ90$h6$X2%P@WWMB%B(&J|^;a@a6T@ZyTFfecYih<}U)1V`=m{$enCjK>~OI7JucKNSqB{m4Xxj$^e1 zhpApj6jnC>^-`8X#9-r|c4D-@S=9<1+J8@S#2R}5oJQbSZ2Hu$X$;?j=u?X!b&h6J z#LIKDZpVw~jV_Zcb$Z0~B%84BqD+sWQ|#74H`;2zF4KI(3t2*l2HnV92ulfw5(+^C zk@|v-D8hidHI-|17abk6`rbJQnR`cB<$meeOKoS|Mu%N=lVSL8^{SVw>V}ziRn|Z$zkqA8W z(Ep`^Ga-W4G8RpPa)I&SImDf+Pf19oeI{e;Y=drXeRkjNhTfC?ZWbHADYIc}K39YS zKz{s#bv(zZV1u{ak)l8_hzDWBydOmde^R$6r_>R1pDl#B!w`|)i-%|vl4rF1;gqZ^ zCx*oP`KbQk!o!JGN#TPNqZDyT6Zh%-^HD9~pDFI3Se+WY!~r!3I1UnPyr62s#S!XF zxY&*mjRuaIBfMB89XI9*esk7+`BG^Z;8DzZn$=f_bK)BZCbw=K)&WyaIGp}k#0KLA zyp=&yOe-8=Mv(S%Mj`v@GXrYn(zvo;mm&{_;x*-N2-Qqgc_F5@Hb1(ASM2Rg2Ag~t zWB+w)Cc9BVh{vs|WSW{<1TLXV!1gD>cetgr7f&y!0Ej9?Cs8j?3)WvAvNx7qKyhz4 z3=-}6vID1kUVSu=Gz416>z6p8&}O<-k2gL(D3V)nbbo}!h`$^8--{1qfN+*uBz@yV zgb{cg#zL`AW7eTEQD#f2&etV;{B3(2=Dj}Z z*!+`YN(Q}3G>8IbS}~doFfA2P@bGq3&e>QBn&>9iVfBLSGC*4lc7TuKdWj2TF@JK+HDy;9n_)ahVSGK7=e(mrmIZ_(H836A}x z>=2w#AiF+Tm>PxM0|P)q*cPzlB#iZG+P-OSdhAiHHh7ZYmPQ7G2~cy)nmnu-ccs~U zjF^1SGiuX>N#5^{%{>UFdp*XgZ=JsL^CnK}O<+dXBbVz?`&o&V)Zb@8SLpK*quPBJ zIp`vT?EQ&%-)jAr=j7;bKl7^zV?U*TBul1p;Avl`Cmh6?}k51zA~mT4MwT3h{mZz1JhA!8joi$B5ZxUs+PP;{z#G< z{dNg|0O3whZs#r*rDjwhU~J(F227e?12LdMDRy?-pG9$%g!ajmW9%dPOQ8^yaC6pX z{b&|WyNfG%iDy*x*$$vNVf?M&$uh5oew{X5_uuk(y>YBMPL-y8)j*Ei`=q1*t1o<= zj`)ZH^v;?TnBMJrdY=s-o^tFyMn7p{9njS5t$HL@`2e^ix<_)y2LC_KC(I3^M6>S% z-Dl^$ym?$-1mbc_;u-g0CAPT@JHJ?tD-NYBvcrK)^f{d%NtTa%IqcA&(Tbfs*uHdO z@>qRB#v~GXTu>S?v#2u3Tylq zu!uzXON?BFfd2-2@Z*zS;2HYC0N992zX4RrWv!MhC2gDp2G)a3Tq}_W#RgMa;gl#> zvAAuDdKZ3ZhU+Wkk&iAKjSM`=nK;xED3elI$st*jA7}BW=041EH2o+9ppbQan%q6x zshU3ROhA;>?*do5JM6ej1(Swb5cEmdsnDW+<_#P_LyKt_viXQX?^1}Gw6WA~9d+1H z0`^a6N?+otB$#Ehmyn=&7pGSJSvFn;WFtOYR9j69jD5C_W0Y2qL@{vv9bQNfi^s2g zfQz+xUm=9qI}Cx^-r&*)5HP>Du$z&yu)s~)ErkZ<_#PS*QSPElAY(;J zIxKVNvSHubtd6@tIg)MV!+?HyU=+j}wNKA}u#!(Bga$EZd_u8WX`Py$RK|(cNNudJ zUzv){OnB*>3w~h6#Y6#!yPLIA61%cBIPy?W=)a;>pfK`_JPbFWtk`PyWA=l1f{V#2 z8(lx;I!ufo>chk1$gqE@L*e`4LKnH#zUHG@--x_0kq(btlm1hn2=A@ld|`VAmr(=_ zy6PuCd>B6~klTMF$DhIIdlc{){-N=k2qO;mT=nZK&4S@XpQTQXJHdj1kr^g>2?#Bv zi=wPyi!O)Sd%MNS9?XP7WJ;Lqn{g3FxzzXp4r?d^H`7`#`%7x>zNcI#R_9x7C9EpG zTJ~=V-%1!6x^-D>Mdn+k1ew2aV0-a=&KV9u{d$5Ghx zFzM*2gctMkZ~4MBBT;+Q8s z+z$*Vzr~lw4B{r!t*?-vfGz}N2vBI^InzcMDpO{3j{wfqn12wU4TF&yu;9w6UG3Yw ziU9vpOklpE1O@5+d~kk~J|~7T;}?*K#M~v84HDr?`0=Uhp2TBLQBcUeAD@<)-bg3< zb4b+|gg*OlOSZzpkvPki*S%oq+ZH7~{Rpew{#WN))SdX$g{=jp_6T(@tr226bLO-d z3rx!k@QwxCdf@Sf_nnSFs|Sk~&xS7>4q>!}A|&XxAB>#1m6-3YZfG~zR{*Ckqa7jD zaNMWwNU2R-Z~ zIQkQU6B_t;Fz6;?-E8#y%^Jru&$WBM^DiKbk%Rpj*XbXfda#=(c+F3i!QugB)mNIX zAc_*%{{iQW2`UhYbT|MQ+p0=Lx723HXs&A^Vrgt*A;sJ_fULBXktZGw=4AT#xVKE~ zejZQ?4+%ONzJmUIrqfQGI-c(LYa7xJWT*%UEee4>%VKLMW_1o>%VPuk)!zI=A`fKd z^JJ$73~8G^hPK83*X`Ln^UHH3*qYaz#krWoA&V8rO#IP!WwPCB&Bt}R z6nmXA(QCc|AWsPUpigKD;IbDh3{aV~^xK@bz+aom?}rZ^yY~y>^i$ItBbPTj-(j86 z;JVdLB?y1|YIcH+t^C!hr@gL+oEa zYCpkN<${X|G%O(M$8K3x)m#Qg92giB!~hm^y%#KQfn+(1JO~msFVCZC#yIP>+=|_ZM7! zyqNNb7)pU)IkA?qu|PMgGC&D{5Jme$qdm`2cjcT%n#z=BeMtr{e{IxEzlaW@?_p2X zadBo!OV0?6VJYyipzFNt-?dcc#<6p$wsLvUs2jkCv#PuQ^*@&(#M_fjJ>fE@2WLcl5$N!Q+p!>8 zHTKmLveo25?DX_t-&T$DbMG3+`&EY)Nu$2CWP=|K>(GxATiJ8hz+Cq&A5=jo(zN?B zT<=~{4O68<1`ny{H%c?V{f!^y2caPtMi~MgbX@m$S3%P6?0%i#ZeD$V|7QsDSqkVL zoe3&^GA?~u?>`n~3vV;GCsgjz;or=?iSNDxb~w!(C%R>0rokmnFD4sGqfkv?WnYPI z*DS_7zPg^`<2Zx}R&`9s{LyT%Ht$c`~N96Oatlu`rFUj}1hNEqjo za%$K(MbHX@QCzDuH>TF35zXeIKxl|FXrt>BByD3wTg$4&qQTBZB||ZL`scd-O8Pzo zj*eGpgPr@39}wO9GVUS?39DS}2!-4q@y86I;v%LL3rt@ps9$tk|bz z0xo>sB%KI?7LUo`0AKYGthGN{8%H$;YO=`28Jd2u1%u7L$X{PfKJ2rBcjt5Hi4s8kV zFI~lpuIEJ7QWp80%o9Ot3Wj?Gp3gr3!_`7~mlWMS*)jartBZ#ACdUD2KS`#q1+sB( zR1Y04K&$<6f(3j4ncN|S3i@jzF87xB!2}2rB@seY#89WdZg(ZNVxYJ}0K3_{m;~Vs z8&|o;8HMWtt1vM5;r4(D^7nJE>tw{1+04zc-6g%B+@S*X&!!;0j))n_nOA|3W?RiLgdK31VWTBe}z z%l$U8Vk!OL^>}$5TPPRVXXB-uUj4O&5W2nok}dvIlr1$$OIb*PG02yfqg!}Q=h_^} zBIp-wdU(jy+rM0^uKU)zHDRa#II)QJ%+iuTgWe8;6`D*gzb2((ff{fE>9TuwiP{Ft z4wJ``o3^7o_KUCa4vs;I(7soH9FuCnVvAIxi|!>`VM>CIKd32~JQjN~f4Z#P<&_r; zTZ&z=IWre2{u-onD%zGtZG&j^-EVia9}SkXAFQ=vH(KU)3Lw&PdqM&PE}l@Jt@-+t z3?_*Uwsr|_P*Czq%Wy;BKxqB@a~hlV?Wbs12cvpjQpQf&+#$2mXz&4kL=cIxkvyCR z`AdVmD5_y7IPrntQ*j6)+lX$9N0>#vuA=a&PbO~|DMwx_;4tR#z~>oCyjE%sln^-i zA6;S>4N~7Ff&+B(DP{6jI-nA=9XGR}&@;*1gNDXU$+aYohzN`_(0++W@lec*SgSaV zv9L&jueO$-;B>>%GO*~)La=%qrB*413pDNPw80OJ~H|>imton%JHcu|*OXf+l0y3VyN&vu%X$5g*nP4fDCStvJ=kwhJ z^wuG#bU@ID)ff`k-*F zRTUK`IzjY8RbWFnG00YTBu2xYl2t|ar0MAd*$99F10nDssIhnR)87H)pwFH}QP+P% z|HalkA7LM)=g{|vuRnuj^Z#P3h$%X1QS_-3metKvZ1b#RdCwJ{l)_3mEqH*L=Fj#NM*w7%r zx7CxTVrH;*j7Cu&rXJyRf5P|o@~~8BF)4hSgq}k236Yh6-f|P1Ms71iRg)DLBMb9W z>HAJ#;jZYhXypKi#^QJ_n;&Tm{&HUOen;a7J?5tpNE2NuPE|7X+w#q}leEUWlmWbkQd z22viZ4W+}Z8)U6t_xH%VA8qckfBIcRKoexCDu>xT#kWC_2S9M1q+XBR;7$VnH2C%q zP%k?N5Mxj@=uoM-+EKt;t;54G?%)mspcWdt{>2wV@U{A}BzZJt`-*eYX#M^E5sHiF z5vp->+2>fr=WPkDPryEkJ@08l0=IEto6H~N1GU&JBmHqRkA6a)8ET1t>z?pV(z^$m)7xogNyj!{Fs%d5xO)|( z?l7e02EUA2AzRoWoq~Yc5x%?;q!KfhEMnqsG?a_o0azV2J4i^JZc#Kcc-oiDNctM6 z)%#_xwu7-HkvtJfFb15h1726Pymx<@LfAmlzY)ij45hxEwNGvu1Lqxhd*1U8&m@Mk z&N5{`G&}Rr?}Z*Qepy;xMoQ}syj6g>Xg%oCh0Rf(cn=abo)P<;IFuT8L*yprbnT^0ins27pw?6bQ?VJ2RS3tC!8|1aChpSlLThvZ`M|CA4aDgv>EwMXG$Emrp zIB@WREUF+4$ocv$z{W<=Gcd_0TB>EmmF}^i+0^-jRYH%mkTf%SH1Nv^*o(-owWc&Wc zu^?=BxV7Yf6WFT&XwS#9`qjXF63RG1nw6QP?JOc^Nnyj|t`at>549XkENaDu1*US4 zIDc`oYw$K+$4EDCQT1Yd++MISh3}-{-KW_csUBPTyjUw}N!73(mE#E(3a6762(+r5 z0VC|2NX}0IWPY!>5FB(M^^@h;!Wl~h2xvcvxaoq}V2{?FCi9@r=ITz!UzUkdt{Z13Bz@Im|;)oa3E3@Qo&<3E7y{#T%*Z}JMrh}R^v2N z?JYK0kq*R`?F%|FYVeB7Z02^pvd_j60-?i+G&|Cr9 zO1)2O&r_Ag7+d&Wx*UZ#R<4cYo9j?qB%4mKNpzg1i z@Ho_bQv_CE8=nUr>c#koEZz;?_ioAjGML4i{P+yG<^}>oNj!(Da$k079{Om6{Qp(S z-t>n<;-58*1HQk3b+!p@+b*TNF9J#XDt&JmE#QyPfD`5>U_U{ zAHY-+FuV)*Zr<@{KC#9N04$@CS76607!UM^Xs*Obdnf0ceJN7jC#0tqs_y-C&%8EO z+HQU*k@J4C7ddfx)LhXf%uI2eu4ThTPzej>AlYm zmN*utKQ{>3e|^k-=dI{`^L%DE+8aqu`L(ga((&+f>FHYJGL+PJ5%AWvZ8@TLc6A-` zUXgr93G)fb2^L17rf@B+Lst$Vlon4i;~>LFfaBarhof$i;aQCB)_=uHd~6(u7@)2b zeufsysoGVqf{&$X{(60PkCI2pvS8iXCuvy_NLB^Z8u3MLk)g?KRc)&anZ9;#ja62P zkS`zvK!DDPp+&lS0Dkzft`XvAhy4=-2t+4n**ud)s3+FOOhSjJ)zXZ^tL>%;?`5lo zQ%RIZEde*a)q6ol_n%vocN)JpLh7~eH^tA}L2|fb-835jg=2H2NuIz$6v9eqL9mOm|*XR2c zvzC??;9}XTa_eU#a}PzVK)^wc7mEJlh{nYp3xF^DdZbkCa;!eezqr@=cH9})D@@r5 zR$|?%1p7Xgmns`O{4Fgu8qeV5DsOEi93LNd2U|*xFPMTICwX3PW=uQOc$xPXzEa!o zU>Byb3zAk=%%Q(HRG(tnCK6YcOTBmOtK^mekC)~K+1n*kJE(2@8CDmE`LRV@9o~^t4~v6B zU{}vnpxR8Tb3vn0&xT#kV-I_FVL|*Jqsr&mHEO4I&eYV@al>`ka4L0IH?%wq(IOgP zgI4`QSLg64yof=kNBF)a9~12@HW591Ooon|4fWSH(UH^fuPS<#uw|t;1lT(+gR1oL z8px@WCKQ`fLYZ9O3tpx%GPnS;u1$N4cE*5FM2~GtGWIYy(JmhOn|zDWi0dN=SWU)= z+C`j(`clk9_YZz#psMsw#6#+rIbFv9e@2z_9VM}Jz$(F=5lxCVquvV6~Q z;d>6R&J=7FEf_0H2L6?p?vt7W3ttWFT7~$q&sF%~=Jxu(@0Nb)TJ@VGiOk3Ye7TT) zJj;y*;Pc$S849&5Qo@Qt(Bgy*Kor7w98%x2!cJpD_bn+O%|=mU@}^BnOIX-4w>)|d z<4}&%O8c=nE^>~be(`(X`xjQDbVIx^@=Dwg!|z?7?#QvUbEu^qO6-oYPfCc2f^I4b z*U6K0wX`f1h7*;9Jce|CSpbh_&_qJa(G$?9mo3BO~Sihin?Cj7!901C}b}zbuz6Z-}tCu1)TFZ%pQ)jR0vD~mB zYP1eB>}F$C8w;05A-*if_d?=#&+omYZ&mVR8JwfO?*j@!{uInw;sC&`R243+ew z#wVkwQ9FJzSd)zEXW%)la5(w1oH7L+(Xp8`doTB$LR?32=-@!hk#PVq)V~NjusPky zl;vrw@)B<24U}U897*(|b`JNse>XCzl|9|cEuUlbqv*pj?E0lGf;=LDGxtf^9s&`@ z58t`vThl@c_7pPOg}cMI*xrsZmmwQMK#M~h zeuywC8Ab@;2!U4C)iF@WaSR~ae1QO6UIh@{T=%iULx!fqD*blM%hiDmJcay2H>QyH ziN;@a;s@fzPk?T-@^6-obEp94k5kx#DLgY(iM{`@3|=zmO@)L0EhfOz{N{3yv{6vt zdW^m4IT^Y50HHH+VIv#tLjBdHzQe*OBu#KbhT$In-5KG_iK zT0;A+!8#qAzD6ynggpE}=9t2OLh>P;?EUH#P=7hg<=#Gjvl6c8sDf^+M(0J(85QoW z9u`5_FbQ*Wom11;svaaU{y`{a2Ym>g-`I!?wvBW@_u9yOYOk0X5r5TN2rpHX-*zcv zU|=|f>SK^0vHpIdH?j-Z$H!Z1xF8u&L z*^u-{5;7U+O_)NR{Ccl0AM=kgc+^CUz@kC`^oU&K)GtmWc|PUtN$=&Sn#ZPJAFNl` zkT{7k7HD@fDly}aW{Qnh&f4R1t;RzM645|6=!{FBxk!g4h(@8X@;e&~k#}h1H&<7a zXzge+6CCE$Lj0da0=#~nSR9F|;S&}iA+6f+XR?+fY=d4!G6bNpvZKCMEyW=}DNl={ z<&{^GQVE?v^kYZh75@ffQ9dk)&27(-59tsu&}Z51>!E#ALr-Q z`PY<16hc0r`Si&l4}tZAjV0rRd<)YY6>*M^5UXuRA#!{QaWVg{wz|=b);=G2AK?AT zMC99>4G&VJb@^Me(HI;Y+;raYT;p4LY_e^@KNoH)EiJ9CX{UKO8Kr~M<5??8!+1Fe zlsk+43^~wzXs^hyVVod(gyjuEH*;{T%j(|u;i>guIqQ6-k(r-2XR>nJEsQ88Ef?@H zaIXaU{Hin$Xj7)aYk*a95<`HRHrRoEVm}_KE^8*< zCmfK}lo2OI{MqTQMXYYUihx&yw^6!z zkZsF1olLy_fH$WtEx(d9j8ROItw*sDA_ycxa=GRZCq0_Ukg&E-i9Xw+lwCp^c5wLi z57+DOmf>&w`Zj0+^>MnQSi_o)?ZE)QM6m%qa_@o!+=-e~4KGEsE8}$+4?MDgk zQ%`e`rNmj&4vLqCT1Q4yagHbO!IS%|j=)KA*>Ll$-udogNiI)A^wd;vG9}UJh7BAQ zrZWC!DG=_RQOz!a|8s8s3h{xHgCIMeh9;sjJ7IHW?AJXIb0_GuxP(;e zE}(V1uap)vt*ThN=O`8m=bk$s@VbpqIVr6udGzJ3o>=u5ER)a)n)8Hn17 z$u}WXw?W$voP2h-SmW9UO7af2`_xVXgWGNbENG5c@kPDY#iNYdeD4*@)(l{O zo%@%3CJOTJ6TNUFns3d1`gv%Ys++Pr3a-oF#{)ZNel&G__biDu{r=O}DCI+<@av3l zzq#=9w~`;>kqLlgB#tQQ_@CiWM{pMqYq)oCu!3t4oPFqc#M}Sym`bw=_s#~&_132% z@u+}96_|4h5NH6RcKkuFdh>JzzIFr8uVC-s;boe-b1T|64d7Pe&-o6I&=)vSzxQk4 z4b}H~Wn3JUXi0IFIN|Oc>pcHr-O$ z2sq2F()fRJKu9+KqlzO34(fx{pQOn*e8tysOmMc)|9Q5LYH(P*(X;zz`}?~k|0Yi2 zXvB})pu*fgeFP~kjEJfz=A+2fK{ODRC+l{VoGj4INQg#D@jXYXgNFTg)S}8NHn5T3 z0qi-0TGmK~k*+Q>0xdqWji6xGS(8u9?=`CC+l9CMtUNqjSI{Dz5P~Af75GB>r|avCD$mdX&RdZzDYi-j9}2j9nQ&C=C^ZT zQmqe5E^^-MvficX<;KJQo>cK@&#J))=uYC>J-Dbevx-@?KEzMx)oiatKwL~~nn8Ud z#dN4@FU5R{Zyk^hI^x`zUJXC8zCbfngxYrLeM6C_V+b%LCk#`Zyh-(kGDFe%7**Tu7qa*u{NpA3kMR-1ngk8QQ`%rO_xkq^ z<|o!1&jYo)VKU&o9%uEb8Mf_RiSPn^tKHKc>z0cY>oX?2bFBYh_4~c^UFfe+Zrdhb zoxpWZN%amoQUHXflPK7TCgMJK(C8o*?6_nPr^I;cr7MgrSBxETeE++Sa;BoJtXKbS zPk&qZ{aX0PxecRk%U3$;r=QL9>8!>fk1a0`gTf(ahy9gUMXlz53uB?yKdUSH?W zHtM0QgfBsDuD$)5xBLqRGw)ACeEJ?B^D5d6@Cm#wmPT3)(H;PC-V#)u{H%qnzGanM z#y&=*q2o8*rgLI(ZZ;(s#)>`pwJIQEAh>p5=knHTGh(ml0+unhpL6lMj@PpDYP&au zsQUEHkDt0dJ-QCr&a2MrV&DlCF8XunwlMQe`t#H=OIPff2V}X8&9`XrxT&zQbT$%h z9Z!@T?=zUJdV7GH-lHdPUxIhqYX0|tc&t!(C~!k+Eu|y=QO99eFjg>DPBC+knqpJ$ z;qOI91I=G^b(?`l#A1_8<_^z6y)j~au$svD=PL&z60x?He0)TjuVUW)kXJQj^@!{Y za>R-xlA$~+q7^i?kDIb&NV-9CH++iBX2v}WN*$3PZBM|HwZ6))vIH_qOpfL6yuWW$ z>^m`D2sGm4^!~$tF*9VgnPwvb-f+m>Sv&W2yR&US0Jkt%_DF~Kp8JGQG^fsn8i(!YCXkAK1$eK0TATG9ur2m)TVEH2wq5$74CmTH>q*wqd z%I5Su^o`S5)cKVs1n)xo5{c*->2NZ`*fQ2rT9veVS{TW7Cz_i?)$2O*p9xqD2^3%Q z>|o)|TI>Vm^Xigx%6EY zw`%T=gF@7`S<&{HG8))6x}V7hYJoh!#SKvxXKGAkN?uZbMvO5-GuXe|@Z|d$76kS* zwXBf})AQ=m&eYhpXYZMr2)6szw(F*@N5*xfboI#Losr90X}y?FHA<_F?vUu*R2~Ql0<}oTUE(qIbMi+ zZ_pWhR>g$ZWJ%*auL&>N|5;=(P6zq0$dRVFJRQ=gMXw>ie@a1yFZ+Tl8|DxU z!&6v9q;zUAZCov-Mn_;|p^NS6a`&^jRXDnA#KmwQlscK=chCTwiYEkf;0CT&o5LVs z;>_o*HaWw-nLnB#)u4w*TFm^OQFtij)8BY&_ z)7ObS84z#o^>d^nZMtH7&iRua+YW(*tjQkl@d2X>Kc3Qkn$>?&(C$eh33tESP&|c{ zn{>tPtox~)|MCY=HVGRNs(K%GsxMRxdERcILeRKBytj6LWu{YW@9^;cZzf+HJ25&cr48ic@;oV z#03$?HleFr$2WxHk(%smQQ8V|*)I8;>*)q&vIsG?EGQSOwUf9zATw)zf>G;#{KnI? z0A3LGJ66h^NGynJ#|YMZX`8gO?UNL^4S&_N16CJeh+OM#sVZ2}L(z(NzwdQ$F`Cux zdUq`L&{=8ovzGma=6#|yfbVc^30hoUi;P&+`C2nYUSg3EL_V>!xDx3R9DI}CO&7nH z{NMPH5h}db>;d|J%O7}{u+Dr_qdlME@iK)Y_(MY;ZSNO<`;d|U0B?r=>K_0am{0ag zLqTn`*tiCk9_Z>ECmJqtLE=Yr2&~O*cry%g7qcl+srh)B_;I9a9rOjqBOe^*Z}?Vg z#Wvs!2@nmp94?uVagN?6Z;Q8%J9WEf63`W7{+f`7o7U3QpqF;Xl0mbai>knD~Qjx zLUw%B=^*rV)*!CdQm>|?=~Jks-f9%MJR~M+Xi-c4>tQY5PzArfHl+~dv6>m7OM}Aa zk;`N+X?4!Jx zrFlCJ2}TAuilyDya^_pPwg6uAv$k%IQMwVhS6O#@`=Zli!bReFruMRbc~I@LV9P}! zp5#oCATvVJm!Xh(xzkEIK$*j}3f5vcGuEKUh^5i^4M=-wa5HOh-1neLoK|QTzkpAQFn!D$tY}?JUmi2lIajf7oo3HD6{$h(U zs%_f^M;4bCMrJH|1>NV$$B`DBJBQ-q$*fUL0=H*^0n}V~V$$aCLXD$|s9eOKWr3mB z(B0GSIev#%I#qK1sH(UJG^JLO^*?@*MbV9TVF%`m zy!3~{o=0K=EslihHYF_hG&3(wEy$;1K7)_ zVEEGq$jVarl5>8MxzP`Mn;nreMR98?EmB zp0r;&Mm$;G8+=XuGsEgAUF?iED(A7fzLmAS1?#pj_$+-cO}Xpg_1JaiFE1vsqHqqy zD?w(I)8GOavpw?JivZ(;DR<0CyZd>H(czbsh!r87VRk%X zWq8E;T0y~_*iC?(IK9?rVr1d1T9aF^?OYv}SppnDp#Epz32YuRsNv!HLyR|t2j|&b zo*2%j=VXhM|A(0NPa_>ZoGQQfq2TN4WXT7L%FDhWNnf+>+?vGRrkf=Erro5Yhl$ro z^W2cd!K$B99~(;L7QM500s0CZF4FT31B3}Z9^zYU#tBtnGYzN3pu-)Fq+-3buKglh z?kr9KH~l{PbWq*4Kk2X07^!~u3@XmOHS?-;Wx`@jBk_24JCBpB4Id6Cf%cu-^7UjX z^G-{aIS*a&ymY0RS_)W?0gly@*&ZXmSpXH1Pjifd!TC+t1*K5!Etu zZp>;}M62)@@Mc>6Z!%Q3%Eg3{NaF}OyslQIT*G2)VQ*{ft|Eyv;E2%+FVRXCoNk2{ z6vf}3bIhwPiWLc zM(J&(VX*ZQ8wly+Uf%ENE@(m-e*G^?wSVoGdOkml_^=p8-u0-W5=k)ceI8;uVCows zY}kpRQ8zF*6H*c;o6@lex8@?33Ag&hb@IJ$;mrHP0&`|$?Y=xD<7B_lbF&NoCpT|i zX5Bo1I$+X*hE%bv`(Z-W>hjrqlK6J%?V#SKslQ`LQBOu|zgD=Z5M4vQ{6G+&Lc{V? zSJvAPLxI*xn1eYr(T=UC>oxKz3QVM@!7zWX#iybX<_) zW7&Vu2pUSd6U5s$?mhIsjm>E!U=d*mkCQBrk#_J3@$9HLjB&n@$YM~fvO>sov+eWF zAI?ufx6k}v7J2(dJUlP|6bbfeQr7asL>k(^*W9AlPwKbfz2D9f+}t7e_;?U7>+@pm zO_WvkB_mSrY>>Jm6AQkgrO*$k{n6ILNGy}PSSnNMMJIW^DGN(q>V-)_fHKVJ?c zjzpjn47eBQFV~XJgddLr2ixe|DaB+XUhW#0%$dp*VLiB^;=;FM5-9?dMR z)>H!K_JCO@EVr`-#%sA{D+BRUC`P}UW-JRs52;=oTBC3$x|Lg_NE*X#VqKyPeQLj8 znRna!DsKrhbJsoTxA5#|EpqFxhT^R46_BJIV0+;lesn^&vwrS#-w)u$7plxi*t!On zk3v|-284*KGl6@n>)V+2eTMi4>4~&xX?Mr!B2i?ha~VM1 z>erN?wX9HPMXY`mgw=iB_S9S}+EoD=rEP-BYT!dn`i}ifO}hKbEpgL%VKiPnXv=E% zf?OV7BZP1=Jr*2md_@Z>#;C)uM_b+{nYm(&LN@nuJR@Bef{Q0xV6@QP>3RR2&Jtpz?bRny_ue2S}H!y?5NF0A^DGPCt0{OZTrlI3ohQvi?zhmwM9U_-t+RBjnKwKAY8cXQd{8ygBTzu*-DU>lW=ru07rM25yns%8?#2iS3XmV;Yg4U;jN}^2ZGJ*Tcz@G+y+Jnp=ju%GGuM6;n@y z??5~4$*mV$0lca7n7eWsyQq5ox)8K7LYBS0wts(Gll@_z5Mf@C?{Tugc&~d+Bi?^& z_pPL?$(0pnVho#PG=0X>;qHdd`*mtgvpGM#U%)9u?GMe8_8)a2L|?vnu)1e*aGyTt8kh+UQWU~!w0myG;6~sL7>(Qj>OxALCEWt&iacio?_8` zpHE4*yTP36SFBybFCGZSQPN)W%N^q0@BPtth1aWO-R?I?BR>RMYZ2yxAJg;(ns10% zK2_-1*owRO3Q^fII_&4rfeq#g<;RK_ z9fH+oMgiDg|97Jv0ow2*ipbt!+;2PvS92m^B&2Hl8N#VYM#@2>1wIfRQU1Q!?CU_X zxh#Kg#gt@l<#^%b;NbaKZorxV%+lOcuUIPjc5!rNPt?el)e4|C5ZWS!a_u`UOJB2q zf0~|dfSo`)4zZxXmU4GC9pfUWxsfEo8}Lx0TGif+>DE~TGoMwms8Ml5NeIGOvWCTM zdv8_Dwj>?Zs%}Q#@Y?0HUS5NyE(nee;$Pbg4dv|T}{hJ!^jg}@ic_5L%`f3Cs z{isUXkSMj{{!taN7DAB{nYlD6%eG zxyT%df0gs{@6aa(15BX|UyroK$^GuI*{L@@a)O%9gQ}XSxGIZ~QYT6V7r>H?9sY)g z_TBqcn<*)%;Ivf%c`j^2?fW!M{oCq$aD)x^!Ze*q{G`VMb4Eb3%icq=mtOa;?B^v2 z%5DewHC?h8T= zJ>oHkFSo8B@%EtbeIB9KsWJG-oFlxxrg6XP<6Ifnpvc|ve#6IDQr19hk@BX*u z(7RH?*du!Gr8O5drd(u`-BkgPF}aHqSY&K@CZMcnuGn~2npIi2Co%rGSc3IxWpO5y z(`1fK$Ts$6i~Xm zyFt2Bx#vo-AvYI{5UL*6i;&S%B!|Z(+_c_Vf#Fpj>B3 zWZA;XROk29K>EG;EAkCcc0=G3ifUUn5fNRkfT#J4EK{VAvc zU|9*2XK=ze^(8jrFQeUcL6Qx&H0!PVSp#LeW-g8T0+mCKaDtoqzHyv(J?$wFTpTmK zF`VA$WQ8sCUktctuYVw1ZYG*nDD}Ue!3_XgyGpD_+77ez3VhSCXoB%Jf<#byG}i8@;r}+1Jcj$K}&3B zv@@95iD(~1Fz*KkDj0_PF~TXgS=Faa0t8x#W1!$b-2tcQR=$WAQ23?Tt7M44Hn9N*vVn zg1sX9Yf`71^Ck7hV0iI|0MMFV80B%iYHpa+Hv|p~A`PZd`w1-IJ